O mică remarcă: această lucrare este sintetică.
Unele sarcini descrise aici pot fi realizate mult mai simplu, însă scopul acestei lucrări este de a se familiariza
cu funcționalitatea RAID, LVM, astfel că unele operațiuni sunt artificial complicate.
Cerințele pentru instrumentele necesare realizării lucrării:
- Mijloace de virtualizare, cum ar fi VirtualBox
- Imagine ISO Linux, de exemplu
- Acces la internet pentru descărcarea unor pachete
- Conexiune prin SSH la VM-ul instalat (opțional)
ATENȚIE
Această lucrare de laborator este legată de un subiect delicat, și anume integritatea datelor—este un domeniu
care permite, din cauza unei erori minime—unei litere sau cifre în plus, să pierzi toate datele tale.
Deoarece efectuezi lucrări de laborator, nu ai de ce să îți faci griji, decât că va trebui să începi din nou.
În viața reală, totul este mult mai serios, așa că trebuie să introduci cu mare atenție numele discurilor, înțelegând
exact ce faci cu comanda curentă și cu ce discuri lucrezi.
Un alt aspect important este denumirea discurilor și partițiilor: în funcție de situație, numerele discurilor pot fi diferite
de valorile prezentate în comenzile din această lucrare de laborator.
De exemplu, dacă ștergi disc sda dintr-un raid și apoi adaugi un disc nou, acesta va fi afișat
în sistem cu numele sda. Dacă faci o repornire înainte de a adăuga un disc nou, atunci noul
disc va avea numele sdb, iar vechiul va fi numit sda.
Lucrarea de laborator trebuie realizată de către un utilizator super-administrator (root) deoarece majoritatea comenzilor necesită
privilegii sporite și nu are sens să le obținem constant prin sudo.
Materiale pentru studiu
- RAID
- LVM
- Denumirea discurilor în sistemul de operare Linux
- Ce este o partiție?
- Ce este tabela de partiții și unde este stocată?
- Ce este GRUB?
Utilitățile utilizate
1) vizualizare informații despre discuri
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
- fdisk -l
2) vizualizare informații și lucrul cu LVM - pvs
- pvextend
- pvcreate
- pvresize
- vgs
- vgreduce
- lvs
- lvextend
3) vizualizare informații și lucrul cu RAID - cat /proc/mdstat
- mdadm
4) puncte de montare - mount
- umount
- cat /etc/fstab
- cat /etc/mtab
5) recalibrarea discului - fdisk /dev/XXX
6) copierea partițiilor - dd if=/dev/xxx of=/dev/yyy
7) lucrul cu tabela de partiții - partx
- sfdisk
- mkfs.ext4
8) lucrul cu bootloader-ul - grub-install /dev/XXX
- update-grub
9) diverse - lsof
- apt
- rsync
Lucrarea de laborator constă în 3 părți:
- configurarea unui sistem funcțional utilizând lvm, raid
- simularea unei defectări a unuia dintre discuri
- înlocuirea discurilor în timp real, cu adăugarea de discuri noi și mutarea partițiilor.
Sarcina 1 (Instalarea OS-ului și configurarea LVM, RAID)
1) Creați o nouă mașină virtuală, datorită următoarelor caracteristici:
- 1 gb ram
- 1 cpu
- 2 hdd (numiți-le ssd1, ssd2 și atribuiți-le dimensiuni egale, bifați căsuțele hot swap și ssd)
- controler SATA configurat pe 4 porturi

2) Începeți instalarea Linux și, ajungând la alegerea hard disk-urilor, faceți următoarele:
Metoda de partiționare: manuală, după care ar trebui să vedeți o imagine de acest gen:

Configurarea unei partiții separate pentru /boot: Alegeți primul disc și creați o nouă tabelă de partiții pe acesta
- Dimensiunea partiției: 512M
- Punct de montare: /boot
- Repetați configurarea pentru al doilea disc, dar deoarece nu se poate monta simultan de două ori /boot, alegeți punctul de montare: none, obținând în final următoarea situație (imagine cu defect, nu-mi vine să refac):

Configurarea RAID:
- Alegeți spațiul liber de pe primul disc și configurați-l ca tip de partiție volum fizic pentru RAID
- Alegeți „Finalizați configurarea partiției”
- Repetați exact aceeași configurare pentru al doilea disc, rezultând în următoarea situație:

