programowy RAID 1 - kilka pytań

Jacek Osiecki joshua w hybrid.pl
Wto, 15 Lis 2005, 08:05:55 CET


On Mon, 14 Nov 2005, Dariusz Krzempek wrote:

> Chcę zrobić programowy RAID 1.

Słusznie - fajna rzecz :)

> Mam dwa dyski tej samej pojemności.

Czy są to dwa dyski OPRÓCZ obecnego, czy też na jednym z nich masz
zainstalowany system?

Jeśli to pierwsze - to:
0. Tworzysz kernel z wkompilowaną obsługą RAID1 (RAID0 też się przyda!)
1. Tworzysz identyczny układ partycji na obu - pamiętaj o typie partycji
    Linux Raid Autodetect (fd), bez tego się "zdziwisz" :)
2. Tworzysz metadevice'y
3. mountujesz, kopiujesz wszystko na docelowe filesystemy
4. instalujesz lilo z boot=/dev/md0 (zakładam że tam będziesz miał /, ew.
    /boot), zmieniasz wpisy w /etc/fstab podmountowanego filesystemu
5. Przy użyciu programiku install-mbr (niestety w PLD go nie ma :-/)
    instalujesz programik który zabootuje ze pierwszej partycji (tej, na
    której jest metadevice wskazywany przez parametr boot w lilo.conf):
    install-mbr -v -i n -p 1 -e =1 /dev/hdb
    install-mbr -v -i n -p 1 -e =1 /dev/hdc
6. Wyłączasz sprzęt, przekładasz hdb->hda i cieszysz się raidami ;)

> Ale nigdzie tam nie pisze czy np. można zrobić taki raid 1 na systemie
> który już jest zainstalowany i pracuje na jednym z dwuch dysków? bez
> możliwości utraty danych?

Jak masz tylko jeden dysk 'luzem' - też nie ma problemu.
0. Nowy kernel
1. towrzysz na pustym dysku partycje
2. Tworzysz metadevice'y z jednym dyskiem (czyli np. /dev/hdc1 missing)
3. mountujesz, kopiujesz, zmieniasz /etc/fstab na podmountowanym systemie
4. w /etc/lilo.conf zostawiasz na razie boot=/dev/hda, ale pod obrazem
    kernela wpisujesz już root=/dev/md0
5. reboot
6. Partycjonujesz /dev/hda tak samo jak /dev/hdc - najprościej sfdiskiem:
    sfdisk -d /dev/hdc | sfdisk /dev/hda
    Jedna uwaga: NIC z /dev/hda nie może być podmountowane, w szczególności
    pamiętaj o tym żeby system nie używał swapa z /dev/hda! Inaczej czeka Cię
    jeszcze jeden reboot...
7. raidhotadd /dev/md0 /dev/hda1 ... itd. :)
8. kawka, patrzysz na /proc/mdstat jak ładnie Ci się odbudowują raidy
9. w /etc/lilo.conf zmieniasz boot=/dev/hda na boot=/dev/md0
10. teraz dwie opcje:
     a) install-mbr -v -i n -p 1 -e =1 /dev/hda
        install-mbr -v -i n -p 1 -e =1 /dev/hdc
     b) Jeśli nie chce Ci się szukać install-mbr, to w /etc/lilo.conf
        wpisujesz:
        raid-extra-boot=mbr

Procedura wielokrotnie przećwiczona, w dodatku na serwerach do których nie
miałem fizycznego dostępu - więc działa :)

Teraz parę uwag:
1. Tak, nowy kernel - w maszynie produkcyjnej wolę kernel skrojony na miarę
    i nie używający initrd. Po co dodawać jeszcze jeden element układanki,
    który może zawieść?
2. Dla partycji /tmp i /var/cache warto zamiast raid1 postawić raid0 - nie
    ma tam danych strategicznych, a dostajemy 'za darmo' 2x większą
    pojemność i przyspieszenie operacji zapisu
3. W drugim przypadku (gdy dodajemy połówkowe raidy i potem je uzupełniamy)
    można przy odrobinie sprytu (i większej odrobinie szczęścia ;) obyć się
    w ogóle bez rebootu - dzięki pivot_root
4. install_mbr jest o tyle lepszy od dodawania raid-extra-boot w /etc/lilo.conf
    że system wstanie nawet jak zrobimy jakieś machlojki typu zamiana dysków
    hda+hdc na hdb+hdd :)

To chyba wszystko :)

Pozdrawiam,
-- 
Jacek Osiecki joshua w ceti.pl GG:3828944
"Poglądy polityczne mają takie znaczenie w sejmie jak upierzenie u krokodyla"
(c) Tomasz Olbratowski 2004


Więcej informacji o liście dyskusyjnej pld-users-pl