Konverze disku na RAID
Z KHnetWiki
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 relativně 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ů) V podstatě to lze udělat i midnight commanderem. Ale radši to nedoporučuji. # 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
- 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ě.