Skip to main content

Reducing VM Disk Size with Clonezilla

· 7 min read
BENE Maël
System Administrator

Clonezilla Logo

How to migrate a VM to a smaller disk while preserving all data using Clonezilla, to optimize Linstor DRBD storage usage in a Proxmox cluster.

MANDATORY BACKUP

Before any manipulation, create a complete backup of your VM via Proxmox Backup Server or vzdump. This operation directly manipulates disks and any error can result in data loss.

📚 A detailed article on Proxmox Backup Server is coming soon.

Context

My production Ubuntu VM from the Current Homelab has a 400 GB disk on Linstor DRBD storage. This oversized disk comes from a time when this OS ran directly on bare-metal before virtualization.

Problem

After reducing the system partition to 130 GB (leaving 270 GB of unallocated free space), I want to:

  1. Create a new 135 GB disk (130 GB of data + 5 GB margin)
  2. Migrate the OS and data to this smaller disk
  3. Free up 265 GB on Linstor DRBD storage

Final Goal

Reorganize Proxmox hosts storage:

  • 300 GB: Linstor DRBD (highly available replicated storage)
  • 200 GB: local-lvm (non-replicated local storage)

Prerequisites

Required Tools

Initial VM State

Before starting, check the current state:

sudo fdisk -l /dev/sda

Expected output:

  • Disk /dev/sda: 400 GiB
  • System partition (/dev/sda3): ~120 GiB used
  • Free space: ~270 GiB unallocated
Shrink partition beforehand

If you haven't shrunk your partition yet, use gparted or resize2fs to reduce the filesystem before starting this procedure. Leave about 5 GB margin compared to used space.

Step 1: Create the New Disk in Proxmox

In the Proxmox web interface, access your VM configuration:

  1. Select your VM
  2. Hardware tab
  3. Click AddHard Disk

New disk configuration:

  • Storage: linstor_storage (or your Linstor DRBD pool)
  • Disk size: 135 GiB
  • Bus/Device: SCSI (scsi1)

VM hardware configuration with both disks

info

The new disk will appear as /dev/sdb in the VM. The original disk /dev/sda remains in place for now.

Step 2: Mount the Clonezilla ISO

Still in the Proxmox interface:

  1. Select the Hardware tab
  2. Double-click CD/DVD Drive
  3. Storage: local (or your ISO storage)
  4. ISO image: Select clonezilla-live-3.3.0-33-amd64.iso

Configure boot order:

  1. Options tab → Boot Order
  2. Enable CD-ROM and place it in first position
  3. Click OK

Start the VM via ConsoleStart.

Step 3: Start Clonezilla in KVM To RAM Mode

Snow problem without KVM To RAM

If you don't choose the KVM To RAM option, Clonezilla display will show snow (graphical artifacts) making the interface unusable.

Snow on screen without KVM To RAM

Boot Mode Selection

At Clonezilla boot:

  1. First option: Select Clonezilla live (KVM To RAM, VGA 1024x768)
  2. Press Enter

Clonezilla Initial Configuration

Follow the configuration wizard:

Choose language: [en_US.UTF-8] English

Step 4: Clone Disk with Expert Options

Expert Mode Selection

Mode: [Expert mode]

Choose Expert mode to access necessary advanced options.

Operation Type Choice

Expert Mode: [disk_to_local_disk]

Select disk_to_local_disk (clone local disk to local disk).

Disk Selection

  1. Source disk: /dev/sda (400 GiB - old disk)
  2. Destination disk: /dev/sdb (135 GiB - new disk)
Verify disks carefully

Warning: Selecting the wrong disk will permanently erase your data! Check disk sizes before validating.

Critical Advanced Options

Clonezilla offers several advanced options. You MUST select:

Option 1: -k0 (Create partition table proportionally)

-k, --create-partition-table
[×] -k0 Create partition table in target disk proportionally

Explanation: This option recreates the partition table while keeping original sizes of partitions (not resizing them proportionally to the new disk).

Option 2: -icds (Skip checking destination disk size)

-icds, --skip-check-dest-size
[×] -icds Skip checking destination disk size before creating partition table

Explanation: By default, Clonezilla refuses to clone to a disk smaller than the source disk. This option disables this check.

Why does it work?

Even though the destination disk (135 GB) is smaller than the source disk (400 GB), the used partitions are only 130 GB. Clonezilla clones only the partitions, not the unallocated empty space.

The -k0 option ensures partitions keep their original size (130 GB) instead of being resized proportionally to the new disk.

Start Cloning

  1. Validate all options
  2. Clonezilla displays a summary of parameters
  3. Confirm with y then Enter
  4. Confirm a second time to start cloning

Cloning in progress with Clonezilla

Estimated duration: Between 10 and 30 minutes depending on data amount and Linstor DRBD storage speed.

Step 5: Configure Boot on New Disk

Once cloning is complete:

  1. Shut down the VM via Proxmox
  2. Return to HardwareOptionsBoot Order
  3. Disable CD-ROM (or remove ISO)
  4. Make sure scsi1 (new 135 GB disk) is in first position
  5. Start the VM

Boot Verification

The VM should boot normally on the new disk. Connect and verify:

sudo fdisk -l

Final result: new 135 GiB disk active

Checks:

  • /dev/sdb (new disk): 135 GiB
  • /dev/sda (old disk): 400 GiB (still present)
  • Identical partitions on both disks

Stability Test

Test your VM for 24-48 hours:

  • Verify all services start correctly
  • Test critical applications
  • Monitor system logs (journalctl -xe)

Step 6: Delete the Old Disk

Wait before deleting

Only delete the old disk after validating proper operation of the VM for at least 24 hours. In case of problems, you can roll back.

Once the VM is stabilized:

  1. Shut down the VM
  2. In Proxmox: Hardware → Select Hard Disk (scsi0) (400 GiB)
  3. Click Remove
  4. Confirm deletion

Result: 265 GB freed on Linstor DRBD storage! 🎉

My Use Case: Proxmox Storage Reorganization

In my case, this operation allowed me to free up 265 GB on Linstor DRBD storage. With this reclaimed space, I can now repartition my physical disks on Proxmox hosts to optimize storage usage:

Before

/dev/sda: 500 GiB
└── linstor_storage: 500 GiB (replicated storage)

After

/dev/sda: 500 GiB
├── linstor_storage: 300 GiB (HA replicated storage)
└── local-lvm: 200 GiB (non-replicated local storage)

This reorganization allows me to better utilize resources:

  • Replicated storage (Linstor DRBD - 300 GB): For critical VMs requiring high availability
  • Local storage (local-lvm - 200 GB): Primarily for my Kubernetes VMs that manage distributed storage themselves via Longhorn, as well as some test VMs/LXCs

Conclusion

Clonezilla allows efficient VM migration to a smaller disk, provided you:

  1. Shrink partitions beforehand to leave free space
  2. Use KVM To RAM mode to avoid display issues
  3. Enable -k0 and -icds options in Expert mode

This technique allowed me to free 265 GB on my Linstor DRBD storage, optimizing Proxmox cluster resource usage and enabling more flexible storage reorganization.

Resources