避免在同一磁盘上的虚拟机中重复写入病毒扫描签名

避免在同一磁盘上的虚拟机中重复写入病毒扫描签名

我在同一个磁盘上安装了两台虚拟机,每台虚拟机都安装了 clamav。两台虚拟机都会同时定期运行相同病毒扫描签名的更新,这每次都会给磁盘性能带来不必要的压力。由于下载的是相同的签名,我想在这种情况下减少冗余。

最初的想法是让它们共享一个虚拟磁盘,这些签名会下载一次,这样虚拟机就只需从那里读取它们。因此,只有一个虚拟机需要对磁盘具有写访问权限才能下载,而另一个虚拟机具有只读访问权限。

我使用以下命令将虚拟磁盘连接到第一个虚拟机: $ virsh attach-disk <VM1> <virtDisk> vdb --cache none

但是,在尝试将同一个虚拟磁盘成功连接到第一个虚拟机后,再将其连接到第二个虚拟机时,会出现以下情况: $ virsh attach-disk <VM2> <virtDisk> vdb --cache none --mode readonly

发生错误 unable to execute QEMU command 'device-add': Failed to get shared "write" lock 。是不是这样就不可能了,还是我漏掉了一个选项?

为了这个目的,在虚拟机之间共享这些签名的最佳方法是什么?

答案1

您需要一些集群感知文件系统来在多个非 R/O 使用者之间共享任何块设备。请参阅此处的完整内容:

https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392

对于任何块存储(例如 SAS、FC、iSCSI 或虚拟块设备)来说都是相同的。

答案2

虚拟机管理程序不支持同时将虚拟存储共享给两个不同的虚拟机。这样做毫无意义,因为一个虚拟机(或两个虚拟机)不可能拥有一致的存储视图,即使其中一个虚拟机是“只读”的。客户操作系统不会期望任何其他内容写入存储。

要在虚拟机之间共享存储,请使用为此目的而设计的现有解决方案(例如 NFS 或 iSCSI),或者如果您确实想使其比用例实际需要的复杂得多,则可以使用集群文件系统。

相关内容