Konverze disku na RAID
Z KHnetWiki
(Rozdíly mezi verzemi)
Řádka 1: | Řádka 1: | ||
- | + | Určení: linux guru, a spol.<br><br> | |
- | + | Testováno na ArchLinux 0.8 (beta2), jádro 2.6.20 | |
- | + | ||
- | + | ||
- | * | + | Tento článek popisuje instalaci druhého do funkčního systému s jedním diskem (a jeho konverzi na RAID1 - mirroring).<br> |
- | * | + | Nezapomeň: <b>zálohuj, zálohuj, zálohuj ...</b> byl jsi varován.<br> |
- | * cfdisk /dev/< | + | |
+ | * Primární disk, poznamenej si rozdělení. Ukázka je z programu cfdisk. | ||
+ | * POZNÁMKA: nic neměň... QUIT. | ||
+ | * cfdisk /dev/<yourOLDdevice> | ||
<pre> | <pre> | ||
- | + | sda1 Boot, NC Primary Linux ext2 41.13 | |
- | + | sda2 Primary Linux swap / Solaris 271.44 | |
- | + | sda3 Primary Linux ext3 82030.72 | |
</pre> | </pre> | ||
- | * | + | * Sekundární disk, rozděl ho stejně. |
- | * cfdisk /dev/< | + | * cfdisk /dev/<yourNEWdevice> |
<pre> | <pre> | ||
- | + | sdb1 Boot Primary Linux raid autodetect 41.13 | |
- | + | sdb2 Primary Linux raid autodetect 271.44 | |
- | + | sdb3 Primary Linux raid autodetect 82030.72 | |
- | + | Rada --> Linux raid autodetect je typ: FD | |
</pre> | </pre> | ||
- | * | + | * vytvoř md zařízení |
<pre> | <pre> | ||
mknod /dev/md0 b 9 0 | mknod /dev/md0 b 9 0 | ||
mknod /dev/md1 b 9 1 | mknod /dev/md1 b 9 1 | ||
mknod /dev/md2 b 9 2 | mknod /dev/md2 b 9 2 | ||
- | |||
... | ... | ||
</pre> | </pre> | ||
- | * | + | * vytvoř raid pole |
<pre> | <pre> | ||
- | [root@svn ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/< | + | [root@svn ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/<yourNEWdevice-partitionA> |
- | mdadm: array /dev/md0 started. | + | mdadm: array /dev/md0 started. |
- | [root@svn ~]# mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/< | + | [root@svn ~]# mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/<yourNEWdevice-partitionB> |
- | mdadm: array /dev/md1 started. | + | mdadm: array /dev/md1 started. |
- | [root@svn ~]# mdadm --create /dev/md2 --level 1 --raid-devices=2 missing /dev/< | + | [root@svn ~]# mdadm --create /dev/md2 --level 1 --raid-devices=2 missing /dev/<yourNEWdevice-partitionC> |
- | mdadm: array /dev/md2 started. | + | mdadm: array /dev/md2 started. |
... | ... | ||
- | + | Může se tě zeptat: 'Continue creating array? y' pokud je disk už naformátován. | |
[root@svn ~]# | [root@svn ~]# | ||
</pre> | </pre> | ||
- | * | + | * Zkontroluj /proc/mdstat |
- | * | + | * Všechny pole budou degradovány. Přeci jenom jim vždy jedna partition chybí. |
<pre> | <pre> | ||
[root@svn ~]# cat /proc/mdstat | [root@svn ~]# cat /proc/mdstat | ||
Řádka 62: | Řádka 62: | ||
</pre> | </pre> | ||
- | * | + | * vytvoř souborový systém |
- | * | + | * je realtivně fuk, jaký použiješ. Jenom na to musíš myslet a upravit na to mkinitcpio (viz dále). |
- | * | + | * POZNÁMKA: v příkladu je /boot ext2, / je ext3. |
<pre> | <pre> | ||
- | [root@svn ~]# mke2fs | + | [root@svn ~]# |
- | + | mke2fs /dev/md0 | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
* mkswap | * mkswap | ||
- | [root@svn ~]# mkswap /dev/md1 | + | [root@svn ~]# |
- | + | mkswap /dev/md1 | |
- | + | ||
* mkfs.ext3 for / | * mkfs.ext3 for / | ||
- | [root@svn ~]# mkfs.ext3 -j /dev/md2 | + | [root@svn ~]# |
- | + | mkfs.ext3 -j /dev/md2 | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
[root@svn ~]# | [root@svn ~]# | ||
+ | atakdále pro všechny raid partition. | ||
</pre> | </pre> | ||
- | * | + | * Namontuj a zkopíruj data. |
<pre> | <pre> | ||
- | # mount new raid / | + | # mount new raid / (v příkladu md2) |
[root@svn ~]# mount /dev/md<where you assigned-/-number> /mnt/ | [root@svn ~]# mount /dev/md<where you assigned-/-number> /mnt/ | ||
- | # mount new raid /boot | + | |
+ | # mount new raid /boot (v příkladu md0) | ||
[root@svn ~]# mkdir /mnt/boot | [root@svn ~]# mkdir /mnt/boot | ||
[root@svn ~]# mount /dev/md<where you assigned-/boot-number> /mnt/boot/ | [root@svn ~]# mount /dev/md<where you assigned-/boot-number> /mnt/boot/ | ||
- | + | ||
- | + | # pokračuj ... všechny partition na starém disku musí mít "obraz" v raid partition. | |
- | ... | + | |
# copy / to new /raid/ | # copy / to new /raid/ | ||
[root@svn ~]# cd /mnt | [root@svn ~]# cd /mnt | ||
- | [root@svn mnt]# tar -C / -clspf - | + | [root@svn mnt]# tar -C / -clspf - <seznam všech adresářů root partition> | tar -xlspvf - |
+ | (úprava, protože kopírování najednou [tečka] nějak nejede. Tj. /bin /dev /etc atd. (vše kromě sys, proc a samostatných oddílů) | ||
+ | |||
# copy /boot to new /raid/boot | # copy /boot to new /raid/boot | ||
cd /mnt/boot | cd /mnt/boot | ||
[root@svn boot]# tar -C /boot -clspf - . | tar -xlspvf - | [root@svn boot]# tar -C /boot -clspf - . | tar -xlspvf - | ||
- | # | + | # všechny ostatní partition obdobně. |
- | + | ||
- | + | ||
</pre> | </pre> | ||
- | * NOTE: <b> | + | * NOTE: <b>KRITICKÝ KROK</b> (tedy ne že by ostatní byly fuk) |
- | * | + | * edituj /mnt/boot/grub/menu.lst |
- | * | + | * bude to vypadat asi takto: |
- | * | + | * přidej "fallback 1" (což znamená, že pokud se nepovede nabootovat z prvního disku, zkusí druhý) |
<pre> | <pre> | ||
Řádka 155: | Řádka 118: | ||
title Arch Linux [Disc0: /boot/vmlinuz26] | title Arch Linux [Disc0: /boot/vmlinuz26] | ||
root (hd0,0) | root (hd0,0) | ||
- | + | kernel /vmlinuz26 root=/dev/md<root partition - md2> md=<všechny md zařízení, ovšem POUZE nové partition> ro | |
- | kernel /vmlinuz26 root=/dev/md< | + | #md=0,/dev/sdb1 md=1,/dev/sdb2 atd |
- | md=< | + | |
- | + | ||
- | + | ||
# (1) Arch Linux | # (1) Arch Linux | ||
title Arch Linux [Disc1: /boot/vmlinuz26] | title Arch Linux [Disc1: /boot/vmlinuz26] | ||
root (hd1,0) | root (hd1,0) | ||
- | #kernel | + | #kernel - to samé, co předchozí blok |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
----- snip ----- | ----- snip ----- | ||
</pre> | </pre> | ||
- | * | + | * uprav /mnt/etc/fstab - montovat se budou již MD zařízení |
- | + | ||
<pre> | <pre> | ||
- | |||
/dev/md2 / ext3 defaults 0 1 | /dev/md2 / ext3 defaults 0 1 | ||
- | |||
/dev/md0 /boot ext2 defaults 0 1 | /dev/md0 /boot ext2 defaults 0 1 | ||
- | |||
/dev/md1 swap swap defaults 0 0 | /dev/md1 swap swap defaults 0 0 | ||
+ | #atd ... | ||
</pre> | </pre> | ||
- | * | + | * přimontuj /proc a /sys na nový raid |
<pre> | <pre> | ||
mount --bind /sys /mnt/sys | mount --bind /sys /mnt/sys | ||
Řádka 190: | Řádka 143: | ||
</pre> | </pre> | ||
- | * chroot | + | * chroot na raid a kompilace initrd |
<pre> | <pre> | ||
chroot /mnt | chroot /mnt | ||
- | # | + | # edituj /etc/mkinitcpio.conf - přidej 'raid' do proměnné HOOKS před 'autodetect' |
+ | # možná budeš muset přidat i moduly filesystému, pokud máš něco jiného než ext2 nebo ext3. Také viz nápověda v souboru. | ||
mkinitcpio -g /boot/kernel26.img | mkinitcpio -g /boot/kernel26.img | ||
- | + | /etc/start_udev (případně odinstalace -Rd a instalace pacmanem) | |
- | + | ||
exit | exit | ||
</pre> | </pre> | ||
* Install grub on new raid disk, change the numbers according to your setup. | * Install grub on new raid disk, change the numbers according to your setup. | ||
+ | * Instalace grub na nový disk. Čísla disků musí souhlasit, což je někdy problém. (hd0,0) je /boot partition prvního disku (starého) a (hd1,0) nového, již v raidu zapojeného. Logicky (hd1) značí MBR daného disku. | ||
+ | Grub to čísluje tak, jak to bios nadetekoval. Většinou v pořadí PATA, SATA. Pokud na PATA není hardisk, tak to tam prostě není. | ||
<pre> | <pre> | ||
[root@svn /]#grub | [root@svn /]#grub | ||
Řádka 219: | Řádka 174: | ||
[root@svn /]# | [root@svn /]# | ||
</pre> | </pre> | ||
+ | Důležité je, aby nehlásil chyby, a končil succeeded. | ||
- | * | + | * restartuj počítač. <b>NUTNÉ</b> je bootovat z nového disku. Budeš muset sáhnout do biosu. |
<pre> | <pre> | ||
/sbin/reboot | /sbin/reboot | ||
</pre> | </pre> | ||
- | * cross fingers ;) | + | * drž si palce, aneb cross fingers ;) |
- | * | + | * nabootuje-li počítač správně, MUSÍŠ přidat zbylé (ze starého) partition do RAIDu. |
<pre> | <pre> | ||
- | [root@svn ~]# mdadm /dev/md0 -a /dev/<old-disk-partitionA> | + | [root@svn ~]# mdadm /dev/md0 -a /dev/<old-disk-partitionA> (/dev/sda1) |
- | mdadm: hot added /dev/<old-disk-partitionA> | + | mdadm: hot added /dev/<old-disk-partitionA> |
[root@svn ~]# mdadm /dev/md1 -a /dev/<old-disk-partitionB> | [root@svn ~]# mdadm /dev/md1 -a /dev/<old-disk-partitionB> | ||
- | mdadm: hot added /dev/<old-disk-partitionB> | + | mdadm: hot added /dev/<old-disk-partitionB> |
[root@svn ~]# mdadm /dev/md2 -a /dev/<old-disk-partitionC> | [root@svn ~]# mdadm /dev/md2 -a /dev/<old-disk-partitionC> | ||
- | mdadm: hot added /dev/<old-disk-partitionC> | + | mdadm: hot added /dev/<old-disk-partitionC> |
... | ... | ||
[root@svn ~] | [root@svn ~] | ||
</pre> | </pre> | ||
+ | Hlavně to nespleť ... | ||
- | * | + | * Ověř to ... cat /proc/mdstat |
- | * | + | * A počkej si na zesynchronizování jednotlivých partition. |
<pre> | <pre> | ||
[root@svn ~]# cat /proc/mdstat | [root@svn ~]# cat /proc/mdstat | ||
Řádka 256: | Řádka 213: | ||
</pre> | </pre> | ||
- | * | + | * dokonči konfiguraci grubu |
<pre> | <pre> | ||
----- snip ----- | ----- snip ----- | ||
Řádka 262: | Řádka 219: | ||
title Arch Linux [Disc0: /boot/vmlinuz26] | title Arch Linux [Disc0: /boot/vmlinuz26] | ||
root (hd0,0) | root (hd0,0) | ||
- | + | kernel /vmlinuz26 root=/dev/md<root partition - md2> md=<všechny md zařízení, KOMPLET> ro | |
- | kernel /vmlinuz26 root=/dev/md< | + | #md=0,/dev/sdb1,/dev/sda1 md=1,/dev/sdb2,/dev/sda1 atd |
- | md=< | + | |
- | + | ||
- | + | ||
# (1) Arch Linux | # (1) Arch Linux | ||
title Arch Linux [Disc1: /boot/vmlinuz26] | title Arch Linux [Disc1: /boot/vmlinuz26] | ||
root (hd1,0) | root (hd1,0) | ||
- | #kernel | + | #kernel - to samé, co předchozí blok |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
----- snip ----- | ----- snip ----- | ||
</pre> | </pre> | ||
- | * | + | * dokončit initrd |
<pre> | <pre> | ||
- | + | edituj /etc/mkinitcpio.conf | |
- | + | přesuň 'raid' hook za autodetect a překompiluj initrd | |
mkinitpcio -g /boot/kernel26.img | mkinitpcio -g /boot/kernel26.img | ||
</pre> | </pre> | ||
- | * | + | * Vrať zpět BIOS, bootovat se může již normálně. |
- | * | + | |
+ | * Toť vše. Pokud se na nic nezapomene, jede to krásně. |
Verze z 20. 3. 2007, 17:16
Určení: linux guru, a spol.
Testováno na ArchLinux 0.8 (beta2), jádro 2.6.20
Tento článek popisuje instalaci druhého do funkčního systému s jedním diskem (a jeho konverzi na RAID1 - mirroring).
Nezapomeň: zálohuj, zálohuj, zálohuj ... byl jsi varován.
- Primární disk, poznamenej si rozdělení. Ukázka je z programu cfdisk.
- POZNÁMKA: nic neměň... QUIT.
- cfdisk /dev/<yourOLDdevice>
sda1 Boot, NC Primary Linux ext2 41.13 sda2 Primary Linux swap / Solaris 271.44 sda3 Primary Linux ext3 82030.72
- Sekundární disk, rozděl ho stejně.
- cfdisk /dev/<yourNEWdevice>
sdb1 Boot Primary Linux raid autodetect 41.13 sdb2 Primary Linux raid autodetect 271.44 sdb3 Primary Linux raid autodetect 82030.72 Rada --> Linux raid autodetect je typ: FD
- vytvoř md zařízení
mknod /dev/md0 b 9 0 mknod /dev/md1 b 9 1 mknod /dev/md2 b 9 2 ...
- vytvoř raid pole
[root@svn ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/<yourNEWdevice-partitionA> mdadm: array /dev/md0 started. [root@svn ~]# mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/<yourNEWdevice-partitionB> mdadm: array /dev/md1 started. [root@svn ~]# mdadm --create /dev/md2 --level 1 --raid-devices=2 missing /dev/<yourNEWdevice-partitionC> mdadm: array /dev/md2 started. ... Může se tě zeptat: 'Continue creating array? y' pokud je disk už naformátován. [root@svn ~]#
- Zkontroluj /proc/mdstat
- Všechny pole budou degradovány. Přeci jenom jim vždy jedna partition chybí.
[root@svn ~]# cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10] md2 : active raid1 sdb3[1] 80108032 blocks [2/1] [_U] md1 : active raid1 sdb2[1] 264960 blocks [2/1] [_U] md0 : active raid1 sdb1[1] 40064 blocks [2/1] [_U] unused devices: <none> [root@svn ~]#
- vytvoř souborový systém
- je realtivně fuk, jaký použiješ. Jenom na to musíš myslet a upravit na to mkinitcpio (viz dále).
- POZNÁMKA: v příkladu je /boot ext2, / je ext3.
[root@svn ~]# mke2fs /dev/md0 * mkswap [root@svn ~]# mkswap /dev/md1 * mkfs.ext3 for / [root@svn ~]# mkfs.ext3 -j /dev/md2 [root@svn ~]# atakdále pro všechny raid partition.
- Namontuj a zkopíruj data.
# mount new raid / (v příkladu md2) [root@svn ~]# mount /dev/md<where you assigned-/-number> /mnt/ # mount new raid /boot (v příkladu md0) [root@svn ~]# mkdir /mnt/boot [root@svn ~]# mount /dev/md<where you assigned-/boot-number> /mnt/boot/ # pokračuj ... všechny partition na starém disku musí mít "obraz" v raid partition. # copy / to new /raid/ [root@svn ~]# cd /mnt [root@svn mnt]# tar -C / -clspf - <seznam všech adresářů root partition> | tar -xlspvf - (úprava, protože kopírování najednou [tečka] nějak nejede. Tj. /bin /dev /etc atd. (vše kromě sys, proc a samostatných oddílů) # copy /boot to new /raid/boot cd /mnt/boot [root@svn boot]# tar -C /boot -clspf - . | tar -xlspvf - # všechny ostatní partition obdobně.
- NOTE: KRITICKÝ KROK (tedy ne že by ostatní byly fuk)
- edituj /mnt/boot/grub/menu.lst
- bude to vypadat asi takto:
- přidej "fallback 1" (což znamená, že pokud se nepovede nabootovat z prvního disku, zkusí druhý)
----- snip ----- default 0 color light-blue/black light-cyan/blue ## fallback disc1 fallback 1 # (0) Arch Linux title Arch Linux [Disc0: /boot/vmlinuz26] root (hd0,0) kernel /vmlinuz26 root=/dev/md<root partition - md2> md=<všechny md zařízení, ovšem POUZE nové partition> ro #md=0,/dev/sdb1 md=1,/dev/sdb2 atd # (1) Arch Linux title Arch Linux [Disc1: /boot/vmlinuz26] root (hd1,0) #kernel - to samé, co předchozí blok ----- snip -----
- uprav /mnt/etc/fstab - montovat se budou již MD zařízení
/dev/md2 / ext3 defaults 0 1 /dev/md0 /boot ext2 defaults 0 1 /dev/md1 swap swap defaults 0 0 #atd ...
- přimontuj /proc a /sys na nový raid
mount --bind /sys /mnt/sys mound --bind /proc /mnt/proc
- chroot na raid a kompilace initrd
chroot /mnt # edituj /etc/mkinitcpio.conf - přidej 'raid' do proměnné HOOKS před 'autodetect' # možná budeš muset přidat i moduly filesystému, pokud máš něco jiného než ext2 nebo ext3. Také viz nápověda v souboru. mkinitcpio -g /boot/kernel26.img /etc/start_udev (případně odinstalace -Rd a instalace pacmanem) exit
- Install grub on new raid disk, change the numbers according to your setup.
- Instalace grub na nový disk. Čísla disků musí souhlasit, což je někdy problém. (hd0,0) je /boot partition prvního disku (starého) a (hd1,0) nového, již v raidu zapojeného. Logicky (hd1) značí MBR daného disku.
Grub to čísluje tak, jak to bios nadetekoval. Většinou v pořadí PATA, SATA. Pokud na PATA není hardisk, tak to tam prostě není.
[root@svn /]#grub grub> root (hd1,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd1) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 16 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded Done grub>quit [root@svn /]#
Důležité je, aby nehlásil chyby, a končil succeeded.
- restartuj počítač. NUTNÉ je bootovat z nového disku. Budeš muset sáhnout do biosu.
/sbin/reboot
- drž si palce, aneb cross fingers ;)
- nabootuje-li počítač správně, MUSÍŠ přidat zbylé (ze starého) partition do RAIDu.
[root@svn ~]# mdadm /dev/md0 -a /dev/<old-disk-partitionA> (/dev/sda1) mdadm: hot added /dev/<old-disk-partitionA> [root@svn ~]# mdadm /dev/md1 -a /dev/<old-disk-partitionB> mdadm: hot added /dev/<old-disk-partitionB> [root@svn ~]# mdadm /dev/md2 -a /dev/<old-disk-partitionC> mdadm: hot added /dev/<old-disk-partitionC> ... [root@svn ~]
Hlavně to nespleť ...
- Ověř to ... cat /proc/mdstat
- A počkej si na zesynchronizování jednotlivých partition.
[root@svn ~]# cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10] md1 : active raid1 sda2[0] sdb2[1] 264960 blocks [2/2] [UU] md2 : active raid1 sda3[2] sdb3[1] 80108032 blocks [2/1] [_U] [>....................] recovery = 1.2% (1002176/80108032) finish=42.0min speed=31318K/sec md0 : active raid1 sda1[0] sdb1[1] 40064 blocks [2/2] [UU] unused devices: <none> [root@svn ~]#
- dokonči konfiguraci grubu
----- snip ----- # (0) Arch Linux title Arch Linux [Disc0: /boot/vmlinuz26] root (hd0,0) kernel /vmlinuz26 root=/dev/md<root partition - md2> md=<všechny md zařízení, KOMPLET> ro #md=0,/dev/sdb1,/dev/sda1 md=1,/dev/sdb2,/dev/sda1 atd # (1) Arch Linux title Arch Linux [Disc1: /boot/vmlinuz26] root (hd1,0) #kernel - to samé, co předchozí blok ----- snip -----
- dokončit initrd
edituj /etc/mkinitcpio.conf přesuň 'raid' hook za autodetect a překompiluj initrd mkinitpcio -g /boot/kernel26.img
- Vrať zpět BIOS, bootovat se může již normálně.
- Toť vše. Pokud se na nic nezapomene, jede to krásně.