I need (or at least want) a new virtual machine (GUI) environment

April 15, 2022

I've been using VMWare Workstation at work for a long time now. In the beginning, it was more or less your only good option for virtualization on Linux hosts. Then I kept on using it because it was the least intrusive option and had the best GUI. It's still all of that, and as an added bonus it works well enough over remote X, but unfortunately things are adding up to the point where I probably need to replace it with something else, something without the major flaw that currently afflicts my VMWare Workstation setup and ideally the minor one too.

The minor flaw is that VMWare Workstation doesn't have any way I can find to display guest consoles in doubled or otherwise magnified form on HiDPI displays (an issue that became more important when I switched to HiDPI displays at work as well as at home). To some degree I don't care (I often interact with my VMs only over SSH), and I can somewhat deal with this by using run_scaled. The major flaw is that running VMs has an increasingly catastrophic effect on the interactive performance of my Fedora work desktop. When I was working from home over the past two years this didn't matter much, but now that we're coming back into the office it's pretty intolerable. I always had some problems with this, but it's gotten dramatically worse at some point in the past two years. There is common advice to set the vm.compaction_proactiveness sysctl down to 0 (eg, pointing to here), and while this helps (my X session no longer completely freezes), it doesn't help enough.

I accept that all of my other attractive options have less convenient networking, because KVM stuff doesn't have simple bridged networking. I plan to deal with this by adding an extra network port to my work desktop and just giving it entirely to the VM environment. As far as the virtualization software goes, I'm not sure if I have much options if I want things to work well and I'm not willing to touch Oracle VirtualBox; the obvious thing to try is virt-manager (with qemu/KVM as the default backend).

All of this has made me think about what features I want and need in a replacement virtual machine environment, bearing in mind that I'm probably not going to find anything that exactly replaces VMWare Workstation. So far, the list of needs and wants is:

  • displaying the guest console in an X window that I can interact with, because not all of what I need to test and work on can be done by SSH'ing into already set up machines.

    (I know that qemu-kvm can do this because I've used qemu-kvm in the past for quick 'does this just-made ISO image boot in this variety of environments' tests. Presumably virt-manager doesn't hurt here.)

  • supporting disk snapshots, ideally a tree of them that I can move between (so I can snapshot a given VM in multiple states and then jump back and forth between them). I could live with only a linear sequence of snapshots, but it would require me to set up more VMs.

    (I reuse the same VMs because each VM is assigned a particular IP. It's convenient to snapshot the same VM in multiple base states, such as 'initial Ubuntu 18.04 install' and 'initial Ubuntu 20.04 install' and then move back and forth depending on what I need to test.)

  • works acceptably over remote X, since the odds that we're going to be spending all of our time in the office in the near future seem unfortunately very low.

  • it would be nice if the system supported some sort of 'HiDPI' mode for guest consoles, where they were displayed scaled up.

  • it would be nice if I could convert my existing VMWare Workstation virtual machines into VMs in the new system. I don't really need to preserve anything other than the disks (ideally with snapshots, but I'm not going to hold my breath). I could recreate all of my VMs if I had to, but not needing to would be nicer.

  • it would be nice if booting guests with either BIOS MBR or UEFI was supported in some way; sooner or later we're going to need to move our servers to UEFI and test UEFI environments seriously.

    (I've done UEFI booting with qemu-kvm for quick tests, but I don't know how good its UEFI support is for more complex things that need to match real server UEFI behavior.)

I'm assuming that any competent modern Linux virtualization system will support Linux, OpenBSD, and FreeBSD guests. Supporting Windows guests isn't currently essential for me but would be nice, and someday I may need a Windows test environment again. I'm also assuming that everything supports both bridged and NAT'd networking without me having to do much work.

(If NAT'd networking is a pain, I'm in the lucky situation that I can just allocate some more IPs and make my networking entirely bridged. I do have to have bridged networking, with VMs having their own visible IPs.)

PS: Of course it would be great if I could make VMWare Workstation behave nicely on Fedora 35 (soon to be Fedora 36) and not have to change anything. But the prospect seems low. This has been an issue for years, I don't think VMWare Workstation officially supports Fedora, and my Fedora environment is a bit eccentric since I'm also using ZFS, which has had its own kernel memory issues. If I have to give up one of ZFS or VMWare Workstation, I know which one is getting thrown out of the boat (and it's not ZFS).

(I'm already using the VMWare kernel modules from vmware-host-modules because those are more often able to compile on the latest Fedora kernels than VMWare's own ones.)

PPS: In doing some reading for this entry, I learned that QEMU can provide guest VMs with an IPMI BMC, which would be convenient for some sorts of testing and learning..

Written on 15 April 2022.
« Building Firefox from source and Rust versions
"Long term support" Unixes and versions of software in them »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Fri Apr 15 22:22:17 2022
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.