Skip to content
Luca Dell'Oca Principal Cloud Architect @Veeam
Virtual To The Core Virtual To The Core

Virtualization blog, the italian way.

  • Media
  • About me
Virtual To The Core
Virtual To The Core

Virtualization blog, the italian way.

Estendere un disco LVM su CentOS

Luca Dell'Oca, November 10, 2010December 4, 2016

Da sempre uno delle funzioni più comode di vmware è la possibilità di estendere secondo necessità la dimensione degli hard disk, senza dover reinstallare niente.

Se con Windows 2003 abbiamo necessità di tool di terze parti, se con Windows 2008 il tutto può essere fatto nativamente all’interno del pannello di controllo, cosa facciamo con un sistema linux come CentOS?

Ipotizziamo di avere un web server CentOS 5.5, con un singolo disco da 13 Gb. Se abbiamo fatto un’installazione classica di CentOS, ci troveremo davanti un partizionamento di questo tipo:

fdisk -l
Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1566    12474472+  8e  Linux LVM

Come sempre, CentOS crea una piccola partizione da 100M per /boot, e il restante spazio viene gestito tramite LVM. Se ipotizziamo di estendere il singolo disco fino a 20 Gb tramite vmware (ricordo a tutti:fatevi prima un backup o una snapshot!!!), ci potremmo ritrovare in seguito questa schermata:

Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1566    12474472+  8e  Linux LVM

Il disco è effettivamente diventato da 21,4 Gb (tralasciamo pignolerie sul valore effettivo), ma se fate caso alla partizione /dev/sda2, il cilindro di fine è sempre il 1566 così come è invariato il numero di blocchi utilizzati. Dobbiamo procedere quindi a ridimensionare la partizione.

Per fare ciò utilizzeremo sempre fdisk, avviato col comando fdisk /dev/sda. In sequenza daremo questi comandi:

d, per cancellare una partizione

2, dato che dobbiamo rifare appunto sda2

n, per ricreare una nuova partizione

p, vogliamo ricrearla primaria come l’originale

2, stiamo ricreando sda2

enter, accettiamo il primo cilindro libero come inizio

enter, accettiamo l’ultimo cilindro come fine (e già qua notiamo che non è più 1566 ma 2610)

Perchè possiamo fare bellamente questa operazione da “macellai”? Perchè la partition table non viene riscritta fintanto che col comando w non la salviamo, e viene in ogni caso riletta al boot dal sistema o in seguito a comandi particolari che vedremo.

Manca ancora una cosa: se adesso dessimo il comando p per visualizzare le partizione, sda2 risulta essere di tipo 83, ovvero linux standard. Dobbiamo farla tornare ad essere di tipo lvm:

t, per cambiare il tipo di partizione

2, vogliamo sempre lavorare su sda2

8e, è il codice esadecimale delle partizioni lvm

Diamo infine w per salvare la nuova tabella delle partizioni. Riceveremo questo errore:

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Procederemo quindi a riavviare il server, attendendo fiduciosi che riparta (Ovviamente sarà stata nostra precauzione fare un backup preventivo della virtual machine!!!).

Caricata la nuova tabella, verifichiamo le dimensioni del physical volume lvm:

pvdisplay 

 --- Physical volume ---
 PV Name               /dev/sda2
 VG Name               vg_os
 PV Size               11.90 GB / not usable 22.10 MB
 Allocatable           yes (but full)
 PE Size (KByte)       32768
 Total PE              380
 Free PE               0
 Allocated PE          380
 PV UUID               wfLPaA-dNqL-XnDK-anrh-p7VJ-iJw8-VPePU3

Alcune informazioni che ricaviamo: il disco è visto da 12 gb ancora, e non ci sono slot liberi sul volume fisico per estendere poi il volume group (Free PE = 0). Diamo quindi il comando:

pvresize /dev/sda2

e riproviamo con pvdisplay:

--- Physical volume ---
 PV Name               /dev/sda2
 VG Name               vg_os
 PV Size               19.89 GB / not usable 19.30 MB
 Allocatable           yes
 PE Size (KByte)       32768
 Total PE              636
 Free PE               256
 Allocated PE          380
 PV UUID               wfLPaA-dNqL-XnDK-anrh-p7VJ-iJw8-VPePU3

Questa volta il volume fisico è di 20 gb e abbiamo 256 Free PE (Physical Extends). Usiamo quindi il comando

lvdisplay

per ottenere il nome corretto del volume logico. In un’installazione classica sarà /dev/VolGroup00/LogVol00. Diamo quindi il comando:

lvextend /dev/VolGroup00/LogVol00 -l +256

dove 256 è appunto il numero di PE liberi a nostra disposizione. Rieseguendo pvdisplay dovremo trovare nuovamente i Free PE uguali a 0.

Ultimo passaggio, estendiamo il filesystem per occupare interamente il logical volume:

resize2fs /dev/VolGroup00/LogVol00

E voila! Una riesecuzione di df -h ci mostrerà lo spazio libero aumentato.

Share this:

  • Click to share on X (Opens in new window) X
  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to email a link to a friend (Opens in new window) Email
  • Click to share on Tumblr (Opens in new window) Tumblr
  • Click to share on Pinterest (Opens in new window) Pinterest
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to share on Pocket (Opens in new window) Pocket
Tecnologia centosdisklvmresize

Post navigation

Previous post
Next post

Search

Sponsors

Latest Posts

  • Migrate WSL (Windows Subsystem for Linux) to a new computer
  • Pass keystrokes to a pfSense virtual machine to install it automatically
  • Automatically deploy pfSense with Terraform and Ansible
  • My Automated Lab project: #6 Create a S3 Bucket with Terraform
  • My Automated Lab project: #5 Deploy a Linux vSphere VM with Terraform and custom disks
©2025 Virtual To The Core | WordPress Theme by SuperbThemes
We use cookies to ensure that we give you the best experience on our website, and to collect anonymous data regarding navigations stats using 3rd party plugins; they all adhere to the EU Privacy Laws. If you continue to use this site we will assume that you are ok with it.OkNoPrivacy Policy