使用 AWS CLI、AWS Tools for Windows PowerShell 或 AWSEC2-ManageVssIO SSM 文档创建 VSS 应用程序一致性快照 - Amazon Elastic Compute Cloud

使用 AWS CLI、AWS Tools for Windows PowerShell 或 AWSEC2-ManageVssIO SSM 文档创建 VSS 应用程序一致性快照

本部分包括通过使用 AWS CLI 或 AWS Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照的步骤。本节还包含使用 AWSEC2-ManageVssIO SSM 文档创建启用了 VSS 的快照的高级方法。

使用 AWS CLI 或 Tools for Windows PowerShell 安装 VSS 程序包

使用以下命令行步骤之一下载并将 VSS 组件安装到 EC2 实例上的 Windows。

使用 AWS CLI 安装 VSS 程序包

可以使用以下过程下载 AwsVssComponents pa 程序包,并从 AWS CLI 中使用 Run Command 在实例上安装该程序包。该程序包安装两个组件:VSS 请求程序和 VSS 提供程序。系统将这些组件复制到实例上的某个目录,然后将提供程序 DLL 注册为 VSS 提供程序。

使用 AWS CLI 安装 VSS 程序包

  1. 安装并配置 AWS CLI(如果尚未执行该操作)。

    有关更多信息,请参阅 AWS Systems Manager 用户指南中的安装或升级,然后配置 AWS CLI

    提示

    您还可以使用 AWS CloudShell,以获得基于浏览器的预先认证的外壳,并直接从 AWS Management Console 启动。

  2. 运行以下命令下载并安装 Systems Manager 所需的 VSS 组件。

    aws ssm send-command --document-name "AWS-ConfigureAWSPackage" --instance-ids "i-12345678" --parameters '{"action":["Install"],"name":["AwsVssComponents"]}'

使用 Tools for Windows PowerShell 安装 VSS 程序包

使用以下过程用 Run Command 从 Tools for Windows PowerShell 下载 AwsVssComponents 程序包并在实例上进行安装。该程序包安装两个组件:VSS 请求程序和 VSS 提供程序。系统将这些组件复制到实例上的某个目录,然后将提供程序 DLL 注册为 VSS 提供程序。

使用 AWS Tools for Windows PowerShell 安装 VSS 程序包

  1. 安装并配置 AWS Tools for Windows PowerShell(如果尚未执行该操作)。

    有关更多信息,请参阅 AWS Systems Manager 用户指南中的安装、升级并配置 AWS Tools for Windows PowerShell 部分。

    提示

    您还可以使用 AWS CloudShell,以获得基于浏览器的预先认证的外壳,并直接从 AWS Management Console 启动。

  2. 打开 AWS Tools for Windows PowerShell 并运行以下命令以指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者 IAM 中为您授予了相应的权限。有关更多信息,请参阅 AWS Systems Manager 用户指南中的设置 AWS Systems Manager

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  3. 运行以下命令,以便为 PowerShell 会话设置区域。该示例使用 us-east-2 区域。

    Set-DefaultAWSRegion -Region us-east-2
  4. 运行以下命令下载并安装 Systems Manager 所需的 VSS 组件。

    Send-SSMCommand -DocumentName AWS-ConfigureAWSPackage -InstanceId "$instance"-Parameter @{'action'='Install';'name'='AwsVssComponents'}

使用 AWS CLI、Tools for Windows PowerShell 或 AWSEC2-ManageVssIO SSM 文档创建启用 VSS 的 EBS 快照

使用以下命令行步骤之一创建启用了 VSS 的 EBS 快照。

使用 AWS CLI 创建启用 VSS 的 EBS 快照

使用以下过程来利用 AWS CLI 创建启用了 VSS 的 EBS 快照。在运行该命令时,您可以指定以下参数:

  • 实例 (必需):指定一个或多个 Amazon EC2 Windows 实例。您可以手动指定实例,也可以指定标签。

  • 描述 (可选):指定关于此备份的详细信息。

  • 标签 (可选):指定要分配给快照的键值标签对。标签可以帮助您找到、管理和从快照列表还原卷。默认情况下,系统使用 Name 密钥填充标签参数。对于此密钥的值,请指定要应用于此过程创建的快照的名称。您还可以使用以下格式向此列表中添加自定义标签:Key=Environment,Value=Test;Key=User,Value=TestUser1

    此参数是可选的,但是我们建议您标记快照。默认情况下,系统使用设备 ID 和 AppConsistent 标记快照 (用于表示成功的启用 VSS 的应用程序一致性 EBS 快照)。

  • 排除引导卷 (可选):使用此参数从备份过程中排除引导卷。

