创建 Windows 永久性磁盘快照


在 Compute Engine 中,您可以使用快照来备份永久性磁盘数据。由于是增量快照,与创建完整的永久性磁盘映像相比,您可获得更高的性能,支付更低的总存储费用。

准备工作

创建 Windows VSS 快照

您无需停止实例或分离永久性磁盘即可创建 VSS 快照。VSS 快照用于备份和恢复包含 VSS 感知型应用的系统。

VSS 快照的价格与常规永久性磁盘快照相同,并且仅根据快照的总大小收取费用。

限制

  • VSS 快照仅适用于映像版本为 v20160810 或更高的 Windows 实例。对于使用旧版映像的实例,请创建常规快照
  • 永久性磁盘必须使用 NTFS、exFAT 或 ReFS 文件系统。
  • 只有在您运行 VSS 感知型应用(可进行协调以创建一致的数据备份)时,VSS 快照才有助于保留数据。
  • 如果 VSS 快照操作在 300 秒内没有完成,则快照会失败并显示超时错误。

创建快照

控制台

  1. 转到“创建快照”页面
  2. 输入快照名称
  3. (可选)输入快照的说明
  4. 来源磁盘下方,选择要从中创建快照的现有磁盘。
  5. 跳过此步骤以使用默认快照存储位置。否则,要使用非默认存储位置,请执行以下操作:

    1. 位置下,选择是要将快照存储在多区域位置还是单区域位置。
    2. 选择要使用的特定区域或多区域。如需使用最靠近源磁盘的区域或多区域,请选择基于磁盘的位置
  6. 选中启用 VSS 选项以指定此快照应使用卷影复制服务。

  7. 点击创建

gcloud

如需创建 VSS 快照,请使用 gcloud compute disks snapshot 命令并添加 --guest-flush 标志。

gcloud compute disks snapshot [DISK_NAME] --guest-flush
  • [DISK_NAME] 替换为要为其创建快照的可用区永久性磁盘的名称。

如需创建区域永久性磁盘的 VSS 快照,请将 --region [REGION] 附加到上述命令,并将 [REGION] 替换为区域永久性磁盘所在的区域。

gcloud 命令行工具将等待操作返回 READYFAILED 状态,或者等待操作达到超时时间上限并返回快照最新的已知详细信息。

API

创建快照时,请添加 ?guestFlush=true 参数,以指示您想要创建 VSS 快照。

  • 要创建地区永久性磁盘的 VSS 快照,请向 compute.disks.createSnapshot 方法发出 POST 请求:

    POST  https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/[DISK_NAME]/createSnapshot?guestFlush=true
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [ZONE] 是地区永久性磁盘所在的地区。
    • [DISK_NAME] 是您要为其创建 VSS 快照的地区永久性磁盘的名称。
  • 如需创建区域永久性磁盘的 VSS 快照,请向 compute.regionDisk.createSnapshot 方法发出 POST 请求:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/createSnapshot?guestFlush=true
    

    其中:

    • [PROJECT_ID] 是您的项目 ID。
    • [REGION] 是区域永久性磁盘所在的区域。
    • [DISK_NAME] 是您要为其创建 VSS 快照的区域永久性磁盘的名称。

可选:将您的磁盘标记为可用于读写

当您创建 VSS 快照时,Windows Server 会将该快照中的卷标记为只读。从 VSS 快照创建新的永久性磁盘时,该磁盘也会设置为只读模式。

这可能会引起问题。例如,如果您使用现有启动磁盘的 VSS 快照创建具有新启动磁盘的虚拟机实例,则新启动磁盘上的只读标志会阻止虚拟机实例正常启动。

