导入虚拟磁盘

如果您的本地环境中有包含您所需软件和配置的虚拟磁盘(有时称之为金磁盘或金映像),则可将这些虚拟磁盘导入 Compute Engine 并利用生成的映像创建新的虚拟机,从而节约时间。导入工具支持大多数虚拟磁盘文件格式,包括 VMDK 和 VHD。

如果您将磁盘从 Compute Engine 导出,则无需重新导入。您可改为从磁盘创建更多映像。

如果您需要使用一个自动化系统来迁移多个虚拟机,请参阅“将虚拟机迁移到 Compute Engine 概览”。

准备工作

支持的操作系统

为了能在 Compute Engine 上启动,您的虚拟磁盘必须运行以下任一操作系统。

  • Linux 操作系统:
    • CentOS 6、CentOS 7
    • Debian 8、Debian 9
    • Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 7
    • Ubuntu 14.04 LTS、Ubuntu 16.04 LTS
  • Windows Server 操作系统:
    • Windows Server 2008 R2、Windows Server 2012 R2、Windows Server 2012 R2 Core、Windows Server 2016、Windows Server 2016 Core

限制

此功能存在以下限制:

  • Linux 虚拟磁盘必须使用 grub 作为引导加载程序。
  • Windows 或 Linux 均不支持 UEFI 引导加载程序。
  • Linux 虚拟磁盘必须符合与自定义操作系统映像相同的要求,包括对 Virtio-SCSI 存储控制器设备的支持。
  • 当安装在 Windows 虚拟磁盘上时,应用白名单软件(例如 Carbon Black 的 Cb Protection)可能会导致导入过程失败。在导入之前,您可能需要卸载此类软件。
  • 如果您要导入一块运行 RHEL 的虚拟磁盘,则只有当导入前在虚拟磁盘上安装了 python-boto 软件包时,系统才支持自带许可 (BYOL)。
  • 运行 Windows Server 操作系统的虚拟磁盘不支持自带许可功能。

导入虚拟磁盘

检查兼容性

在您尝试导入虚拟机磁盘之前,请在虚拟机中下载并运行我们的预检工具。预检工具用于验证是否存在不兼容的情况。

导入可启动的虚拟磁盘

使用 gcloud compute images import 命令创建一个可启动的 Compute Engine 映像。尽管 Compute Engine 可启动大多数启动磁盘映像,但 import 命令可确保磁盘具备必要的驱动程序和最新的访客环境软件包,启动实例和通过 SSH 或 RDP 连接到实例时需要使用这些软件包。

您可以从 Cloud Storage 存储分区或本地工作站导入虚拟磁盘文件。如果从工作站导入虚拟磁盘文件,导入工具会将文件自动上传到 Cloud Storage 存储分区。如果您愿意,可以在开始导入过程前自行将虚拟磁盘文件上传到 Cloud Storage,但是您必须将该文件上传到用于导入过程的同一项目的存储分区中。

gcloud compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --os [OS]

其中:

  • [IMAGE_NAME] 是您的目标映像的名称。
  • [SOURCE_FILE] 是虚拟磁盘文件。该文件可以是本地文件或 Cloud Storage 中存储的文件。如果您的虚拟磁盘是本地文件,您则可以使用绝对路径或相对路径。如果您的虚拟磁盘文件已存储在 Cloud Storage 中,则该文件必须存储在用于导入过程的同一项目的存储分区中,且您必须指定 gs://[BUCKET_NAME]/[OBJECT_NAME] 格式文件的完整路径。
  • [OS] 是 SOURCE_FILE 的操作系统。它必须属于以下任意一种:centos-6centos-7debian-8debian-9rhel-6rhel-7rhel-6-byolrhel-7-byolubuntu-1404ubuntu-1604windows-2008r2windows-2012r2windows-2016

如果指定本地文件,则上传操作根据虚拟磁盘的大小和网络连接的速度可能需要很长时间。导入操作可能根据磁盘大小需要运行几十分钟。

