共享块设备文件系统(无需网络的集群文件系统)

共享块设备文件系统(无需网络的集群文件系统)

是否有任何文件系统可以多次挂载并支持 Linux 的并发文件访问?基本上,我想要一个类似集群文件系统的东西,但不需要为分布式锁管理器运行网络。这对于可以与主机或其他 VM 共享数据而无需创建网络链接的虚拟机来说非常方便。我想避免这种情况以保持网络架构的安全(DMZ 中的虚拟机)但共享大文件。无需扩展,只需两台安装相同块设备的机器即可。

难道不应该可以在磁盘上保存文件锁定信息吗?

答案1

我猜您可以为 N 个虚拟机提供对同一块设备的访问权限,但只能读取。请注意“猜测”这个词。

如果任何虚拟机开始修改内容,事情就会很快失败,因为任何缓存其他虚拟机的磁盘现在都将无效。

在磁盘上保存文件锁定信息的困难在于,目前还没有人这样做过。如果不深入思考,磁盘上的原子读/修改/写事务的想法可能就是基本问题。

我猜您可以采用一个已经多线程的典型文件系统,找出锁的使用位置,然后将其更改为磁盘上的某种读/修改/写操作。

磁盘上的读/修改/写的另一个问题是,如果进行大量锁定,性能会非常差,因为对磁盘上的任何内容的每次更改都需要:

  • 锁定磁盘(寻道、读取/修改/写入)
  • 读取您想要更改的扇区(搜索/读取)
  • 做出改变并写下来(写下来)
  • 解锁磁盘(查找、读取/修改/写入)

这可能没有帮助,但如果您真的不想联网,我会考虑像 BSD Jails 这样更轻量级的 VM 系统。

答案2

回答我自己的问题:在(半)虚拟化的情况下,一些共享文件系统正在发展,可用于在实例之间共享文件而无需网络。我认为 XenFS 是一种尚未积极开发的方法。但对于 KVM,希望对于 XEN 很快,有一个基于 virtio 库的文件夹共享机制,称为9p_virtio

相关内容