对数据验证问题进行故障排除 - Amazon DataSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对数据验证问题进行故障排除

默认情况下,会在传输结束时 Amazon DataSync 验证数据的完整性。使用以下信息来帮助您诊断常见的验证错误和警告,例如在 DataSync 完成数据验证之前文件被修改或删除。

对于验证问题,很多时候,除了看到的任务执行错误之外,查看CloudWatch 日志(或任务报告)也会有所帮助。 DataSync为增强模式任务提供 JSON 结构化日志,而基本模式任务具有非结构化日志。

文件内容不匹配

任务执行完成后,您会看到以下错误:

Transfer and verification completed. Verification detected mismatches. Files with mismatches are listed in Cloud Watch Logs

在 CloudWatch 日志中,您可能会注意到源位置和目标位置之间存在差异的内容验证失败。如果在传输过程中修改了文件,则可能会发生这种情况。

例如,以下日志显示了file1.txt具有不同mtimesrcHash、和dstHash值的日志:

基本模式日志示例
[NOTICE] Verification failed <> /directory1/directory2/file1.txt [NOTICE] /directory1/directory2/file1.txt srcMeta: type=R mode=0755 uid=65534 gid=65534 size=534528 atime=1633100003/684349800 mtime=1602647222/222919600 extAttrsHash=0 [NOTICE] srcHash: 0c506c26bd1e43bd3ac346734f1a9c16c4ad100d1b43c2903772ca894fd24e44 [NOTICE] /directory1/directory2/file1.txt dstMeta: type=R mode=0755 uid=65534 gid=65534 size=511001 atime=1633100003/684349800 mtime=1633106855/859227500 extAttrsHash=0 [NOTICE] dstHash: dbd798929f11a7c0201e97f7a61191a83b4e010a449dfc79fbb8233801067c46

中 DataSync,mtime表示准备前最后一次写入文件的时间。验证传输时, DataSync 比较来源和目标位置之间的mtime值。如果两个位置的文件不相同mtime,则会出现这样的验证失败。srcHash和之间的差异dstHash表明文件内容在两个位置都不匹配。

要采取的操作

执行以下操作:

  1. 使用纪元时间转换器来确定源文件或目标文件或对象最近是否被修改。这可以帮助确定哪个版本是最新版本。

  2. 为避免再次出现此错误,请将任务安排在维护时段内运行,此时您的源和目标都没有活动。

文件的 SMB 元数据不匹配

任务执行完成后,您会看到以下错误:

Transfer and verification completed. Verification detected mismatches. Files with mismatches are listed in Cloud Watch Logs

在支持服务器消息块 (SMB) 协议的存储系统之间传输时,如果文件的扩展 SMB 属性在源和目标之间不匹配,则可能会看到此错误。

例如,以下日志显示不同位置file1.txtextAttrsHash值不同,这表明文件内容相同,但未在目标位置设置扩展属性:

基本模式日志示例
[NOTICE] Verification failed <> /directory1/directory2/file1.txt [NOTICE] /directory1/directory2/file1.txt srcMeta: type=R mode=0755 uid=65534 gid=65534 size=1469752 atime=1631354985/174924200 mtime=1536995541/986211400 extAttrsHash=2272191894 [NOTICE] srcHash: 38571d42b646ac8f4034b7518636b37dd0899c6fc03cdaa8369be6e81a1a2bb5 [NOTICE] /directory1/directory2/file1.txt dstMeta: type=R mode=0755 uid=65534 gid=65534 size=1469752 atime=1631354985/174924200 mtime=1536995541/986211400 extAttrsHash=3051150340 [NOTICE] dstHash: 38571d42b646ac8f4034b7518636b37dd0899c6fc03cdaa8369be6e81a1a2bb5

您可能还会看到有关扩展属性的相关错误消息:

[ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/directory1/directory2/file1.txt"): Input/output error
要采取的操作

当没有足够的权限将访问控制列表 (ACLs) 复制到目标时,通常会发生此错误。要解决此问题,请根据您的目标类型查看以下配置指南:

要传输的文件已不在源位置

任务执行完成后,您会看到以下错误:

Transfer and verification completed. Selected files transferred except for files skipped due to errors. If no skipped files are listed in Cloud Watch Logs, please contact AWS Support for further assistance.

在日志中,您可能会看到错误消息,表明文件不在源位置。如果文件(例如file1.dllfile2.dll)在准备之后但在 DataSync 传输之前被删除,则会发生这种情况:

基本模式日志示例
[ERROR] Failed to open source file /file1.dll: No such file or directory [ERROR] Failed to open source file /file2.dll: No such file or directory
要采取的操作

为避免出现这些情况,请将任务安排在源位置没有活动时运行。

例如,当用户和应用程序不积极使用该位置时,您可以在维护时段内运行任务。

在某些情况下,您可能看不到与此错误相关的日志。如果发生这种情况,请联系Amazon Web Services 支持 中心

DataSync 无法验证目标数据

任务执行完成后,您会看到以下错误:

Transfer and verification completed. Verification detected mismatches. Files with mismatches are listed in Cloud Watch Logs

在日志中,您可能会注意到 DataSync 无法验证目标位置中的某些文件夹或文件。这些错误可能如下所示:

基本模式日志示例
[ERROR] Failed to read metadata for destination file /directory1/directory2/file1.txt: No such file or directory

对于文件,您可能会看到这样的验证失败:

基本模式日志示例
[NOTICE] Verification failed <> /directory1/directory2/file1.txt [NOTICE] /directory1/directory2/file1.txt srcMeta: type=R mode=0755 uid=65534 gid=65534 size=61533 atime=1633099987/747713800 mtime=1536995631/894267700 extAttrsHash=232104771 [NOTICE] srcHash: 1426fe40f669a7d36cca1b5329983df31a9aeff8eb9fe3ac885f26de2f8fff6b [NOTICE] /directory1/directory2/file1.txt dstMeta: type=R mode=0755 uid=65534 gid=65534 size=0 atime=0/0 mtime=0/0 extAttrsHash=0 [NOTICE] dstHash: 0000000000000000000000000000000000000000000000000000000000000000
要采取的操作

这些日志表明目标数据是在传输之后但在验证之前被删除的。(在同一时间段内将数据上传到源位置时,日志看起来相似。)

为避免出现这些情况,请将任务安排在目标位置没有活动时运行。

例如,当用户和应用程序不积极使用该位置时,您可以在维护时段内运行任务。

DataSync 无法读取对象元数据

任务执行完成后,您会看到以下错误:

Transfer and verification completed. Selected files transferred except for files skipped due to errors. If no skipped files are listed in Cloud Watch Logs, please contact AWS Support for further assistance.

在您的日志中,您 DataSync 可能会注意到由file1.png于 Amazon S3 HeadObject 请求失败而无法读取。 DataSync 在任务准备和验证期间向 S3 地点@@ 发出HeadObject请求

基本模式日志示例
[WARN] Failed to read metadata for file /file1.png: S3 Head Object Failed
要采取的操作

要解决此问题,请验证是否 DataSync 具有使用您的 S3 存储桶的适当权限级别:

  • 确保 DataSync 用于访问您的 Amazon S3 营业地点的 IAM 角色允许该s3:GetObject权限。有关更多信息,请参阅 所需的权限

  • 如果您的 S3 存储桶使用服务器端加密,请确保 DataSync 允许服务器端加密访问该存储桶中的对象。有关更多信息,请参阅 使用服务器端加密访问 S3 存储桶

对象的系统定义元数据不匹配

在 S3 存储桶之间完成增强模式任务执行后,您会看到以下错误:

Verification failed due to a difference in metadata

您可能会在日志中注意到对象的 Amazon S3 系统定义的元数据不匹配。在这个特定的示例中,源对象没有Content-Type元数据,但目标对象有。之所以发生这种情况,是因为目标 S3 存储桶在将"ContentType": "application/octet-stream"元数据 DataSync 传输到那里时会自动将元数据应用于该对象。

增强模式日志示例
{ "Action": "VERIFY", "Source": { "LocationId": "loc-0b3017fc4ba4a2d8d", "RelativePath": "encoding/content-null", "Metadata": { "Type": "Object", "ContentSize": 24, "LastModified": "2024-12-23T15:48:15Z", "S3": { "SystemMetadata": { "ETag": "\"68b9c323bb846841ee491481f576ed4a\"" }, "UserMetadata": {}, "Tags": {} } } }, "Destination": { "LocationId": "loc-abcdef01234567890", "RelativePath": "encoding/content-null", "Metadata": { "Type": "Object", "ContentSize": 24, "LastModified": "2024-12-23T16:00:03Z", "S3": { "SystemMetadata": { "ContentType": "application/octet-stream", "ETag": "\"68b9c323bb846841ee491481f576ed4a\"" }, "UserMetadata": { "file-mtime": "1734968895000" }, "Tags": {} } } }, "TransferType": "CONTENT_AND_METADATA", "ErrorCode": "MetadataDiffers", "ErrorDetail": "Verification failed due to a difference in metadata" }
要采取的操作

为避免出现此错误,请更新您的源位置对象以包含Content-Type元数据属性。

了解数据验证持续时间

DataSync 验证包括文件内容的 SHA256 校验和以及不同位置之间文件元数据的精确比较。验证需要多长时间取决于多个因素,包括涉及的文件或对象的数量、存储系统中数据的大小以及这些系统的性能。

要采取的操作

考虑到可能影响验证时间的因素,您不必做任何事情。但是,如果您的任务执行似乎处于验证状态,请联系Amazon Web Services 支持 中心