Proxmox VE中虚拟机和主机共享文件方式有很多,最终试下来9P文件系统还是挺好用的,但目前只支持在Linux系统
1、检查内核是否支持9p文件系统
grep -E 'CONFIG_9P|CONFIG_NET_9P|CONFIG_9P_VIRTIO' /boot/config-$(uname -r)
# 输出:
CONFIG_9P=y/n/m
CONFIG_NET_9P=y/n/m
CONFIG_9P_VIRTIO=y/n/m
这里有三种情况:
-
- =y已经支持:直接跳转到 第4. 主机配置
-
- =m未启用: 跳转到第2. 加载9p内核模块
-
- =n或不存在,升级或更新模块:跳转到第3. 重新编译内核
2. 加载9p内核模块
第1步,如果是m,需要手动加载
sudo modprobe 9p
sudo modprobe 9pnet
sudo modprobe 9pnet_virtio
验证模块是否加载成功
9pnet_virtio 20480 0
9p 73728 0
9pnet 102400 2 9p,9pnet_virtio
netfs 499712 1 9p
3. 重新编译内核
CentOS 7/8 默认都是不编译9P相关支持的,这里就需要重新编译内核才能实现的。
这里参考CentOS7内核编译升级,并支持9p文件系统 就不在多叙述了。
4. 主机配置
在主机中,找到虚拟机的配置文件。
如:虚拟机ID为100,配置文件为/etc/pve/qemu-server/100.conf
在文件的最前面加入参数:
args: -fsdev local,security_model=passthrough,id=fsdev0,path=/mnt/data -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=lvm_data
这里path是主机需要共享给虚拟机的目录,mount_tag可以随便写,后面进虚拟机挂载时需要用到。
5. 虚拟机配置
进入虚拟机,编辑/etc/fstab
添加
lvm_data /data 9p trans=virtio 0 0
- lvm_data:这个就是主机配置中,配置的mount_tag值。
- /data:本地挂载目录
- 9p trans=virtio:9p文件系统相关配置,使用virtio传输
6. 测试
mount -a # 挂载
df -hT # 查看是否有 lvm_data 挂载到 /data 目录的信息