Google compute engine 在Google计算引擎虚拟机之间共享永久磁盘

Google compute engine 在Google计算引擎虚拟机之间共享永久磁盘,google-compute-engine,Google Compute Engine,从谷歌的文档中: 可以将永久磁盘连接到多个实例。但是,如果将永久磁盘连接到多个实例,则所有实例都必须以只读模式连接永久磁盘。在读写模式下,无法将永久磁盘连接到多个实例 如果您以读写模式连接持久磁盘,然后尝试将该磁盘连接到后续实例,则Google Compute Engine将返回一个错误 所以,我需要一个共享持久磁盘作为我所有计算引擎的前端,好的,你怎么能在这个共享磁盘上写呢 我的猜测(我希望)是读/写持久磁盘只能与一个计算引擎连接,但同一磁盘可以以只读方式共享给其他虚拟机,对吗 假设我有2个计

从谷歌的文档中:

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

如果您以读写模式连接持久磁盘,然后尝试将该磁盘连接到后续实例,则Google Compute Engine将返回一个错误

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

我的猜测(我希望)是读/写持久磁盘只能与一个计算引擎连接,但同一磁盘可以以只读方式共享给其他虚拟机,对吗

假设我有2个计算引擎VM和2个持久磁盘, 这种流动是可能的吗

  • 计算1读/写磁盘1和只读磁盘2
  • 计算2读/写磁盘2和只读磁盘1
更新:从2020年6月16日起提供 根据Matthew Lenz的说法,的功能是可用的,但它仍然处于alpha状态(尽管它被记录为在beta版中),并且需要针对每个项目进行特殊的启用

注意:注意功能仍然是alpha,即使它被标记为beta。如果您希望尽早访问此功能,您可以通过云控制台提交反馈,请求将其用于您的项目,但不能保证启用此功能


假设您的项目具有使用此功能的权限(或该功能成为公共访问),请注意,它附带了一些警告:

--多个写入程序

在多写入器模式下创建磁盘,以便可以通过读写权限连接到多个VM。只能与分区SSD永久磁盘一起使用。多写入器模式下的磁盘不支持调整大小和快照操作

您可以通过以下方式使用:

$ gcloud beta compute disks create DISK_NAME --multi-writer [...]
请注意以下注意事项:

  • 仅分区SSD永久磁盘
  • 无需调整磁盘大小
  • 没有快照
如果您不能接受这些折衷方案,请参阅原始答案(如下),其中列出了一长串建议在多个GCE VM之间共享数据的存储备选方案


原始答案(2020-06-16之前有效) 不,这是不可能的,正如在撰写本文时所说(自更新后):

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

自那时以来,文件已重新整理;新文档位于同一位置,但内容相同:

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

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

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

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

如果您想在它们之间共享数据,您需要使用持久磁盘以外的东西。下面是一些可能的解决方案

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

  • -可能最接近您想要的,因为它提供了NFSv3文件系统
    • 你也可以把它作为一个;注意
  • ,您可以通过GCS API(JSON或XML)使用,也可以将其作为块设备装载
或者,您可以运行自己的

  • 自我管理或第三方管理的解决方案,包括NetApp和Panzura
  • 自我管理(有关完全管理的信息,请参阅上一节中的链接)
  • 数据库(无论是SQL还是NoSQL)
  • 分布式文件系统,如、等
  • 文件服务器,如或
  • 将单个VM作为数据存储节点,并用于从希望访问该数据的其他VM创建保险丝装载

GCP具有用于“多写”永久磁盘的alpha功能。它在alpha中已经有很长时间了,所以谁知道它是否会很快进入beta或ga。这里是文档的链接。
编辑:2020-06-16。这已经升级为beta版。

谢谢Misha,这对我来说似乎非常令人惊讶,所以如果我想共享一个简单的磁盘,上面有我所有的图片,我不能这样做对吗?我不想使用云存储,因为我的项目需要很多照片storage@flaubert由于磁盘必须以只读方式装载到所有实例,因此一种可能的使用情况是以读写模式将其装载到单个实例上一次,将其分离,然后以只读模式将其装载到多个实例上。如果这对您的用例无效,请考虑将文件共享从一个实例创建到其他实例,例如使用NFS或SAMBA(参见链接的更新答案)。因此,您可以(a)以读/写模式连接到单个VM,(b)向其写入数据,(c)将其从该VM分离,(d)以只读模式连接到N个VM。这有利于共享只读数据;对于共享读写数据,您需要使用分布式文件系统或数据库,如答案中所列;原始磁盘不是好的sha