Virtual machine 在GCE上创建VM实例的映像 上下文

Virtual machine 在GCE上创建VM实例的映像 上下文,virtual-machine,google-compute-engine,google-cloud-platform,Virtual Machine,Google Compute Engine,Google Cloud Platform,我正在上开发一个web应用程序,其中“LAPP”表示Linux(Debian)、Apache、PHP和PostgreSQL 它运行在Google计算引擎中的一个VM实例上,web应用程序的数据存储在本地PostgreSQL中。(我选择PostgreSQL是因为它可以维护后端视图,但我正在考虑切换到MySQL,以利用谷歌云SQL更简单的备份。) 问题: 我正在尝试备份VM实例的磁盘(如果我想创建一个具有不同API权限的新实例)。但是,映像的源磁盘无法连接到VM实例 如何临时将磁盘与VM实例分离?

我正在上开发一个web应用程序,其中“LAPP”表示Linux(Debian)、Apache、PHP和PostgreSQL

它运行在Google计算引擎中的一个VM实例上,web应用程序的数据存储在本地PostgreSQL中。(我选择PostgreSQL是因为它可以维护后端视图,但我正在考虑切换到MySQL,以利用谷歌云SQL更简单的备份。)

问题: 我正在尝试备份VM实例的磁盘(如果我想创建一个具有不同API权限的新实例)。但是,映像的源磁盘无法连接到VM实例

如何临时将磁盘与VM实例分离?


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

事实上,即使实例停止,也不支持分离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.
我想你有两个选择

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

gcloud compute disks snapshot --zone us-central1-f instance-1 --snapshot-names my-snapshot
与映像不同,创建快照不需要分离源磁盘。它甚至不要求终止磁盘所连接的虚拟机,它可能仍在运行,尽管您需要小心操作,其安全性可能取决于您使用的文件系统类型和应用程序。请参阅我上面链接的文档

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

第二个选项:如果您的主要目标是使用一组不同的权限范围重新创建VM实例,那么您也可以按如下操作

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

    gcloud compute instances set-disk-auto-delete --zone us-central1-f --device-name instance-1 --no-auto-delete instance-1
    
    在这一步中,您可能会发现,如果您没有安装了现成的终端,则此步骤非常有用

  • 检查实例是否没有任何启用自动删除的磁盘:

    $ gcloud compute instances describe --zone us-central1-f instance-1 | grep autoDelete
    - autoDelete: false
    
    (对于
    autoDelete
    字段,该命令不得有任何
    true
    值)

  • 删除VM实例。虽然我是一个命令行类型的家伙,但我会在这里使用云控制台,只是在我执行删除操作之前再次检查实例页面上的“删除实例时删除引导磁盘”框是否未选中。我想我是偏执狂

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

实际上,如果我的目标是用一组不同的权限范围重新创建一个实例,我会选择第二种方法,但仍然会首先创建一个快照,这只是一种安全措施。另外,第二个选项假定您在同一区域中重新创建实例。如果您想将新实例转移到另一个区域,第一个选项是方法。另一方面,快照具有很好的差异性,这使它们成为定期备份的好选择