Extinderea discului unei mașini VMware Guest care rulează Ubuntu (LVM2)

  Acasă » Jurnale » Blog claudiu.cristea » Extinderea discului unei mașini VMware Guest care rulează Ubuntu (LVM2)  
 

Extinderea discului unei mașini VMware Guest care rulează Ubuntu (LVM2)

Extinderea discului unei mașini VMware Guest care rulează Ubuntu (LVM2)

Atunci când mașina virtuală nu mai are spațiu poate părea simplu să mai adaugi din cel aflat în rezervă pe ESX. Aparent așa este. Din consola VMware e doar o problemă de setări. Realitatea, însă, este că spațiul “oferit” de gazdă (host) nu este “primit” de oaspete (guest). Pentru ca mașina să recunoască și să utilizeze acest spațiu suplimentar sunt necesare mai multe operații.

M-am lovit de această situație și nu a fost totul “la prima mână”. Iată experiența mea...

Mediul

Am să explic procedeul pornind de la situația pe care am întâlnit-o. Iată mediul în care am făcut extinderea spațiului de stocare a mașinii oaspete (guest):

  • Container: VMware Server 3i, 3.5.0
  • Client: VMware Infrastructure Client 2.5.0
  • Spațiu de stocare inițial: 7GB
  • Sistem de operate guest Ubuntu Server 11.10

Partiționare: am folosit opțiunile implicite la instalarea Ubuntu (Guided - use entire disk and setup LVM).

Precauții

Înainte de a trece la treabă folosiți VMware Infrastructure Client și salvați un snapshot al mașinii virtuale. Asta vă va ajuta să restaurați totul în situația inițială în caz de eroare sau dezastru. La final, dacă totul a decurs OK, ștergeți snapshot-ul.

Mai mult spațiu mașinii virtuale

Inițial mașina virtuală a fost creată cu 7GB ca și disc fizic. Am adus-o la 20GB din VMware Infrastructure Client.

Permisiuni

Ai nevoie de access de root pentru a face modificările dorite.

$ sudo su

Partiționarea

Să vedem care e situația inițială:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/hope-root
                      7.7G  5.5G  1.9G  75% /
udev                 1000M  4.0K 1000M   1% /dev
tmpfs                 403M  260K  403M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                 1007M     0 1007M   0% /run/shm
/dev/sda1             228M   23M  193M  11% /boot

Observați că spațiul este pe terminate, mai mult de 75% fiind deja ocupat. Iată și situația partițiilor:

$ fdisk -l /dev/sda
 
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d4deb
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501758    20969471    10233857    5  Extended
/dev/sda5          501760    20969471    10233856   8e  Linux LVM

Pentru partiționare am folosit cfdisk. Desigur puteți folosi și alt utilitar sau chiar simplu, fdisk. Am preferat cfdisk pentru interfață. Dacă nu-l aveți instalat implicit în sistem, îl puteți obține ușor:

$ apt-get install cfdisk

Am trecut la partiționare:

$ cfdisk /dev/sda

Pe ultima poziție, vedem spațiul adăugat marcat ca Free Space.

Am creat o nouă partiție cu [ New ] și am ales [ Logical ]. Apoi am setat tipul cu [ Type ]. Am ales Linux LVM (cod 8E).

La sfârșit am salvat modificările pe disc cu [ Write ] și am părăsit utilitarul cu [ Quit ].

Ia să vedem ce am obținut...

$ fdisk -l /dev/sda
 
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d4deb
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501758    41943039    20720641    5  Extended
/dev/sda5          501760    20969471    10233856   8e  Linux LVM
/dev/sda6        20969535    41943039    10486752+  8e  Linux LVM

A apărut /dev/sda6 dar trebuie să verificăm dacă noua partiție e recunoscută. Acest lucru îl facem simplu cu:

$ ls /dev/sda6

Dacă partiția este listată la ls săriți direct la Adăugarea la LVM. Dacă nu, va trebui să forțăm împrospătarea tabelei Linux cu partițiile fără a face reboot. Pentru aceasta avem la dispoziție comanda partprobe. În caz că nu este instalată o facem foarte simplu (mulțumim Debian/Ubuntu!):

$ apt-get install parted

Reîmprospătăm lista partițiilor din sistem (dacă e cazul):

$ partprobe

Adăugarea la LVM

Să vedem acum lista curentă a volumlor fizice:

$ pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda5  hope lvm2 a-   9.76g    0 

Din câte se observă avem un singur volum fizic, cel inițial. Ceea ce trebuie făcut este crearea unui nou volum fizic. Voi folosi partiția nou creată /dev/sda6.

