如需访问即时快照中捕获的数据,您必须通过即时快照恢复或创建新磁盘。
本页面介绍了如何通过即时快照创建磁盘。创建磁盘后,您可以通过将其挂接到虚拟机 (VM) 来使用磁盘。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) -
连接到可以作为服务账号运行的虚拟机:Service Account User (v1) (
roles/iam.serviceAccountUser
) -
创建磁盘:
-
针对新磁盘的目标项目的
compute.disks.create
权限 -
针对来源即时快照的
compute.instantSnapshots.useReadOnly
权限
-
针对新磁盘的目标项目的
通过即时快照创建磁盘时,新磁盘始终与快照的来源磁盘具有相同的类型、存储位置和加密方式。
您无法直接通过即时快照创建虚拟机。 您必须通过即时快照创建磁盘,然后使用新磁盘创建虚拟机。
如果即时快照的来源磁盘使用客户管理的加密密钥或客户提供的加密密钥,则您必须在通过即时快照创建新磁盘时提供相同的加密密钥。
请参考下面的示例。假设您有一个使用客户提供的加密密钥 (CSEK)
KEY-1
加密的磁盘DISK-1
。您还有一个通过DISK-1
创建的即时快照IS-1
。如需通过IS-1
创建新磁盘,您必须在创建新磁盘时提供相同的密钥KEY-1
。如果磁盘使用客户管理的加密密钥 (CMEK) 进行加密,则只有在使用 REST 或 gcloud CLI 创建磁盘时,您才需要提供密钥。如果您使用 Google Cloud 控制台,则无需指定加密密钥。
- Google 拥有的密钥和 Google 管理的密钥。这是默认设置。
- 客户管理的加密密钥 (CMEK)
- 客户提供的加密密钥 (CSEK)。
找到您要恢复的即时快照:
在 Google Cloud 控制台中,转到快照页面。
点击即时快照标签页。
在名称列中,点击您要恢复的即时快照的名称。
点击创建磁盘。
在名称字段中,输入磁盘的新名称。
可选:在说明字段中,输入其他详细信息。
确认磁盘来源类型为即时快照。
在来源即时快照列表中,选择相应的即时快照。
可选:为磁盘配置其他自定义设置。
- 输入大小:在大小字段中,指定磁盘大小(以 GB 为单位)。该大小必须等于或大于快照的来源磁盘大小。
- 安排备份:如果您希望 Compute Engine 按时间表创建新磁盘的标准快照,请选中启用快照时间表复选框,然后选择一个快照时间表。否则,请清除该复选框。
可选:如需整理项目,请添加一个或多个标签。
如需创建磁盘,请点击创建。
DISK_NAME
:新磁盘的名称。ZONE
:新磁盘所在的可用区,例如europe-west1-a
。SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。DISK_NAME
:新磁盘的名称。REGION
:区域级磁盘所在的区域,例如europe-west1
SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。ZONE1,ZONE2
:两个磁盘副本所在区域内的可用区,例如europe-west1-b,europe-west1-c
。PROJECT
:要在其中创建新磁盘的项目。SOURCE_ZONE
:即时快照所在的可用区,例如us-central1-a
。系统会在此可用区中创建磁盘。NEW_DISK_NAME
:新磁盘的唯一名称。SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。PROJECT
:要在其中创建新磁盘的项目。SOURCE_REGION
:即时快照所在的区域。 系统会在此区域中创建磁盘。NEW_DISK_NAME
:新磁盘的唯一名称。SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。ZONE1,ZONE2
:两个磁盘副本所在区域内的可用区,例如europe-west1-b
、europe-west1-c
。- 在解密部分的加密密钥字段中输入加密密钥。
- 如果密钥使用 RSA 公钥封装,请选择已封装的密钥。
NEW_DISK_NAME
:新磁盘的名称。SOURCE_ZONE
:存储即时快照的可用区,例如europe-west1-a
。-
SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。 KMS_PROJECT_NAME
:包含密钥的项目。KEYRING_LOCATION
:密钥所属的密钥环的位置。如果密钥环是全球密钥,请指定global
。否则,请指定密钥环所在区域的名称,例如us-west1
。KEY_RING_NAME
:包含密钥的密钥环的名称,例如key-ring-1
。KEY_NAME
:用于加密磁盘的密钥的名称。NEW_DISK_NAME
:新磁盘的名称。SOURCE_ZONE
:存储即时快照的可用区,例如europe-west1-a
。-
SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。 CSEK_JSON_FILE
:包含密钥的 JSON 文件的路径。请参阅 CSEK 文件格式示例。--region
:新磁盘所在的区域--replica-zones
:两个磁盘副本所在区域内的可用区。NEW_DISK_NAME
:新磁盘的唯一名称。PROJECT
:要在其中创建新磁盘的项目。SOURCE_ZONE
:即时快照所在的可用区,例如us-central1-a
。系统会在此可用区中创建磁盘。SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。KMS_PROJECT
:包含密钥的项目。LOCATION
:密钥所属的密钥环的位置。如果密钥环是全球密钥,请指定global
。否则,请指定密钥环所在区域的名称,例如us-west1
。KEY_RING
:包含密钥的密钥环的名称,例如key-ring-1
。KEY
:用于加密磁盘的密钥的名称。PROJECT
:要在其中创建新磁盘的项目。SOURCE_ZONE
:即时快照所在的可用区,例如us-central1-a
。系统会在此可用区中创建磁盘。NEW_DISK_NAME
:新磁盘的唯一名称。SOURCE_INSTANT_SNAPSHOT_NAME
:来源即时快照的名称。RAW_ENCRYPTION_KEY
:用于加密即时快照及其来源磁盘的密钥,例如SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
。向
disks.insert
方法发出POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/insert
在请求正文的
diskEncryptionKey.rsaEncryptedKey
属性中指定密钥:"diskEncryptionKey": { "rsaEncryptedKey": "RSA_ENCRYPTED_KEY" }
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色和权限
如需获得通过即时快照创建磁盘所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色可提供通过即时快照创建磁盘所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
通过即时快照创建磁盘需要以下权限:
限制
需要遵循以下限制:
通过即时快照创建磁盘
即时快照采用与其来源磁盘相同的加密方式进行加密。通过即时快照创建磁盘的步骤取决于即时快照来源磁盘的加密方式。
每个来源磁盘都使用以下方法之一进行加密:
如需了解特定磁盘的加密方式,请参阅查看有关磁盘加密的信息。
通过使用默认加密方式加密的即时快照创建磁盘
您可以使用 gcloud CLI、Google Cloud 控制台或 REST 通过即时快照创建磁盘。
控制台
gcloud
使用
gcloud compute disks create
命令。 您指定的参数取决于您是要创建可用区级磁盘还是区域级磁盘。创建可用区级磁盘
使用
--zone
标志指定可用区:gcloud compute disks create DISK_NAME --zone=ZONE \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME
替换以下内容:
创建区域级磁盘
使用
--region
指定区域,并使用--replica-zones
指定新磁盘的目标复制可用区。gcloud compute disks create DISK_NAME \ --region=REGION \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \ --replica-zones=ZONE1,ZONE2
替换以下内容:
REST
如需通过即时快照创建可用区级或区域级磁盘,请使用
disks.insert
方法。新磁盘的类型必须与即时快照的来源磁盘的类型相同。例如,您无法通过可用区级磁盘的快照创建区域级磁盘。创建可用区级磁盘
发出
POST
请求,并指定来源即时快照。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert { "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME" }
替换以下内容:
创建区域级磁盘
发出
POST
请求,并指定来源即时快照以及磁盘应复制到的可用区。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/region/SOURCE_REGION/disks/insert { "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/regions/SOURCE_REGION/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME", "replicaZones": [ "projects/PROJECT/zones/ZONE1", "projects/PROJECT/zones/ZONE2" ] }
替换以下内容:
API 请求响应
如果
POST
请求成功,则响应正文将是一个对象,您可以轮询该对象以获取磁盘的创建状态。如需了解详情,请参阅处理 API 响应。通过 CMEK 或 CSEK 加密的即时快照创建磁盘
控制台
如果即时快照使用 Google 默认加密或 CMEK 加密,则 Google Cloud 控制台会在您通过即时快照创建磁盘时自动提供加密密钥。否则,如果即时快照使用 CSEK 加密,您必须提供加密密钥才能创建磁盘。
按照由 Google 管理的加密部分中的步骤操作,并按照以下说明指定加密密钥:
gcloud
使用
gcloud compute disks create
命令。如果来源磁盘使用 CMEK 加密,请使用
--kms-key
参数提供密钥的名称。如果来源磁盘使用 CSEK 加密,请使用
--csek-key-file
参数指定来源磁盘的加密密钥。CMEK
如需通过 CMEK 加密的即时快照创建可用区级磁盘,请使用以下命令:
gcloud compute disks create NEW_DISK_NAME \ --zone=SOURCE_ZONE \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \ --kms-key=projects/KMS_PROJECT_NAME/locations/KEYRING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
替换以下内容:
CSEK
如需通过 CSEK 加密的即时快照创建可用区级磁盘,请使用以下命令:
gcloud compute disks create NEW_DISK_NAME \ --zone=SOURCE_ZONE \ --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \ --csek-key-file=PATH_TO_CSEK_JSON_FILE
替换以下内容:
如需创建区域级磁盘,请将上述示例中的
--zone
标志替换为以下标志:REST
如需通过 CMEK 或 CSEK 加密的即时快照创建可用区级或区域级磁盘,请使用 Google 管理的加密部分中列出的属性向
disks.insert
方法发出POST
请求。此外,请在
diskEncryptionKey
字段中提供来源磁盘的加密密钥。diskEncryptionKey
字段的属性取决于磁盘是使用 CMEK 加密还是 CSEK 加密。以下示例展示了如何为每种加密类型创建新的可用区级磁盘。
CMEK
在请求正文中,使用
diskEncryptionKey.kmsKeyName
属性指定密钥的名称:{ "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT/locations/LOCATION/keyRings/KEYRING_LOCATION/cryptoKeys/KEY_NAME" } }
替换以下内容:
CSEK
请求正文取决于用于加密即时快照的 CSEK 是否使用 RSA 加密。
如需使用原始(非 RSA 加密)密钥,请在请求正文的
diskEncryptionKey.rawKey
属性中指定密钥:POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert { "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME, "diskEncryptionKey": { "rawKey": "RAW_ENCRYPTION_KEY" } }
将以下变量替换为相应值:
如需使用 RSA 加密密钥,请按如下所示修改上述示例:
将
RSA_ENCRYPTED_KEY
替换为您的加密密钥。API 请求响应
如果
POST
请求成功,则响应正文将是一个对象,您可以轮询该对象以获取磁盘的创建状态。如需了解详情,请参阅处理 API 响应。如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-