在Google Compute Engine VM之间共享永久磁盘

fla*_*ert 28 google-compute-engine

来自Google的文档:

可以将永久磁盘附加到多个实例.但是,如果将永久磁盘附加到多个实例,则所有实例都必须以只读模式附加永久磁盘.在读写模式下,无法将永久磁盘连接到多个实例.

如果以读写模式附加永久磁盘,然后尝试将磁盘附加到后续实例,则Google Compute Engine会返回错误.

所以,我需要一个共享持久磁盘作为我所有计算引擎的前端,好,你怎么能在这个共享磁盘上写?

我的猜测(我希望)是一个读/写持久磁盘只能附加1个计算引擎,但同一个磁盘可以只读共享给其他虚拟机,这是正确的吗?

假设我有2个计算引擎虚拟机和2个永久磁盘,这个流程是否可行?

  • compute1读/写disk1和只读disk2
  • compute2读/写disk2和只读disk1

Mis*_*man 43

不,这是不可能的,因为在撰写本文时所引用文档(自更新后):

但是,如果将永久磁盘附加到多个实例,则所有实例都必须以只读模式附加永久磁盘.

从那时起,文件已经重新安排; 新文档位于不同的URL但具有相同的内容:

您可以以只读模式将非根持久性磁盘附加到多个虚拟机实例,从而允许您在多个实例之间共享静态数据.在一个永久磁盘的多个实例之间共享静态数据比将数据复制到单个实例的唯一磁盘要便宜.

如果将永久磁盘附加到多个实例,则所有这些实例都必须以只读模式附加永久磁盘.在读写模式下,无法将永久磁盘连接到多个实例.如果需要在多个实例之间共享动态存储空间,请将实例连接到云存储创建网络文件服务器.

如果您有一个持久磁盘,其中包含要在多个实例之间共享的数据,请将其与任何读写实例分离,并以只读模式将其附加到一个或多个实例.

这意味着您不能让一个实例具有写访问权限而另一个实例具有只读访问权限.

如果要在它们之间共享数据,则需要使用Persistent Disk以外的其他内容.以下是一些可能的解决方案

您可以使用以下任何托管/托管服务:

或者,您可以运行自己的:

  • 数据库(无论是SQL还是NoSQL)
  • 分布式文件系统,如Ceph,GlusterFS,OrangeFS,ZFS等.
  • 文件服务器,如NFSSAMBA
  • 单个VM作为数据存储节点,用于sshfs从其他想要访问该数据的VM创建FUSE安装

  • @flaubert因为磁盘必须以只读方式挂载到所有实例,一个可能的用例是在读写模式下将其挂载一次到单个实例,将其分离,然后以只读模式将其挂载到多个实例.如果这不适用于您的用例,请考虑从单个实例创建文件共享到其他实例,例如,使用NFS或SAMBA(请参阅链接的更新答案). (3认同)

Mat*_*enz 6

GCP 具有用于“多写入”永久性磁盘的 Alpha 功能。它已经处于 alpha 阶段很长时间了,所以谁知道它是否会很快进入 beta 或 ga。这是文档的链接。https://cloud.google.com/sdk/gcloud/reference/beta/compute/disks/create#--multi-writer 编辑:2020-06-16。这已升级为测试版。