我在主机上添加共享文件夹时遇到困难Ubuntu 服务器 20.04使用虚拟。
在我的里面<domain/>
我已经添加了
<memoryBacking>
<source type='memfd'/>
<access mode='shared'/>
</memoryBacking>
和里面<devices/>
<filesystem type='mount' accessmode='passthrough'>
<driver type='virtiofs'/>
<source dir='/home/server/VM_share'/>
<target dir='VM_share'/>
</filesystem>
保存后我得到
错误:XML 文档无法根据架构进行验证:无法根据 /usr/share/libvirt/schemas/domain.rng 验证文档 交错元素域中的额外元素设备无法验证内容 失败。再试一次?[y,n,f,?]:
选择i
信息收益
错误:不支持的配置:未知的 fs 驱动程序类型“virtiofs”
我在 Debian 邮件列表中的某处看到过关于此类抱怨,人们说的版本libvirt
太旧了。
我检查过(例如守护进程)
libvirtd --version
libvirtd (libvirt) 6.0.0
检查qemu
结果
qemu-system-x86_64 --version
QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.21)
根据官方网站我需要 Linux 内核 5.4+(Ubuntu Server 20.04 当前默认运行在 5.4.0-107 上)、QEMU 5.0、libvirt 6.2。
现在我很困惑,因为这篇来自 Ubuntu 的官方帖子(看Ubuntu 内核 v5.4 中的功能亮点)表示支持虚拟。但是根据所需组件(内核除外)的软件包版本,似乎除非有外部非官方存储库,否则该功能实际上并不适合使用
ppa:jacob/virtualisation
被使用。我是否遗漏了什么?我主要关注的是本指南等等。
答案1
这里确实涉及一些组件。有关 5.4 的内核信息实际上只与运行该内核或更高版本的客户机有关,以便能够使用 virtiofs。不过,有很多修复,所以一般来说(对于任何类型的新功能)你可能需要寻找一个更新的内核,在 Focal 20.04 客户机中,你可以通过HWE 内核。
但除此之外,从主机角度提供此功能,您还需要 libvirt 和 qemu 做好准备。Focal 20.04 附带 qemu 4.2,但尚未具备所需的全部功能virtiofs
- Focal 中的 libvirt 6.0 也是如此。
请参阅Ubuntu 服务器指南 - 请参阅“在主机<->客户机之间共享文件”部分- 该功能已在 qemu/libvirt 的更高版本以及 Ubuntu 的更高版本中启用并运行。如果您查看 Qemu、libvirt 和 Ubuntu 的变更日志,您会发现在大多数后续版本中都有很多改进 - 因此(与上面的内核一样) - 您应该尝试使用相当新的虚拟化堆栈来实现此功能。
您可以通过多种方式实现此功能:
- 您可以使用 Focal 之后的任何现有版本,例如 Impish 21.10(请注意,该版本现已终止使用,请参阅选项 3)
- 如果你想要/需要继续使用 Focal,你可以使用大量定期移植到服务器反向移植
- 如果你需要一款没有任何 PPA 的 LTS 版本 -> 两周后,新的 Jammy LTS 22.04 将会发布,它将拥有所有这些功能以及更多功能
答案2
最近,我virtiofs
通过添加源实现了 Ubuntu20.04(5.13.0-40-generic) 和 Win11 之间的切换server-backports
,方法与 Christian Ehrhardt 提到的第二种方法相同
如果你想要/需要继续使用 Focal,你可以使用在服务器反向移植中定期移植的大量较新的软件
只是sudo add-apt-repository ppa:canonical-server/server-backports && sudo apt update
,它会更新 qemu(7.0.0) 和 libvirt(7.6.0)。我尝试编译最新的 qemu 和 libvirt,但需要安装的依赖项太多。不幸的是,我使用默认前缀编译了它,这引入了很多问题。