Resizing the primary disk of a Linux VM is actually fairly easy. This is cut and paste from the Windows 7 instructions for the most part.
Find the name of the zvol that is being used as the root disk
[root@00-19-99-b6-fa-12 ~]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zones 97.1G 131G 483K /zones
zones/1b29b2e7-8741-4bc6-9465-bb0094bb905c 3.90G 6.10G 3.90G /zones/1b29b2e7-8741-4bc6-9465-bb0094bb905c
zones/1b29b2e7-8741-4bc6-9465-bb0094bb905c-disk0 4.08G 131G 4.08G -
zones/1b29b2e7-8741-4bc6-9465-bb0094bb905c/cores 31K 4.25G 31K /zones/1b29b2e7-8741-4bc6-9465-bb0094bb905c/cores
zones/708c73e3-48f2-4da5-a0a6-e161215a4215 2.97G 7.03G 2.97G /zones/708c73e3-48f2-4da5-a0a6-e161215a4215
zones/708c73e3-48f2-4da5-a0a6-e161215a4215-disk0 22.7G 131G 22.7G -
zones/708c73e3-48f2-4da5-a0a6-e161215a4215/cores 31K 7.03G 31K /zones/708c73e3-48f2-4da5-a0a6-e161215a4215/cores
zones/8aedbf84-81e7-49c5-9127-a3b0850e8df9 6.83G 3.17G 6.45G /zones/8aedbf84-81e7-49c5-9127-a3b0850e8df9
zones/8aedbf84-81e7-49c5-9127-a3b0850e8df9-disk0 14.4G 131G 14.4G -
zones/8aedbf84-81e7-49c5-9127-a3b0850e8df9/cores 394M 3.17G 394M /zones/8aedbf84-81e7-49c5-9127-a3b0850e8df9/cores
zones/config 57K 131G 57K legacy
zones/cores 31K 10.0G 31K /zones/global/cores
zones/dump 4.00G 131G 4.00G -
zones/opt 25.9G 131G 25.9G legacy
zones/swap 12.4G 143G 173M -
zones/usbkey 127K 131G 127K legacy
zones/var 3.05M 131G 3.05M legacy
This probably looks like *-disk0
, so in this case it might be zones/708c73e3-48f2-4da5-a0a6-e161215a4215-disk0
.
Check the current size with zfs get volsize
[root@00-19-99-b6-fa-12 ~]# zfs get volsize zones/708c73e3-48f2-4da5-a0a6-e161215a4215-disk0
NAME PROPERTY VALUE SOURCE
zones/708c73e3-48f2-4da5-a0a6-e161215a4215-disk0 volsize 60G local
In this case we can see that the disk is setup with a volume size of 60 gigabytes.
Set the volsize to some larger value (in this case 65 gigabytes):
[root@00-19-99-b6-fa-12 ~]# zfs set volsize=65g zones/708c73e3-48f2-4da5-a0a6-e161215a4215-disk0
cd into the root directory of the zone and download the GParted Live ISO image available here.
[root@00-19-99-b6-fa-12 ~]# cd /zones/708c73e3-48f2-4da5-a0a6-e161215a4215/root
[root@00-19-99-b6-fa-12 /zones/708c73e3-48f2-4da5-a0a6-e161215a4215/root]# wget <lastest stable>
[root@00-19-99-b6-fa-12 /zones/708c73e3-48f2-4da5-a0a6-e161215a4215/root]# cd /zones/global
Boot the VM from the GParted Live ISO using vmadm, then use vnc to connect to it. An ssh tunnel works well as long as you specify the host as presented in the JSON (not localhost).
[root@00-19-99-b6-fa-12 /zones/global]# vmadm start 708c73e3-48f2-4da5-a0a6-e161215a4215 order=cd,once=d cdrom=/gparted-live-0.12.1-1.iso,ide
[root@00-19-99-b6-fa-12 /zones/global]# vmadm info 708c73e3-48f2-4da5-a0a6-e161215a4215 vnc
{
"vnc": {
"host": "10.0.1.1",
"port": 51938,
"display": 46038
}
}
Use the GParted GUI to resize your primary partitions. For my VMs I need to increase the size of logical partition then move the swap to the end, then resize the logical partition towards the end. This frees up space for the first (boot/root) partition to be expanded. Just be sure to double check your swap is still working by logging into the guest and issuing ‘swapon -s’.
Decrease the disk size is almost the same as increasing it. The only difference is that you need to resize your paritions before you reduce the zfs volsize. I had to delete my swap partition and then create a new one to avoid a huge gap of unallocated space. Once everything is nice and compact near the begging, just halt the VM and zfs set volsize away.