创建 VSS 应用程序一致性快照
本部分包括通过使用 Amazon CLI 或 Amazon Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照的步骤。本节还包含使用 AWSEC2-ManageVssIO
SSM 文档创建启用了 VSS 的快照的高级方法。
开始前的准备工作
如果您打算使用 Amazon CLI,请确保您已安装最新版本的 Amazon CLI。有关更多信息,请参阅《Amazon Systems Manager 用户指南》中的安装或升级然后配置 Amazon CLI。
如果您打算使用 Amazon Tools for Windows PowerShell,请确保您已安装最新版本的 Tools for Windows PowerShell。有关更多信息,请参阅《Amazon Systems Manager 用户指南》中的安装或升级然后配置 Amazon Tools for Windows PowerShell。
提示
您还可以使用 Amazon CloudShell,以获得基于浏览器的预先认证的 Shell,并直接从 Amazon Web Services Management Console 启动。
安装 VSS 程序包
使用以下命令行步骤之一下载并将 VSS 组件安装到 EC2 实例上的 Windows。
使用 Amazon CLI 安装 VSS 程序包
可以使用以下过程下载 AwsVssComponents
pa 程序包,并从 Amazon CLI 中使用 Run Command 在实例上安装该程序包。该程序包安装两个组件:VSS 请求程序和 VSS 提供程序。系统将这些组件复制到实例上的某个目录,然后将提供程序 DLL 注册为 VSS 提供程序。
使用 Amazon CLI 安装 VSS 程序包
-
运行以下命令下载并安装 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 提供程序。
使用 Amazon Tools for Windows PowerShell 安装 VSS 程序包
-
打开 Amazon Tools for Windows PowerShell 并运行以下命令,以指定用户访问密钥。用户必须拥有对 Amazon EC2 的管理访问权限,或者必须具有所需的授予权限。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的设置 Amazon Systems Manager。
Set-AWSCredentials –AccessKey
key_name
–SecretKeykey_name
-
运行以下命令,以便为 PowerShell 会话设置区域。该示例使用
us-east-2
区域。Set-DefaultAWSRegion -Region
us-east-2
-
运行以下命令下载并安装 Systems Manager 所需的 VSS 组件。
Send-SSMCommand -DocumentName AWS-ConfigureAWSPackage -InstanceId "
$instance
" -Parameter @{'action'='Install';'name'='AwsVssComponents'}
创建启用 VSS 的 EBS 快照
使用以下命令行步骤之一创建启用了 VSS 的 EBS 快照。
主题
使用 Amazon CLI 创建启用 VSS 的 EBS 快照
使用以下过程来利用 Amazon CLI 创建启用了 VSS 的 EBS 快照。在运行该命令时,您可以指定以下参数:
-
实例 (必需):指定一个或多个 Amazon EC2 Windows 实例。您可以手动指定实例,也可以指定标签。
-
描述 (可选):指定关于此备份的详细信息。
-
标签 (可选):指定要分配给快照的键值标签对。标签可以帮助您找到、管理和从快照列表还原卷。默认情况下,系统使用
Name
密钥填充标签参数。对于此密钥的值,请指定要应用于此过程创建的快照的名称。您还可以使用以下格式向此列表中添加自定义标签:Key=
;Environment
,Value=Test
Key=
。User
,Value=TestUser1
此参数是可选的,但是我们建议您标记快照。默认情况下,系统使用设备 ID 和
AppConsistent
标记快照 (用于表示成功的启用 VSS 的应用程序一致性 EBS 快照)。 -
排除引导卷 (可选):使用此参数从备份过程中排除引导卷。
使用 Amazon CLI 创建启用了 VSS 的 EBS 快照
-
运行以下命令以创建启用了 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 文档的维护时段任务以自动执行备份。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的使用维护时段(控制台)。
使用 Amazon Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照
使用以下过程来利用 Amazon Tools for Windows PowerShell 创建启用了 VSS 的 EBS 快照。在运行该命令时,您可以指定以下参数:
-
实例 (必需):指定一个或多个 Amazon EC2 Windows 实例。您可以手动指定实例,也可以指定标签。
-
描述 (可选):指定关于此备份的详细信息。
-
标签 (可选):指定要分配给快照的键值标签对。标签可以帮助您找到、管理和从快照列表还原卷。默认情况下,系统使用
Name
密钥填充标签参数。对于此密钥的值,请指定要应用于此过程创建的快照的名称。您还可以使用以下格式向此列表中添加自定义标签:Key=
;Environment
,Value=Test
Key=
。User
,Value=TestUser1
此参数是可选的,但是我们建议您标记快照。默认情况下,系统使用设备 ID 和
AppConsistent
标记快照 (用于表示成功的启用 VSS 的应用程序一致性 EBS 快照)。 -
排除引导卷 (可选):使用此参数从备份过程中排除引导卷。
使用 Amazon Tools for Windows PowerShell 创建启用了 VSS 的 EBS 快照
-
打开 Amazon Tools for Windows PowerShell 并运行以下命令,以指定用户访问密钥。用户必须拥有对 Amazon EC2 的管理访问权限,或者必须具有所需的授予权限。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的设置 Amazon Systems Manager。
Set-AWSCredentials –AccessKey
key_name
–SecretKeykey_name
-
执行以下命令为 PowerShell 会话设置区域。该示例使用
us-east-2
区域。Set-DefaultAWSRegion -Region
us-east-2
-
执行以下命令创建启用了 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 文档的维护时段任务以自动执行备份。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的使用维护时段(控制台)。
使用 AWSEC2-ManageVssIO
SSM 文档(高级)创建启用 VSS 的 EBS 快照
您可以使用以下脚本和预定义的 AWSEC2-ManageVssIO
SSM 文档以临时暂停 I/O,创建启用了 VSS 的 EBS 快照,然后重新启动 I/O。此过程在运行命令的用户上下文中运行。如果用户具有足够的权限来创建和标记快照,那么 Amazon 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 中的限制要求调用Freeze
和Thaw
操作相隔不超过十秒钟,在不使用脚本的情况下手动调用这些操作会导致错误。
使用 AWSEC2-ManageVssIO
SSM 文档创建启用了 VSS 的 EBS 快照
-
打开 Amazon Tools for Windows PowerShell 并运行以下命令,以指定用户访问密钥。用户必须拥有对 Amazon EC2 的管理访问权限,或者必须具有所需的授予权限。有关更多信息,请参阅 Amazon Systems Manager 用户指南中的设置 Amazon Systems Manager。
Set-AWSCredentials –AccessKey
key_name
–SecretKeykey_name
-
执行以下命令为 PowerShell 会话设置区域。该示例使用
us-east-2
区域。Set-DefaultAWSRegion -Region
us-east-2
-
下载 CreateVssSnapshotAdvancedScript.zip 文件并提取文件内容。
-
在文本编辑器中打开
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 提供程序和卷影复制服务的事件,请根据条款 Ec2VssSoftwareProvider
和 VSS
按 Source (源) 进行筛选。
错误:解冻管道连接超时、解冻时出错、等待 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 模块日志记录的组策略,请在拍摄快照之前尝试临时禁用日志记录。
错误:无法调用方法。在此语言模式下,仅核心类型支持方法调用。
PowerShell 语言模式未设置为 FullLanguage
时,会发生此错误。AWSEC2-CreateVssSnapshot
和 AWSEC2-ManageVssIo
SSM 文档要求将 PowerShell 配置为 FullLanguage
模式。
要验证语言模式,请在 PowerShell 控制台中的实例上运行以下命令:
$ExecutionContext.SessionState.LanguageMode
有关语言模式的更多信息,请参阅 Microsoft 文档中的 about_Language_Modes