我已经在 Debian 10 主机上设置了 KVM。
有 2 个虚拟机正在运行。
虚拟机#1 里面有 OMV。
虚拟机#2 有普通的 debian。
每个虚拟机都安装在自己的 qcow2 映像文件中。
这两台机器共享一个额外的存储空间,即 RAW 存储文件。两台机器都将此存储标记为“可共享”。
我注意到的当前问题是文件表没有即时更新。我的意思是,如果您在一个 VM 中使用此存储进行某些操作,则在另一个 VM 重新启动之前,将不会在另一个 VM 上看到更改(很可能 remount 也是如此)。
如果两个 VM 都进行了更改,OMV 稍后会开始吐出一些与 SMB 相关的错误。
重启 OMV 并没有更新文件表,但是重启 debian 机器导致所有数据丢失。
OMV 托管 Samba 共享。
有没有人有共享存储的经验并且知道如何至少手动刷新文件表而不重新安装存储?
同时在两个节点上以 r/w 方式挂载 ext4 文件系统不会使内容对两个节点都可用 - 相反,它会损坏文件系统。
在 virt-manager 中将磁盘标记为可共享只会阻止虚拟机管理程序向您发出警告 - 它发生在虚拟硬件级别,而不是文件系统级别。
如果您想要共享磁盘(并且有充分的理由),请使用 GFS 或 OCF2(初学者最简单的选择)。
tl;dr:让您的普通 Debian VM(虚拟机 #2)安装托管在您的 OpenMediaVault VM(虚拟机 #1)上的 Samba 共享。仅将原始存储文件连接到虚拟机 #1。
解释
您的设置类似于将一个闪存驱动器同时插入两台计算机。我以前写过这个:
来自:如何使 iSCSI 发起程序传播更改?
为了纠正这个问题,您需要在存储磁盘(在服务器上)和访问它的多台机器(客户端)之间有一个层,它知道多个客户端可以访问同一个存储。
两种常见的设置方法是NFS和CIFS (Samba),它们是网络文件系统。
我看到您已经设置了 Samba 服务器。 要共享存储,您需要做的所有不同的事情就是让您的虚拟机连接到那台 Samba 服务器。 您应该只将虚拟磁盘连接到 Samba 服务器。
您可以更进一步,设置一个分布式文件系统,这是一种从多个服务器汇集存储并在单个网络文件系统上访问它们的方法。
或者,也可以像您最初尝试的那样共享虚拟磁盘,但您仍然需要一个文件系统,它知道多台计算机可能同时修改数据。 这个另一个答案建议共享磁盘文件系统,它在比网络文件系统更低的级别抽象共享存储。
资源
官方文档
教程
(教程对 Debian 10 应该仍然有效)
超越:分布式文件系统