Shrink Virtual Hard Disk Size

From Kicksecure
Jump to navigation Jump to search

Free disk space. Decrease the size of a virtual disk. Decrease virtual machine storage capacity.

Introduction[edit]

Over the course of many system upgrades, logging, etc. the image files can grow substantially. Deletion of obsolete files does not automatically shrink the disk size back as it has “grown” to accommodate the data needed.

Overview[edit]

Note, when you created a big file or downloaded a big file, then delete it from the VM, the space will not be automatically freed up. Requires disk shrinking.

In essence, the following steps are required to shrink the disk.

1. Deleted files to free space.

2. Reboot your virtual machine in recovery mode.

3. Apply the zerofree procedure.

4. Shut down.

5. Virtualizer specific command to release the freed space.

6. Done.

Steps[edit]

KVM

A tool called zerofree free is needed to shrink the backing virtual disk file. Since the default are ext4 partitions, the process might be bit involved:

Inside the VM:

1. Install the package zerofree in the virtual machine you want to shrink.

Install package(s) zerofree. Follow steps A to E.

Platform specific notice.

Update the package lists and upgrade the system The Web Archive Onion Version .

sudo apt update && sudo apt full-upgrade

Install the zerofree package(s).

Using apt command line --no-install-recommends option The Web Archive Onion Version is in most cases optional.

sudo apt install --no-install-recommends zerofree

Platform specific notice.

Done.

The procedure of installing package(s) zerofree is complete.

2. Erase what you need in the VM, run apt-get purge, apt-get autoremove, apt-get clean, etc. as needed.

3. Reboot your virtual machine in recovery mode.

4. At the command prompt, type systemctl stop systemd-journald.socket && systemctl stop systemd-journald.service && mount -o remount,ro / && zerofree -v /dev/vda1 && shutdown now

5. Shut down the VM.

On the host:

6. Open a terminal on the host.

7. Switch to root.

sudo -s

8. Change directory to the /var/lib/libvirt/images folder.

cd /var/lib/libvirt/images

9. View files inside the /var/lib/libvirt/images folder.

ls

10. Create a back up 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 harddisk.
  • Replace YourVirtualMachineDisk.qcow2.backup with the actual name of your virtual harddisk.

mv YourVirtualMachineDisk.qcow2 YourVirtualMachineDisk.qcow2.backup

11. Shrink the disk using qemu-img.

qemu-img convert -O qcow2 -p YourVirtualMachineDisk.qcow2.backup YourVirtualMachineDisk.qcow2

12. Boot up the VM and see if it is working. If it is, you can delete the backup of the qcow file.

There are ways you can get more creative with this using thin provisioned images that are based on a static qcow2 backing file, a preferred method. However the above is a basic method for getting a shrunken qcow2 disk file. [1]

forum discussion: https://forums.whonix.org/t/is-it-possible-to-re-shrink-the-qcow2-image-files/13228/9archive.org

Qubes

Undocumented. Unspecific to Kicksecure. Self Support First Policy applies.

Refer to the Qubes OS user documentation.

Forum discussion: https://forums.whonix.org/t/the-workstation-vmdk-gets-bigger-and-bigger/218archive.org

Build from Source Code[edit]

Refer to Build and Update Kicksecure from Source Code and utilize this setting:

--vmsize 50G

Future[edit]

Either,

  • A) dracut module or
  • 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.

See Also[edit]

Footnotes[edit]

We believe security software like Kicksecure needs to remain Open Source and independent. Would you help sustain and grow the project? Learn more about our 12 year success story and maybe DONATE!