Back
Credit
Proxmox - Increase VM Disk Size
Add new, or increase size of existing, disk in Proxmox VE UI
Partition the new disk
Create a new physical device (using pvcreate)
Extend the existing volume group
Extend the logical volume
Extend the file system (ext4 in my case)
Check current storage
First lets check how much space left on the VM:
root@jupyterhub:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 396M 11M 385M 3% /run
/dev/mapper/ubuntu1604--vg-root 18G 15G 1.8G 90% /
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/ubuntu1604--vg-home 20G 44M 19G 1% /home/jupyter
/dev/mapper/ubuntu1604--vg-log 465M 112M 325M 26% /var/log
/dev/sda1 472M 155M 293M 35% /boot
tmpfs 396M 0 396M 0% /run/user/2160
Now lets see all the available disks on the system after adding a new disk through Promox VE User Interface:
root@testvm:~# fdisk -l
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
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: 0x93152316
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 1001470 20969471 19968002 9.5G 5 Extended
/dev/sda5 1001472 20969471 19968000 9.5G 8e Linux LVM
Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdc: 32 GiB, 34359738368 bytes, 67108864 sectors
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: gpt
Disk identifier: 6B4A0899-D3D5-4771-856D-EDB254829C91
Device Start End Sectors Size Type
/dev/sdc1 2048 67108830 67106783 32G Linux filesystem
Disk /dev/mapper/ubuntu1604--vg-root: 17.5 GiB, 18815647744 bytes, 36749312 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/ubuntu1604--vg-swap: 952 MiB, 998244352 bytes, 1949696 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/ubuntu1604--vg-log: 488 MiB, 511705088 bytes, 999424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/ubuntu1604--vg-home: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Partitioning the new disk
As you can see the 64 GiB disk is present without any partitioning. Lets go ahead and partition that disk:
root@testvm:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x193c65a1.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-134217727, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-134217727, default 134217727):
Created a new partition 1 of type 'Linux' and of size 64 GiB.
Command (m for help): p
Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
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: 0x193c65a1
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 134217727 134215680 64G 83 Linux
Command (m for help): p
Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
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: 0x193c65a1
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 134217727 134215680 64G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Now let’s create a new physical device with the newly partitioned disk using pvcreate and view it using pvdisplay:
root@testvm:~# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
root@jupyterhub:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name ubuntu1604-vg
PV Size 9.52 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2437
Free PE 0
Allocated PE 2437
PV UUID qNCelA-nJDf-NX7Q-ZkK4-iR4M-vQho-mfFqA1
--- Physical volume ---
PV Name /dev/sdc1
VG Name ubuntu1604-vg
PV Size 32.00 GiB / not usable 2.98 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 8191
Free PE 662
Allocated PE 7529
PV UUID fu3bxw-oCCH-jOh1-428b-lAQf-DCBe-E6KQiv
"/dev/sdb1" is a new physical volume of "64.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 64.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID F0FsRP-ROTm-xbMv-7I3D-E0Jh-mfBw-rM4mn4
Check current volume group
Thereafter, let’s go ahead and check the current volume groups using vgdisplay:
root@testvm:~# vgdisplay
--- Volume group ---
VG Name ubuntu1604-vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 2
Act PV 2
VG Size 41.52 GiB
PE Size 4.00 MiB
Total PE 10628
Alloc PE / Size 9966 / 38.93 GiB
Free PE / Size 662 / 2.59 GiB
VG UUID BR84gF-JBKN-ndcp-At3G-l9UB-4CAs-KVyyta
Extend current volume group
Now we can extend it using vgextend and verify it using vgdisplay:
root@testvm:~# vgextend ubuntu1604-vg /dev/sdb1
Volume group "ubuntu1604-vg" successfully extended
root@testvm:~# vgdisplay
--- Volume group ---
VG Name ubuntu1604-vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 13
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 3
Act PV 3
VG Size 105.51 GiB
PE Size 4.00 MiB
Total PE 27011
Alloc PE / Size 9966 / 38.93 GiB
Free PE / Size 17045 / 66.58 GiB
VG UUID BR84gF-JBKN-ndcp-At3G-l9UB-4CAs-KVyyta
Thereafter, lets go ahead and check the logical volumes using lvdisplay:
root@testvm:~# lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu1604-vg/swap
LV Name swap
VG Name ubuntu1604-vg
LV UUID 0SYO9N-bAdU-vfGR-soF1-vvcp-Bg8v-EPrJEL
LV Write Access read/write
LV Creation host, time ubuntu1604, 2017-06-27 15:12:58 +0100
LV Status available
# open 2
LV Size 952.00 MiB
Current LE 238
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
--- Logical volume ---
LV Path /dev/ubuntu1604-vg/log
LV Name log
VG Name ubuntu1604-vg
LV UUID fXp0kR-TYBp-mdiS-sYXd-ja2S-dABf-ThjEf0
LV Write Access read/write
LV Creation host, time ubuntu1604, 2017-06-27 15:13:14 +0100
LV Status available
# open 1
LV Size 488.00 MiB
Current LE 122
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:2
--- Logical volume ---
LV Path /dev/ubuntu1604-vg/root
LV Name root
VG Name ubuntu1604-vg
LV UUID WwteZj-vPhz-3iNC-26Dg-Ju36-o6xe-75WRto
LV Write Access read/write
LV Creation host, time ubuntu1604, 2017-06-27 15:13:50 +0100
LV Status available
# open 1
LV Size 17.52 GiB
Current LE 4486
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Path /dev/ubuntu1604-vg/home
LV Name home
VG Name ubuntu1604-vg
LV UUID OQHBcC-aEeD-ePLq-ezMU-3OgV-JPyn-2yarKe
LV Write Access read/write
LV Creation host, time ubuntu1604, 2017-09-27 12:16:53 +0100
LV Status available
# open 1
LV Size 20.00 GiB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:3
Extend the root volume
Lets extend the root volume by 10 GiB using lvextend:
root@testvm:~# lvextend --resizefs -L+10G /dev/ubuntu1604-vg/root
Size of logical volume ubuntu1604-vg/root changed from 22.52 GiB (5766 extents) to 32.52 GiB (8326 extents).
Logical volume root successfully resized.
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mapper/ubuntu1604--vg-root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/ubuntu1604--vg-root is now 8525824 (4k) blocks long.
Allocate entire disk space to the volume
In case we want the entire disk space to extended you can simply assign 100% of the free space.
root@testvm:~# lvextend --resizefs -l +100%FREE /dev/ubuntu1604-vg/root