I’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:
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:
“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:
And then when it finishes up:
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.
Related Posts:
- LowEndBoxTV: Are All Hetzner Locations Alike?No!And Piotr Has the Proof: “This is Clearly Not the Same Processor” - November 22, 2024
- One Week From Tomorrow…THE WORLD WILL LOSE THEIR MINDS!Lines Are Already Forming! - November 21, 2024
- Crunchbits Discontinuing Popular Annual Plans – The Community Mourns! - November 20, 2024
Very useful and detailed tutorial, thank you for sharing!