- Alegeți opțiunea „Configure software RAID”
- Creați dispozitiv MD
- Tip de dispozitiv RAID software: Alegeți matricea redundantă
- Dispozitive active pentru matricea RAID XXXX: Alegeți ambele discuri
- Dispozitive de rezervă: Lăsați 0 în mod implicit
- Dispozitive active pentru matricea RAID XX: alegeți partițiile pe care le-ați creat pentru raid
- Finish
- În final, ar trebui să obțineți o imagine de acest gen:

Configurarea LVM: Alegeți Configurați Managerul de Volume Logice
- Păstrați layout-ul curent al partițiilor și configurați LVM: Da
- Creați grup de volume
- Numele grupului de volume: system
- Dispozitivele pentru noul grup de volume: Alegeți RAID-ul pe care l-ați creat
- Creați volum logic
- numele volumului logic: root
- dimensiunea volumului logic: 25 din dimensiunea discului dvs.
- Creați volum logic
- numele volumului logic: var
- dimensiunea volumului logic: 25 din dimensiunea discului dvs.
- Creați volum logic
- numele volumului logic: log
- dimensiunea volumului logic: 15 din dimensiunea discului dvs.
- Alegând Detalii de configurare a afișării, ar trebui să obțineți următoarea imagine:

- Terminând configurarea LVM, ar trebui să vedeți următoarea situație:

Partiționarea discurilor: selectați pe rând fiecare volum creat în LVM și partiționați-le, de exemplu, pentru root astfel:
- Utilizați ca: ext4
- punct de montare: /
- rezultatul partiționării volumului rădăcină ar trebui să fie așa:

- repetați operațiunea de partiționare pentru var și log, alegând punctele de montare corespunzătoare (/var și /var/log introducând manual), obținând următorul rezultat:

- Alegeți Finalizați Partiția
- Vi se vor pune câteva întrebări despre faptul că v-a rămas o partiție nemontată și swap-ul nu este configurat. Trebuie să răspundeți negativ la ambele întrebări.
Rezultatul final ar trebui să fie astfel:

