封存快照的指導方針和最佳實務 - Amazon Elastic Compute Cloud

封存快照的指導方針和最佳實務

本節為封存快照提供一些指導方針和最佳實務。

封存磁碟區的唯一快照

當一個磁碟區只有一個快照時,快照的大小一律與建立快照時寫入至磁碟區的區塊相同。當您封存這類快照時,標準層中的快照會轉換為同等大小的完整快照,並將其從標準層移至封存層。

封存這些快照可協助您以較低的儲存成本節省費用。如果不再需要來源磁碟區,您可以刪除該磁碟區,以進一步節省儲存成本。


          建立快照、封存該快照,然後刪除來源磁碟區。

封存單一磁碟區的增量快照

當您封存增量快照時,該快照會轉換為完整快照,且其會移至封存層。例如,在下圖中,如果封存 Snap B (快照 B),快照會轉換為大小為 10 GiB 的完整快照,並移至封存層。同樣地,如果您封存 Snap C (快照 C),則封存層中完整快照的大小為 14 GiB。

如果您要封存快照以降低標準層中的儲存成本,則不應將第一個快照封存在一組增量快照中。這些快照由快照關係中的後續快照參考。在大多數情況下,封存這些快照並不會降低儲存成本。

注意

您不應將最後一個快照封存在一組增量快照中。最後一個快照是最近取得的磁碟區快照。您將需要此快照在標準層中,如果您想要在磁碟區損毀或遺失時從這個快照建立磁碟區的話。

如果您封存的快照包含關係中後續快照所參考的資料,與參考資料相關聯的資料儲存與儲存成本會配置給關係中的後續快照。在此情況下,封存快照將不會降低資料儲存或儲存成本。例如,在上述影像中,如果您封存 Snap B (快照 B),其 4 GiB 的資料屬於 Snap C (快照 C)。 在此情況下,您的整體儲存成本會增加,因為您對 Snap B (快照 B) 的完整版本產生儲存成本,而且標準層的儲存成本維持不變。

如果您封存 Snap C (快照 C),則標準層儲存將減少 4 GiB,因為關係中的任何其他後續快照都不會參考資料。您的封存層儲存將增加 14 GiB,因為快照會轉換為完整快照。

基於合規原因,封存完整快照

基於合規原因,您可能需要根據每月、每季或每年建立磁碟區的完整備份。對於這些備份,您可能需要獨立快照,而不需要向後或向前參考快照關係中的其他快照。使用 EBS 快照封存來封存的快照是完整快照,而且它們不會參考關係中的其他快照。此外,您可能需要為合規理由保留這些快照數年。EBS 快照封存可讓您以符合成本效益的方式封存這些完整快照,以進行長期保留。

判斷標準層儲存成本是否降低

如果您想要封存增量快照以降低儲存成本,則應考慮封存層中完整快照的大小,以及標準層中儲存的降低。本節說明如何做到這一點 。

重要

API 回應是在呼叫 API 的時間點準確的資料。由於快照關係中的變更,因此與快照相關聯的資料變更時,API 回應可能會有所不同。