使用 AWS CLI 创建启用了 VSS 的 EBS 快照

  1. 安装并配置 AWS CLI(如果尚未执行该操作)。

    有关更多信息,请参阅 AWS Systems Manager 用户指南中的安装或升级,然后配置 AWS CLI

    提示

    您还可以使用 AWS CloudShell,以获得基于浏览器的预先认证的外壳,并直接从 AWS Management Console 启动。

  2. 运行以下命令以创建启用了 VSS 的 EBS 快照。

    aws ssm send-command --document-name "AWSEC2-CreateVssSnapshot" --instance-ids "i-12345678" --parameters '{"ExcludeBootVolume":["False"],"description":["Description"],"tags":["Key=key_name,Value=tag_value"]}'

如果成功,则该命令使用新快照填充 EBS 快照列表。您可以通过搜索指定的标签或搜索 AppConsistent 在 EBS 快照列表中查找这些快照。如果命令执行失败,请查看命令输出,了解执行失败的详细原因。

您可以创建使用 AWSEC2-CreateVssSnapshot SSM 文档的维护时段任务以自动执行备份。有关更多信息,请参阅 AWS Systems Manager 用户指南中的使用维护时段(控制台)

使用 AWS Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照

使用以下过程来利用 AWS Tools for Windows PowerShell 创建启用了 VSS 的 EBS 快照。在运行该命令时,您可以指定以下参数:

  • 实例 (必需):指定一个或多个 Amazon EC2 Windows 实例。您可以手动指定实例,也可以指定标签。

  • 描述 (可选):指定关于此备份的详细信息。

  • 标签 (可选):指定要分配给快照的键值标签对。标签可以帮助您找到、管理和从快照列表还原卷。默认情况下,系统使用 Name 密钥填充标签参数。对于此密钥的值,请指定要应用于此过程创建的快照的名称。您还可以使用以下格式向此列表中添加自定义标签:Key=Environment,Value=Test;Key=User,Value=TestUser1

    此参数是可选的,但是我们建议您标记快照。默认情况下,系统使用设备 ID 和 AppConsistent 标记快照 (用于表示成功的启用 VSS 的应用程序一致性 EBS 快照)。

  • 排除引导卷 (可选):使用此参数从备份过程中排除引导卷。

使用 AWS Tools for Windows PowerShell 创建启用了 VSS 的 EBS 快照

  1. 安装并配置 AWS Tools for Windows PowerShell(如果尚未执行该操作)。

    有关更多信息,请参阅 AWS Systems Manager 用户指南中的安装、升级并配置 AWS Tools for Windows PowerShell 部分。

    提示

    您还可以使用 AWS CloudShell,以获得基于浏览器的预先认证的外壳,并直接从 AWS Management Console 启动。

  2. 打开 AWS Tools for Windows PowerShell 并运行以下命令以指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者 IAM 中必须为您授予了相应的权限。有关更多信息,请参阅 AWS Systems Manager 用户指南中的设置 AWS Systems Manager

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  3. 执行以下命令为 PowerShell 会话设置区域。该示例使用 us-east-2 区域。

    Set-DefaultAWSRegion -Region us-east-2
  4. 执行以下命令创建启用了 VSS 的 EBS 快照。

    Send-SSMCommand -DocumentName AWSEC2-CreateVssSnapshot -InstanceId "$instance" -Parameter @{'ExcludeBootVolume'='False';'description'='a_description' ;'tags'='Key=key_name,Value=tag_value'}

如果成功,则该命令使用新快照填充 EBS 快照列表。您可以通过搜索指定的标签或搜索 AppConsistent 在 EBS 快照列表中查找这些快照。如果命令执行失败,请查看命令输出,了解执行失败的详细原因。如果命令成功完成,但特定卷备份失败,您可以在 EBS 快照列表中排查失败的原因。

您可以创建使用 AWSEC2-CreateVssSnapshot SSM 文档的维护时段任务以自动执行备份。有关更多信息,请参阅 AWS Systems Manager 用户指南中的使用维护时段(控制台)

使用 AWSEC2-ManageVssIO SSM 文档(高级)创建启用 VSS 的 EBS 快照

您可以使用以下脚本和预定义的 AWSEC2-ManageVssIO SSM 文档以临时暂停 I/O,创建启用了 VSS 的 EBS 快照,然后重新启动 I/O。此过程在运行命令的用户上下文中运行。如果用户具有足够的权限来创建和标记快照,那么 AWS Systems Manager 可以创建和标记启用了 VSS 的 EBS 快照,而实例上无需更多 IAM 快照角色。

相反,AWSEC2-CreateVssSnapshot 文档要求您将 IAM 快照角色分配给要创建 EBS 快照的每个实例。如果您出于策略或合规性原因不希望向您的实例提供其他 IAM 权限,则可以使用以下脚本。

开始前的准备工作

