2022-05-01
Using Linux's libvirt for my virtualization needs has been okay
About two weeks ago I reached a tipping point of unhappiness with VMWare Workstation and wound up deciding to try switching over to the current obvious alternative, libvirt, mostly through virt-manager, virt-viewer, and virsh. The summary from two weeks of usage is that libvirt has worked out okay for me; it's more or less a perfectly workable virtualization environment for Linux guest VMs, with an adequate GUI experience along side a command line experience that I'm coming to appreciate more for basic operations like starting and stopping virtual machines and reverting to snapshots. I'm happy that I've made the switch over to libvirt and I sort of wish I'd done it earlier.
(Libvirt may work great for non-Linux VMs, but I haven't tried it with any. I haven't needed to recreate my OpenBSD VM install yet (although that may happen when OpenBSD 7.1 is released) and I don't currently have any need for a Microsoft Windows VM.)
The libvirt experience is definitely not as polished and effortless as the VMWare Workstation one. I had to do a number of setup steps, including adding an extra network port to my work machine. But once I had gone through the setup effort everything has worked fine, although there are a number of paper cuts that I may write up some other day. On the positive side, starting up virtual machines no longer affects my desktop sessions in any particularly unusual of visible way and virtual machines themselves do seem to perform well.
On the whole libvirt has given me the feeling of the typical old school Linux experience when compared to other operating systems, which is to say that you have to do more work to get everything working but once you do, you have a system that's more understandable. VMWare Workstation's networking was convenient but a magical black box; libvirt's networking is more annoying and more work, but I understand and can manipulate pretty much all of the bits.
(One endorsement is that I liked the whole experience enough to bring up libvirt on my home desktop so that I had a place there for VMs for various purposes. I don't strictly need this right now, but libvirt makes this easy enough that I could just go do it. So now I have a stock Fedora 35 VM at home, too.)
Although I'm not sure I fully understand what I'm doing, I do seem to have worked out how to deal with my HiDPI irritation that guest consoles are shown un-scaled, which makes them tiny and hard to read (especially in text mode, such as Ubuntu server installers). I've come to rather appreciate this improvement over VMWare Workstation; apparently the tiny guest consoles in it were more of a paper-cut than I appreciated at the time.
Another thing I've become fond of is how well the libvirt tools and programs work over SSH from my home desktop to my work desktop. This has been mostly transparent and has often performed clearly better than my previous approach of using remote X via SSH's X forwarding. The previous approach wasn't a bad experience, but the new way is clearly better and more responsive. One libvirt thing that helps this is that it's very easy and obvious to start virtual machines without their console being attached to anything; I just 'virsh start <whatever>' and then 'ssh <whatever>' and I'm off to the races. This was always theoretically possible with VMWare, but I almost never did it in practice for various reasons.
(This is an extended version of some things I said on Twitter and on the Fediverse.)