若要判斷標準層中的儲存與儲存成本是否降低,請使用下列步驟。

  1. 檢查完整快照的大小。若要判斷快照的完整大小,請使用 list-snapshot-blocks 命令。對於 --snapshot-id,指定您要封存的快照 ID。

    $ aws ebs list-snapshot-blocks --snapshot-id snapshot_id

    這會傳回所指定快照中所有區塊的相關資訊。命令所傳回之最後一個區塊的 BlockIndex 指出快照中的區塊數目。區塊數乘以 512 KiB (即快照區塊大小),為您提供近似於封存層中完整快照的大小 (區塊數 * 512 KiB = 完整快照大小)。

    例如,下列命令會列出快照 snap-01234567890abcdef 的區塊。

    $ aws ebs list-snapshot-blocks --snapshot-id snap-01234567890abcdef

    以下是命令輸出,省略了一些區塊。下列輸出指出快照包括大約 16,383 個資料區塊。這近似於大約 8 GiB 的完整快照大小 (16,383 * 512 KiB = 7.99 GiB)。

    { "VolumeSize": 8, "Blocks": [ { "BlockToken": "ABgBAeShfa5RwG+RiWUg2pwmnCU/YMnV7fGMxLbCWfEBEUmmuqac5RmoyVat", "BlockIndex": 0 }, { "BlockToken": "ABgBATdTONyThPUAbQhbUQXsn5TGoY/J17GfE83j9WN7siupavOTw9E1KpFh", "BlockIndex": 1 }, { "BlockToken": "EBEUmmuqXsn5TGoY/QwmnCU/YMnV74eKE2TSsn5TGoY/E83j9WQhbUQXsn5T", "BlockIndex": 4 }, ..... { "BlockToken": "yThPUAbQhb5V8xpwmnCU/YMnV74eKE2TSFY1sKP/4r05y47WETdTONyThPUA", "BlockIndex": 12890 }, { "BlockToken": "ABgBASHKD5V8xEbaRKdxdkZZS4eKE2TSFYlMG1sKP/4r05y47WEHqKaNPcLs", "BlockIndex": 12906 }, { "BlockToken": "ABgBARROGMUJo6P9X3CFHQGZNQ7av9B6vZtTTqV89QqC+SkO0HWMlwkGXjnA", "BlockIndex": 16383 } ], "VolumeSize": 8, "ExpiryTime": 1637677800.845, "BlockSize": 524288 }
  2. 尋找已從中建立您想要封存之快照的來源磁碟區。使用 describe-snapshots 命令。對於 --snapshot-id,指定您要封存的快照 ID。VolumeId 回應參數指出來源磁碟區的 ID。

    $ aws ec2 describe-snapshots --snapshot-id snapshot_id

    例如,下列命令傳回快照 snap-09c9114207084f0d9 的相關資訊。

    $ aws ec2 describe-snapshots --snapshot-id snap-09c9114207084f0d9

    以下是命令輸出,其中指出快照 snap-09c9114207084f0d9 是從磁碟區 vol-0f3e2c292c52b85c3 建立的。

    { "Snapshots": [ { "Description": "", "Tags": [], "Encrypted": false, VolumeId": "vol-0f3e2c292c52b85c3", "State": "completed", "VolumeSize": 8, "StartTime": "2021-11-16T08:29:49.840Z", "Progress": "100%", "OwnerId": "123456789012", "SnapshotId": "snap-09c9114207084f0d9" } ] }
  3. 尋找已從來源磁碟區建立的所有快照。使用 describe-snapshots 命令。指定 volume-id 篩選條件,並針對篩選條件值,指定來自上一個步驟的磁碟區 ID。

    $ aws ec2 describe-snapshots --filters "Name=volume-id, Values=volume_id"

    例如,下列命令會傳回已從磁碟區 vol-0f3e2c292c52b85c3 建立的所有快照。

    $ aws ec2 describe-snapshots --filters "Name=volume-id, Values=vol-0f3e2c292c52b85c3"

    以下是命令輸出,其中指出這些快照是從磁碟區 vol-0f3e2c292c52b85c3 建立的。

    { "Snapshots": [ { "Description": "", "Tags": [], "Encrypted": false, "VolumeId": "vol-0f3e2c292c52b85c3", "State": "completed", "VolumeSize": 8, "StartTime": "2021-11-14T08:57:39.300Z", "Progress": "100%", "OwnerId": "123456789012", "SnapshotId": "snap-08ca60083f86816b0" }, { "Description": "", "Tags": [], "Encrypted": false, "VolumeId": "vol-0f3e2c292c52b85c3", "State": "completed", "VolumeSize": 8, "StartTime": "2021-11-15T08:29:49.840Z", "Progress": "100%", "OwnerId": "123456789012", "SnapshotId": "snap-09c9114207084f0d9" }, { "Description": "01", "Tags": [], "Encrypted": false, "VolumeId": "vol-0f3e2c292c52b85c3", "State": "completed", "VolumeSize": 8, "StartTime": "2021-11-16T07:50:08.042Z", "Progress": "100%", "OwnerId": "123456789012", "SnapshotId": "snap-024f49fe8dd853fa8" } ] }
  4. 使用來自上一個命令的輸出,依照快照的建立時間 (從最早到最新) 來排序快照。每個快照的 StartTime 回應參數指出其建立時間,以 UTC 時間格式表示。

    例如,上一個步驟中傳回的快照 (依建立時間排列,從最早到最新) 如下所示:

    1. snap-08ca60083f86816b0 (最早 – 在您要封存的快照之前建立)

    2. snap-09c9114207084f0d9 (要封存的快照)

    3. snap-024f49fe8dd853fa8 (最新 – 在您要封存的快照之後建立)

  5. 識別您要封存的快照之前和之後立即建立的快照。在此情況下,您想要封存快照 snap-09c9114207084f0d9,這是在三個快照組成的快照集中建立的第二個增量快照。快照 snap-08ca60083f86816b0 是在之前立即建立,而快照 snap-024f49fe8dd853fa8 是在之後立即建立。

  6. 在您要封存的快照中尋找未參考的資料。首先,尋找在您要封存的快照之前立即建立的快照與您要封存的快照之間不同的區塊。使用 list-changed-blocks 命令。對於 --first-snapshot-id,指定在您要封存的快照之前立即建立的快照 ID。對於 --second-snapshot-id,指定您要封存的快照 ID。

    $ aws ebs list-changed-blocks --first-snapshot-id snapshot_created_before --second-snapshot-id snapshot_to_archive

    例如,下列命令會顯示區塊的區塊索引,這些區塊在快照 snap-08ca60083f86816b0 (在您要封存的快照之前建立的快照) 與快照 snap-09c9114207084f0d9 (您要封存的快照) 之間有所不同。

    $ aws ebs list-changed-blocks --first-snapshot-id snap-08ca60083f86816b0 --second-snapshot-id snap-09c9114207084f0d9

    以下顯示命令輸出,省略了一些區塊。

    { "BlockSize": 524288, "ChangedBlocks": [ { "FirstBlockToken": "ABgBAX6y+WH6Rm9y5zq1VyeTCmEzGmTT0jNZG1cDirFq1rOVeFbWXsH3W4z/", "SecondBlockToken": "ABgBASyx0bHHBnTERu+9USLxYK/81UT0dbHIUFqUjQUkwTwK5qkjP8NSGyNB", "BlockIndex": 4 }, { "FirstBlockToken": "ABgBAcfL+EfmQmlNgstqrFnYgsAxR4SDSO4LkNLYOOChGBWcfJnpn90E9XX1", "SecondBlockToken": "ABgBAdX0mtX6aBAt3EBy+8jFCESMpig7csKjbO2Ocd08m2iNJV2Ue+cRwUqF", "BlockIndex": 5 }, { "FirstBlockToken": "ABgBAVBaFJmbP/eRHGh7vnJlAwyiyNUi3MKZmEMxs2wC3AmM/fc6yCOAMb65", "SecondBlockToken": "ABgBAdewWkHKTcrhZmsfM7GbaHyXD1Ctcn2nppz4wYItZRmAo1M72fpXU0Yv", "BlockIndex": 13 }, { "FirstBlockToken": "ABgBAQGxwuf6z095L6DpRoVRVnOqPxmx9r7Wf6O+i+ltZ0dwPpGN39ijztLn", "SecondBlockToken": "ABgBAUdlitCVI7c6hGsT4ckkKCw6bMRclnV+bKjViu/9UESTcW7CD9w4J2td", "BlockIndex": 14 }, { "FirstBlockToken": "ABgBAZBfEv4EHS1aSXTXxSE3mBZG6CNeIkwxpljzmgSHICGlFmZCyJXzE4r3", "SecondBlockToken": "ABgBAVWR7QuQQB0AP2TtmNkgS4Aec5KAQVCldnpc91zBiNmSfW9ouIlbeXWy", "BlockIndex": 15 }, ..... { "SecondBlockToken": "ABgBAeHwXPL+z3DBLjDhwjdAM9+CPGV5VO5Q3rEEA+ku50P498hjnTAgMhLG", "BlockIndex": 13171 }, { "SecondBlockToken": "ABgBAbZcPiVtLx6U3Fb4lAjRdrkJMwW5M2tiCgIp6ZZpcZ8AwXxkjVUUHADq", "BlockIndex": 13172 }, { "SecondBlockToken": "ABgBAVmEd/pQ9VW9hWiOujOAKcauOnUFCO+eZ5ASVdWLXWWC04ijfoDTpTVZ", "BlockIndex": 13173 }, { "SecondBlockToken": "ABgBAT/jeN7w+8ALuNdaiwXmsSfM6tOvMoLBLJ14LKvavw4IiB1d0iykWe6b", "BlockIndex": 13174 }, { "SecondBlockToken": "ABgBAXtGvUhTjjUqkwKXfXzyR2GpQei/+pJSG/19ESwvt7Hd8GHaUqVs6Zf3", "BlockIndex": 13175 } ], "ExpiryTime": 1637648751.813, "VolumeSize": 8 }

    接下來,使用相同的命令來尋找區塊,這些區塊在您要封存的快照與之後立即建立的快照之間有所不同。對於 --first-snapshot-id,指定您要封存的快照 ID。對於 --second-snapshot-id,指定在您要封存的快照之後立即建立的快照 ID。

    $ aws ebs list-changed-blocks --first-snapshot-id snapshot_to_archive --second-snapshot-id snapshot_created_after

    例如,下列命令會顯示區塊的區塊索引,這些區塊在快照 snap-09c9114207084f0d9 (您要封存的快照) 與快照 snap-024f49fe8dd853fa8 (在您要封存的快照之後建立的快照) 之間有所不同。

    $ aws ebs list-changed-blocks --first-snapshot-id snap-09c9114207084f0d9 --second-snapshot-id snap-024f49fe8dd853fa8

    以下顯示命令輸出,省略了一些區塊。

    { "BlockSize": 524288, "ChangedBlocks": [ { "FirstBlockToken": "ABgBAVax0bHHBnTERu+9USLxYK/81UT0dbSnkDk0gqwRFSFGWA7HYbkkAy5Y", "SecondBlockToken": "ABgBASEvi9x8Om7Htp37cKG2NT9XUzEbLHpGcayelomSoHpGy8LGyvG0yYfK", "BlockIndex": 4 }, { "FirstBlockToken": "ABgBAeL0mtX6aBAt3EBy+8jFCESMpig7csfMrI4ufnQJT3XBm/pwJZ1n2Uec", "SecondBlockToken": "ABgBAXmUTg6rAI+v0LvekshbxCVpJjWILvxgC0AG0GQBEUNRVHkNABBwXLkO", "BlockIndex": 5 }, { "FirstBlockToken": "ABgBATKwWkHKTcrhZmsfM7GbaHyXD1CtcnjIZv9YzisYsQTMHfTfh4AhS0s2", "SecondBlockToken": "ABgBAcmiPFovWgXQio+VBrxOqGy4PKZ9SAAHaZ2HQBM9fQQU0+EXxQjVGv37", "BlockIndex": 13 }, { "FirstBlockToken": "ABgBAbRlitCVI7c6hGsT4ckkKCw6bMRclnARrMt1hUbIhFnfz8kmUaZOP2ZE", "SecondBlockToken": "ABgBAXe935n544+rxhJ0INB8q7pAeoPZkkD27vkspE/qKyvOwpozYII6UNCT", "BlockIndex": 14 }, { "FirstBlockToken": "ABgBAd+yxCO26I+1Nm2KmuKfrhjCkuaP6LXuol3opCNk6+XRGcct4suBHje1", "SecondBlockToken": "ABgBAcPpnXz821NtTvWBPTz8uUFXnS8jXubvghEjZulIjHgc+7saWys77shb", "BlockIndex": 18 }, ..... { "SecondBlockToken": "ABgBATni4sDE5rS8/a9pqV03lU/lKCW+CTxFl3cQ5p2f2h1njpuUiGbqKGUa", "BlockIndex": 13190 }, { "SecondBlockToken": "ABgBARbXo7zFhu7IEQ/9VMYFCTCtCuQ+iSlWVpBIshmeyeS5FD/M0i64U+a9", "BlockIndex": 13191 }, { "SecondBlockToken": "ABgBAZ8DhMk+rROXa4dZlNK45rMYnVIGGSyTeiMli/sp/JXUVZKJ9sMKIsGF", "BlockIndex": 13192 }, { "SecondBlockToken": "ABgBATh6MBVE904l6sqOC27s1nVntFUpDwiMcRWGyJHy8sIgGL5yuYXHAVty", "BlockIndex": 13193 }, { "SecondBlockToken": "ABgBARuZykaFBWpCWrJPXaPCneQMbyVgnITJqj4c1kJWPIj5Gn61OQyy+giN", "BlockIndex": 13194 } ], "ExpiryTime": 1637692677.286, "VolumeSize": 8 }
  7. 比較前一個步驟中兩個命令傳回的輸出。如果相同的區塊索引出現在兩個指令輸出中,則表示區塊包含未參考的資料。

    例如,前一個步驟中的命令輸出指示區塊 4、5、13 和 15 對快照 snap-09c9114207084f0d9 是唯一的,並且它們不會被快照關係中的任何其他快照參考。

    若要判斷標準層儲存是否減少,請將兩個命令輸出中出現的區塊數目乘以 512 KiB,也就是快照區塊大小。

    例如,如果 9,950 個區塊索引出現在兩個命令輸出中,則表示您將減少標準層儲存約 4.85 GiB (9,950 個區塊 * 512 KiB = 4.85 GiB)。

  8. 判斷將未參考區塊儲存在標準層 90 天的儲存成本。將此值與在封存層存放完整快照的成本 (如步驟 1 所述) 進行比較。假設您沒有在最短 90 天期間從封存層還原完整快照,您可以比較這些值來判斷節省的成本。如需詳細資訊,請參閱 定價和計費