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