【问题标题】:Create Image of VM Instance on GCE在 GCE 上创建 VM 实例的映像
【发布时间】:2016-12-12 18:55:03
【问题描述】:

上下文

我正在Bitnami's LAPP stack deployed with Google Cloud Platform's cloud launcher 上开发一个 Web 应用程序,其中“LAPP”表示 Linux (Debian)、Apache、PHP、PostgreSQL。

它在 Google Compute Engine 中的 VM 实例上运行,网络应用的数据存储在本地 PostgreSQL 中。 (我选择 PostgreSQL 是因为它可以维护后端视图,但我正在考虑切换到 MySQL 以利用 Google Cloud SQL 更轻松的备份。)

问题

我正在尝试make an image VM 实例的磁盘以进行备份(如果我想创建一个具有不同 API 权限的新实例)。但是,无法将映像的源磁盘附加到 VM 实例。

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

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

【问题讨论】:

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


    【解决方案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 命令的--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
      

      如果您没有安装了Google Cloud SDK 的终端,您可能会发现Google Cloud Shell 在此步骤中很有用。

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

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

      (该命令的autoDelete 字段不能有任何true 值)

    • 删除虚拟机实例。虽然我是一个命令行类型的人,但我会在这里使用 Cloud Console,只是在我执行删除之前再次仔细检查实例页面上的“删除实例时删除启动磁盘”框是否未选中。我觉得我是偏执狂。

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

    实际上,如果我的目标只是重新创建具有一组不同权限范围的实例,我会选择第二条路线,但仍会首先创建快照,这只是一种安全措施。此外,第二个选项假定您在同一区域中重新创建实例。如果您想将新实例带到不同的区域,第一个选项是要走的路。另一方面,快照具有差异化的良好特性,使其成为定期备份的理想选择。

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      相关资源
      最近更新 更多