Motto

Uživatel, který má ze správy počítačů strach, je lepší než uživatel, který jej nemá.

Navigace:   Úvod Rady - tipy - triky Vychytávky v Linuxu Softwarový RAID 1
Softwarový RAID 1 PDF Tisk Email
Pátek, 29 Únor 2008 12:19

Pokud se někdy někde dostanete ke starému počítači, který budete chtít použít jako server, popř. se rovnou dostanete ke starému serveru, určitě nebude podporovat pole RAID 1. A v Linuxu jej zprovoznit není vůbec žádný problém. Vůbec nezáleží na typu disků, jestli SCSI nebo ATA, princip je stejný. Celý postup mírně zjednoduším, pole přece nebude zprovozňovat nějaký začátečník. Navíc tento fígl bude fungovat ve všech distrech.

Prvně si rozdělte disky tak, jak jste zvyklí, akorát musíte nastavit u obou disků stejně velkou systémovou partition. Nejjednodušší je na každém disku udělat systémovou partition hned na začátek, čili sda1 a sdb1 (popř. hda1 a hdb1). Systémovou partition prvního disku (sda1 nebo hda1) udělejte typu Linux (partition druhého disku můžete nechat zatím ladem), zformátujte třeba ext3 a do ní nainstalujete Linux. Po instalaci a prvním spuštění si připravíte pole. Systémovou partition druhého disku (sdb1 nebo hdb1) udělejte typu Linux raid autodetect. Poté s ní vytvoříte pole příkazem:

  • # mdadm --create /dev/md0 -c 128 -l 1 -n 2 /dev/sdb1 missing

Tímto vytvoříte pole s dvěma disky prozatím s jedním aktivním, druhý je nepřipojený (degradovaný režim). Pak pole naformátujte stejným fs jako první disk:

  • # mke2fs -j /dev/md0

Nově vytvořené pole přimountujte:

  • # mount /dev/md0 /mnt/raid

A překopírujte celý obsah stávajícího běžícího systému do pole. Můžete použít příkaz cp, tar, rsync nebo Midnight Commander. Po zkopírování dat musíte přinutit systém, aby po restartu připojil vaše pole jako kořenový file systém. K tomu musíte zeditovat řádek kořenového file systému v souboru fstab (přepište stávající sda1 za md0) na původním disku sda1:

  • /dev/md0 / ext3 defaults 1 1

Upravený soubor fstab pak z původního disku sda1 nakopírujte na stejné místo do pole md0. A poté musíte zkonfigurovat zavaděč. V tomto stavu nastane totiž mírně schizofrenní situace, kdy zavaděč zůstane stále na prvním disku, jádro zavede rovněž z prvního disku, ale jako kořenový file systém připojí už vaše vytvořené pole.

Konfigurace zavaděče LILO poprvé

Úprava tohoto zavaděče je lehčí, proto si ji ukážeme jako první. Hlavní konfigurák je v /etc/lilo.conf, najděte v něm definici image zaváděného jádra a změňte řádek určující rootovský disk s jádrem a celým systémem:

  • image = /boot/vmlinuz-2.6.24-1-686
  • root = /dev/md0
  • label = Debian
  • read-only

Nahrajte zavaděč do MBR příkazem:

  • # lilo

Upravený soubor lilo.conf zkopírujte na stejné místo ve vašem poli md0 a restartujte počítač.

Konfigurace zavaděče GRUB poprvé

Teď upravíte hlavní konfigurák GRUBu, v souboru /boot/grub/menu.lst najděte definice image zaváděného jádra, upravte pouze definici kořenového file systému.

  • title Debian GNU/Linux, kernel 2.6.24-1-686
  • root (hd0,0)
  • kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/md0 ro
  • initrd /boot/initrd.img-2.6.24-1-686
  • savedefault

Není třeba nic nahrávat, změny se projeví okamžitě, restartujte počítač.

Připojení druhého disku

Nyní po restartu (v tomto kroku se to občas zvrtne, někdy bohužel systém odmítne připojit vaše pole md0 jako kořenový systém. Zkušený uživatel si však lehce poradí, stačí mít poruce nějakou Live distribuci, zavést pomocí chroot zavaděč do MBR druhého disku a pak prohodit fyzické zapojení disků, v dalších krocích pak místo sda1 připojujete druhý disk sdb1!) zavaděč bude sice stále načítat obraz systému z původního disku sda1, ale jako kořenový systém už bude sloužit vaše pole md0. Po nabootování s připojeným polem pak přidáte do pole původní disk sda1. Prvně mu změníte jeho typ rovněž na Linux raid autodetect (původním systémem se netrapte) a spustíte příkaz:

  • # mdadm /dev/md0 -a /dev/sda1

