本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對資料驗證問題進行故障診斷
根據預設, AWS DataSync 會在傳輸結束時驗證資料的完整性。使用以下資訊來協助您診斷常見的驗證錯誤和警告,例如在 DataSync 完成驗證您的資料之前修改或刪除的檔案。
發生驗證問題時,除了您看到的任務執行錯誤之外,多次檢閱 CloudWatch 日誌 (或任務報告) 也很有幫助。DataSync 為增強型模式任務提供 JSON 結構化日誌,而基本模式任務具有非結構化日誌。
檔案的內容不相符
當您的任務執行完成時,您會看到下列錯誤:
Transfer and verification completed. Verification detected mismatches. Files with mismatches are listed in Cloud Watch Logs
在 CloudWatch 日誌中,您可能會注意到來源和目的地位置之間內容不同的驗證失敗。如果檔案在傳輸期間遭到修改,就可能會發生這種情況。
例如,以下日誌顯示 file1.txt
具有不同的 mtime
、 srcHash
和 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
表示檔案的內容在兩個位置都不相符。
要採取的動作
請執行下列操作:
-
使用 epoch 時間轉換器來判斷來源或目的地檔案或物件是否最近修改。這有助於識別哪個版本是最新版本。
-
若要避免再次發生此錯誤,請排定在來源和目的地沒有活動時,在維護時段期間執行任務。
檔案的 SMB 中繼資料不相符
當您的任務執行完成時,您會看到下列錯誤:
Transfer and verification completed. Verification detected mismatches. Files with mismatches are listed in Cloud Watch Logs
在支援伺服器訊息區塊 (SMB) 通訊協定的儲存系統之間傳輸時,當檔案的延伸 SMB 屬性在來源和目的地之間不相符時,您可能會看到此錯誤。
例如,以下日誌顯示 的位置之間file1.txt
具有不同的extAttrsHash
值,表示檔案內容相同,但延伸屬性未在目的地設定:
- 基本模式日誌範例
-
[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.dll
和 file2.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
採取動作
為了避免這些情況,請排程任務在來源位置沒有活動時執行。
例如,當使用者和應用程式未主動使用該位置時,您可以在維護時段執行任務。
在某些情況下,您可能看不到與此錯誤相關聯的日誌。如果發生這種情況,請聯絡 AWS 支援 中心
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 因為 Amazon S3 HeadObject
請求失敗file1.png
而無法讀取。DataSync 會在任務準備和驗證期間向 S3 位置提出HeadObject請求。 S3
- 基本模式日誌範例
-
[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
中繼資料,但目的地物件有中繼資料。發生這種情況是因為當 DataSync 將目的地 S3 儲存貯體傳輸至物件時,目的地 S3 儲存貯體會自動將"ContentType": "application/octet-stream"
中繼資料套用至物件。
- 增強型模式日誌範例
-
{ "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 檢查總和,以及位置間檔案中繼資料的確切比較。驗證需要多長時間取決於幾個因素,包括涉及的檔案或物件數量、儲存系統中的資料大小,以及這些系統的效能。
採取動作
考慮到可能影響驗證時間的因素,您應該不必執行任何動作。不過,如果您的任務執行似乎卡在驗證狀態,請聯絡 AWS 支援 中心