Di recente ho avuto la necessità di espandere il disco (mount point) di un container LXC su Proxmox, tuttavia nonostante dalla Web UI il resize sembrasse aver funzionato, all’interno del container la dimensione era rimasta invariata.
Il container LXC in questione è un fileserver su Debian 12 con il disco di root su un datastore ZFS sul nodo di Proxmox e diversi mount points su un datastore LVM mappato con iSCSI su un NAS.
Il resize di un disco LVM di un container LXC su Proxmox avviene in due fasi: nella prima fase il disco LVM viene espanso sull’host e viene modificata la sua dimensione nel file di configurazione del container; nella seconda fase il file system (ext4) del LVM viene espanso fino ad occuparne l’intera dimensione.
Nel caso del mio problema la prima fase veniva completata senza errori e perciò non venivano mostrati errori nella Web UI, però la seconda fase falliva e quindi il file system non veniva espanso.
ESTENDERE IL DISCO DI UN CONTAINER DALLA WEB UI
Per espandere il disco di un container LXC su Proxmox dalla Web UI è necessario selezionare il container, navigare nel menù Resources, cliccare su Volume Action ed infine su Resize:
Successivamente, è necessario selezionare la dimensione che si vuole aggiungere al disco e cliccare su Resize disk:
VERIFICARE LA DIMENSIONE DEL DISCO
Accedere alla console del nodo di Proxmox ed eseguire i comandi:
0 1 2 3 4 5 |
root@node01:~# ID_CT=252 root@node01:~# lvs | grep "vm-$ID_CT" vm-252-disk-0 lun01 -wi-ao---- 4.00g vm-252-disk-1 lun01 -wi-ao---- 36.00g vm-252-disk-3 lun01 -wi-ao---- 150.00g vm-252-disk-3 lun01 -wi-ao---- 12.00g |
NOTA BENE: sostituire 252 con l’ID del container
Verificare la dimensione del disco che si è espanso, in questo caso il disco #3.
Accedere al container LXC ed eseguire i comandi:
0 1 2 3 4 5 6 |
root@file01:~# df -TH Filesystem Type Size Used Avail Use% Mounted on DS01/subvol-252-disk-0 zfs 8.6G 874M 7.8G 11% / /dev/mapper/lun01-vm--252--disk--0 ext4 4.2G 29k 4.0G 1% /usr/share/01 /dev/mapper/lun01-vm--252--disk--1 ext4 38G 7.1G 29G 20% /usr/share/03 /dev/mapper/lun01-vm--252--disk-3 ext4 159G 102G 50G 68% /usr/share/02 /dev/mapper/lun01-vm--252--disk--3 ext4 8.6G 29k 8.4G 1% /tmp/test |
Se le dimensioni dei dischi non coincidono allora significa che il file system del disco non è stato modificato.
ESPANDERE LA DIMENSIONE DEL DISCO DI UN CONTAINER DA BASH
Per espandere il disco di un container LXC su Proxmox da bash è possibile utilizzare il binario pct:
0 |
pct resize <id container> mp<# mount point> <total size in GB>G |
Se l’output del comando è simile al seguente allora significa che l’espansione del disco è stata completata correttamente:
0 1 2 3 4 5 6 |
root@node01:~# pct resize 252 mp3 14G Size of logical volume lun01/vm-252-disk-3 changed from 12.00 GiB (3072 extents) to 14.00 GiB (3584 extents). Logical volume lun01/vm-252-disk-3 successfully resized. resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/lun01/vm-252-disk-3 is mounted on /tmp; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 2 The filesystem on /dev/lun01/vm-252-disk-3 is now 3670016 (4k) blocks long. |
Se invece l’output mostrato dovesse contenere degli errori, come ad esempio quello mostrato successivamente, allora eseguire la procedura descritta nel successivo paragrafo:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
root@node01:~# pct resize 252 mp2 14G iscsiadm: default: 1 session requested, but 1 already present. iscsiadm: Could not login to [iface: default, target: iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa, portal: fffff::ffff:222fda:ff321,3260]. iscsiadm: initiator reported error (15 - session exists) iscsiadm: Could not log into all portals Logging in to [iface: default, target: iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa, portal: fffff::ffff:222fda:ff321,3260] command '/usr/bin/iscsiadm --mode node --targetname iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa --login' failed: exit code 15 iscsiadm: default: 1 session requested, but 1 already present. iscsiadm: Could not login to [iface: default, target: iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa, portal: fffff::ffff:222fda:ff321,3260]. iscsiadm: initiator reported error (15 - session exists) iscsiadm: Could not log into all portals Logging in to [iface: default, target: iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa, portal: fffff::ffff:222fda:ff321,3260] command '/usr/bin/iscsiadm --mode node --targetname iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa --login' failed: exit code 15 Size of logical volume lun01/vm-252-disk-3 changed from 12.00 GiB (37888 extents) to 14.00 GiB (38400 extents). Logical volume lun01/vm-252-disk-3 successfully resized. iscsiadm: default: 1 session requested, but 1 already present. iscsiadm: Could not login to [iface: default, target: iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa, portal: fffff::ffff:222fda:ff321,3260]. iscsiadm: initiator reported error (15 - session exists) iscsiadm: Could not log into all portals Logging in to [iface: default, target: iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa, portal: fffff::ffff:222fda:ff321,3260] command '/usr/bin/iscsiadm --mode node --targetname iqn.2000-01.com.synology:nas01.Target-1.aaaaaaaaaaaa --login' failed: exit code 15 resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/lun01/vm-252-disk-3 is mounted on /tmp; on-line resizing required old_desc_blocks = 6, new_desc_blocks = 19 resize2fs: Permission denied to resize filesystem Failed to update the container's filesystem: command 'unshare -m -- sh -c 'mount --make-rprivate / && mount /dev/lun01/vm-252-disk-3 /tmp && resize2fs /dev/lun01/vm-252-disk-3'' failed: exit code 1 |
EFFETTUARE MANUALMENTE IL RESIZE DEL FILE SYSTEM DI UN CONTAINER
Innanzitutto è necessario avviare il container specificando il suo ID, che in questo caso è 252:
0 |
root@node01:~# pct start 252 |
Successivamente è necessario individuare l’LV Path relativo al disco da modificare:
0 1 2 3 4 5 6 |
root@node01:~# lvdisplay | grep "LV Path" LV Path /dev/lun01/vm-252-disk-1 LV Path /dev/lun01/vm-252-disk-2 LV Path /dev/lun01/vm-252-disk-0 LV Path /dev/lun01/vm-252-disk-3 LV Path /dev/proxmox/swap LV Path /dev/proxmox/root |
Gli LV Path rispettano la sintassi /dev/<nome volume group>/vm-<id container>-disk-<# disk>.
Tramite i soft links presenti nella posizione indicata dagli LV Paths è possibile indentificare i device mappers utilizzati per i dischi LVM del container:
0 1 2 3 4 |
root@node01:~# ls -la /dev/lun01/vm-252-disk-* lrwxrwxrwx 1 root root 8 May 27 00:29 /dev/lun01/vm-252-disk-0 -> ../dm-12 lrwxrwxrwx 1 root root 8 May 27 00:29 /dev/lun01/vm-252-disk-1 -> ../dm-11 lrwxrwxrwx 1 root root 8 May 27 00:29 /dev/lun01/vm-252-disk-2 -> ../dm-14 lrwxrwxrwx 1 root root 8 May 27 01:18 /dev/lun01/vm-252-disk-3 -> ../dm-11 |
In questo caso il device mapper del disco da modificare è mappato su /dev/dm-11.
Prima di proseguire con l’estensione del disco è consigliabe effettuare i controlli sul file system con i comandi:
0 1 2 3 4 5 6 7 8 9 |
root@node01:~# fsck /dev/dm-11 fsck from util-linux 2.38.1 e2fsck 1.47.0 (5-Feb-2023) /dev/mapper/lun01-vm--252--disk-3 contains a file system with errors, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/lun01-vm--252--disk-3: 9885/3145728 files (8.3% non-contiguous), 1078038/1258291 blocks |
Infine è possibile espandere il file system del disco LVM con il comando:
0 1 2 3 |
root@node01:~# resize2fs /dev/dm-11 resize2fs 1.47.0 (5-Feb-2023) Resizing the filesystem on /dev/dm-11 to 3670016 (4k) blocks. The filesystem on /dev/dm-11 is now 3670016 (4k) blocks long. |
A questo punto accedere al container e verificare che il file system sia stato espanso.
0 Comments