Tímto se spustilo připojení druhé disku do RAID a následuje synchronizace obou disků. V souboru /proc/mdstat můžete sledovat její průběh. Po dokončení ve stejném souboru bude něco takového:

  • md0 : active radi1 sdb1[0] sda1[1]
  • 35559744 blocks [2/2] [UU]

Nyní jsou oba disky v poli md0. K datům samozřejmě můžete stále přistupovat i původním způsobem, mountování sda1 a sdb1 bude stále fungovat. Teď už jen zbývá upravit zavaděč tak, aby fungoval z pole md0 i při výpadku jednoho z disků.

Konfigurace zavaděče LILO podruhé

Prvně v něm najděte řádek určující místo záznamu zavaděče, ten změňte na pole md0 (pokud máte LILO v MBR prvního disku, bude tam boot = /dev/sda).

  • boot = /dev/md0

A pod něj vepište řádek definice vašeho pole:

  • raid-extra-boot = "/dev/sda, /dev/sdb"

Tímto je konfigurák hotov a nyní jen stačí jej zavést do MBR. Ve skutečnosti se zavede do MBR obou disků (sda i sdb). Zavádět se bude stále pomocí MBR disku sda, ale při výpadku převezme jeho činnost disk sdb (tj. funkci MBR). Spusťte teď příkaz:

  • # lilo

Restartujte a je to.

Konfigurace zavaděče GRUB podruhé

U GRUBu je princip narozdíl od LILO kapánek jiný, ale výsledek úplně stejný. Prvně si najděte konfigurák mapování disků GRUBu v /boot/grub/device.map. Jestli vám některý disk v něm chybí, klidně jej tam dopište:

  • (hd0) /dev/sda
  • (hd1) /dev/sdb

Teď upravíte hlavní konfigurák GRUBu a nastavíte v něm zavádění jádra pro oba disky vašeho pole zvlášť. V souboru /boot/grub/menu.lst najděte definice image zaváděného jádra, zkopírujte všechny řádky a upravte cesty k diskům.

  • title Debian GNU/Linux, kernel 2.6.24-1-686
  • root (hd0,0)
  • kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/md0 ro
  • initrd /boot/initrd.img-2.6.24-1-686
  • savedefault
  • title Debian GNU/Linux, kernel 2.6.24-1-686
  • root (hd1,0)
  • kernel /boot/vmlinuz-2.6.24-1-686 root=/dev/md0 ro
  • initrd /boot/initrd.img-2.6.24-1-686
  • savedefault

Zde pozor, první root není to stejné jako druhé root. To první určuje, odkud se bude načítat obraz jádra, to druhé odkud celý systém. K obrazu jádra přistoupí GRUB ještě jako k sda1 (popř. sdb1), ale systém už bude načítat z pole md0. Pokud máte nastavený GRUB pro načítání jádra z obou disků, musíte nyní zajistit, aby při nenalezení jádra na prvním disku přeskočil na načítání jádra z druhého. To zajistíte direktivou fallback.

  • default 0
  • fallback 1

A nyní přichází velmi důležitá finta, na které stojí úspěšnost celého zavádění. Aby fungovalo zavádění systému z druhého disku GRUBem z prvního disku, musíte editovat jeden velmi důležitý a nenápadný řádek. Upozorňuji, že jej nesmíte odkomentovat. Direktiva v řádku se odkazuje na nějaký disk a vy jej nasměrujete na vaše pole:

  • # kopt=root=/dev/md0 ro

Pokud máte GRUB takhle nastavený, musíte jej zavést do MBR obou disků, aby se v případě výpadku prvního disku, spustil GRUB z druhého disku. Zavedení se dělá ručně pomocí spuštění konzoly GRUBu:

  • # grub

V konzole použijete důležité dva příkazy. Ten první říká, kde se mají hledat konfigurační soubory pro zavedení zavaděče a ten druhý říká kam se zavaděč nahraje.

  • > root (hd0,0)
  • > setup (hd0)
  • > root (hd1,0)
  • > setup (dh1)
  • > quit

Tímto je vše hotovo a zbývá restartovat.

 
Mendelovo gymnázium | Designed by webmaster | Powered by Joomla | Creative Commons Attribution