Proxmox:通过 VirtioFS 与虚拟机共享主机目录
随着 Proxmox VE 8.4 的发布,用户获得了创建主机级共享目录,允许从虚拟机直接访问主机文件(类似于VMware Workstation中的共享文件夹)。虚拟机可以直接访问Proxmox主机上的共享目录(文件),无需通过网络,使用虚拟IOFS文件系统。这篇文章解释了如何在 Proxmox 主机上创建共享目录并将其安装在运行 Linux 或 Windows 的虚拟机中。
通过共享文件夹,您可以从虚拟机快速访问本地 Proxmox 主机上的文件,而无需使用 SMB 或 NFS 等网络协议。主机上的共享目录可以包含系统工具、映像、配置文件、更新等。可以访问这些项目,而无需将其复制到每个 VM。
Proxmox主机使用内置虚拟软件守护进程(出现在 Proxmox 8.4 中)将本地目录传递到虚拟机。
检查主机上的 Proxmox 版本:
# pveversion -v


如果版本低于 8.4,请更新 Proxmox。
检查主机上是否安装了 virtiofsd。
# dpkg -l | grep virtiofsd
在要与虚拟机共享的 Proxmox 主机上创建共享目录。
# mkdir /mnt/VMShare
打开 Proxmox Web UI 并导航至数据中心->目录映射。为引用本地目录的资源创建新的目录映射/mnt/VMShare。


接下来,将共享 VirtioFS 目录添加到虚拟机设置中。打开虚拟机设置->硬件 -> Virtiofs。


选择要传递到 VM 的本地目录。


Virtiofsd 支持从共享目录对象到来宾虚拟机的 ACL 和 XAttr 直通。当然,如果来宾文件系统支持的话,这允许您管理对象访问权限(仅对 Linux 文件系统有意义)。
阅读更多:如何将虚拟机从 VMware ESXi 迁移(导入)到 Proxmox
具有 Linux 内核版本 5.4 的虚拟机或更高版本默认支持 VirtIOFS。验证该驱动程序是否已加载:
# lsmod | grep virtiofs
要使用 VirtioFS 驱动程序在具有 Linux 来宾的 VM 中临时挂载 Proxmox 主机中的目录,请在来宾 VM 中运行以下命令:
# mount -t virtiofs VMShare /mnt/hostshare


您还可以向 fstab 添加条目以永久安装共享目录。
VMShare /mnt/hostshare virtiofs rw,relatime 0 0
运行 virtiofs mount 命令时,您可能会收到错误。
mount: /mnt/hostshare: wrong fs type, bad option, bad superblock on vmshare, missing codepage or helper program, or other error. dmesg(1) may have more information after failed mount system call.


这是因为虚拟机必须至少关闭一次,VirtioFS 虚拟设备才能出现在虚拟机的硬件配置中(仅重新启动虚拟机是不够的)。
打开虚拟机后,检查虚拟机配置,确保出现 Virtio FS 设备。
# qm config 154 --current
virtiofs0: VMShare


在以下环境中使用 VirtioFS运行 Windows 的来宾 VM,你需要安装VirtioFS 访客工具,其中包括用于访问设备的驱动程序。将最新版本的 Virtio ISO 映像装载到虚拟机中(virtio-win-0.1.271.iso 或更高版本)。运行virtio-win-gt-x64.msi安装程序并安装维奥夫斯(Virtio 文件系统)驱动程序。有关更多详细信息,请参阅有关在 Proxmox 上部署 Windows 来宾虚拟机的文章。

让我们检查服务驱动程序是否已安装以及 Virtio FS 设备是否可以从来宾 Windows 访问:
Get-Service VirtioFsDrv
Get-PnpDevice | Where { $_.FriendlyName -like "*VirtioFS*" -or $_.FriendlyName -like "*Virtio FS*" }


要在 Windows 中挂载 VirtioFS 目录,请使用WinFSP工具。 WinFSP(Windows文件系统代理)可以在用户模式下挂载文件系统,类似于Linux上的FUSE。
下载并安装 WinFSPhttps://github.com/winfsp/winfsp/releases
有关使用 WinFSP 的更多详细信息,请参阅有关在 Windows 中通过 SSH (SSHFS) 映射网络驱动器的文章。
重新启动VirtIO-FS服务e (VirtioFsSvc)通过Winfsp挂载VirtIO-FS共享文件夹。


在 Windows 来宾虚拟机中,Proxmox 主机的共享目录将显示为单独的网络驱动器。
对于已安装 Virtio 共享文件夹的虚拟机,不支持主机之间的实时迁移。
