Which virtualization platform is right for me - please help me decide

Hello -

I am interested in running virtual machines on my new Linux install. I'm running Ununtu 16.04 - since it's new I have a fresh start.

Quick 411 on me - I use Virtual Box and VMWare on other machines. Decent Linux experience and I'm wondering if there are better options out there. I don't mind getting my hands dirty on command line, but would prefer simplicity. One thing I'd prefer is a no cost for personal and professional use license.

Essentially, I'd like to be able to run a few small minimal CentOS Virtual Machines simultaneously. Or, run a single instance of a complete Fedora VM.

Any insight, direction, or suggestions would be greatly appreciated.

1 Like

If all you want to virtualize is Linux guests under a Linux host, then go for LXC.

It lets your Linux guest systems share the kernel of the host. Which results in minimal performance impact. I want to let you know that this only works if you want VMs without desktop environments.

In case you want a full virtualized guest, you should try out KVM.

I think this is sufficient to get your hands dirty for a few days, or weeks.


Anyone have proxmox, wmware and virtual box experience? Is proxmox too much for a personal laptop or just a jag around lab?

I'm thinking full virtualization is the best bet and I'll lab containers in one of my VMs.

If you're just going to be running stuff on your laptop I'd recommend taking a look at virt-manager, if you're not doing anything super fancy and just want a simple way to manage a few VMs with some options for different console types etc. I use this on my desktop just to run a couple VMs (such as win 10 w/ GPU passthrough, testing other distros) and it works well. It doesn't really offer anything GUI wise to get an OVMF bios configured, but from other tutorials this is pretty easy to do.

I installed Proxmox for a very brief period before switching to oVirt on CentOS. I didn't feel it had enough going on yet, for example trying to pass through host devices has to be done via config file manually, with oVirt there is a tab in the GUI to be able to do this. It also offers similar features as Proxmox such as scalability with data centers and clusters, it has a command line interaction that I have limited experience with but it does work well. I think it's pretty much all python based, and RHEV is based on it too. In a single host environment I think it's a little finicky sometimes, after a reboot I have a script to start all the VMs and one time after my host had a random reboot (still don't know why it does that sometimes) as it was starting to power them up one by one at some point it decided that the storage pool was offline so half my VMs didn't end up starting before the script gave up (it doesn't try forever, it waits 30 seconds between tries and tries 5 times) and I had to start them manually, but most of the time they all start without issue. I'd recommend giving it a shot, it's fairly simple to get started with. I have noticed though that they've redone their website so a lot of links to help articles while googling don't work anymore.

This single host serves as the backbone for my infrastructure so it was very important to me to have a software solution that would be fairly easy to use/maintain/update and had a lot of functionality baked in, and a lot of information available. When it randomly reboots that kinda sucks but I tried to make it able to recover on its own, the only mechanism I'm missing right now is it doesn't inform me when that happens and I'm trying to leave the hypervisor fairly bare, it's intended function is to have other things doing the work and it just hosts them so I don't want it running my VMs, monitoring software, email server, etc. I was able to write a script to start the VMs on boot after I decided to stick with it due to that command line interface. I didn't end up trying Proxmox long enough to know if it offered something similar but since the GUI left me wanting more I knew it wasn't for me.

I also have experience with vmware and virtualbox, certainly very good platforms but depends on how you're using it. Virtualbox would be fine for your purposes on a laptop most likely.

Been playing around with Kimchi. Sits on top of libvirt and KVM. Still has some bugs to work out, but it's pretty nice for personal use. https://github.com/kimchi-project/kimchi

1 Like

You can just use qemu directly

kvm -m 1G -k en-gb -vnc :0 -usbdevice tablet -drive file=vda.img,if=virtio
-net nic,model=virtio -net user -cdrom install.iso -boot d

once installed drop -cdrom and -boot d, networking is using Qemu's NAT, which you can do port forwarding on too, rather than set up a bridge. I havn't tried starting them with systemd yet, but since these are just processes an init can manage the systems for you.

I just completed the lib-virt , qemu, virt-manager install. May not be the sexiest way to use virtualization, but it should get the job done.

The lib-virt looks like it has some solid CLI management. I have few other irons in the fire, but that's on the shortlist to learn.

Next, we'll see about launching a CentOS and running some containers on there. :slight_smile:

Okay new machine - I'd like to use a CLI only distro like CentOS 7, any recommendations for virtualizing on a command line?

Check out KVM, or Xen. They let you just run a command, and it starts the guest in the background. Once you get the guest configured, all you need to do is ssh into them to use them. I use it all the time when working on my laptop with 2GB ram and intel celery. Also, if your gonna be using the terminal a lot, start using tmux, or something similar. It will make your terminal life much easier.

Regarding your Proxmox question. It's a distro that's meant to be put on a server or server-like machine. If your laptop is just going to sit open and be connected to your network like it's a server, sure. If you intend to use the laptop like it's a laptop, Proxmox probably isn't the best choice.

For all other virtualization needs, you're using Linux so libvirt + KVM. Because why use a type 2 hypervisor when you have a type 1 hypervisor right at your fingertips? This will take care of graphical management of your virtual machines, as virt-manager can connect to your CLI-only distro from your favorite GUI-based distro. And then when you're ssh'd into your CLI-only distro, you can use virsh for management of your VMs.

Proxmox might be a good choice for your CLI-only distro, as you get a nice web interface for managing your VMs. This is nice if you don't use Linux on other machines around your house, because to my knowledge, there is no virt-manager for Windows.

So for the original laptop - I've done the KVM lib-virt and virt-manger route. Works good.

For this new machine I'd like to admin it by ssh so it sounds like I can install KVM and lib-virt on a CentOS 7, run it headless and manage it from another machine via ssh.

Does tmux need to be installed on both the client and the server?

No. Its a server side program that enables splitting and resizing of terminal windows. Plus it allow you to detach a terminal and keep it running in the background. So you can ssh into the client box, open a tmux session. Ask it to do a long job. detach the tmux session to the background, and then close the ssh session. This lets you log into a server and start a process and leave for the weekend.

I've successfully segmented my network into 3 VLANs ("Home", "IoS", "Lab).

In the lab I have three machines:

  • Management Laptop - used to remotely admin servers below

  • Ubuntu Mate (Host for VMs):

    • Virtual Box runing Mulitple VMs

  • CentOS 7 minimal (Host for VMs):

    • 'Test' server for lib-virt, kvm, qemu VM server.