In un ambiente virtuale capita ogni tanto di dover espandere il file system di un host. Con le versioni recenti di Windows Server l’operazione è quasi banale, con Linux molte guide che spesso compaiono per prime nei motori di ricerca suggeriscono sistemi molto macchinosi che passano dal boot della VM con l’ISO della distribuzione.
Di seguito viene descritto come ampliare una partizione di una VM CentOS 8 installata con i deafult.
La procedura è agnostica riguardo al sistema di virtualizzazione: ogni virtualizzatore ha il proprio metodo per ampliare un disco virtuale, il risultato dal punto di vista del host Linux è identico.
Si parte da una VM con un disco virtuale da 16 Gb su cui è installato Linux CentOS 8 minimal seguendo le impostazioni di default, quindi con LVM e file system xfs.
Lo scopo è ampliare il disco virtuale sottostate a 40 Gb ed estendere la partizione root per occupare tutto lo spazio libero del disco.
L’installazione minimal non comprende growpart
, che deve essere installato con il comando
dnf -y install cloud-utils-growpart
Innanzi tutto un controllo della situazione atuale
[root@test01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 14.4G 0 part
├─cl-root 253:0 0 12.8G 0 lvm /
└─cl-swap 253:1 0 1.6G 0 lvm [SWAP]
sr0 11:0 1 7G 0 rom
Il disco è da 16 Gb e file system root da 12,8 Gb si trova in un volume LVM nella partizione /dev/sda3
[root@test01 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 cl lvm2 a-- 14.41g 0
A questo punto si estende il disco virtuale a 40 Gb utilizzando i tool del sistema di virtualizzazione e, come si vede, sda è passato a 40 Gb:
[root@test01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 14.4G 0 part
├─cl-root 253:0 0 12.8G 0 lvm /
└─cl-swap 253:1 0 1.6G 0 lvm [SWAP]
sr0 11:0 1 7G 0 rom
I volumi logici sono sulla partizione 3, che è quella da estendere con growpart:
[root@test01 ~]# growpart /dev/sda 3
CHANGED: partition=3 start=3328000 old: size=30224384 end=33552384 new: size=80558047,end=83886047
Si può verificare che /dev/sda3 passa da 14,4 a 38,4 Gb:
[root@test01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 38.4G 0 part
├─cl-root 253:0 0 12.8G 0 lvm /
└─cl-swap 253:1 0 1.6G 0 lvm [SWAP]
sr0 11:0 1 7G 0 rom
Ora è il turno del volume group, che viene esteso fino ad occupare tutto lo spazio disponibile:
[root@test01 ~]# pvresize /dev/sda3
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
Ed ecco la nuova dimensione del volume group, che passa da 14,41 a 38,41 Gb
[root@test01 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 cl lvm2 a-- 38.41g 24.00g
Ora il volume logico; il nome da mettere dopo /dev/mapper
lo si può vedere con df
oppure con lsblk
come indicato sopra:
[root@test01 ~]# lvextend -l +100%FREE /dev/mapper/cl-root
Size of logical volume cl/root changed from <12.81 GiB (3279 extents) to <36.81 GiB (9423 extents).
Logical volume cl/root successfully resized.
L’ultimo sforzo è l’estensione della partizione, che è quello che interessa davvero:
[root@test01 ~]# xfs_growfs /
meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=839424 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=3357696, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 3357696 to 9649152
Ed ecco che la partizione root è stata ampliata
[root@test01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 37G 1.7G 36G 5% /
/dev/sda2 976M 187M 722M 21% /boot
/dev/sda1 599M 6.9M 592M 2% /boot/efi
tmpfs 378M 0 378M 0% /run/user/0
Questo metodo è sicuramente meno rapido di click destro + Extend partition e poi Next fino alla fine del wizard, ma è comunque relativamente semplice ed è possibile creare uno script shell con i comandi opportuni che risulta altrettanto veloce come l’omologo di Windows.
Di sicuro questo metodo non passa per un tedioso e inutile boot con la ISO in recovery mode.
Lascia un commento