VirtIOFS Is the Best Thing You're Not Using in Proxmox
If you're deep in the world of Proxmox virtualization, you've probably already tried your hand at containers, VMs, and maybe even a home-labbed Ceph cluster or two. But one low-key feature has been flying under the radar and, frankly, deserves a lot more attention: VirtIOFS.
For a lot of users, VirtIOFS has become the go-to way to bridge the gap between the host and guest operating systems, especially for file sharing. If you've been sticking to the old-school approaches, like Samba or NFS, you might be missing out on one of the simplest and fastest ways to get shared folders up and running inside your virtual machines.
So, what is VirtIOFS anyway?
Without getting too bogged down in technical documentation: VirtIOFS is a shared file system built specifically for VMs. Unlike older methods (hello, 2000s-era NFS), VirtIOFS is designed to run over the VirtIO transport used in QEMU/KVM environments. For you, that means very fast, low-latency access to files from the host system within your guest VMs.
It's the kind of thing that just works. For folks who've battled with the quirks of LXC containers or tried to kludge together workarounds for persistent shared storage, VirtIOFS can feel like a breath of fresh air.
Why it's gaining traction
One user summed it up perfectly: "I have been stuck with LXCs just because I could easily share a host folder with multiple containers at the same time. But LXC required extra config compared to VMs, like when using unprivileged, and using VPNs like Tailscale."
That's the story for a lot of Proxmox users. Containers are great, until they're not. Running Docker Swarm inside an LXC can get messy, especially if you're juggling VPNs or trying to sandbox with unprivileged permissions. VMs offer more flexibility and isolation, but until VirtIOFS they lacked a good, straightforward way to share files.
Once this user started moving from Docker Swarm in LXC to Alpine VMs, the game changed. Setting up shared storage with VirtIOFS was fast and easy, and it just worked. Mounting the same host folder to a Desktop Linux VM was no problem either, and the performance was, in their word, "Great."
That experience isn't unique. Another user noted they "instantly migrated everything to VirtIOFS" when Proxmox rolled out native support, with no hiccups and no regrets.
Real-world use cases
A pattern is starting to emerge in what Proxmox users are doing with VirtIOFS:
- Passing ZFS datasets from the host into guest VMs
- Running Docker inside full-blown Linux VMs (instead of containers) using VirtIOFS-mounted volumes
- Sharing persistent storage between multiple VMs without Samba shares or any fuss
- Using it on Windows guests for massive file transfers, although not always smoothly (more on that in a bit)
For example, one user piped in with this setup: a Proxmox host on ZFS, with datasets shared via VirtIOFS to a VM, which then uses them as persistent Docker volumes. Performance might not beat raw block storage via VirtIO SCSI, but for ease of use it's hard to beat.
Another user went all in: "I use VirtIOFS on a ZFS RAIDZ2 3-HDD storage set for my main data drive for an Ubuntu VM." The VM lives on a separate SSD, while datasets get piped in as needed. It's a simple, clean setup that does its job.
It's not all perfect
Not everyone's having a smooth time. One user flagged a performance gap: "Writing to a VM's VirtIO SCSI drive gives me 1.5GB/s, but VirtIOFS drops to around 150MB/s." That's a pretty stark difference, and it's something to keep in mind if you're planning heavy-duty file I/O.
Another ran into stability issues transferring terabytes of data through VirtIOFS to a Windows VM. After hundreds of gigabytes, the VM would lock up, possibly because of driver limitations or issues under high load. Windows support is still maturing, and your mileage may vary depending on the guest configuration.
So yes, VirtIOFS has problems. But the issues people are seeing seem to be either edge cases (massive file transfers, driver bugs in Windows) or tradeoffs for ease of use.
The hidden advantage: simplicity
Samba is a pain to set up cleanly. NFS can be finicky, especially with permissions and networking. LXC bind mounts are great until you need better VM isolation. VirtIOFS sidesteps all of that.
One user who was new to Proxmox admitted they chose VirtIOFS for everything simply because they didn't know the alternatives, and it worked out just fine. Sometimes not knowing the old way lets you skip straight to the better one.
For newcomers, this is gold. There's less friction, fewer moving parts, and a setup process that doesn't require diving deep into obscure Proxmox forums or trying to decipher systemd mount units from a five-year-old blog post.
What about performance?
Back to the earlier complaint: is VirtIOFS "slow"? It depends.
For raw IOPS and throughput, VirtIO SCSI with block storage still has the edge. VirtIOFS was built for file-level access and was never meant to replace block storage. If you're reading and writing a large number of smaller files or just need shared access to config folders, app data, or Docker volumes, it's fast enough. For many users, giving up some raw speed is totally worth it for the ease of setup and use.
In most real-world scenarios, VirtIOFS performs well enough that it doesn't feel like a bottleneck, especially if you're not maxing out your system with giant transfers.
Final thoughts: should you be using it?
If you're a Proxmox user and haven't given VirtIOFS a shot yet, now's the time. If you need a quick way to share host data with VMs, use VirtIOFS. If you want to move off containers into VMs without losing the easy storage sharing, use VirtIOFS. And if you're running Docker in VMs, VirtIOFS makes persistent volumes painless.
You don't have to reinvent your entire setup. VirtIOFS is one of those low-friction tools that make your life easier. It fits into modern workflows without much effort, works with ZFS, and helps bridge that awkward space between containers and full virtualization.
Sure, it has flaws. There are some performance quirks, and power users pushing the limits might bump into bugs. But for the vast majority of Proxmox setups, VirtIOFS is the kind of "just works" tech we all dream of.
TL;DR
- VirtIOFS provides fast, low-latency file sharing between the Proxmox host and VMs
- It's much simpler than Samba/NFS setups, with fewer permission headaches
- It's great for Docker volumes, ZFS dataset sharing, and multi-VM storage access
- Performance is ~150MB/s vs 1.5GB/s for block storage, which is fine for most use cases
- Windows support is still maturing, and Linux guests work best
- If you're stuck on LXCs just for bind mounts, VirtIOFS might be your ticket to VMs