====== Extend a partition of a VM ======
Since the update of august 2017 it is possible to **choose a custom size for the root disk** or **resize an existing disk**, but before that extra space can be used it has to be manually assigned in the operating system.
The Ubuntu 14.04 and 16.04 templates have the root partition mounted over LVM, using a logical partition of DOS type. Even though this guide is written for those templates it is advisable no to skip the //Check the configuration// chapter.
===== Check the configuration =====
Before continuing you should confirm that the system you are working on has this configuration, otherwise you risk destroying the system.
First check if you're using LVM:
# df -h /
Filesystem Size Used Avail Use% Mounted in
/dev/mapper/Ubuntu14--vg-root 8,5G 6,3G 1,8G 79% /
''df -h '' shows that ''/'' is mounted in ''/dev/mapper/Ubuntu--vg-root'' and that means that LVM is in use.
Now check the root's logical volume name.
# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
root Ubuntu-vg -wi-ao--- 6.03g
swap1 Ubuntu-vg -wi-ao--- 748.00m
Also check the associate volume group name and its physical volume.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 Ubuntu14-vg lvm2 a-- 9,76g 0
We can see that root is in a logical volume called ''root'' inside a volume group called ''Ubuntu-vg'' that uses ''/dev/sda5'' as a physical volume.
Take into account that ''/dev/sda5'' is a logical partition that
Ten en cuenta además que en el sistema de particionado utilizado, ''/dev/sda5'' es una partición lógica que forma parte de la partición extendida ''/dev/sda2''.
===== Resize =====
There are 5 steps necessary:
- Extend the extended partition ''/dev/sda2'' to fill all the free space of the disk.
- Extend the logical partition ''/dev/sda5'' to fill the free space in the extended partition.
- Extend the physical volume of volume group ''Ubuntu-vg''.
- Extend the logical volume ''root'' to fill the free space of the volume group.
- Extend the filesystem to fill the free space of the logical volume.
Run ''parted''. With the command ''print free'' we see that the disk has a total of 21.5GB and free space of 14GB at the end of the disk.
# parted /dev/vda
(parted) print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 256MB 255MB primary ext2 boot
256MB 257MB 1048kB Free Space
2 257MB 7515MB 7258MB extended
5 257MB 7515MB 7258MB logical lvm
7515MB 21.5GB 14.0GB Free Space
First the extended and logical partitions have to be extended (in that order) so they fill the disk and reach the end at 21.5GB (//steps 1 and 2//).
(parted) resizepart 2 21.5GB
(parted) resizepart 5 21.5GB
(parted) quit
Once done and having exited parted, we extend the physical volume in the volume group (// step 3//).
# pvresize /dev/vda5
Physical volume "/dev/vda5" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Now we extend the logical volume (//step 4//).
# lvextend -l+100%FREE /dev/mapper/Ubuntu--vg-root
Extending logical volume root to 19.03 GiB
Logical volume root successfully resized
Finally, the filesystem is extended (//step 5//).
Por último, extendemos el sistema de archivos (//paso 5//).
# resize2fs /dev/mapper/Ubuntu--vg-root
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mapper/Ubuntu--vg-root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/Ubuntu--vg-root is now 4987904 blocks long.
Once this is done all the free space should be assigned to the system's root.