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

时间:2014-11-13 14:17:41

标签: google-compute-engine

来自Google的文档:

  

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

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

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

我的猜测(我希望)读/写持久磁盘只能附加1个计算引擎但是同一个磁盘可以只读给别人共享 VM,是吗?

假设我有2个计算引擎虚拟机和2个永久磁盘, 这种流动是可能的吗?

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

2 个答案:

答案 0 :(得分:36)

不,这是不可能的,因为撰写本文时documentation that you cited表示(自更新后):

  

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

此后,文件已经重新安排;新文档位于different URL,但内容相同:

  

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

     

如果将永久磁盘附加到多个实例,则所有这些实例都必须以只读模式附加永久磁盘。在读写模式下,无法将永久磁盘连接到多个实例。如果您需要在多个实例之间共享动态存储空间,请将您的实例连接到Cloud Storagecreate a network file server

     

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

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

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

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

或者,您可以运行自己的

  • 数据库(无论是SQL还是NoSQL)
  • 分布式文件系统,例如CephGlusterFSOrangeFSZFS等。
  • 文件服务器,例如NFSSAMBA
  • 将单个VM作为数据存储节点,并使用sshfs从其他想要访问该数据的VM创建FUSE挂载

答案 1 :(得分:1)

GCP具有用于“多写”永久性磁盘的alpha功能。它在Alpha中已经存在了很长时间,所以谁知道它很快就会成为Beta或ga。这是文档的链接。 https://cloud.google.com/sdk/gcloud/reference/alpha/compute/disks/create#--multi-writer