本文档介绍了磁盘克隆的工作原理以及如何创建磁盘克隆。通过磁盘克隆,您可以立即使用现有磁盘的副本。如果您要创建可立即挂接到虚拟机的现有磁盘的相同副本,请创建磁盘克隆,具体如下:
- 通过复制生产数据来创建预演环境,以便在不干扰生产环境的情况下进行调试
- 创建副本以进行数据库备份验证
- 将非启动磁盘数据移动到新项目
- 在扩容虚拟机时复制磁盘
为了防止灾难恢复,请使用标准快照备份磁盘,而不是使用磁盘克隆。如需定期捕获磁盘内容而不创建新磁盘,请使用即时快照,因为它们比克隆的存储效率更高。如需了解其他磁盘保护选项,请参阅数据保护选项。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
- Persistent Disk:所有类型的 Persistent Disk
- Google Cloud Hyperdisk:
- 平衡 Hyperdisk
- Hyperdisk Balanced 高可用性
- Hyperdisk Extreme
- Hyperdisk Throughput
- 克隆的磁盘类型必须与来源磁盘的相同。
- 您无法在其他可用区中创建现有可用区级磁盘的可用区级磁盘克隆。
- 克隆的大小必须至少为来源磁盘的大小。如果您使用 Google Cloud 控制台创建克隆,则无法指定磁盘大小,克隆的大小会与来源磁盘的大小相同。
- 如果您使用 CSEK(客户提供的加密密钥)或 CMEK(客户管理的加密密钥)对来源磁盘进行加密,则必须使用同一密钥对克隆进行加密。如需了解详情,请参阅创建加密来源磁盘的克隆。
- 您无法在创建来源磁盘的克隆时删除来源磁盘。
- 在创建克隆时,来源磁盘挂接到的计算实例将无法启动。
- 如果来源磁盘及其挂接到的虚拟机已标记为删除,则您无法在创建克隆时删除虚拟机。
- 您每 30 秒最多可以创建给定来源磁盘或其克隆的一个克隆。
- 您最多可以为给定来源磁盘或其克隆创建 1000 个同时磁盘克隆。如果超出此限制,则系统会返回
internalError
。但是,如果您创建磁盘克隆并在稍后将其删除,则所删除的磁盘克隆不会计入此限制。 - 克隆磁盘后,该磁盘或其克隆的任何后续克隆都会计入原始来源磁盘的 1,000 个同时磁盘克隆的限制,并计入每 30 秒最多创建一个克隆的限制。
- 如果您通过克隆可用区级磁盘来创建区域级磁盘,则每 15 分钟最多可以克隆 1 TiB 容量,且突发请求限制为 257 TiB。
- 您无法通过区域级磁盘创建可用区级磁盘克隆。
- 如需通过可用区级来源磁盘创建区域级磁盘克隆,该区域级磁盘克隆的副本可用区必须与来源磁盘的可用区匹配。
- 创建后,区域级磁盘克隆平均在 3 分钟内可用。但是,磁盘可能需要几十分钟才能完全复制,并达到恢复点目标 (RPO) 接近零的状态。
- 如果您通过映像创建了可用区级磁盘,则无法使用该可用区级磁盘创建区域级磁盘克隆。
您无法通过克隆可用区级磁盘来创建 Hyperdisk Balanced 高可用性磁盘。如需通过现有可用区级磁盘创建 Hyperdisk Balanced 高可用性磁盘,请完成将可用区级磁盘更改为区域级 Hyperdisk Balanced 高可用性磁盘中的步骤。
您无法克隆 Hyperdisk ML 卷。
在 Google Cloud 控制台中,前往磁盘页面。
在磁盘列表中,找到到要克隆的磁盘。
在操作列中,点击
菜单按钮,然后选择克隆磁盘。在显示的克隆磁盘面板中,执行以下操作:
- 在名称字段中,指定克隆的磁盘的名称。
- 在位置字段中,验证是否已选中单个可用区。
- 在属性下,查看克隆的磁盘的其他详细信息。
- 如需完成克隆的磁盘的创建,请点击创建。
TARGET_DISK_NAME
:新磁盘的名称。PROJECT_ID
:要在其中克隆磁盘的项目的 ID。ZONE
:来源磁盘和新磁盘的可用区。SOURCE_DISK_NAME
:来源磁盘的名称。PROJECT_ID
:要在其中克隆磁盘的项目的 ID。ZONE
:来源磁盘和新磁盘的可用区。TARGET_DISK_NAME
:新磁盘的名称。SOURCE_DISK_NAME
:来源磁盘的名称在 Google Cloud 控制台中,前往磁盘页面。
在磁盘列表中,找到要克隆的可用区级 Persistent Disk 卷。
在操作列中,点击
菜单按钮,然后选择克隆磁盘。在显示的克隆磁盘面板中,执行以下操作:
- 在名称字段中,指定克隆的磁盘的名称。
- 在位置字段中,选择区域级,然后为新的区域级克隆磁盘选择次要副本可用区。
- 在属性下,查看克隆的磁盘的其他详细信息。
- 如需完成克隆的磁盘的创建,请点击创建。
TARGET_DISK_NAME
:新的区域级磁盘克隆的名称。CLONED_REGION
:来源磁盘和克隆磁盘的区域。SOURCE_DISK_NAME
:要克隆的可用区级磁盘的名称SOURCE_DISK_ZONE
:来源磁盘的可用区。这也是区域级磁盘克隆的第一个副本可用区。REPLICA_ZONE_2
:新的区域级磁盘克隆的第二个副本可用区。PROJECT_ID
:要在其中克隆磁盘的项目的 ID。PROJECT_ID
:要在其中克隆磁盘的项目的 ID。TARGET_DISK_NAME
:新的区域级磁盘克隆的名称。CLONED_REGION
:来源磁盘和克隆磁盘的区域。SOURCE_DISK_NAME
:要克隆的可用区级磁盘的名称SOURCE_DISK_ZONE
:来源磁盘的可用区。这也是区域级磁盘克隆的第一个副本可用区。REPLICA_ZONE_2
:新的区域级磁盘克隆的第二个副本可用区。在 Google Cloud 控制台中,前往磁盘页面。
在可用区级永久性磁盘列表中,找到要克隆的磁盘。
在操作列中,点击
菜单按钮,然后选择克隆磁盘。在显示的克隆磁盘面板中,执行以下操作:
- 在名称字段中,指定克隆的磁盘的名称。
- 在解密和加密字段中,提供来源磁盘加密密钥。
- 在属性下,查看克隆的磁盘的其他详细信息。
- 如需完成克隆的磁盘的创建,请点击创建。
TARGET_DISK_NAME
:新磁盘的名称。PROJECT_ID
:要在其中克隆磁盘的项目的 ID。ZONE
:来源磁盘和新磁盘的可用区。SOURCE_DISK_NAME
:来源磁盘的名称PROJECT_ID
:要在其中克隆磁盘的项目的 ID。ZONE
:来源磁盘和新磁盘的可用区。TARGET_DISK_NAME
:新磁盘的名称。SOURCE_DISK_NAME
:来源磁盘的名称- 了解如何定期使用标准快照备份磁盘,防止意外丢失数据。
- 了解如何使用即时快照就地备份磁盘。
- 了解如何使用区域级永久性磁盘实现两个可用区之间的同步复制。
- 了解异步复制。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。
Go
如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭证。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
硬盘克隆的工作原理
克隆磁盘时,您会新建一个磁盘,其中包含来源磁盘上的所有数据。即使现有磁盘已挂接到虚拟机实例,您也可以创建磁盘克隆。
克隆的磁盘类型必须与来源磁盘的类型相同。但是,您可以修改克隆的属性,例如磁盘大小。您还可以删除来源磁盘,而不会造成删除克隆的任何风险。
支持的磁盘类型
您只能为以下磁盘类型创建磁盘克隆:
限制
根据磁盘类型,磁盘克隆具有以下限制:
一般限制
以下限制适用于所有磁盘类型的克隆:
对 Persistent Disk 克隆的限制
Persistent Disk 的磁盘克隆存在以下限制:
对 Google Cloud Hyperdisk 克隆的限制
错误消息
如果超出克隆频率限制,请求会失败,并显示以下错误:
RATE LIMIT: ERROR: (gcloud.compute.disks.create) Could not fetch resource: - Operation rate exceeded for resource RESOURCE. Too frequent operations from the source resource.
创建磁盘克隆
本部分介绍如何复制现有磁盘并创建磁盘克隆。
如需了解详细步骤(具体取决于磁盘克隆的创建类型),请参阅本文档中的以下部分之一:
创建可用区级磁盘克隆
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST,为与来源磁盘位于同一可用区中的现有磁盘创建可用区级磁盘克隆。
控制台
gcloud
如需克隆可用区级来源磁盘并创建新的可用区级磁盘,请运行
disks create
命令并指定--source-disk
标志:gcloud compute disks create TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME
替换以下内容:
Terraform
如需创建磁盘克隆,请使用
google_compute_disk
资源。如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
Go
Go
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
Java
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
Python
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
如需克隆可用区级来源磁盘并创建新的可用区级磁盘,请向
compute.disks.insert
方法发出POST
请求。在请求正文中,指定name
和sourceDisk
参数。 磁盘克隆会从来源磁盘继承所有省略的属性。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" }
替换以下内容:
通过可用区磁盘创建区域磁盘克隆
您可以通过克隆现有的可用区级 Persistent Disk 卷来创建新的区域级 Persistent Disk 磁盘。如需将可用区级磁盘迁移到区域级磁盘,Google 建议使用此选项,而不是创建可用区级磁盘的快照并将快照恢复到新的区域级磁盘。
控制台
gcloud
如需通过可用区磁级盘创建区域级磁盘克隆,请运行
gcloud compute disks create
命令并指定--region
和--replica-zones
参数。gcloud compute disks create TARGET_DISK_NAME \ --description="zonal to regional cloned disk" \ --region=CLONED_REGION \ --source-disk=SOURCE_DISK_NAME \ --source-disk-zone=SOURCE_DISK_ZONE \ --replica-zones=SOURCE_DISK_ZONE,REPLICA_ZONE_2 \ --project=PROJECT_ID
替换以下内容:
Terraform
如需从可用区磁盘创建区域磁盘克隆,您可以选择创建可用区磁盘的快照,然后克隆快照。为此,请使用以下资源:
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
Go
Go
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
Java
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
Python
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
如需通过可用区级磁盘创建区域级磁盘克隆,请向
compute.disks.insert
方法发出POST
请求并指定sourceDisk
和replicaZone
参数。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/CLONED_REGION/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME" "replicaZone": "SOURCE_DISK_ZONE,REPLICA_ZONE_2" }
替换以下内容:
创建加密来源磁盘的磁盘克隆
您可以使用客户提供的加密密钥 (CSEK) 或客户管理的加密密钥来加密磁盘。
为 CSEK 加密的磁盘创建磁盘克隆
如果您使用 CSEK 来加密来源磁盘,则还必须使用同一密钥对克隆进行加密。
控制台
gcloud
如需为 CSEK 加密的来源磁盘创建磁盘克隆,请运行
gcloud compute disks create
命令,并使用--csek-key-file
标志提供来源磁盘加密密钥。如果您使用的是 RSA 封装密钥,请使用gcloud beta compute disks create
命令。gcloud compute disks create TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \ --csek-key-file example-key-file.json
替换以下内容:
Go
Go
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
Java
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
Python
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
如需为 CSEK 加密的来源磁盘创建磁盘克隆,请向
compute.disks.insert
方法发出POST
请求,并使用diskEncryptionKey
属性提供来源磁盘加密密钥。如果您使用的是 RSA 封装密钥,请使用该方法的beta
版本。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, }
替换以下内容:
为 CMEK 加密的磁盘创建磁盘克隆
如果您使用 CMEK 加密来源磁盘,则还必须使用同一密钥对克隆进行加密。
控制台
Compute Engine 会使用来源磁盘加密密钥自动对克隆进行加密。
gcloud
如需为 CMEK 加密的来源磁盘创建磁盘克隆,请运行
gcloud compute disks create
命令,并使用--kms-key
标志提供来源磁盘加密密钥。如果您使用的是 RSA 封装密钥,请使用gcloud beta compute disks create
命令。gcloud compute disks create TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
替换以下内容:
Go
Go
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
Java
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
Python
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
REST
如需为 CMEK 加密的来源磁盘创建磁盘克隆,请向
compute.disks.insert
方法发出POST
请求,并使用kmsKeyName
属性提供来源磁盘加密密钥。如果您使用的是 RSA 封装密钥,请使用该方法的beta
版本。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, }
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-06-23。
-