curios Asked: 2020-11-02 09:40:14 +0800 CST2020-11-02 09:40:14 +0800 CST 2020-11-02 09:40:14 +0800 CST 将同一个分区挂载到多个虚拟机是否安全? 772 我正在使用带有 Xen Hypervisor 的 ubuntu 20.04。在我的机器上,我有一个 SSD 来托管我的 VM 映像,然后是四个我有数据的 sata 驱动器。我当前的设置是将数据挂载到我的 domain0 上,然后通过网络文件服务器将该数据提供给其他 VM。 这似乎效率低下,因为所有虚拟机都必须通过我的 NIC 才能访问数据。我认为这是一个很大的瓶颈是否正确? 在同一台物理机中提供数据的行业标准是什么?对此设置有何建议或改进? 在每个 VM 上安装数据 LVM 是否有害?我对这种方法的担忧是,如果两个 VM 尝试同时访问同一个数据点会发生什么?此设置是否容易受到数据损坏的影响? xen mount lvm virtual-machines 2 个回答 Voted Best Answer Austin Hemmelgarn 2020-11-02T19:07:18+08:002020-11-02T19:07:18+08:00 一般来说,不,除非您遇到两个非常具体的限制之一。任何一个: 设备需要以只读方式(必须在设备级别,而不是文件系统级别)公开给所有 VM,并且不得在运行时从任何地方写入。 或者: 该卷必须使用可识别集群的文件系统进行格式化,并且所有 VM 都必须是集群的一部分(如果需要访问数据,主机系统也必须是其中的一部分)。 通常,不支持集群的文件系统被设计为假定它们具有对其后备存储的独占访问权限,即除非他们做一些事情来改变它们,否则它的内容不会改变。如果违反此约束,这显然会导致缓存问题,但实际上比这更糟糕,因为它扩展到文件系统的内部结构,而不仅仅是文件数据。这意味着您可以通过同时将文件系统安装在多个节点上来非常轻松地完全破坏文件系统。 集群感知文件系统是解决此问题的传统解决方案,它们使用基于网络的锁定或共享存储本身的特殊同步形式来确保一致性。在 Linux 上,您的选择几乎是 OCFS2 和 GFS2(根据个人经验,我推荐 OCFS2 而不是 GFS2,但 YMMV)。但是,他们需要集群中所有节点的更多内容才能保持同步。作为一般规则,由于它们强制执行锁定和缓存失效要求,它们在许多工作负载上具有显着的性能限制,它们往往涉及大量磁盘和网络流量,并且与传统的单节点相比,它们可能不完整文件系统。 我想指出,通过本地网桥的 NFS(做你想做的“简单”选项)实际上是相当有效的。除非您使用相当奇怪的设置或坚持每个 VM 都位于其自己的 VLAN 上,否则 NFS 流量甚至不会触及您的 NIC,这意味着这一切都发生在内存中,因此几乎没有效率问题(尤其是如果您为虚拟机使用半虚拟化网络)。 理论上,如果你设置 9P,你可能会得到比 NFS 更好的性能,但所付出的努力可能并不值得(性能差异可能不会太大)。 除了所有这些之外,还有第三种选择,但在单台机器上使用它是多余的。您可以设置像 GlusterFS 或 Ceph 这样的分布式文件系统。如果您的数据并非天生与您的虚拟机共存(也就是说,您可能在数据所在的节点以外的节点上运行虚拟机),这实际上可能是最佳选择,因为虽然它不如 NFS 或 9P 高效,但它将在基础架构方面为您提供更大的灵活性。 BaronSamedi1958 2020-11-02T11:42:54+08:002020-11-02T11:42:54+08:00 如果您不在虚拟机内运行集群感知文件系统,您只需在第一次元数据更新后立即销毁您的粉碎卷。完整的澄清故事在这里: https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392
一般来说,不,除非您遇到两个非常具体的限制之一。任何一个:
或者:
通常,不支持集群的文件系统被设计为假定它们具有对其后备存储的独占访问权限,即除非他们做一些事情来改变它们,否则它的内容不会改变。如果违反此约束,这显然会导致缓存问题,但实际上比这更糟糕,因为它扩展到文件系统的内部结构,而不仅仅是文件数据。这意味着您可以通过同时将文件系统安装在多个节点上来非常轻松地完全破坏文件系统。
集群感知文件系统是解决此问题的传统解决方案,它们使用基于网络的锁定或共享存储本身的特殊同步形式来确保一致性。在 Linux 上,您的选择几乎是 OCFS2 和 GFS2(根据个人经验,我推荐 OCFS2 而不是 GFS2,但 YMMV)。但是,他们需要集群中所有节点的更多内容才能保持同步。作为一般规则,由于它们强制执行锁定和缓存失效要求,它们在许多工作负载上具有显着的性能限制,它们往往涉及大量磁盘和网络流量,并且与传统的单节点相比,它们可能不完整文件系统。
我想指出,通过本地网桥的 NFS(做你想做的“简单”选项)实际上是相当有效的。除非您使用相当奇怪的设置或坚持每个 VM 都位于其自己的 VLAN 上,否则 NFS 流量甚至不会触及您的 NIC,这意味着这一切都发生在内存中,因此几乎没有效率问题(尤其是如果您为虚拟机使用半虚拟化网络)。
理论上,如果你设置 9P,你可能会得到比 NFS 更好的性能,但所付出的努力可能并不值得(性能差异可能不会太大)。
除了所有这些之外,还有第三种选择,但在单台机器上使用它是多余的。您可以设置像 GlusterFS 或 Ceph 这样的分布式文件系统。如果您的数据并非天生与您的虚拟机共存(也就是说,您可能在数据所在的节点以外的节点上运行虚拟机),这实际上可能是最佳选择,因为虽然它不如 NFS 或 9P 高效,但它将在基础架构方面为您提供更大的灵活性。
如果您不在虚拟机内运行集群感知文件系统,您只需在第一次元数据更新后立即销毁您的粉碎卷。完整的澄清故事在这里:
https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392