在 Compute Engine 中,您可以使用快照备份磁盘数据。由于是增量快照,与创建完整的磁盘映像相比,您可获得更高的性能、更低的总存储费用。
应用一致性快照可捕获备份时应用数据的状态,所有应用事务已完成且所有待处理的写入都刷新到磁盘。 在 Windows 虚拟机上,使用卷影复制服务 (VSS) 创建应用一致性快照,而无需先停止实例或将磁盘与虚拟机分离。
准备工作
- 创建 Windows 实例。
- 查看创建快照的最佳做法。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
-
限制
Windows 上的磁盘快照存在以下限制:
- VSS 快照仅适用于映像版本为
v20160810
或更高的 Windows 实例。对于使用旧版映像的实例,请在不使用 VSS 的情况下创建快照。 - 挂接的磁盘必须使用 NTFS、exFAT 或 ReFS 文件系统。
- 只有在您运行 VSS 感知型应用(可进行协调以创建一致的数据备份)时,VSS 快照才有助于保留数据。
- 如果 VSS 快照操作在 300 秒内没有完成,则快照会失败并显示超时错误。
创建 Windows VSS 快照
您无需停止实例或将磁盘与虚拟机分离,即可创建卷影复制服务 (VSS) 快照。VSS 快照用于备份和恢复包含 VSS 感知型应用的系统。
VSS 快照的价格与常规永久性磁盘或 Hyperdisk 快照相同,并且仅根据快照的总大小收取费用。
创建快照
前往 Google Cloud 控制台中的创建快照页面。
转到“创建快照”页面- 输入快照名称。
-
选择快照类型。默认值为
STANDARD
快照,这最适合长期备份和灾难恢复。选择归档快照,实现更经济高效的数据保留。
- 可选:输入配置的说明。
- 在来源磁盘下,选择您想要创建其快照的现有磁盘。
在位置部分,选择快照存储位置。
系统会自动选择快照设置中定义的预定义或自定义默认位置。(可选)您可以通过执行以下操作来替换快照设置并将快照存储在自定义存储位置:
- 勾选启用应用一致性快照选项。
- 点击创建以创建快照。
如需创建 VSS 快照,请使用 gcloud compute snapshots create
命令并添加 --guest-flush
标志。
您可以在快照设置定义的存储位置政策中创建快照,也可以使用您选择的其他存储位置创建快照。如需了解详情,请参阅选择快照存储位置。
如需在快照设置中配置的预定义或自定义默认位置创建快照,请使用
gcloud compute snapshots create
命令。gcloud compute snapshots create
SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush-
或者,如需替换快照设置并在自定义存储位置创建快照,请添加
--storage-location
标志以指定快照的存储位置。gcloud compute snapshots create
SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION \ --guest-flush替换以下内容:
- SNAPSHOT_NAME:快照的名称。
- SOURCE_ZONE:来源磁盘的可用区。
- SOURCE_DISK_NAME:磁盘卷的名称,您将根据其创建快照。
- SNAPSHOT_TYPE:快照类型:STANDARD 或 ARCHIVE。如果未指定快照类型,系统会创建
STANDARD
快照。 -
STORAGE_LOCATION:可选:要存储快照的 Cloud Storage 多区域或 Cloud Storage 区域。请注意,您只能指定一个存储位置。
仅当您想要替换快照设置中配置的预定义或自定义默认存储位置时,才应使用
--storage-location
参数。
如需创建区域级永久性磁盘的 VSS 快照,请在前面的示例中将
--source-disk-zone=
替换为--source-disk-region=
,并指定区域级永久性磁盘所在的区域。Google Cloud CLI 将等到操作返回
READY
或FAILED
状态,或者等到操作达到超时时间上限并返回快照最新的已知详细信息。
创建快照时,为了指示您想要创建 VSS 快照,请在对 compute.snapshots.insert
方法发出的 POST
请求的请求正文中添加 guestFlush
属性。
您可以在快照设置定义的存储位置政策中创建快照,也可以使用您选择的其他存储位置创建快照。如需了解详情,请参阅选择快照存储位置。
-
如需在快照设置中配置的预定义或自定义默认位置创建快照,请向
snapshots.insert
方法发出POST
请求:POST https://compute.googleapis.com/compute/beta/projects/
DESTINATION_PROJECT_ID /global/snapshots { "name": "SNAPSHOT_NAME ", "sourceDisk": "projects/SOURCE_PROJECT_ID /zones/SOURCE_ZONE /disks/SOURCE_DISK_NAME ", "snapshotType": "SNAPSHOT_TYPE ", "guestFlush": true, } -
或者,如需替换快照设置并在自定义存储位置创建快照,请向
snapshots.insert
方法发出POST
请求,并在请求中添加storageLocations
属性:POST https://compute.googleapis.com/compute/beta/projects/
DESTINATION_PROJECT_ID /global/snapshots { "name": "SNAPSHOT_NAME ", "sourceDisk": "projects/SOURCE_PROJECT_ID /zones/SOURCE_ZONE /disks/SOURCE_DISK_NAME ", "snapshotType": "SNAPSHOT_TYPE ", "storageLocations": [ "STORAGE_LOCATION " ], "guestFlush": true, }
替换以下内容:
- DESTINATION_PROJECT_ID:您要在其中创建快照的项目的 ID。
- SNAPSHOT_NAME:快照的名称。
- SOURCE_PROJECT_ID:来源磁盘项目的 ID。
- SOURCE_ZONE:来源磁盘的可用区。
- SOURCE_DISK_NAME:磁盘的名称,您要根据其创建快照。
- SNAPSHOT_TYPE:快照类型:STANDARD 或 ARCHIVE。如果未指定快照类型,系统会创建
STANDARD
快照。 -
STORAGE_LOCATION:可选:要存储快照的 Cloud Storage 多区域或 Cloud Storage 区域。请注意,您只能指定一个存储位置。
仅当您想要替换快照设置中配置的预定义或自定义默认存储位置时,才应使用
storageLocations
参数。
如需创建区域级永久性磁盘的 VSS 快照,请在之前显示的 POST
请求中替换以下行:
"sourceDisk": "projects/SOURCE_PROJECT_ID /zones/SOURCE_ZONE /disks/SOURCE_DISK_NAME ",
"sourceDisk": "projects/SOURCE_PROJECT_ID /regions/SOURCE_REGION /disks/SOURCE_DISK_NAME ",
可选:将磁盘标记为可读写
当您创建 VSS 快照时,Windows Server 会将该快照中的卷标记为只读。从 VSS 快照创建新磁盘时,该磁盘也会设置为只读模式。
这可能会引起问题。例如,如果您通过现有启动磁盘的 VSS 快照创建包含新启动磁盘的虚拟机实例,则新启动磁盘上的只读标志将阻止虚拟机正常启动。
如需解决此问题,请按照以下步骤从通过 VSS 快照创建的任何新磁盘中移除只读标志:
确保磁盘已挂接到虚拟机:
- 如果通过 VSS 快照创建的磁盘是非启动数据磁盘,则可以将该磁盘挂接到任何新的或现有的虚拟机。
- 如果通过 VSS 快照创建的磁盘是启动磁盘,并且您希望使用它来启动虚拟机,则必须将磁盘暂时挂接到单独的现有虚拟机。完成以下步骤后,您可以从该虚拟机中分离磁盘并将其用于启动新的虚拟机实例。
打开 PowerShell 命令提示符并运行
diskpart
工具。PS C:\> diskpart
确定您想要装载的磁盘。
DISKPART> list disk
使用
select disk
命令选择磁盘。DISKPART> select disk
DISK_NUMBER 将
DISK_NUMBER
替换为您要装载的磁盘的编号。装载磁盘。
DISKPART> online disk
列出磁盘中的所有卷。
DISKPART> list volume
选择新的卷。
DISKPART> select volume
VOLUME_NUMBER 将
VOLUME_NUMBER
替换为要配置为读写的卷编号。清除只读标志。
DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
退出
diskpart
工具。DISKPART> exit
如果该磁盘是其他虚拟机的启动磁盘,请将启动磁盘文件与新磁盘签名同步。
PS C:\> bcdboot
DRIVE_LETTER Windows /sDRIVE_LETTER 将
DRIVE_LETTER
替换为要同步的卷的盘符。例如,F
表示F:\
。
在不使用 VSS 的情况下创建快照
在某些情况下,您可能需要在不使用 VSS 的情况下为挂接到 Windows 虚拟机的磁盘创建快照。
如需在不使用 VSS 的情况下在 Windows 虚拟机上创建磁盘快照,请执行以下操作:
为创建干净的快照准备系统
在创建磁盘快照之前,请确保您要截取的快照与你所需的磁盘状态一致。如果您截取了处于“不洁净”状态的磁盘的快照,则系统可能会强制执行磁盘检查并可能导致数据丢失。请考虑同步文件系统并卸载文件系统。
同步文件系统
如果无法卸载磁盘(例如在应用可能正向磁盘写入数据的情况下),您可以同步文件系统以清空磁盘缓冲区。要同步您的文件系统,请执行以下操作:
- 登录您的 Windows 虚拟机。
- 从 Microsoft 下载并安装同步工具。
- 使应用停止向磁盘写入数据。
- 打开一个提升权限的命令提示符窗口。
在命令行窗口中,运行以下命令:
PS C:\> sync
DRIVE_LETTER 将
DRIVE_LETTER
替换为要同步的卷的盘符。例如,F
表示F:\
。
卸载磁盘
登录您的 Windows 虚拟机。
打开 PowerShell 命令提示符并运行
diskpart
工具。PS C:\> diskpart
确定您想要卸载并截取快照的磁盘。
DISKPART> list disk
然后,使用您刚刚找到的磁盘编号选择磁盘。
DISKPART> select disk
DISK_NUMBER 将
DISK_NUMBER
替换为您要重新装载的磁盘的编号。卸载磁盘。
DISKPART> offline disk
创建快照
- 如果磁盘位于单个可用区(可用区永久性磁盘或 Hyperdisk),请按照创建可用区永久性磁盘卷的快照中的步骤操作。
- 或者,如果您的永久性磁盘位于多个可用区,请按照创建区域级永久性磁盘的快照中的步骤操作。
重新装载您的磁盘
登录您的 Windows 虚拟机。
打开 PowerShell 命令提示符并运行
diskpart
工具。PS C:\> diskpart
确定您想要装载的磁盘。
DISKPART> list disk
使用
select disk
命令选择磁盘。DISKPART> select disk
DISK_NUMBER 将
DISK_NUMBER
替换为您要装载的磁盘的编号。装载磁盘。
DISKPART> online disk
从磁盘中移除只读标志
如有需要,请完成以下步骤:
登录您的 Windows 虚拟机。
打开 PowerShell 命令提示符并运行
diskpart
工具。PS C:\> diskpart
列出磁盘中的所有卷。
DISKPART> list volume
选择新的卷。
DISKPART> select volume
VOLUME_NUMBER 将
VOLUME_NUMBER
替换为您要配置为读写的卷的编号。清除只读标志。
DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
退出
diskpart
工具。DISKPART> exit
如果该磁盘是其他虚拟机实例的启动磁盘,请在 PowerShell 命令提示符中同步启动磁盘文件,使其与新磁盘签名同步。
PS C:\> bcdboot
DRIVE_LETTER :\Windows /sDRIVE_LETTER 将
DRIVE_LETTER
替换为要同步的卷的盘符。例如,F
表示F:\
。
后续步骤
- 如果您截取了启动磁盘的快照,则可以通过快照创建虚拟机。
- 如需了解如何配置 Windows Server 以使用它为虚拟机或实例模板创建自定义 Windows Server 映像,请参阅创建自定义 Windows Server 映像。