Linux SW Raid
Nejprve do systému přidáme prázdný disk (v našem případě hdb). Stávající disk hda, na kterém běží systém, má standardní systém souborů ext3 a swap.
Nejprve použijeme zobrazíme diskové oddíly:
sudo fdisk -l
Výpis může vypadat následujícím způsobem:
Disk /dev/hda: 17.1 GB, 17179803648 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 2043 16410366 83 Linux
/dev/hda2 2044 2088 361462+ 5 Extended
/dev/hda5 2044 2088 361431 82 Linux swap / Solaris
Disk /dev/hdb: 17.1 GB, 17179803648 bytes
16 heads, 63 sectors/track, 33288 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk /dev/hdb doesn't contain a valid partition table
Vytvoříme nové diskové oddíly na disku hdb:
sudo fdisk /dev/hdb
Pomocí následující sekvence vytvoříme partitions:
n, p, 1, 1, velikost oddílu | např. +10240M pro 10GB |
n, e, 2, Enter, Enter | pro extended partition na zbytku disku |
n, l, 5, Enter, +2048M | 2GB pro Swap |
a,1 | nastavení disku jako boot |
t, 1, fd | Linux raid autodetect |
t, 5, 82 | Linux swap |
w | uložení nastavení |
Výpis oddílů může vypadat např. takto:
sudo fdisk -l
Disk /dev/hda: 17.1 GB, 17179803648 bytes 255 heads, 63 sectors/track, 2088 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 2043 16410366 83 Linux /dev/hda2 2044 2088 361462+ 5 Extended /dev/hda5 2044 2088 361431 82 Linux swap / Solaris Disk /dev/hdb: 17.1 GB, 17179803648 bytes 255 heads, 63 sectors/track, 2088 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hdb1 * 1 2043 16410366 fd Linux raid autodetect /dev/hdb2 2044 2088 361462+ 5 Extended /dev/hdb5 2044 2088 361431 82 Linux swap / Solaris
Vytvoříme degradovaný raid 1 (pouze s jedním diskem):
sudo mdadm --create /dev/md0 -c 128 -l 1 -n 2 /dev/hdb1 missing
Stav zkontrolujeme:
sudo cat /proc/mdstat
Výpis bude vypadat asi nějak takto:
Personalities : [raid1] md0 : active raid1 hdb1[0] 1029568 blocks [2/1] [U_] unused devices: <none>
Nyní vytvoříme file systém v našem případě ext3:
sudo mkfs.ext3 /dev/md0
Vytvoříme swap:
sudo mkswap /dev/hdb5 sudo swapon /dev/hdb5 cat /proc/swaps
Vytvoříme adresář a přimontujeme raid:
sudo mkdir /mnt/newroot sudo mount /dev/md0 /mnt/newroot
Nyní můžeme zkopírovat data z disku hda1 na raid - máme několik možností:
sudo tar cl / | tar xvC /mnt/newroot #nebo cp -ax / /mnt/newroot #nebo sudo rsync -avx --delete / /mnt/newroot
Musíme upravit soubor fstab:
sudo nano /mnt/newroot/etc/fstab
#/dev/hda1 / ext3 defaults,errors=remount-ro 0 1 /dev/md0 / ext3 defaults,errors=remount-ro 0 1
Instalace Grubu na disk hdb:
sudo grub-install --recheck /dev/hdb sudo grub-install --root-directory=/mnt/newroot/boot /dev/hdb
Editace menu Grubu:
sudo nano /mnt/newroot/boot/grub/menu.lst
title Ubuntu, kernel 2.6.20-15-server root (hd0,0) #kernel /boot/vmlinuz-2.6.20-15-server root=/dev/hda1 ro quiet splash kernel /boot/vmlinuz-2.6.20-15-server root=/dev/md0 ro quiet splash initrd /boot/initrd.img-2.6.20-15-server quiet savedefault
Vypneme počítač, disk hda vyjmeme. Disk hdb přesuneme na první kanál (jako hda). Jako hdb připojíme nový disk o stejné nebo větší kapacitě. Počítač naběhne z degradovaného raidu.
Vytvoříme nové diskové oddíly na disku hdb:
sudo fdisk /dev/hdb
Pomocí následující sekvence vytvoříme partitions:
n, p, 1, 1, velikost oddílu | např. +10240M pro 10GB |
n, e, 2, Enter, Enter | pro extended partition na zbytku disku |
n, l, 5, Enter, +2048M | 2GB pro Swap |
a,1 | nastavení disku jako boot |
t, 1, fd | Linux raid autodetect |
t, 5, 82 | Linux swap |
w | uložení nastavení |
Vytvoříme swap:
sudo mkswap /dev/hdb5 sudo swapon /dev/hdb5 cat /proc/swaps
Přidáme hdb1 do stávajícího pole:
sudo mdadm /dev/md0 -a /dev/hdb1
V /proc/mdstat kontrolujeme sychronizaci disků:
sudo cat /proc/mdstat
Synchronizace vypadá následujícím způsobem:
Personalities : [raid1] md0 : active raid1 hdb1[2] hda1[0] 9765888 blocks [2/1] [U_] [==>..................] recovery = 13.4% (1310848/9765888) finish=3.5min speed=39522K/sec unused devices: <none>
Synchronizace po dokončení:
Personalities : [raid1] md0 : active raid1 hdb1[1] hda1[0] 9765888 blocks [2/2] [UU] unused devices: <none>
Stav pole můžeme sledovat také pomocí následujících příkazů:
sudo mdadm -v /dev/md0 sudo mdadm -D /dev/md0
Doplnění:
Označení disků prostřednictvím UUID
Disky je možné označit prostřednictvím UUID, což může být výhodné v systémech s velkým množstvím disků. Soubor /etc/fstab může pak vypadat takto:
# /etc/fstab: static file system information. proc /proc proc defaults 0 0 # /dev/md0 UUID=674d0f52-e1dd-4854-a110-120b364e4ebe / ext3 defaults,errors=remount-ro 0 1 # /dev/hda5 UUID=f6fa510c-ebd5-4f86-b247-f709093b44f8 none swap sw 0 0 # /dev/hdb5 UUID=31619ecf-6075-478e-80ae-fe86fd6c5123 none swap sw 0 0 /dev/cdrom /media/cdrom0 udf,iso9660 user,noauto 0 0
Jak zjistíme UUID?
ls -l /dev/disk/by-uuid/ #nebo sudo vol_id /dev/hda5 #nebo blkid /dev/hda5
Od verze 7.04 dochází pří výpadku jednoho z disků v raidu k zastavení bootování systému. Problém odstraníme následujícím způsobem:
mdrun /dev/md/0 mdadm -D /dev/md0 reboot