Espansione di un volume virtuale
In uno scenario di virtualizzazione è possibile incrementare la dimensione di un volume assegnato ad un host senza interrompere il servizio.
Prima di espandere un volume verifichiamo la sua percentuale di utilizzo con il comando df:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb 61796140 34130080 24503948 59% /home/backup
Ogni sistema di virtualizzazione offre il suo strumento per aumentare la dimensione di un volume. La procedura qui illustrata è stata verificata con il Cloud di Hetzner. Appena effettuato il ridimensionamento, il kernel emette le seguenti righe di log:
kernel: sd 2:0:0:1: Capacity data has changed kernel: sd 2:0:0:1: [sdb] 136314880 512-byte logical blocks: (69.7 GB/65.0 GiB) kernel: sdb: detected capacity change from 64424509440 to 69793218560 kernel: VFS: busy inodes on changed media or resized disk sdb
La nuova capacità (espressa in multipli di 1024) può essere verificata con con cat /proc/partitions:
major minor #blocks name 8 0 240001024 sda 8 1 239999983 sda1 8 16 68157440 sdb
Dopo aver ridimensionato il volume bisogna allargare anche il filesystem ospitato. Trattandosi di un ext4 si utilizza il comando resize2fs. Dalla man page si legge:
- The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system.
- Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.
- If size parameter is not specified, it will default to the size of the partition.
Quindi l'allargamento può essere fatto senza smontare il volume:
resize2fs -d 16 /dev/sdb
L'opzione -d 16 mostra informazioni di debug su timing information.
resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/sdb is mounted on /home/backup; on-line resizing required old_desc_blocks = 8, new_desc_blocks = 9 The filesystem on /dev/sdb is now 17039360 blocks long.
Lo spazio mostrato da df risulta quindi incrementato:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb 66956728 34130028 29433908 54% /home/backup