与 KVM 客户机一起使用文件系统直通

与 KVM 客户机一起使用文件系统直通

使用 16.04 虚拟机管理程序和 16.04 客户机,我希望从客户机直接访问主机文件系统。我在部分:

<filesystem type='mount' accessmode='passthrough'>
  <source dir='/mnt/gsystem/fs'/>
  <target dir='/mnt/fs'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</filesystem>

重新启动客户机后,插槽#3 处的 PCI 设备出现,我可以看到它如下所示(为了清楚起见,我已编辑掉其他 PCI 设备):

# lspci
...
00:03.0 Unclassified device [0002]: Red Hat, Inc Virtio filesystem
...

但文件系统尚未安装,并且目标目录对于客户机而言仍处于本地状态。

是否有下一步要采取的措施,或者我的虚拟机中是否缺少驱动程序?

答案1

您的语法主要用于 LXC 客户机,KVM 略有不同。更新您的 XML,如下所示:

<filesystem type='mount' accessmode='passthrough'>
 <source dir='/mnt/gsystem/fs'/>
 <target dir='mymount'/>
</filesystem>

启动您的客户机并手动将模块添加到客户机启动中。

cat >>/etc/modules <<EOF
loop
virtio
9p
9pnet
9pnet_virtio
EOF

使用以下方式手动插入所有模块

service kmod start

最后尝试挂载共享文件夹

mount mymount /mnt/fs -t 9p -o trans=virtio

如果它正在工作,请卸载并添加以下行到您的安装目录中/etc/fstab以使安装持久。

 mymount /mnt/fs            9p             trans=virtio    0       0

最后尝试再次安装

mount -a

资料来源:http://rabexc.org/posts/p9-setup-in-libvirt

答案2

使用 virt-manager 和 Ubuntu 22.04 作为客户机,它可以开箱即用。

首先在虚拟机的内存配置中选中“启用共享内存”。

接下来在 virt-manager 中添加一个新的文件系统:

  • driver设置为 virtiofs
  • source path设置为要共享的主机目录
  • target path设置为任何字符串,例如myshare(这实际上不是一个路径,而是下面使用的某种参考标签)。

启动客户机并从那里创建一个挂载点,例如/media/share,最后运行sudo mount -t virtiofs myshare /media/share

要添加它/etc/fstab应该看起来像:

myshare /media/share virtiofs rw,noatime,_netdev 0 2

相关内容