![KVM 共享文件夹文件系统权限策略](https://linux22.com/image/1565964/KVM%20%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E5%A4%B9%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E6%9D%83%E9%99%90%E7%AD%96%E7%95%A5.png)
我有一个 Ubuntu/KVM 虚拟机管理程序环境,可以通过 NFS 访问 ZFS 数据集(又称文件系统)。我一直在 ZFS 文件系统上托管 VM 映像,尽管它不是世界上最快的,但确实非常稳定。
我想要做的是使用 KVM 共享功能让客户虚拟机直接访问 ZFS 文件系统,从而使虚拟机能够访问 ZFS 数据集并将其挂载到客户虚拟机中。这样做有两个原因:
我希望速度能够得到提高,因为只需要维护一个文件系统结构——ZFS,而不是我现在所拥有的 ZFS 上的 ext4。
我希望用户能够访问 ZFS 的快照功能。
我已设法按照说明安装卷,但无法安装它们,因此它们可写。在网上搜索后,我发现有效用户名是 libvirt+,但我找不到修改模式设置为可以工作的的目标文件系统。
有人能给我提供关于如何处理这个问题的指南吗?
答案1
要回答你问题的战术部分,听起来你正在使用 NFS 进行客户机/主机共享。然后就归结为 NFS 权限问题。在主机上,确保它是共享的读/写,例如你想授予此共享访问权限的 IP 地址集在哪里。有关更完整的示例,请参阅zfs set sharenfs="[email protected]/N" tank
w.x.y.z/N
这里。
但同时,关于你的目标:
如果主机将虚拟机磁盘文件存储在 ZFS 上,而客户机在此基础上使用 ext4,则 ZFS 不太可能在性能方面增加太多“文件系统开销”。毕竟,KVM 很少(如果有的话)在此模式下创建新文件,因此不需要经常在 ZFS 中更新元数据。我的猜测是,除非您在虚拟机中运行对性能非常敏感的工作负载(高吞吐量数据库等),否则您不会注意到太大的差异。
我不知道有什么方法可以将 ZFS 的快照功能公开给来宾用户。这可以通过 Solaris 上的区域、FreeBSD 上的 jails 以及 Linux 上的 Docker / lxd / lxc 来实现(我对此不太确定),但绝对不能通过 KVM + QEMU 来实现。我认为使用 KVM 实现此目的的唯一方法是让用户访问
zfs snapshot
主机本身(通过直接 SSH 访问或通过服务或其他方式)。
还有其他原因导致将数据文件保存在主机上是有意义的(合并,以及 ZFS 的所有正常好处:更容易备份、数据完整性、放置配额和预留等),但我不认为这两个原因在新配置中特别容易。