3) Finalizați instalarea sistemului de operare, instalând grub pe primul dispozitiv (sda) și încărcați sistemul.
4) Efectuați copierea conținutului partiției /boot de pe discul sda (ssd1) pe discul sdb (ssd2)dd if=/dev/sda1 of=/dev/sdb15) Efectuați instalarea grub pe al doilea dispozitiv:
verificați discurile din sistem:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTEnumerați toate discurile pe care vi le-a dat comanda anterioară și descrieți ce este fiecare disc
Găsiți discul pe care nu a fost instalat grub și efectuați această instalare:
grub-install /dev/sdbverificați informațiile despre raid-ul curent cu comanda cat /proc/mdstat și notați ce ați văzut.
verificați ieșirile comenzilor: pvs, vgs, lvs, mount și notați ce ați văzut
Descrieți cu propriile cuvinte ce ați făcut și ce rezultat ați obținut în urma sarcinii efectuate
După finalizarea acestei sarcini, se recomandă să salvați o copie de rezervă a folderului cu mașina virtuală sau să faceți
vagrant box:
Rezultatul: Mașină virtuală cu discurile ssd1, ssd2
Sarcina 2 (Emularea căderii unuia dintre discuri)
1) Dacă ați activat opțiunea hot swap, atunci aveți acces la eliminarea discurilor în timp real
- Efectuați eliminarea discului ssd1 din proprietățile mașinii
- Găsiți directorul unde sunt stocate fișierele mașinii dumneavoastră virtuale și ștergeți ssd1.vmdk
2) Asigurați-vă că mașina virtuală funcționează în continuare
3) Efectuați o repornire a mașinii virtuale și verificați că aceasta funcționează în continuare
4) verificați starea RAID-ului: cat /proc/mdstat
5) adăugați în interfața VM un nou disc de aceeași dimensiune și numiți-l ssd3
6) efectuați operațiile: - verificați că noul disc a fost recunoscut în sistem cu comanda fdisk -l
- copiați tabela de partiții de pe vechiul disc pe noul disc: sfdisk -d /dev/XXXX | sfdisk /dev/YYY
- verificați rezultatul cu comanda fdisk -l
- Adăugați noul disc în RAID: mdadm --manage /dev/md0 --add /dev/YYY
- Verificați rezultatul: cat /proc/mdstat. Ar trebui să vedeți că a început sincronizarea
7) Acum trebuie să efectuați manual sincronizarea partițiilor care nu fac parte din RAID.
Pentru aceasta, vom folosi utilitarul dd, copiind de pe discul „live” pe noul disc pe care l-ați instalat recentdd if=/dev/XXX of=/dev/YYY8) După finalizarea sincronizării, instalați grub pe noul disc
9) Efectuați o repornire a VM-ului pentru a vă asigura că totul funcționează
Descrieți cu propriile cuvinte ce ați făcut și ce rezultat ați obținut în urma sarcinii efectuate
Rezultatul: Discul ssd1 a fost eliminat, discurile ssd2 au fost păstrate, discul ssd3 a fost adăugat.Task 3 (Adding New Disks and Moving Partitions)
This is the most complex and extensive task among all presented.
Be very careful about what you are doing and with which disks and partitions.
It is recommended to take a backup before proceeding.
This task is independent of Task No. 2; it can be performed after Task No. 1 with adjustments for disk names.
The second part of this lab task should restore the state exactly as it was after the first part was completed.To make it easier for you, I recommend not physically removing disks from the host machine, but only
disconnecting them in the machine's properties. From the OS perspective in the VM, this will look absolutely the same, but you will be able to
reconnect the disk later and continue your work backtracking a few steps if issues arise.
For example, you may have performed incorrectly or forgotten to copy the /boot partition to the new disk.
I can only advise you to double-check several times which disks and partitions you are working with, and even better
to note down the correspondence of disks, partitions, and the 'physical' disk number. A nice and clear tree
is generated by the commandlsblk, use it as often as possible to analyze what you have done and what needs to be done.Regarding the history...
Imagine your server worked for a long time on 2 SSD disks, when suddenly...
1) Emulate the failure of the SSD2 disk by removing the disk from the VM properties and rebooting.
2) Check the current state of the disks and RAID:cat /proc/mdstat fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT3) You are lucky — management has allowed you to purchase several new disks:
2 large-capacity SATA disks for the long-awaited task of moving the logs partition to a separate disk.
2 SSDs to replace the failed one, as well as to replace the still functioning one.
It is important to note that the basket server supports the installation of only 4 disks at a time,
so all disks cannot be added at once.Select the HDD capacity to be twice that of the SSD.
Select the SSD capacity to be 1.25 times that of the previous SSDs.4) Add one new SSD disk, naming it ssd4, and after adding, check what happened:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT5) First and foremost, you should be concerned about the safety of the old disk's data.
This time we will transfer data using LVM:- În primul rând, este necesar să copiem tabla de fișiere de pe vechiul disc pe noul disc:
sfdisk -d /dev/XXX | sfdisk /dev/YYYÎnlocuiți x,y cu discurile corecte și analizați ce face acestă comandă.
Rulați comanda lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT și comparați rezultatul cu apelul anterior.
Ce s-a schimbat?
folosind comanda dd, copiați datele /boot pe noul discdd if=/dev/XXX of=/dev/YYYdacă /boot a rămas montat pe vechiul disc, trebuie să fie remontat pe disc-ul activ:
mount | grep boot # vizualizăm unde este montat discul lsblk # verificăm ce discuri sunt în sistem și vedem dacă discul obținut din punctul anterior umount /boot # dezmountăm /boot mount -a # vom monta toate punctele conform /etc/fstab. # Deoarece acolo este indicată punctul de montare /dev/sda, se va efectua o remontare corectă pe discul activInstalați bootloader-ul pe noul disc SSD
grub-install /dev/YYYDe ce efectuăm această operație?
creați un nou array RAID având în vedere doar un nou disc SSD:
mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYYComanda de mai sus nu va funcționa fără a specifica o opțiune specială.
Citiți documentația și adăugați această opțiune la comandă.Folosind comanda cat /proc/mdstat, verificați rezultatul operației dvs. Ce s-a schimbat?
Rulați comanda lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT și comparați rezultatul cu apelul anterior.
Ce s-a schimbat?
6) În etapa următoare, este necesar să configurați LVM
rulați comanda pvs pentru a vizualiza informațiile despre volumele fizice curente
creați un nou volum fizic incluzând în el array-ul RAID creat anterior:pvcreate /dev/md63Rulați comanda lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT și comparați rezultatul cu apelul anterior.
Ce s-a schimbat?
Rulați din nou comanda pvs. Ce s-a schimbat?
Să mărim dimensiunea grupului de volume system folosind următoarea comandă:vgextend system /dev/md63Rulați comenzile și notați ce ați observat și ce s-a schimbat.
vgdisplay system -v pvs vgs lvs -a -o+devicesPe ce disc fizic se află acum LV var, log, root?
Realizați mutarea datelor de pe vechiul disc pe noul disc, înlocuind cu numele corecte ale dispozitivelor.
pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63Repetați operația pentru toate volumele logice
Rulați comenzile și notați ce ați observat și ce s-a schimbat.
vgdisplay system -v pvs vgs lvs -a -o+devices lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTVom modifica VG-ul nostru, eliminând discul vechi din array-ul RAID. Introduceți numele corect al RAID-ului.
vgreduce system /dev/md0Rulați comenzile și notați ce ați observat și ce s-a schimbat.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT pvs vgsPentru a îmbunătăți aspectul, montați /boot pe al doilea disc SSD (ssd4) și rulați lsblk. Astfel, pe discul ssd3 nu
nu trebuie să existe nimic montat. Verificați cu atenție că particiția /boot nu este goală!ls /bootar trebui să arate
câteva fișiere și foldere. Examinați ce este stocat în acest director și notați ce fișier/director răspunde pentru ce.
7) eliminați discul ssd3 și adăugați ssd5, hdd1, hdd2 conform specificațiilor de mai sus, obținând astfel:
ssd4 — primul nou ssd
ssd5 — al doilea nou ssd
hdd1 — primul nou hdd
hdd2 — al doilea nou hdd8) Verificați ce s-a întâmplat după adăugarea discurilor:
fdisk -l lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT9) Vom restaura funcționarea RAID-ului principal:
- efectuați copierea tabelului secțiunilor, înlocuind cu discurile corecte:
sfdisk -d /dev/XXX | sfdisk /dev/YYY - Rețineți că atunci când am copiat tabelul secțiunilor de pe discul vechi, s-a constatat că noul dimensiune
nu folosește toată capacitatea hard disk-ului.
De aceea, în curând va trebui să modificăm dimensiunea acestei secțiuni și să extindem RAID-ul.
Asigurați-vă că verificați acest lucru, introducând comanda:lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT10) copiați secțiunea de boot /boot de pe discul ssd4 pe ssd5
dd if=/dev/XXX of=/dev/YYY11) instalați grub pe noul disc (ssd5)
12) vom schimba dimensiunea celei de-a doua secțiuni a discului ssd5lansați utilitarul pentru gestionarea partițiilor:
fdisk /dev/XXXintroduceți cheia d pentru a șterge secțiunea existentă (selectați 2)
introduceți cheia n pentru a crea o nouă secțiune
introduceți cheia p pentru a specifica tipul de secțiune „primar”
introduceți cheia 2 pentru ca noua secțiune să aibă al doilea număr
Primul sector: apăsați enter pentru a accepta dimensiunea automată calculată a începutului secțiunii
Ultimul sector: apăsați enter pentru a accepta dimensiunea automată calculată a sfârșitului secțiunii
introduceți cheia l pentru a vedea lista tuturor tipurilor posibile de secțiuni și găsiți în ea Linux raid auto
introduceți cheia t pentru a schimba tipul secțiunii create (2) și introduceți numărul găsit în pasul anterior.
introduceți cheia w pentru a salva modificarea pe disc.
12) reîncărcați tabelul secțiunilor și verificați rezultatulpartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTadăugați noul disc la RAID-ul curent (nu uitați să înlocuiți discurile corecte)
mdadm --manage /dev/md63 --add /dev/sda2Vom extinde numărul de discuri din array-ul nostru la 2:
mdadm --grow /dev/md63 --raid-devices=2Verificați rezultatul: avem 2 array-uri marcate, dar ambele secțiuni care fac parte din acest array au dimensiuni diferite
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT13) vom crește dimensiunea secțiunii de pe discul ssd4
lansați utilitarul pentru gestionarea partițiilor:
fdisk /dev/XXXintroduceți cheia d pentru a șterge secțiunea existentă (selectați 2)
introduceți cheia n pentru a crea o nouă secțiune
introduceți cheia p pentru a specifica tipul de secțiune „primar”
introduceți cheia 2 pentru ca noua secțiune să aibă al doilea număr
Primul sector: apăsați enter pentru a accepta dimensiunea automată calculată a începutului secțiunii
Ultimul sector: apăsați enter pentru a accepta dimensiunea automată calculată a sfârșitului secțiunii
La finalizarea partiționării, trebuie să alegeți Nu, pentru a lăsa semnătura apartenenței secțiunii la array.
introduceți cheia w pentru a salva modificarea pe disc.
12) reîncărcați tabelul secțiunilor și verificați rezultatulpartx -u /dev/XXX lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTrețineți că acum secțiunile sda2, sdc2 au o dimensiune > dimensiunea dispozitivului RAID.
13) La acest stadiu, dimensiunea RAID poate fi acum extinsă.
mdadm --grow /dev/md63 --size=max lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # verificați rezultatulExaminați lsblk și notați ce s-a schimbat.
14) Totuși, deși am schimbat dimensiunea RAID, dimensiunile vg root, var, log nu s-au modificat.- verificați care este dimensiunea PV:
pvs - vom extinde dimensiunea PV-ului nostru:
pvresize /dev/md63 - verificați care este dimensiunea PV:
pvs15) Vom adăuga noul spațiu în VG var, root.
lvs # să vedem cât este acum alocat lvextend -l +50%FREE /dev/system/root lvextend -l +100%FREE /dev/system/var lvs # verificați ce a rezultat.La acest stadiu, ați finalizat migrarea array-ului principal pe noile discuri. Lucrul cu ssd1, ssd2 s-a încheiat.
16) Următoarea noastră sarcină este să mutăm /var/log pe noile discuri, pentru aceasta vom crea un nou array și lvm pe discurile HDD.
- să vedem ce nume au noile discuri HDD.
fdisk -l - vom crea un array RAID.
mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd - vom crea un nou PV pe RAID-ul cu discuri mari.
pvcreate data /dev/md127 - vom crea în acest PV un grup numit data.
vgcreate data /dev/md127 - vom crea un volum logic care să folosească tot spațiul liber și îl vom numi var_log.
lvcreate -l 100%FREE -n var_log data # lvs # să vedem rezultatul. - vom formata noua partiție în ext4.
mkfs.ext4 /dev/mapper/data-var_log - să vedem rezultatul.
lsblk17) vom muta datele de loguri de pe vechea partiție pe noua.
vom monta temporar noul depozit de loguri.
mount /dev/mapper/data-var_log /mntvom efectua sincronizarea partițiilor.
apt install rsync rsync -avzr /var/log/ /mnt/să aflăm ce procese rulează acum cu /var/log.
apt install lsof lsof | grep '/var/log'oprim aceste procese.
systemctl stop rsyslog.service syslog.socketvom efectua sincronizarea finală a partițiilor (a datelor care s-ar fi putut modifica de la ultima sincronizare).
rsync -avzr /var/log/ /mnt/vom schimba locurile partițiilor.
umount /mnt umount /var/log mount /dev/mapper/data-var_log /var/logverificăm ce a rezultat.
lsblk18) Corectăm /etc/fstab.
fstab este fișierul în care sunt scrise regulile pentru montarea partițiilor la boot.
sarcia noastră este să găsim linia în care se montează /var/log și să corectăm dispozitivul.system-logpedata-var_log19) Cel mai important în acest stadiu este să nu uităm să modificăm tabela partițiilor (ext4, de exemplu). Deoarece, indiferent de modul în care modificăm diverse RAID-uri, LVM-uri - până când FS-ul de pe partiție nu va fi notificat că dimensiunea acesteia s-a schimbat, nu vom putea folosi noul spațiu. Folosiți comanda
resize2fspentru a modifica FS-ul.20) Acornul final.
- vom reporni. Dacă ați făcut totul corect — veți intra din nou în sistemul dumneavoastră de operare (acest pas este necesar pentru a verifica că totul funcționează. Nu are niciun alt sens în afară de auto-verificare)
- verificați că tot ceea ce voiam să facem a fost într-adevăr realizat:
pvs lvs vgs lsblk cat /proc/mdstat
21) [OPȚIONAL] Efectuați acțiunile
- reporniți apăsând F12, pentru a selecta diferite discuri la pornire, astfel încât să vă asigurați că puteți porni
de pe oricare dintre SSD-uri, astfel încât să nu ne speriem de eșecul unuia dintre ele - acum aveți un LV log inutil în VG system. Distribuiți acest spațiu între root sau var, dar în loc să folosiți
structura 100%FREE specificați dimensiunea manual cu ajutorul cheii -L:-L 500M - soluționați problema cu faptul că /boot se află pe două partiții fără sincronizare, așa ceva nu ar trebui să se facă corect,
acest lucru este adăugat aici pentru exemplu. Nu uitați să copiați anterior conținutul din /boot undeva.- creați un nou raid și includeți în acesta sda1, sda2
- includeți aceste partiții în raidul existent și restabiliți /boot în raidul principal, dar fără a-l monta.
- să vedem ce nume au noile discuri HDD.
- verificați care este dimensiunea PV:
- efectuați copierea tabelului secțiunilor, înlocuind cu discurile corecte:
- În primul rând, este necesar să copiem tabla de fișiere de pe vechiul disc pe noul disc:
Sursa: habr.com









