Sari la conținut

Extinderea spațiului pe disc al unui appliance virtual

Appliance-urile virtuale se umplu: înregistrările, arhivele, bazele de date și logurile se acumulează pe partițiile care le găzduiesc. Această pagină extinde una dintre acele partiții pentru ca ea să utilizeze tot spațiul disponibil pe disc — pe un Mediation Controller sau pe un Edge Gateway.

Operațiunea se efectuează în mod normal la cald, fără impact asupra producției.

O condiție, și nu este negociabilă

Comenzile de mai jos presupun organizarea discurilor și partiționarea livrate împreună cu appliance-ul. Dacă discurile sau partiționarea acestei mașini virtuale au fost modificate manual, ele nu se aplică: șterg și recreează o partiție și ar face acest lucru pornind de la ipoteze care nu mai sunt adevărate. În acest caz, contactați suportul Systancia în loc să adaptați dumneavoastră comenzile.

O singură modificare este tolerată: cea pe care a făcut-o deja această procedură. Pagina este menită să fie aplicată din nou — un appliance extins astfel rămâne eligibil, iar fiecare nouă mărire a discului virtual este transmisă partiției în același mod.

Înainte de a începe

Parcurgeți acești patru pași în ordine. Primul este cel care face ca restul să fie recuperabil.

1. Realizați un backup al mașinii virtuale

Realizați un backup al mașinii virtuale înainte de orice. Extinderea rescrie tabela de partiții: un backup este ceea ce transformă o operațiune eșuată într-o restaurare, în loc de o reinstalare.

2. Extindeți discul virtual din hipervizor

Adăugați spațiul necesar la discul appliance-ului, din hipervizorul dumneavoastră. Acest pas singur nu schimbă nimic în interiorul mașinii — sistemul de operare continuă să vadă dimensiunea anterioară până la rularea comenzilor de mai jos.

Opțiunea este estompată? Căutați un snapshot

Un hipervizor refuză să extindă discul unei mașini virtuale care deține un snapshot. Dacă opțiunea este indisponibilă, verificați dacă a rămas vreunul și eliminați-l — apoi extindeți discul.

3. Opțional, realizați un snapshot

Odată discul extins, puteți realiza un snapshot al mașinii, ca o cale de întoarcere imediată pentru comenzile care urmează. Realizați-l după extinderea discului, niciodată înainte: un snapshot este exact ceea ce ar împiedica acea extindere.

4. Aplicați extinderea în interiorul appliance-ului

Abia atunci rulați comenzile din secțiunea următoare.

Ce partiție trebuie extinsă

Comenzile primesc un director și extind partiția care îl găzduiește. Poate fi indicat orice director al sistemului, cu o singură excepție.

/boot este exclus

Nu vizați /boot. Comenzile acționează asupra volumului LVM al appliance-ului, din care /boot este exclus. Câmpul de mai jos refuză această cale.

În practică, două directoare pentru fiecare appliance cresc mai repede decât restul — ele sunt motivul obișnuit pentru care se rulează această procedură:

Appliance Director Ce conține
Mediation Controller /var Datele serverului Mediation Controller, printre care și baza de date.
Mediation Controller /var/log Logurile de sistem.
Edge Gateway /var/lib/ipdiva/carerecord/archives Arhivele grafice ale sesiunilor înregistrate.
Edge Gateway /var/log Logurile de sistem.

Se indică un director, nu o partiție

Nu este necesar să știți ce partiție sau ce volum logic găzduiește ce anume: comenzile citesc acest lucru din directorul pe care li-l indicați. Rulați df -h pe appliance pentru a vedea care dintre ele se epuizează.

Extindeți partiția

Deschideți o sesiune SSH pe appliance, ca root, apoi rulați comenzile corespunzătoare.

Puteți personaliza variabila din comenzile următoare:

Valoare personalizată Variabilă Comentariu
TARGET_DIRECTORY Directorul a cărui partiție trebuie extinsă — consultați Ce partiție trebuie extinsă.

Sau completați câmpul cu unul dintre cele trei directoare care se saturează primele:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
directory=TARGET_DIRECTORY

echo 1 > /sys/class/block/sda/device/rescan

start_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}'`
mountpoint=`df $directory | awk 'NR==2 {print $1}'`

echo -e "d\n2\nn\ne\n2\n\n\nn\n$start_lvm_partition\n\nn\nt\n5\n8E\nw" | fdisk /dev/sda

pvresize /dev/sda5
lvresize -l +100%FREE $mountpoint
resize2fs $mountpoint
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
directory=TARGET_DIRECTORY

echo 1 > /sys/class/block/sda/device/rescan

start_last_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}' | sort -nr | head -n1`
last_lvm_partition=`fdisk -l /dev/sda | grep $start_last_lvm_partition | awk '{print $1}'`
mountpoint=`df $directory | awk 'NR==2 {print $1}'`

echo -e "d\n${last_lvm_partition: -1}\nn\np\n${last_lvm_partition: -1}\n$start_last_lvm_partition\n\nn\nt\n${last_lvm_partition: -1}\n8E\nw" | fdisk /dev/sda

pvresize $last_lvm_partition
lvresize -l +100%FREE $mountpoint
resize2fs $mountpoint

Ce fac comenzile

Ele înlănțuie patru operațiuni: fac kernelul să vadă noua dimensiune a discului fără repornire, rescriu ultima partiție LVM astfel încât să ajungă la capătul discului, predau acel spațiu către LVM, apoi extind sistemul de fișiere pe el. Cele două variante diferă doar prin organizarea partițiilor fiecărui appliance — alegeți-o pe cea care corespunde mașinii pe care vă aflați.

Verificați spațiul liber înainte și după

Rulați df -h pe director înainte și după. Câștigul trebuie să corespundă spațiului adăugat la pasul 2.

Dacă sistemul de fișiere nu a crescut, nu rulați imediat comenzile din nou: tabela de partiții a fost deja rescrisă, iar o a doua trecere peste aceeași dimensiune de disc ar porni de la o stare pe care ele nu o așteaptă. Raportați în schimb rezultatul către suportul Systancia.

Rularea lor din nou este legitimă într-un singur caz, și acesta este cel obișnuit: atunci când s-a adăugat mai mult spațiu pe discul virtual. Reluați de la pasul 1 — întreaga procedură se aplică din nou, inclusiv backupul.