Utilizator:Petre/Conversie la RAID
Sa zicem ca ai discul sda partitionat si formatat "traditional" si vrei sa-i mai pui unul sau mai multe discuri si sa faci raid cu toate.
Pe discul sau discurile noi (N-1, lasand sda la o parte) le partitionezi cum iti va conveni (partition type 0xFD la membrii raid nu e musai necesar, dar previne confuzii) si faci raidurile pastrand liber locul sda-ului, la modul: mdadm --create --level 5 (sau 1, sau 10, sau whatever) --raid-devices 4 (adica N, numarand si sda) /dev/md0 missing /dev/sdb1 /dev/sdc1 /dev/sdd1 (lasi "missing" in locul partitiei de pe sda). La fel si cu restul de md-uri. daca vrei sa si bootezi de pe raid, partitia pe care e /boot va trebui sa fie raid1 (o sa explic mai jos cum faci cu grub ca sa n-ai probleme), desi am auzit ca grub2 ar sti sa booteze de pe raid, n-am incercat, nu ma pronunt.
Dupa ce ai md-urile create (atentie, daca ai inegalitati de marime intre discuri sau partitii, se va considera marimea celei mai mici ca marimea tuturor iar restul de spatiu de pe cele mai mari nu va putea fi folosit), le formatezi cu mkfs (md-urile, nu partitiile), le montezi undeva si copiezi datele de pe partitiile de pe sda pe md-uri, in functie de cum o sa vrei sa le montezi (cp -ax e suficient, de incercat sa fie activitate cat mai mica pe disc ca sa pierzi cat mai putine date proaspete la mutare).
Daca e vorba de discul sistem si nu se poate demonta, se seteaza bootloaderul sa porneasca cu md-urile ( grubul de pe discurile din raid si fstabul de pe md-ul care va avea rol de root).
Grub, pt. boot de pe un / sau /boot care e un raid1 format din sdb1, sdc1 si sdd1 se seteaza asa:
- din sistemul parinte (pe care ai montat /dev) rulezi: grub --no-floppy
- device (hd0) /dev/sdb ### scenariul in care sdb este vazut de bios ca primul hard-disc
- root (hd0,0) #### adica sdb1, prima partitie de pe primul disc din bios
- setup (hd0) #### instalezi grub in mbr-ul discului respectiv
- device (hd0) /dev/sdc # la fel pt. discul urmator, il punem tot ca discul de boot, pentru ca daca biosul ajunge sa booteze de pe el, asta e
- root (hd0,0)
- setup (hd0)
- device (hd0) /dev/sdd
- root (hd0,0)
- setup (hd0)
- ctrl-c sa iesi din shellul grub
- atentie! nu umbla la mbr-ul lui sda pentru ca de ala stii sigur ca booteaza in caz ca ai ratat ceva
- ce face toata schema de mai sus: instruieste grubul de pe fiecare disc sa incarce 2nd stage si kernelul de pe partitia de pe _acelasi_ disc. Daca nu faci remapari de device-uri si doar setup (hd1), setup (hd2), etc, o sa te trezesti ca-si cauta 2nd stage la locatia pe care o avea pe (hd0), care in principiu e aceeasi la raid1, cu exceptia cazului de fata cand hd0 e un filesystem diferit.
De la o vreme si din niste motive pe care cei care nu s-au lovit de ele le injura :P mdadm a inceput sa ceara un fisier de configurare care sa-i spuna ce device-uri sa foloseasca. Pe Debian asta se rezolva cu /usr/share/mdadm/mkconf > /etc/mdadm.conf urmat de mkinitramfs -u -k all (eu fac asta in chrootul de pe raid in care am montat in prealabil cu -o bind /dev si /sys). Daca ai alta distributie vezi daca ai acest mkconf si pe unde e. Se recomanda sa arunci o privire peste acest mdadm.conf generat si sa vezi daca e ce trebuie. ID-urile se obtin cu mdadm --detail /dev/md0 sau mdadm --info /dev/sdb1 (sau poti tine minte doar mdadm --query ca zice ala ce e cazul sa dai mai departe).
Reboot cu fortarea din bios sa booteze de pe unul din discurile noi (nu uita sa setezi root=/dev/md0 in configul de grub din raid si fstabul din raid sa monteze md-urile, nu sda-urile).
Daca nu mi-a scapat nimic, in principiu ar trebui ca dupa reboot sa ai montate raidurile, iar sda sa fie nefolosit. Raidurile sunt inca degradate (cu sdaX missing), asa ca ar trebui reparate repede. Daca e cazul, monteaza sda-urile undeva sa mai copiezi datele care ti-au scapat (desi va fi mai dificil, ca pe md a inceput deja sa se faca scrieri), dupa care demonteaza sda-urile, repartitioneaza-l (daca toate discurile sunt identice, eu copiez efectiv tabela de partitii cu sfdisk -d /dev/sdb | sfdisk /dev/sda) si adauga noile partitii in raid, in genul: mdadm --manage --add /dev/md0 /dev/sda1 (imperechind md-urile cu partitiile reale asa cum e cazul). Acum ar trebui sa se vada in /proc/mdstat ca au inceput sincronizarea (dupa caz, asta va dura mult si/sau va consuma tot i/o-ul sistemului, se pot regla niste parametri de sysctl intr-o directie sau alta). Dupa ce cel putin partitia de boot s-a sincronizat complet se poate reinstala grub si pe sda cu schema de mai sus (device (hd0) /dev/sda) si se poate reboota sistemul "normal", lasand biosul sa booteze de pe sda.