请注意有关该过程的以下重要详细信息:

  • 除了根卷以外,该过程使用 PowerShell 脚本 (CreateVssSnapshotAdvancedScript.ps1) 为指定的实例上的所有其他卷拍摄快照。如果需要拍摄根卷的快照,您必须使用 AWSEC2-CreateVssSnapshot SSM 文档。

  • 该脚本调用两次 AWSEC2-ManageVssIO 文档。第一次将 Action 参数设置为 Freeze,这会暂停实例上的所有 I/O。第二次将 Action 参数设置为 Thaw,这会强制恢复 I/O。

  • 在未使用 CreateVssSnapshotAdvancedScript.ps1 脚本的情况下,不要尝试使用 AWSEC2-ManageVssIO 文档。VSS 中的限制要求调用 FreezeThaw 操作相隔不超过十秒钟,在不使用脚本的情况下手动调用这些操作会导致错误。

使用 AWSEC2-ManageVssIO SSM 文档创建启用了 VSS 的 EBS 快照

  1. 打开 AWS Tools for Windows PowerShell 并运行以下命令以指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者 IAM 中为您授予了相应的权限。有关更多信息,请参阅 AWS Systems Manager 用户指南中的设置 AWS Systems Manager

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  2. 执行以下命令为 PowerShell 会话设置区域。该示例使用 us-east-2 区域。

    Set-DefaultAWSRegion -Region us-east-2
  3. 下载 CreateVssSnapshotAdvancedScript.zip 文件并提取文件内容。

  4. 在文本编辑器中打开 CreateVssSnapshotAdvancedScript.ps1,编辑脚本底部的示例调用以包含有效的 EC2 实例 ID、快照描述和所需的标签值,然后从 PowerShell 中运行该脚本。

如果成功,则该命令使用新快照填充 EBS 快照列表。您可以通过搜索指定的标签或搜索 AppConsistent 在 EBS 快照列表中查找这些快照。如果命令执行失败,请查看命令输出,了解执行失败的详细原因。如果命令成功完成,但特定卷备份失败,您可以在 EBS 卷列表中排查失败的原因。

对启用 VSS 的 EBS 快照进行故障排除

常规:检查日志文件

如果您在创建启用 VSS 的 EBS 快照时遇到问题或收到错误消息,则可以在 Systems Manager 控制台中查看命令输出。您还可以查看以下日志:

  • %ProgramData%\Amazon\SSM\InstanceData\InstanceID\document\orchestration\SSMCommandID\awsrunPowerShellScript\runPowerShellScript\stdout

  • %ProgramData%\Amazon\SSM\InstanceData\InstanceID\document\orchestration\SSMCommandID\awsrunPowerShellScript\runPowerShellScript\stderr

您还可以打开事件查看器 Windows 应用程序,然后选择 Windows Logs (Windows 日志)、Application (应用程序) 以查看其他日志。要专门查看来自 EC2 Windows VSS 提供程序和卷影复制服务的事件,请根据条款 Ec2VssSoftwareProviderVSSSource (源) 进行筛选。

错误:解冻管道连接超时、解冻时出错、等待 VSS 冻结超时或其他超时错误

EC2 Windows VSS 提供程序可能会由于实例上的活动或服务阻止启用了 VSS 的快照及时继续而超时。Windows VSS 框架提供了一个不可配置的 10 秒钟窗口,在此期间暂停与文件系统的通信。在此期间,对卷执行 AWSEC2-CreateVssSnapshot 快照。

以下项目可能会导致 EC2 Windows VSS 提供程序在快照期间遇到时间限制:

  • 对卷的 I/O 过多

  • 实例上 EC2 API 的响应速度缓慢

  • 片段化的卷

  • 与某些杀毒软件不兼容

  • VSS 应用程序编写者的问题

  • 当为大量 PowerShell 模块启用模块日志记录时,这样可能会导致 PowerShell 脚本运行缓慢

通常,当使用 AWSEC2-CreateVssSnapshot 命令遇到时间限制时,原因与备份时实例上的工作负载过高有关。以下操作可以帮助您成功拍摄快照:

  • 重试 AWSEC2-CreateVssSnapshot 命令以查看快照尝试是否成功。如果在某些情况下重试成功,减少实例负载可能会使快照成功几率更高。

  • 等待片刻,让实例上的工作负载减少,然后重试该 AWSEC2-CreateVssSnapshot 命令。或者,当已知实例处于低压力时,您也可以尝试拍摄快照。

  • 在系统上的杀毒软件关闭时尝试拍摄 VSS 快照。如果这样解决了问题,请参阅杀毒软件说明并将其配置为允许 VSS 快照。

  • 如果在拍摄快照时进行了大量 EC2 API 调用,则 API 限制可能会导致快照所需时间太长而无法启动。当账户中的 API 活动较少时,请再次尝试拍摄快照。

  • 在 shell 中运行命令 vssadmin list writers,看它是否在系统上任何写入程序的 Last error (最后一个错误) 字段中报告任何错误。如果有写入程序报告 time out (超时) 错误,请考虑在实例负载较小时重新拍摄快照。

  • 如果一个或多个 PowerShell 模块具有启用 PowerShell 模块日志记录的组策略,请在拍摄快照之前尝试临时禁用日志记录。