LowEndBox - Cheap VPS, Hosting and Dedicated Server Deals

Tutorial: Moving a Proxmox VM to Different Disk

ProxmoxI’ve setup a home virtualization lab using ProxMox, which is a free and very powerful virtualization host. Prior to ProxMox, I tried:

  • VmWare ESXi: No clones in the free version?  See ya.
  • XCP-ng: Got several installer panics on my rather generic x86 system and decided not to spend time tracking down the problem.
  • Unraid: no need to pay for something others do for free

Proxmox has been working great for me so far.  The host is a small i5-based 4c/8t mini PC with 64GB RAM, and it has both a 256GB mSata and a 2TB SSD drive.  I went with this hardware because it’s fanless and compact, key considerations in my cramped office.

When I began creating VMs, I wasn’t paying close attention and the first dozen or so ended up on the mSata.  Now I want to move some of them to the SSD.

With Proxmox this is easy, and transparent.  You don’t have to take the VMs off-line.  Let’s do one and watch it in action.

I’ve logged into Proxmox and navigated to my VM:

Proxmox

Here you can see that it has one 20GB hard drive and is on”local-lvm”.  At the top I click “Move disk” and it brings up this dialog:

Proxmox

“local-lvm” is the mSata.  It’s a 256GB drive, but some space is taken for the Proxmox OS, depot ISO images, etc.  “ssd2tbthin” is the 2TB SSD.  Note that the type for both  is “lvmthin” which means that they will thin provision (not allocate all disk at once but rather as-needed).

I selected ‘ssdtbthin’ and also ticked “Delete source”.  Then I logged into my VM and started an ioping before clicking “Move disk”.  Will the VM be up and happy the whole time it’s migrating?  Let’s see…

Here’s the start of the VM move output in Proxmox:

Proxmox

And then when it finishes up:

Proxmox

Meanwhile on the host I did an ioping:

root@crash:~# ioping .
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=1 time=322.7 us (warmup)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=2 time=1.61 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=3 time=1.56 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=4 time=349.5 us
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=5 time=268.5 us
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=6 time=16.0 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=7 time=3.80 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=8 time=310.8 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=9 time=15.6 ms (slow)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=10 time=17.7 ms (slow)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=11 time=42.5 ms (slow)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=12 time=10.3 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=13 time=206.3 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=14 time=279.0 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=15 time=383.1 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=16 time=327.1 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=17 time=392.9 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=18 time=274.4 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=19 time=271.1 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=20 time=375.8 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=21 time=24.7 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=22 time=360.5 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=23 time=374.2 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=24 time=290.6 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=25 time=306.2 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=26 time=43.0 ms (slow)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=27 time=28.3 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=28 time=294.9 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=29 time=323.4 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=30 time=17.1 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=31 time=307.2 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=32 time=298.0 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=33 time=357.9 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=34 time=321.3 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=35 time=353.6 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=36 time=346.4 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=37 time=311.5 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=38 time=311.2 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=39 time=4.43 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=40 time=347.8 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=41 time=320.5 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=42 time=321.4 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=43 time=362.3 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=44 time=1.53 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=45 time=1.56 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=46 time=1.50 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=47 time=1.54 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=48 time=342.7 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=49 time=359.7 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=50 time=200.9 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=51 time=329.2 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=52 time=2.48 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=53 time=304.2 us (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=54 time=2.32 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=55 time=2.33 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=56 time=2.29 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=57 time=2.31 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=58 time=2.29 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=59 time=2.28 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=60 time=2.26 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=61 time=2.35 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=62 time=2.35 ms
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=63 time=2.32 ms (fast)
4 KiB <<< . (ext4 /dev/sda1 18.2 GiB): request=64 time=2.27 ms (fast)
^C
--- . (ext4 /dev/sda1 18.2 GiB) ioping statistics ---
63 requests completed in 271.4 ms, 252 KiB read, 232 iops, 928.4 KiB/s
generated 64 requests in 1.06 min, 256 KiB, 1 iops, 4.03 KiB/s
min/avg/max/mdev = 200.9 us / 4.31 ms / 43.0 ms / 9.10 ms

So typically we’re seeing about 4-5ms on disk, which considering there’s other things running isn’t bad.  There were a few moments when the disk dipped, as low as almost 29ms, but otherwise I found the system responsive.  And:

root@crash:~# uptime
 09:37:36 up 1 day, 12:19,  1 user,  load average: 0.00, 0.00, 0.00

Excellent!  Now I’m off to do the rest.

1 Comment

  1. Very useful and detailed tutorial, thank you for sharing!

    April 7, 2022 @ 1:22 am | Reply

Leave a Reply

Some notes on commenting on LowEndBox:

  • Do not use LowEndBox for support issues. Go to your hosting provider and issue a ticket there. Coming here saying "my VPS is down, what do I do?!" will only have your comments removed.
  • Akismet is used for spam detection. Some comments may be held temporarily for manual approval.
  • Use <pre>...</pre> to quote the output from your terminal/console, or consider using a pastebin service.

Your email address will not be published.