The new version of Proxmox was released a few days ago, and brings several very nice new features with it. For me the most interesting is that they've added PCI passthrough support in the Web UI (you'd have to manually edit your VM configuration files previously), but there's several other note-worthy additions. You can check the official press release here, or keep reading to see my take on things, along with screenshots that show the features in action.
Updating your own box is easy, just use the usual update method to get the latest version (Node » Updates » Refresh, and then Upgrade, or just run
sudo apt-get update && sudo apt-get upgrade -y in shell.
I have only recently started playing with PCI (or USB) passthrough, so having a UI for this is especially handy for me. While the VM configuration file isn't all that complicated, it's nice to have a UI that lists out all devices it can find so you don't have to run separate commands for that. Adding a PCI device is now roughly as easy as adding a USB device. After initial setup, that is.
A note on initial setup
You may get an error message the first time you try to use this feature. This is because you apparently need to manually enable the modules and settings that enable hardware pass-through. I am not sure if this is automatically done with a clean install of Proxmox 5.3, but after upgrading I had to do this manually. I'll be sharing what I had to do to make the feature work below.
hardware passthrough will only work if your hardware (specifically your CPU) supports these features. Fortunately virtually all Intel Xeon CPUs support this, so if you're running Proxmox on an actual server you'll most likely be fine. The important
abbreviations features to look for are VT-d and IOMMU. If you have an AMD CPU, instead of VT-d you should instead look for AMD-Vi, although as I only have Intel CPUs I won't be able to confirm this on my own.
For the remainder of this document I'll assume you have an Intel CPU, but feel free to replace Intel-specific parts with the appropriate AMD equivalent.
1) Enable VT-d and/or SR-IOV
Depending on your motherboard/vendor, they may use different names or abbreviations to indicate the thing we're looking for. Some may simply call it VT-d or VT-x, whereas others may have different names. I recommend you consult your specific motherboard and/or server documentation to find the appropriate options, and to ensure the hardware supports this feature in the first place.
In my case on a Dell R510 I had to enable Virtualization Technology, as-well as SR-IOV (Single Root I/O Virtualization). The former can be found under Settings » Virtualization Technology, and the latter under Settings » Integrated Devices » SR-IOV Global Enable. I believe the options are named similarly on the R610, R620 and R720, though I don't have access to these servers to verify this.
2) Modify Grub config
With that done, you need to modify a few settings in your Proxmox Debian installation. After booting up your server, SSH into your server or use the Dashboard's Shell option. We'll start with updating the Grub configuration file.
Use your favorite text editor to open
/etc/default/grub (use sudo if you're not logged in as root). Find the line that sets
GRUB_CMDLINE_LINUX_DEFAULT and replace its default
"quiet intel_iommu=on". If you're using an AMD CPU, this should be set to
"quiet amd_iommu=on". Save the changes, and then run
3) Modify /etc/modules
/etc/modules using your favorite text editor, and add the following lines to it (note: the file may be empty at first, which is fine. Just add these lines):
vfio vfio_iommu_type1 vfio_pci vfio_virqfd
Save the changes, and reboot your server
That should be it.
After rebooting you should now be able to add PCI passthrouh devices to your virtual machines. You can check if things work alright via the Proxmox UI by heading over to the Hardware section of any of your VMs, and then clicking the Add » PCI Device option. You can also use the
lspci to get a list of all PCI devices and their respective identifiers, in case you want to manually assign these via the VM config file, or just to quickly check if a certain device actually shows up.
With 5.3 it is now also easier to add additional storage options to your setup. I haven't looked too much into this just yet, but I plan to play around with this a bit later as something like CIFS might be a good choice for my specific setup. CephFS seems to be a highlight addition, but I am not familiar with it just yet.
For now, here are some screenshots at least that show off the new UI features in action:
Hosts file editing
This is both a big and small addition, as it can make it slightly easier to update your server's IP address and/or hostname, something I've found to be more complicated than it ought to be.
While it's fairly easy to just edit the hosts file directly from a prompts, it's kind of nice they exposed this in the UI too. It's likely still (too) challenging to update your host's IP address if it's part of a cluster already, and Proxmox' official recommendation for wanting to change the IP address is to a) not, or b) completely re-install Proxmox. Yikes.
Overall I think it's a nice update, especially the PCI passthrough UI, and I'll certainly be playing with this feature some more.