以下示例导入了储存在 gs://your_gcs_bucket 上的名为 your_server.vmdkdebian-9 虚拟磁盘。

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/your_server.vmdk \
    --os debian-9

导入无法启动的虚拟磁盘

如果您的虚拟磁盘上没有安装可启动的操作系统,您仍然可以使用 --data-disk 标志代替 --os 标志来导入该磁盘。这样就省却了安装驱动程序和访客环境软件包以让映像能够在 Compute Engine 上启动的步骤。

gcloud compute images import [IMAGE_NAME] \
        --source-file [SOURCE_FILE] \
        --data-disk

其中:

  • [IMAGE_NAME] 是您的目标映像的名称。
  • [SOURCE_FILE] 是虚拟磁盘文件。该文件可以是本地文件或 Cloud Storage 中存储的文件。如果您的虚拟磁盘是本地文件,您则可以使用绝对路径或相对路径。如果您的虚拟磁盘文件已存储在 Cloud Storage 中,则该文件必须存储在用于导入过程的同一项目的存储分区中,且您必须指定 gs://[BUCKET_NAME]/[OBJECT_NAME] 格式文件的完整路径。

使映像可启动

如果您的 Compute Engine 自定义映像上有可启动的操作系统,但没有必需的 Compute Engine 驱动程序或访客环境软件包,则可以使用映像导入工具使该映像能够在 Compute Engine 上启动。

请使用 --source-image 标志来指定要设为可启动的自定义映像,而不是使用 --source-file 标志(用于指定要导入的新磁盘)。

gcloud compute images import [IMAGE_NAME] \
        --source-image [SOURCE_IMAGE] \
        --os [OS]

其中,

  • [IMAGE_NAME] 是您的目标映像的名称。
  • [SOURCE_IMAGE] 是您的来源映像的名称。
  • [OS] 是 SOURCE_IMAGE 的操作系统。它必须是下列其中一种:centos-6centos-7debian-8debian-9rhel-6rhel-7rhel-6-byolrhel-7-byolubuntu-1404ubuntu-1604windows-2008r2windows-2012r2windows-2016

以下示例将一个名为 my-image 的 Compute Engine 映像转换为名为 my-bootable-image 的可启动映像。在此示例中,映像上安装的操作系统是 Ubuntu 16.04。

gcloud compute images import my-bootable-image --source-image=my-image --os=ubuntu-1604

支持自带许可 (BYOL)

默认情况下,使用 Windows Server 和 Red Hat Enterprise Linux (RHEL) 操作系统的虚拟磁盘将导入并配置为高级 OS 映像,这可能产生额外费用。

如果您更喜欢使用自己的 RHEL 软件订阅,可以通过为 [OS] 字段指定以下某个 BYOL 值,将磁盘作为 BYOL 许可的映像导入。

  • rhel-6-byol
  • rhel-7-byol

Windows Server 虚拟磁盘目前不支持 BYOL。

资源清理

存储在 Cloud Storage 上的文件和 Compute Engine 中的映像会产生费用。导入工具会将虚拟磁盘文件导入 Cloud Storage 并创建 Compute Engine 自定义映像。

在确认映像已正确导入并且作为 Compute Engine 实例正确启动后,您就可以从 Cloud Storage 中删除虚拟磁盘文件。工具在将文件上传到 Cloud Storage 时会打印出该文件的 URI。此 URI 的格式如下:gs://<bucket name>/tmpimage/<image name>

如果您使用 --data-disk 标志导入了一个映像,然后通过 --source-image 标志再次运行 import 工具,以使该映像成为一个启动映像,则第一个映像仍将存在。如果您不需要该映像,请考虑将其删除。如果您为 [IMAGE_NAME][SOURCE_IMAGE] 参数指定相同的映像名称,则映像会被自动覆盖,无需其他清理。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档