Modificare „Utilizator:Petre/Conversie la RAID”

Salt la: navigare, căutare

Atenție: Nu v-ați autentificat. Adresa dumneavoastră IP va fi vizibilă în mod public dacă efectuați modificări. Dacă vă autentificați sau vă creați un cont, modificările dumneavoastră vor fi asociate numelui de utilizator, pe lângă alte beneficii.

Modificarea poate fi anulată. Verificați diferența de dedesubt și apoi salvați pentru a termina anularea modificării.
Versiunea curentă Textul dumneavoastră
Linia 1: Linia 1:
{{Draft rpetre}}
+
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.
  
{{ambox|type=style}}
+
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.
===Problema===
 
Ai un sistem cu harddiscul (sa zicem, /dev/sda) partitionat si formatat "traditional" si sa adaugi unul sau mai multe discuri pentru a forma o matrice [[RAID]] cu mirroring (de tip 1, 5 sau 10) impreuna cu cel existent.  
 
  
===Partitionare===
+
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).
Partitionezi discul sau discurile noi (N-1, unde N = nr. total de discuri care vor fi prezente in RAID, inclusiv /dev/sda deja existent). Nu e musai necesar <i>partition type 0xFD</i> la membrii RAID, dar e recomandat pentru a preveni confuziile. Apoi creezi partitiile RAID pastrand liber locul sda-ului.
 
Exemplul de mai jos creaza o partitie RAID 5 care foloseste 4 discuri (inclusiv cel existent):
 
mdadm --create --level 5 --raid-devices 4 /dev/md0 missing /dev/sdb1 /dev/sdc1 /dev/sdd1 
 
Inlocuieste parametrul argumentului <i>--level</i> cu nivelul RAID dorit (1=mirroring fara paritate sau stripping, 5=mirroring cu stripping si paritate etc.) Se lasa "missing" in locul partitiei de pe discul /dev/sda.
 
Pentru restul de partitii (/dev/md1../dev/mdX, unde X este numarul ultimei partitii) se procedeaza similar.
 
Daca vrei sa faci boot de pe RAID, partitia care contine directorul /boot trebuie sa fie de tip RAID1 (vezi mai jos pentru cum se face asta cu [[grub]]).  
 
  
Atentie: daca discurile sau partitiile din matricea RAID nu sunt de marimi egale, o partitie RAID oarecare va folosi marimea celei mai mici partitii de pe discurile fizice prezenta in acea partitie iar restul de spatiu de pe cele mai mari nu va putea fi folosit.
+
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).
De exemplu, daca in /dev/md0 ai /dev/sdb1 si /dev/sdc1 de 500MB iar /dev/sdd1 de 450MB, marimea partitiei /dev/md0 va fi de 450MB si vor ramane 50MB neutilizabili pe /dev/sdb1 si /dev/sdc1.
 
Bineinteles, partitia de pe discul existent (/dev/sda1), care va fi adaugata in RAID de abia ulterior, trebuie sa fie cel putin egala cu dimensiunea partitiei RAID(minim 450MB in cazul de mai sus), altfel /dev/sda va trebui repartitionat ca sa poata fi folosit.
 
  
Dupa crearea partitiilor in /dev/md, se formateaza partitiile RAID (mdX-urile) cu [[mkfs]], se monteaza intr-un mountpoint si se copiaza datele de pe partitiile din /dev/sda in partiile corespondente din /dev/md (cp -ax e suficient, de incercat sa fie activitate cat mai mica pe disc ca sa pierzi cat mai putine date proaspete la mutare).
+
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.
  
Daca e vorba de discul sistem si nu se poate demonta, se seteaza bootloader-ul sa porneasca cu md-urile ( grub de pe discurile din raid si fstab de pe md-ul care va avea rol de root).
+
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).
 
 
===Configurare pentru boot de pe RAID===
 
Pentru boot de pe o partitie RAID1 format din sdb1, sdc1 si sdd1, montata in / sau /boot, se ruleaza grub din sistemul parinte (pe care este montat /dev):
 
# grub --no-floppy
 
si se dau urmatoarele comenzi:
 
<source lang="bash">
 
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 BIOS-ul ajunge sa booteze de pe el, asta e
 
root (hd0,0)
 
setup (hd0)
 
device (hd0) /dev/sdd
 
root (hd0,0)
 
setup (hd0)
 
</source>
 
Dupa care iesi din shell-ul grub cu Ctrl-C.
 
 
 
<b>Atentie!</b> 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  
 
# 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 --examine /dev/sdb1
 
pentru a vedea informatii despre o partitie din RAID.
 
  
 
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).
 
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).
  
===Adaugarea discului initial la RAID===
+
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.
Dupa reboot ar trebui sa ai montate partitiile din RAID, iar /dev/sda sa fie nefolosit. Partitiile RAID sunt in acest moment degradate (cu /dev/sdaX missing din /dev/mdX), asa ca vor trebui reconstruite. Daca e cazul, monteaza sdaX-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 si exista posibilitatea sa apara desincronizari), dupa care demonteaza partitiile din /dev/sda si repartitioneaza /dev/sda. Daca toate discurile sunt identice, se poate copia efectiv tabela de partitii cu
 
# sfdisk -d /dev/sdb | sfdisk /dev/sda
 
Apoi adauga noile partitii in raid, de exemplu:
 
# 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). Poti urmari progresul reconstructiei cu:
 
# watch cat /proc/mdstat
 
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 reporni sistemul "normal", lasand BIOS-ul sa booteze de pe sda.
 

Reţine că toate contribuţiile la Wiki.lug.ro sunt considerate ca respectând licenţa Creative Commons Attribution ShareAlike 2.5 (vezi Wiki.lug.ro:Drepturi de autor pentru detalii). Dacă nu doreşti ca ceea ce scrii să fie editat fără milă şi redistribuit în voie, atunci nu trimite materialele respective aici.
De asemenea, trimiţând aceste materiale aici te angajezi că le-ai scris tu sau că sunt copiate dintr-o sursă care permite includerea materialelor sub această licenţă. NU TRIMITE MATERIALE PROTEJATE DE DREPTURI DE AUTOR FĂRĂ PERMISIUNE!

Revocare | Ajutor pentru modificare (se deschide într-o fereastră nouă)

Formate folosite în această pagină: