{{Header}} {{Title|title= Shrink Virtual Hard Disk Size }} {{#seo: |description=Free disk space. Decrease the size of a virtual disk. Decrease virtual machine storage capacity. |image=Shrink_Virtual_Harddisk.png }}
* [[Grow_Virtual_Harddisk|Virtual Hard Disk Size Increase]] * [[Shrink_Virtual_Harddisk|Shrink Virtual Hard Disk Size]]
[[File:Shrink_Virtual_Harddisk.png|200px|thumb]] {{intro| Free disk space. Decrease the size of a virtual disk. Decrease virtual machine storage capacity. }} = Introduction = Over the course of many system upgrades, logging, and similar activity, the image files can grow substantially. Deletion of obsolete files does not automatically shrink the disk size back, because it has grown to accommodate the data. = Overview = Note: When you create a large file or download a large file and then delete it from the VM, the space will not be freed automatically. Disk shrinking is required. In summary, the following steps are required to shrink the disk. {{IconSet|h1|1}} Delete files to free space. {{IconSet|h1|2}} Reboot your virtual machine in [[Recovery#Recovery_Mode|recovery mode]]. {{IconSet|h1|3}} Apply the zerofree procedure. {{IconSet|h1|4}} Shut down. {{IconSet|h1|5}} Run a virtualizer specific command to release the freed space. {{IconSet|h1|6}} Done. == Steps == Platform specific. Select your virtualizer. {{Tab |type=controller |content= {{Tab |title= == VirtualBox == |image=[[File:Virtualbox_logo.png|25px]] |addToClass=info-box |content= [[Undocumented]]. [[unspecific|Unspecific to {{project_name_long}}]]. [[Self_Support_First_Policy|Self Support First Policy]] applies. }} {{Tab |title= == KVM == |image=[[File:Kvm-new-logo.png|25px]] |addToClass=info-box |content= A tool called zerofree is needed to shrink the backing virtual disk file. Since the defaults are ext4 partitions, the process might be a bit involved: Inside the VM: {{IconSet|h1|1}} Install the package zerofree in the virtual machine you want to shrink. {{Install Package|package= zerofree }} {{IconSet|h1|2}} Safe space inside the VM. Delete what you no longer need in the VM, and run apt-get purge, apt-get autoremove, apt-get clean, etc. as needed. {{IconSet|h1|3}} Reboot your virtual machine into sysmaint session, live mode (easier). [[Recovery#Recovery_Mode|Recovery Mode]]. {{CodeSelect|code= mount -o remount,ro / }} {{IconSet|h1|4}} At the command prompt, type: {{CodeSelect|code= zerofree -v /dev/vda1 }} {{IconSet|h1|5}} Shut down the VM. On the host: {{IconSet|h1|6}} Open a terminal on the host. {{IconSet|h1|7}} Switch to root. {{CodeSelect|code= sudo -s }} {{IconSet|h1|8}} Change directory to the /var/lib/libvirt/images folder. {{CodeSelect|code= cd /var/lib/libvirt/images }} {{IconSet|h1|9}} View files inside the /var/lib/libvirt/images folder. {{CodeSelect|code= ls }} {{IconSet|h1|10}} Create a backup of the disk you want to shrink by moving YourVirtualMachineDisk.qcow2 to YourVirtualMachineDisk.qcow2.backup. Note: * Replace YourVirtualMachineDisk.qcow2 with the actual name of your virtual hard disk. * Replace YourVirtualMachineDisk.qcow2.backup with the actual name of your virtual hard disk. {{CodeSelect|code= mv YourVirtualMachineDisk.qcow2 YourVirtualMachineDisk.qcow2.backup }} {{IconSet|h1|11}} Shrink the disk using qemu-img. {{CodeSelect|code= qemu-img convert -O qcow2 -p YourVirtualMachineDisk.qcow2.backup YourVirtualMachineDisk.qcow2 }} {{IconSet|h1|12}} Boot up the VM and see if it is working. If it is, you can delete the backup of the qcow2 file. There are more advanced approaches using thin provisioned images based on a static qcow2 backing file, which is often preferred. However, the above is a basic method for producing a smaller qcow2 disk file. Credit goes to forum user [https://forums.whonix.org/u/tempest tempest]: [https://forums.whonix.org/t/is-it-possible-to-re-shrink-the-qcow2-image-files/13228/3 post in "Is it possible to re-shrink the qcow2 image files?"] forum discussion: [https://forums.whonix.org/t/is-it-possible-to-re-shrink-the-qcow2-image-files/13228/9 Is it possible to re-shrink the qcow2 image files?] }} {{Tab |title= == Qubes == |image=[[File:Qubes-logo-blue.png|25px]] |addToClass=info-box |active=false |content= [[Undocumented]]. [[unspecific|Unspecific to {{project_name_long}}]]. [[Self_Support_First_Policy|Self Support First Policy]] applies. Refer to the Qubes OS user documentation. }} }} = Build from Source Code = Refer to [[Dev/Build_Documentation|Build and Update {{project_name_short}} from Source Code]] and utilize this setting: {{CodeSelect|code= --vmsize 50G }} = Future = Either: * {{IconSet|h1|A}} [[dracut|dracut]] module, or * {{IconSet|h1|B}} mkosi-initrd systemd unit, that runs zerofree before mounting the root disk would be useful. Such a feature does not exist yet in any Linux distribution. = Forum Discussion = * [https://forums.whonix.org/t/the-workstation-vmdk-gets-bigger-and-bigger/218 The Workstation VMDK gets bigger and bigger] * https://forums.whonix.org/t/automate-recovering-free-space-from-vdi-disks/22467 = See Also = * [[Grow_Virtual_Harddisk|Grow Virtual Hard Disk Size Increase]] = Footnotes = {{reflist|close=1}} {{Footer}} [[Category:Documentation]]