virtiofs, 虚拟化的最后一块拼图
-老湿基-
2025年07月15日 20:22
收录于文集
共11篇

虚拟化的优化无处不在

virtio 这个思想在虚拟化里简直就是大杀四方,无往而不利。

最近我也几乎是重写了之前的一片虚拟化博客,感兴趣的朋友可以看一下,里面总结了我最近几年学习使用虚拟化的一些心得、感想。

https://littlenewton.cn/2024/12/tutorial-linux-kvm-configuration/

https://littlenewton.uk/2024/12/tutorial-linux-kvm-configuration/

VirtIO FS是什么?

首先说,这是一个基于 FUSE/Winfsp 的文件系统,也就是说,这个文件系统是在用户态实现的。

它能做什么呢?简单说来,就是绕过网络协议,直接让主机将自己的文件系统暴露给虚拟机,虚拟机可以直接读写主机的某个文件目录。

看上去非常不可思议,这有点类似容器技术里的路径映射。它充分利用了主机和虚拟机的存储相邻特性。

由于使用了 FUSE 协议,因此 virtiofs 天生就是一个客户端服务器系统,需要在虚拟机里安装一个 fuse 模块外加一个 virtiofs 驱动。

性能如何?

经过实测,我发现 virtiofs 速度还是挺可以的,至少日常使用不存在性能瓶颈,毕竟也没什么人在虚拟机里跑高性能计算。读 600MB/s 写 1GB/s, 至少我是够用了。而且 4K 性能还很不错。

如果使用 ext4 等简单的文件系统,估计性能还能更好一些。

典型应用场景

virtiofs 的可想象空间非常大,比如远程桌面、虚拟机容器等。

局限性

由于文件系统很特殊,所以有些服务并不支持 virtiofs,比如 dropbox 的同步目录不能设置为 virtiofs 路径,Dropbox 提示文件系统不受支持。

所以 virtiofs 是一种介于 SMB 共享和 iSCSI 之间的文件协议,它的底层文件系统依然归属于宿主机,而非虚拟机。