对 KVM 来宾使用文件系统直通

Ala*_*ect 7 kvm virtualization

使用 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>
Run Code Online (Sandbox Code Playgroud)

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

# lspci
...
00:03.0 Unclassified device [0002]: Red Hat, Inc Virtio filesystem
...
Run Code Online (Sandbox Code Playgroud)

但是文件系统没有挂载,目标目录对来宾来说是本地的。

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

ob2*_*ob2 5

You 语法主要用于 LXC 来宾,KVM 有点不同。更新您的 XML,如下所示:

<filesystem type='mount' accessmode='passthrough'>
 <source dir='/mnt/gsystem/fs'/>
 <target dir='mymount'/>
</filesystem>
Run Code Online (Sandbox Code Playgroud)

启动您的来宾并手动将模块添加到来宾启动。

cat >>/etc/modules <<EOF
loop
virtio
9p
9pnet
9pnet_virtio
EOF
Run Code Online (Sandbox Code Playgroud)

手动插入所有这些模块

service kmod start
Run Code Online (Sandbox Code Playgroud)

最后尝试挂载共享文件夹

mount mymount /mnt/fs -t 9p -o trans=virtio
Run Code Online (Sandbox Code Playgroud)

如果它正常工作,请卸载并将以下行添加到您的中/etc/fstab以使挂载持久化。

 mymount /mnt/fs            9p             trans=virtio    0       0
Run Code Online (Sandbox Code Playgroud)

最后尝试再次安装它

mount -a
Run Code Online (Sandbox Code Playgroud)

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

  • 在这种情况下,目标是一个简单的标签,只需选择您想要的任何名称。对于写访问,这主要是主机上的权限问题,有关提供的链接的更多信息。 (4认同)