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