$ pvcreate /dev/sda6
  Physical volume "/dev/sda6" successfully created

Să extindem acum grupul de volume cu noul volum fizic:

$ vgextend hope /dev/sda6
  Volume group "hope" successfully extended

Cercetăm din nou lista columelor fizice:

$ pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sda5  hope lvm2 a-    9.76g     0 
  /dev/sda6  hope lvm2 a-   10.00g 10.00g

Observăm că volumul a fost adăungat grupului de volume. A fost, oare, adăugat și în LVM? Să vedem:

$ lvdisplay 
  --- Logical volume ---
  LV Name                /dev/hope/root
  VG Name                hope
  LV UUID                8ljnrY-iawX-YTJj-tUFd-63TW-tsLZ-FIPmNJ
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                7.76 GiB
  Current LE             1986
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

Deci nu este adăugat la LVM. O vom face prin extinderea LVM:

$ lvextend -l+100%FREE /dev/hope/root
  Extending logical volume root to 17.76 GiB
  Logical volume root successfully resized

Verificăm din nou:

$ lvdisplay 
  --- Logical volume ---
  LV Name                /dev/hope/root
  VG Name                hope
  LV UUID                8ljnrY-iawX-YTJj-tUFd-63TW-tsLZ-FIPmNJ
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                17.76 GiB
  Current LE             4546
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

Voilà! Este în LVM dar nu suntem încă gata. Mai trebuie să redimensionăm sistemul de fișiere (file system).

Redimensionarea

După extinderea LVM vom extinde prin redimensionare și sistemul de fișiere.

$ resize2fs /dev/mapper/hope-root 
resize2fs 1.41.14 (22-Dec-2010)
Filesystem at /dev/mapper/hope-root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/hope-root to 4655104 (4k) blocks.
The filesystem on /dev/mapper/hope-root is now 4655104 blocks long.

Să vedem dacă am reușit…

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/hope-root
                       18G  5.5G   12G  33% /
udev                 1000M  4.0K 1000M   1% /dev
tmpfs                 403M  264K  403M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                 1007M     0 1007M   0% /run/shm
/dev/sda1             228M   23M  193M  11% /boot

Am reușit! Spațiul alocat este la dispziția sistemului în mașina VMware guest.

Final

Dacă totul a decurs cum trebuie și sistemul funcționează, ștergem snapshot-ul creat la început.

Credits

Extinderea discului unei mașini VMware Guest care rulează Ubuntu (LVM2)
Extinderea discului unei mașini VMware Guest care rulează Ubuntu (LVM2)
Extinderea discului unei mașini VMware Guest care rulează Ubuntu (LVM2)

Comentarii

Mergea si extinderea directa a lui sda5.

fdisk -l /dev/sda

si se noteaza sectorul de inceput al partitiei sda5 dupa care, tot din fdisk, se sterge partitia si se recreaza mentionandu-se sectorul de start notat anterior. Sectorul de end se lasa default. Apoi

pvresize /dev/sda5 && lvextend...

si gata.

Gabi (neverificat), 10 Februarie 2013 16:10

Dacă șterg partiția /dev/sda5 pierd datele, right?

Claudiu Cristea, 10 Februarie 2013 20:15

Nope, nu se pierde nimic. Ideea e ca interventia se face la nivelul tabelei de partitii. Acolo practic e "harta" cu organizarea partitiilor pe disc. Cand stergi o partitie de acolo, de fapt se sterg doar "coordonatele". Daca le rescrii inapoi ca inainte, nu se-ntampla nimic.

Ce ziceam eu mai sus e sa stergi coordonatele si sa le scrii din nou pastrand sectorul de inceput al partitiei. Cel de sfarsit se lasa default (ar trebui sa fie ultimul de pe disc). Apoi pvresize informeaza LVM-ul ca dimensiunea PV-ului s-a schimbat.

Gabi (neverificat), 12 Februarie 2013 17:25

Interesant. Mulțumesc pentru comentariu.

Totuși "scurtătura" nu-mi pare prea sigură pentru cineva cu experiență mai redusă.

Claudiu Cristea, 13 Februarie 2013 07:53

Publică un comentariu nou

Conţinutul acestui câmp va fi considerat confidenţial şi nu va fi făcut public.
  • Adresele de situri web şi adresele de e-mail se transformă automat în linkuri.
  • Taguri HTML permiseŞ <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Liniile şi paragrafele sunt rupte automat.

Mai multe informaţii despre opţiunile de filtrare

   
   
 
 
  ©2007-2019, Claudiu Cristea. All rights reserved | Powered by Grafit SRL    Get Firefox!