在GCE上创建VM实例的映像

时间:2016-08-06 13:30:11

标签: virtual-machine google-compute-engine google-cloud-platform

上下文

我正在Bitnami's LAPP stack deployed with Google Cloud Platform's cloud launcher开发一个网络应用程序,其中包括LAPP'意思是Linux(Debian),Apache,PHP,PostgreSQL。

它在Google Compute Engine中的VM实例上运行,其中Web应用程序的数据存储在本地PostgreSQL中。 (我选择了PostgreSQL,因为它可以维护后端视图,但我考虑转向MySQL以利用Google Cloud SQL更容易的备份。)

问题

我正在尝试将make an image的VM实例磁盘用于备份目的(如果我想创建具有不同API权限的新实例)。但是,映像的源磁盘无法连接到VM实例。

如何暂时从VM实例中分离磁盘?

我已经通过SSH关闭了实例并使用sudo poweroff命令。

1 个答案:

答案 0 :(得分:1)

实际上,即使实例已停止,也不支持分离VM实例的引导磁盘:

$ gcloud compute instances describe instance-1 --zone us-central1-f | grep 'status\|device'

  deviceName: instance-1
status: TERMINATED

$ gcloud compute instances detach-disk --device-name instance-1 --zone us-central1-f instance-1
ERROR: (gcloud.compute.instances.detach-disk) There was a problem modifying the resource:
 - Hot-remove of the root disk is not supported.

我认为你有两种选择。

第一个选项:您可以为磁盘创建snapshot而不是图像。该命令类似于

gcloud compute disks snapshot --zone us-central1-f instance-1 --snapshot-names my-snapshot

与图像不同,创建快照不需要分离源磁盘。它甚至不要求磁盘所连接的VM被终止,它可能仍然在运行,尽管你需要小心这一点,并且这种安全性可能特定于你正在使用的文件系统类型和应用程序。请参阅我上面链接的文档。

获得快照后,可以使用--source-snapshot gcloud compute disks create命令创建磁盘。然后使用--image命令的gcloud compute instances create标志将磁盘用作新VM的引导磁盘。

第二个选项:如果您的主要目标是使用不同的权限范围集重新创建VM实例,则还可以执行以下操作:

  • 设置删除VM实例时不自动删除磁盘:

    gcloud compute instances set-disk-auto-delete --zone us-central1-f --device-name instance-1 --no-auto-delete instance-1
    

    如果您没有安装了Google Cloud Shell的终端,您可能会发现此Google Cloud SDK非常有用。

  • 检查实例是否没有任何带有自动删除功能的磁盘:

    $ gcloud compute instances describe --zone us-central1-f instance-1 | grep autoDelete
    - autoDelete: false
    

    (该命令不得包含true字段的autoDelete个值

  • 删除VM实例。虽然我是一个命令行类型的人,但我在这里使用Cloud Console,只是再次仔细检查在删除之前在实例页面上取消选中“删除实例时删除引导磁盘”框。我想我是偏执狂。

  • 使用与原始版本相同的区域中的gcloud compute instances create创建新的VM实例,并传递--disk name=instance-1,boot=yes,auto-delete=yes之类的内容,以指示该工具将现有磁盘用作实例的引导磁盘而不是创建一个新的。

实际上,如果我的目标只是重新创建一个具有不同权限范围集的实例,我将使用第二条路径,但仍会先创建快照,这只是一个安全措施。此外,第二个选项假定您在同一区域中重新创建实例。如果要将新实例转移到其他区域,则第一个选项是可行的方法。另一方面,快照具有差异的良好属性,使其成为定期备份的理想选择。