我想知道為什麼建立 Amazon Elastic Block Store (Amazon EBS) 磁碟區的增量快照需要與完整快照相同的時間。
解決方法
快照建立時間取決於下列因素:
- EBS 磁碟區的大小。
- 自上次快照以來,區塊數量已變更 (delta)。
- EBS 磁碟區上的工作負載。
- 建立快照期間,對 EBS 磁碟區的作用中輸入/輸出 (I/O)。如果在發出建立呼叫時,磁碟區上同時存在輸入/輸出作業,則會取消快照的優先級。
- 快照計時,因為頻寬是在後端伺服器共用的。
- 自上次拍攝快照以來的時間。
根據設計,EBS 快照會顯示備份的完整大小,而不是增量大小。第一個快照是資料的完整副本。後續快照為增量,其中包含最近快照中已變更的區塊。後續快照會顯示完整大小,因為可以從任何 EBS 快照還原新的磁碟區,即使其設計為增量。每個增量快照都會參考後端中的其他快照。
例如,如果自第一個快照起修改了所有區塊,則建立快照花費的時間可能費與完整快照相同。這是因為參考第一個快照的所有區塊都會被修改。
自上次快照以來的變更數目越多,建立後續快照所需的時間就越長。
建立時間也取決於其他基礎架構因素,例如基礎儲存區子系統的負載。無法預測建立 EBS 快照可能需要多長時間或加速此程序。
如需詳細資訊,請參閱快照的運作方式。
檢查快照的實際大小
1. 執行 list-snapshot-blocks AWS Command Line Interface (AWS CLI) 命令。在下列範例命令中,將 value 替換成快照的 ID。
$ aws ebs list-snapshot-blocks --snapshot-id value
**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
list-snapshot-blocks命令列出了該快照中的所有數據塊與區塊索引和區塊令牌。請注意,API 不會直接為您提供區塊總數。您必須根據區塊令牌或區塊索引來計算返回的區塊數。
list-snapshot-blocks 命令會在單一結果中最多傳回 10,000 個區塊。如果您的快照有超過 10,000 個區塊,則該命令還會傳回 NextToken。
執行下列命令以使用權杖擷取下一頁結果。在下列範例命令中,將 value 替換成快照的 ID。
$ aws ebs list-snapshot-blocks --snapshot-id <value> --next-token value
2. 對區塊計數後,用總區塊數乘以 512 (每個區塊的大小為 512 KiB) 來計算數據大小。
範例
快照中的資料大小 (以 KiB 為單位) = 總區塊數* 512
縮短快照建立時間
最佳實務是頻繁擷取磁碟區快照。頻繁建立快照表示磁碟區上變更的區塊較小,因此可縮短建立快照的時間。若要自動建立和刪除快照,請使用 Amazon Data Lifecycle Manager 或 AWS Backup。
相關資訊
為什麼我的 Amazon Elastic Compute Cloud (Amazon EC2) AMI 或 EBS 快照建立緩慢?