如需解决此问题,请从您通过 VSS 快照创建的任何新磁盘中移除只读标志,具体步骤如下:

  1. 确保磁盘已挂接到虚拟机实例。

    • 如果通过 VSS 快照创建的磁盘是非启动数据磁盘,那么您可以将该磁盘挂接到任何新的或现有的虚拟机实例。
    • 如果通过 VSS 快照创建的磁盘是启动磁盘,并且您希望使用它来启动虚拟机实例,则必须将磁盘暂时挂接到单独的现有虚拟机实例。完成以下步骤后,您可以从该现有虚拟机实例中分离磁盘并将其用于启动新的虚拟机实例。
  2. 登录挂接到该磁盘的 Windows 虚拟机实例。

  3. 打开 PowerShell 命令提示符并运行 diskpart 工具,具体命令如下:

    PS C:\\> diskpart
    
  4. 确定要装载的磁盘:

    DISKPART> list disk
    
  5. 使用 select disk 命令选择磁盘:

    DISKPART> select disk [DISK_NUMBER]
    

    [DISK_NUMBER] 替换为您要装载的磁盘。

  6. 装载磁盘:

    DISKPART> online disk
    
  7. 列出磁盘中的所有卷,具体命令如下:

    DISKPART> list volume
    
  8. 选择新的卷,具体命令如下:

    DISKPART> select volume [VOLUME_NUMBER]
    

    其中:[VOLUME_NUMBER] 是您需要配置为可读写的卷。

  9. 清除只读标志:

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  10. 退出 diskpart 工具:

    DISKPART> exit
    
  11. 如果该磁盘是其他实例的启动磁盘,请将启动磁盘文件与新磁盘签名同步,具体命令如下:

    PS C:\\> bcdboot [DRIVE_LETTER]Windows /s [DRIVE_LETTER]
    

    [DRIVE_LETTER] 替换为您要同步的卷的盘符。例如:“F:”。

在不使用 VSS 的情况下创建快照

在某些情况下,您可能需要创建挂接到 Windows 实例的磁盘的快照,而无需使用 VSS。

如需在不使用 VSS 的情况下创建 Windows 快照,请执行以下操作:

  1. 为创建干净的快照准备系统
  2. 创建快照
  3. 重新装载您的磁盘
  4. 将磁盘标记为可读写

为创建干净的快照准备系统

在创建永久性磁盘快照之前,请确保您要截取的快照与永久性磁盘的预计状态一致。如果您截取了处于“不洁净”状态的永久性磁盘的快照,则系统可能会强制执行磁盘检查并可能导致数据丢失。不妨考虑同步和卸载文件系统。

同步文件系统

如果无法卸载永久性磁盘(例如在应用可能正向磁盘写入数据的情况下),您可以同步文件系统以清空磁盘缓冲区。要同步您的文件系统,请执行以下操作:

  1. 登录您的 Windows 实例。
  2. 下载并安装同步工具。
  3. 使应用停止向永久性磁盘写入数据。
  4. 以管理员身份运行命令提示符,只需右键点击命令提示符图标并选择以管理员身份运行即可。
  5. 在命令行终端中,运行以下命令:

    PS C:\\> sync [DRIVE_LETTER]
    

    [DRIVE_LETTER] 替换为您要同步的卷的盘符。例如:F:\。

卸载磁盘

  1. 登录您的 Windows 实例。

  2. 打开 PowerShell 命令提示符并运行 diskpart 工具,具体命令如下:

    PS C:\\> diskpart
    
  3. 确定您想要卸载并截取快照的磁盘,具体命令如下:

    DISKPART> list disk
    
  4. 然后,使用您刚刚找到的磁盘编号选择磁盘,具体命令如下:

    DISKPART> select disk [DISK_NUMBER]
    

    [DISK_NUMBER] 替换为您要重新装载的磁盘。

  5. 最后,卸载磁盘,具体命令如下:

    DISKPART> offline disk
    

创建快照

重新装载您的磁盘

  1. 登录您的 Windows 实例。

  2. 打开 PowerShell 命令提示符并运行 diskpart 工具,具体命令如下:

    PS C:\\> diskpart
    
  3. 确定要装载的磁盘:

    DISKPART> list disk
    
  4. 使用 select disk 命令选择磁盘:

    DISKPART> select disk [DISK_NUMBER]
    

    [DISK_NUMBER] 替换为您要装载的磁盘。

  5. 装载磁盘:

    DISKPART> online disk
    

从磁盘中移除只读标志

  1. 列出磁盘中的所有卷,具体命令如下:

    DISKPART> list volume
    
  2. 选择新的卷,具体命令如下:

    DISKPART> select volume [VOLUME_NUMBER]
    

    [VOLUME_NUMBER] 替换为您需要配置为读写的卷。

  3. 清除只读标志:

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  4. 退出 diskpart 工具:

    DISKPART> exit
    
  5. 如果该磁盘是其他实例的启动磁盘,请将启动磁盘文件与新磁盘签名同步,具体命令如下:

    PS C:\\> bcdboot [DRIVE_LETTER]Windows /s [DRIVE_LETTER]
    

    [DRIVE_LETTER] 替换为您要同步的卷的盘符。例如:F:\。

后续步骤