之前写过 Proxmox VE虚拟机与主机使用9p共享文件,现在发现有更好的Virtio-fs,只能说Linux内核的老旧限制了我的想象。支持 Virtio-fs 的Linux内核版本最低是5.4,十多年了一直用CentOS 7,上次CentOS7内核编译升级了一下,但只升到了4.19。
对比 Virtio-fs、Virtio-9p
| 特性 | Virtio-fs | Virtio-9p (VirtFS) |
|---|---|---|
| 核心架构 | 基于 FUSE 协议,利用 Virtio 和共享内存 (DAX) | 基于 9P 网络文件系统协议,通过 Virtio 传输 |
| 性能水平 | ⭐⭐⭐⭐⭐ (接近原生) | ⭐⭐⭐ (一般) |
| POSIX 语义兼容性 | 优秀,尤其利于数据库、开发环境 | 一般,部分操作(如 mmap)支持不佳 |
| 配置复杂度 | 中等(PVE 8.4+ 提供 GUI 支持) | 中等(需修改虚拟机配置和虚拟机内挂载) |
| 典型适用场景 | 宿主机与虚拟机间高性能共享(如数据库、编译) | 对性能要求不高的宿主机与 Linux 虚拟机间简单文件共享 |
开始部署
1. 在PVE后台添加
- 在数据中心 -> 目录映射 -> 添加
- 名称:后面虚拟机后台添加 和 虚拟机中挂载会用到,暂时不支持中文。
- 路径:这个是pve主机中的路径,就是要共享的目录,暂时也不支持中文目录。
- 节点:pve主机节点

- 切换到虚拟机后台 -> 硬件 -> 添加 -> Virtiofs,目录ID选择上面创建的名称

2. 进入虚拟机中设置
- 使用 mount 挂载
# 创建挂载目录,如:/home/share
mkdir
# 将share目录挂载到/home/share
mount -t virtiofs share /home/share
- 设置开机挂载
编辑/etc/fstab,添加share
share /home/share virtiofs rw,noatime 0 0
noatime 参数是每次读取文件的时候,不会更新这个时间戳,减少磁盘I/O操作,提高性能。
评论区