[英]Share a persistent disk between Google Compute Engine VMs
来自谷歌的文档:
可以将一个永久性磁盘附加到多个实例。 但是,如果您将一个永久性磁盘附加到多个实例,则所有实例都必须以只读模式附加永久性磁盘。 无法以读写模式将永久性磁盘附加到多个实例。
如果您以读写模式附加永久性磁盘,然后尝试将该磁盘附加到后续实例,Google Compute Engine 将返回错误。
所以,我需要有一个共享持久磁盘作为我所有计算引擎的前端,很好,你怎么能在这个共享磁盘上写?
我的猜测(我希望)是一个读/写持久磁盘只能连接 1 个计算引擎,但同一个磁盘可以只读共享给其他VM,是吗?
假设我有 2 个 Compute Engine 虚拟机和 2 个永久性磁盘,这个流程是否可行?
根据 Matthew Lenz 的另一个答案, 创建多写入器永久性磁盘的功能可用,但它仍处于 alpha 状态(即使它被记录为处于 beta 轨道中)并且需要特殊的每个项目启用。
注意: 此 GitHub 问题指出该功能仍处于 alpha 阶段,即使它被标记为 beta。 如果您想抢先体验此功能,您可以通过 Cloud Console 提交反馈以请求为您的项目提供反馈,但不保证会启用该功能。
假设您的项目有权使用此功能(或该功能成为公共访问权限),请注意它带有一些警告:
--multi-writer
在多写入器模式下创建磁盘,以便它可以通过读写访问连接到多个 VM。 只能与地区性 SSD 永久性磁盘一起使用。 多写入模式的磁盘不支持调整大小和快照操作。
您可以通过以下方式使用它:
$ gcloud beta compute disks create DISK_NAME --multi-writer [...]
注意注意事项:
如果您不能接受这些权衡,请参阅原始答案(如下),其中有一长串推荐的存储替代方案,用于在多个 GCE 虚拟机之间共享数据。
不,这是不可能的,正如您在撰写本文时引用的文档所说(自更新后):
但是,如果您将一个永久性磁盘附加到多个实例,则所有实例都必须以只读模式附加永久性磁盘。
从那时起,文档已重新整理; 新文档位于不同的 URL但具有相同的内容:
您可以在只读模式下将非根永久性磁盘附加到多个虚拟机实例,这允许您在多个实例之间共享静态数据。 从一个永久性磁盘在多个实例之间共享静态数据比将数据复制到单个实例的唯一磁盘更便宜。
如果您将一个永久性磁盘附加到多个实例,则所有这些实例都必须以只读模式附加永久性磁盘。 无法以读写模式将永久性磁盘附加到多个实例。 如果您需要在多个实例之间共享动态存储空间,请将您的实例连接到Cloud Storage或创建网络文件服务器。
如果您有一个包含要在多个实例之间共享数据的永久性磁盘,请将其与任何读写实例分离,并以只读模式将其附加到一个或多个实例。
这意味着您不能让一个实例具有写访问权限,而另一个实例具有只读访问权限。
如果要在它们之间共享数据,则需要使用 Persistent Disk 以外的其他东西。 下面是一些可能的解决方案。
您可以使用以下任何托管/托管服务:
或者,您可以运行自己的:
GCP 具有用于“多写入”永久性磁盘的 Alpha 功能。 它已经处于 alpha 阶段很长时间了,所以谁知道它是否会很快进入 beta 或 ga。 这是文档的链接。 https://cloud.google.com/sdk/gcloud/reference/beta/compute/disks/create#--multi-writer编辑:2020-06-16。 这已升级为测试版。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.