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:
"OMG! I Never Knew That!": The Simply Linux Tip That Has Got Me More Thanks Than Anything I've Ever ...
Need a Laugh? Read the Linux Kernel List's Foam-Mouthed Responses to Russian Programmers Banned from...
LowEndBoxTV: Ubuntu 24: Hot Rod Ferrari Speed Freak, Crippled Dump Truck, or Somewhere in Between?
Nontechnical Nonsense: Rust Stirs Up a Storm of Drama in the Linux Kernel: Ted T'so Shouting, Mainta...
RedHat Prepares to Give Bootloaders the Boot
The Mother of All Supply Chain Attacks! Is 1Password Safe?!? (UPDATED)
- Let’s Encrypt Retiring Expiration Emails: Three Quick Solutions to Fill the Gap - February 4, 2025
- Tons of New Apps Added on PikaPods, Plus More Features!FREE $5 Welcome Credit Offer Still Good! - February 2, 2025
- Need a High RAM VPS?ByteHosting Has a HOT DEAL For You! - February 1, 2025
Very useful and detailed tutorial, thank you for sharing!