Via Proxmox (of VMWare) is een extra disk toegevoegd aan een VM. Deze disk is in de VM de tweede disk, dus ‘/dev/sdb‘ en deze is 100Gb. Nu willen we deze uitbreiden met 20Gb echter zonder downtime van de VM, met andere woorden: ‘on the fly’.
Binnen Proxmox kan de disk groter gemaakt worden, dus die maken we 120G met de ‘Disk Action -> + Resize’ in het ‘Hardware’ overzicht.
Ingelogd op de pve host (ssh) zien we het Logical Volume voor deze VM met
lvdisplay /dev/disk2/vm-201-disk-2
waarbij disk2 de disk-name is waar de VM op is geïnstalleerd, in dit geval ‘disk2’ en vm-201 is het ID van de VM, in dit geval dus ‘201’ en het disknummer ‘disk-2’.
In de VM vragen we de grootte op met ‘fdisk -l /dev/sdb‘:
$ sudo fdisk -l /dev/sdb Disk /dev/sdb: 120 GiB, 128849018880 bytes, 251658240 sectors Disk model: QEMU HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc2d6c0c0 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 209715199 209713152 100G 83 Linux
Zoals te zien is in de output, is de disk wel 120GiB maar de partitie /dev/sdb1 is nog steeds 100G. Om Ubuntu te triggeren om de grootte van de disk te ‘scannen’, geven we het volgende commando:
$ sudo sh -c 'for device in /sys/class/scsi_device/*; do echo 1 > $device/device/rescan; done'
Dit zorgt ervoor dat de disk-devices ge-triggered worden om een rescan uit te voeren. Met ‘growpart‘ kan de partitie uitgebreid worden. growpart is onderdeel van cloud-utils die die moet wel geïnstalleerd zijn.
$ sudo apt install -y cloud-utils
Het commando om de 1e partitie op /dev/sdb uit te breiden is:
$ sudo growpart /dev/sdb 1 CHANGED: partition=1 start=2048 old: size=209713152 end=209715200 new: size=251656159 end=251658207
Het resultaat is in de output en zoals te zien is zijn de nieuwe ‘size‘ en ‘end‘ waardes nu groter. De laatste stap is om het filesystem de grotere partitie te laten gebruiken:
$ sudo resize2fs /dev/sdb1 resize2fs 1.45.5 (07-Jan-2020) Filesystem at /dev/sdb1 is mounted on /mnt/storage; on-line resizing required old_desc_blocks = 13, new_desc_blocks = 15 The filesystem on /dev/sdb1 is now 31457019 (4k) blocks long.
Om te controleren of de grotere partitie daadwerkelijk in gebruik is kunnen we nog een fdisk commando geven:
$ sudo fdisk -l /dev/sdb Disk /dev/sdb: 120 GiB, 128849018880 bytes, 251658240 sectors Disk model: QEMU HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc2d6c0c0 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 251658206 251656159 120G 83 Linux
Het resultaat is een partitie van 120G. Om nu ook het ‘OS system kernel‘ te laten weten dat er een resize heeft plaatsgevonden is er het volgende commando:
$ sudo partprobe -s /dev/sdb /dev/sdb: msdos partitions 1
Voor Logical Volumes en Volume Groups zijn er de volgende commando’s:
lsblk /dev/sda pvs lvextend -l+100%FREE /dev/VG/LV