Resize disks: Difference between revisions
m (minor typo in example) |
|||
(13 intermediate revisions by 6 users not shown) | |||
Line 7: | Line 7: | ||
If you '''enlarge''' the hard disk, once you have added the disk plate, your partition table and file system knows nothing about the new size, so you have to act inside the VM to fix it. | If you '''enlarge''' the hard disk, once you have added the disk plate, your partition table and file system knows nothing about the new size, so you have to act inside the VM to fix it. | ||
If you '''reduce''' (shrink) the hard disk, of course removing the last disk plate will probably '''destroy''' your file system and remove the data in it! So in this case is paramount to act in the VM in '''advance''', reducing the file system and the partition size. SystemRescueCD comes very handy for it, just add its iso as cdrom of your VM and set boot priority to CD-ROM. | If you '''reduce''' (shrink) the hard disk, of course removing the last disk plate will probably '''destroy''' your file system and remove the data in it! So in this case it is paramount to act in the VM in '''advance''', reducing the file system and the partition size. SystemRescueCD comes very handy for it, just add its iso as cdrom of your VM and set boot priority to CD-ROM. | ||
Shrinking disks is not supported by the PVE API and has to be done manually. | |||
Another page (deleted) with overlapping content was [[Resizing disks]] | [http://web.archive.org/web/20150914170505/http://pve.proxmox.com/wiki/Resize_disks Archive] | Another page (deleted) with overlapping content was [[Resizing disks]] | [http://web.archive.org/web/20150914170505/http://pve.proxmox.com/wiki/Resize_disks Archive] | ||
Line 37: | Line 39: | ||
Windows should see the new size online without reboot with last virtio drivers. | Windows should see the new size online without reboot with last virtio drivers. | ||
==== Using GUI ==== | |||
You can also select your VM from the list > Hardware > Hard Disk > Disk Action > Resize | |||
You will be presented with the option of increasing the disk size: | |||
[[File:Screenshot 2023-05-24 at 21-08-39 pve - Proxmox Virtual Environment.png|thumb|left|Increase disk size]] | |||
<br><br><br><br><br><br><br> | |||
== 2. Enlarge the partition(s) in the virtual disk == | == 2. Enlarge the partition(s) in the virtual disk == | ||
Line 51: | Line 60: | ||
=== Online for Windows Guests === | === Online for Windows Guests === | ||
*Guest is Windows 7, Windows Vista or Windows Server 2008 | *Guest is Windows 7, Windows Vista or Windows Server 2008 | ||
*logon as administrator and extend the disk and filesystem (Using Disk manager) | *logon as administrator and extend the disk and filesystem (Using Disk manager) | ||
*For more info [http://www.petri.co.il/extend-disk-partition-vista-windows-server-2008.htm www.petri.co.il/extend-disk-partition-vista-windows-server-2008.htm] | *For more info [http://www.petri.co.il/extend-disk-partition-vista-windows-server-2008.htm www.petri.co.il/extend-disk-partition-vista-windows-server-2008.htm] | ||
*Guest is Windows 10: logon as administrator and extend the disk and filesystem (Using Disk manager). If you do not see the ability to extend the disk (i.e. nothing seems to have happened as a result of using the resize command), go to the Windows command prompt and do a: shutdown -s -t 0 (This is a "normal" shutdown, as opposed to the "fast" shutdown that's the default for Win 8 and onwards.) After a reboot, you'll now see the ability to expand the disk. | |||
=== Online for Linux Guests === | === Online for Linux Guests === | ||
Line 60: | Line 69: | ||
Here we will enlarge a LVM PV partition, but the procedure is the same for every kind of partitions. | Here we will enlarge a LVM PV partition, but the procedure is the same for every kind of partitions. | ||
Note that the partition you want to enlarge should be at the end of the disk. | Note that the partition you want to enlarge should be at the end of the disk. | ||
If you want to enlarge a partition which is anywhere on the | If you want to enlarge a partition which is anywhere on the disk, use the offline method. | ||
* Check that the kernel has detected the change of the hard drive size | * Check that the kernel has detected the change of the hard drive size | ||
Line 68: | Line 77: | ||
[ 3982.979046] vda: detected capacity change from 34359738368 to 171798691840 | [ 3982.979046] vda: detected capacity change from 34359738368 to 171798691840 | ||
==== Example with EFI ==== | |||
* Print the current partition table | * Print the current partition table | ||
Line 75: | Line 85: | ||
/dev/vda2 2048 262143 260096 127M EFI System | /dev/vda2 2048 262143 260096 127M EFI System | ||
/dev/vda3 262144 67108830 66846687 31.9G Linux LVM | /dev/vda3 262144 67108830 66846687 31.9G Linux LVM | ||
Line 88: | Line 99: | ||
(parted) resizepart 3 100% | (parted) resizepart 3 100% | ||
(parted) quit | (parted) quit | ||
==== Example without EFI ==== | |||
Another example without EFI using parted: | |||
parted /dev/vda | |||
(parted) print | |||
Number Start End Size Type File system Flags | |||
1 1049kB 538MB 537MB primary fat32 boot | |||
2 539MB 21.5GB 20.9GB extended | |||
3 539MB 21.5GB 20.9GB logical lvm | |||
Yoy will want to resize the 2nd partition first (extended): | |||
(parted) resizepart 2 100% | |||
(parted) resizepart 3 100% | |||
* Check the new partition table | * Check the new partition table | ||
(parted) print | |||
Number Start End Size Type File system Flags | |||
1 1049kB 538MB 537MB primary fat32 boot | |||
2 539MB 26.8GB 26.3GB extended | |||
3 539MB 26.8GB 26.3GB logical lvm | |||
(parted) quit | |||
== 3. Enlarge the filesystem(s) in the partitions on the virtual disk == | == 3. Enlarge the filesystem(s) in the partitions on the virtual disk == | ||
Line 106: | Line 139: | ||
pvresize /dev/vda3 | pvresize /dev/vda3 | ||
Enlarge the logical volume and the filesystem (the file system can be mounted, works with ext4 and xfs) | List logical volumes: | ||
lvdisplay | |||
--- Logical volume --- | |||
LV Path /dev/{volume group name}/root | |||
LV Name root | |||
VG Name {volume group name} | |||
LV UUID DXSq3l-Rufb-... | |||
LV Write Access read/write | |||
LV Creation host, time ... | |||
LV Status available | |||
# open 1 | |||
LV Size <19.50 GiB | |||
Current LE 4991 | |||
Segments 1 | |||
Allocation inherit | |||
Read ahead sectors auto | |||
- currently set to 256 | |||
Block device 253:0 | |||
Enlarge the logical volume and the filesystem (the file system can be mounted, works with ext4 and xfs). | |||
Replace "{volume group name}" with your specific volume group name: | |||
lvresize - | #This command will increase the partition up by 20GB | ||
lvresize --size +20G --resizefs /dev/{volume group name}/root | |||
lvresize --extents 100%FREE --resizefs /dev/ | #Use all the remaining space on the volume group | ||
lvresize --extents +100%FREE --resizefs /dev/{volume group name}/root | |||
=== Online for Linux guests without LVM === | === Online for Linux guests without LVM === |
Latest revision as of 01:46, 25 May 2023
1. Resizing guest disk
General considerations
When you resize the disk of a VM, to avoid confusion and disasters think the process like adding or removing a disk platter.
If you enlarge the hard disk, once you have added the disk plate, your partition table and file system knows nothing about the new size, so you have to act inside the VM to fix it.
If you reduce (shrink) the hard disk, of course removing the last disk plate will probably destroy your file system and remove the data in it! So in this case it is paramount to act in the VM in advance, reducing the file system and the partition size. SystemRescueCD comes very handy for it, just add its iso as cdrom of your VM and set boot priority to CD-ROM.
Shrinking disks is not supported by the PVE API and has to be done manually.
Another page (deleted) with overlapping content was Resizing disks | Archive
qm command
You can resize your disks online or offline with command line:
qm resize <vmid> <disk> <size>
exemple: to add 5G to your virtio0 disk on vmid100:
qm resize 100 virtio0 +5G
For virtio disks:
Linux should see the new size online without reboot with kernel >= 3.6
Windows should see the new size online without reboot with last virtio drivers.
for virtio-iscsi disk:
Linux should see the new size online without reboot with kernel >= 3.7
Windows should see the new size online without reboot with last virtio drivers.
Using GUI
You can also select your VM from the list > Hardware > Hard Disk > Disk Action > Resize
You will be presented with the option of increasing the disk size:
2. Enlarge the partition(s) in the virtual disk
Depending on the installed guest there is several diffent ways to resize the partions
Offline for all guests
Use gparted or similar tool (recommended)
In gparted and possibly most other tools, LVM and Windows dynamic disc is not supported
Boot the virtual machine with gparted or similar tool, enlarge the partion and optionally the file system. With som linux clients you often need to enlarge the extended partion, move the swappartion, shrink the extended partion and enlarge the root partion. (or simple delete the swap and partion andre create it again - but remember to activwate the swap agin (last step).
Gparted have some warnings about some specific operations not well supported with windows guest - outside the scope of this document but read the warnings in gparted.
Online for Windows Guests
- Guest is Windows 7, Windows Vista or Windows Server 2008
- logon as administrator and extend the disk and filesystem (Using Disk manager)
- For more info www.petri.co.il/extend-disk-partition-vista-windows-server-2008.htm
- Guest is Windows 10: logon as administrator and extend the disk and filesystem (Using Disk manager). If you do not see the ability to extend the disk (i.e. nothing seems to have happened as a result of using the resize command), go to the Windows command prompt and do a: shutdown -s -t 0 (This is a "normal" shutdown, as opposed to the "fast" shutdown that's the default for Win 8 and onwards.) After a reboot, you'll now see the ability to expand the disk.
Online for Linux Guests
Here we will enlarge a LVM PV partition, but the procedure is the same for every kind of partitions. Note that the partition you want to enlarge should be at the end of the disk. If you want to enlarge a partition which is anywhere on the disk, use the offline method.
- Check that the kernel has detected the change of the hard drive size
(here we use VirtIO so the hard drive is named vda)
dmesg | grep vda [ 3982.979046] vda: detected capacity change from 34359738368 to 171798691840
Example with EFI
- Print the current partition table
fdisk -l /dev/vda | grep ^/dev GPT PMBR size mismatch (67108863 != 335544319) will be corrected by w(rite). /dev/vda1 34 2047 2014 1007K BIOS boot /dev/vda2 2048 262143 260096 127M EFI System /dev/vda3 262144 67108830 66846687 31.9G Linux LVM
- Resize the partition 3 (LVM PV) to occupy the whole remaining space of the hard drive)
parted /dev/vda (parted) print Warning: Not all of the space available to /dev/vda appears to be used, you can fix the GPT to use all of the space (an extra 268435456 blocks) or continue with the current setting? Fix/Ignore? F
(parted) resizepart 3 100% (parted) quit
Example without EFI
Another example without EFI using parted:
parted /dev/vda
(parted) print
Number Start End Size Type File system Flags 1 1049kB 538MB 537MB primary fat32 boot 2 539MB 21.5GB 20.9GB extended 3 539MB 21.5GB 20.9GB logical lvm
Yoy will want to resize the 2nd partition first (extended):
(parted) resizepart 2 100% (parted) resizepart 3 100%
- Check the new partition table
(parted) print
Number Start End Size Type File system Flags 1 1049kB 538MB 537MB primary fat32 boot 2 539MB 26.8GB 26.3GB extended 3 539MB 26.8GB 26.3GB logical lvm
(parted) quit
3. Enlarge the filesystem(s) in the partitions on the virtual disk
If you did not resize the filesystem in step 2
Online for Linux guests with LVM
Enlarge the physical volume to occupy the whole available space in the partition:
pvresize /dev/vda3
List logical volumes:
lvdisplay
--- Logical volume --- LV Path /dev/{volume group name}/root LV Name root VG Name {volume group name} LV UUID DXSq3l-Rufb-... LV Write Access read/write LV Creation host, time ... LV Status available # open 1 LV Size <19.50 GiB Current LE 4991 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
Enlarge the logical volume and the filesystem (the file system can be mounted, works with ext4 and xfs).
Replace "{volume group name}" with your specific volume group name:
#This command will increase the partition up by 20GB lvresize --size +20G --resizefs /dev/{volume group name}/root
#Use all the remaining space on the volume group lvresize --extents +100%FREE --resizefs /dev/{volume group name}/root
Online for Linux guests without LVM
Enlarge the filesystem (in this case root is on vda1)
resize2fs /dev/vda1