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 [EMAIL PROTECTED] GG:3828944
"Poglądy polityczne mają takie znaczenie w sejmie jak upierzenie u krokodyla"
(c) Tomasz Olbratowski 2004
_______________________________________________
pld-users-pl mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-users-pl

Odpowiedź listem elektroniczym