Amazon EBS スナップショットのサイズを計算する方法を教えてください。

所要時間2分
0

自分の Amazon EBS ボリュームの Amazon Elastic Block Store (Amazon EBS) スナップショットを作成しましたが、そのスナップショットによってバックアップされたデータのサイズを調べたいと考えています。

概要

Amazon EBS スナップショットは、Amazon EBS ボリュームのバックアップとなるポイントインタイムコピーを作成します。Amazon EBS スナップショットはインクリメンタルで、最新のスナップショット以降に変更されたブロックのみで構成されます。最初のスナップショットは、更新されたブロックとスナップショットの作成時に書き込まれた新しいブロックを含むフルスナップショットです。バックアップされたデータによって、Amazon EBS スナップショットのサイズとスナップショットに関連するコストが決まります。ソース Amazon EBS ボリュームのサイズによってサイズとコストが決まるわけではありません。

解決策

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

Amazon EBS Direct API を使用して、スナップショットの作成、スナップショットでのデータの読み取り、スナップショットへのデータの書き込み、2 つのスナップショットの違いを調べることができます。Amazon EBS ダイレクト API はリクエストごとに課金されます。詳細については、「Amazon EBS の料金」を参照してください。

フルスナップショットのサイズを確認する

スナップショット内のブロックのインデックスとトークンを表示するには、ListSnapshotBlocks API を使用します。この API は、1 回の呼び出しで最大 10,000 ブロックを返し、それ以降の呼び出しに使用されるトークンを返します。各ブロックは 512 KiB です。ListSnapshotBlocks によって返される最後のブロックの BlockIndex には、スナップショット内のブロック数が表示されます。ブロック数に 512 KiB を掛けた値が、フルスナップショットサイズの近似値です。

EBS スナップショットのサイズを確認するには、次の AWS CLI** list-snapshot-blocks** コマンドを実行します。

aws ebs list-snapshot-blocks --snapshot-id <snapshot id> --region <region>

このコマンドは、スナップショット内のすべてのデータブロックを、ブロックインデックスとブロックトークンとともに表示します。API はブロックの総数を直接入力できないことに注意してください。API はスナップショットの最初の 10,000 ブロックを返します。スナップショットに 10,000 個を超えるブロックがある場合、出力には NextToken が含まれます。

次の NextToken コマンドは、以降のコマンドで使用できます。

aws ebs list-snapshot-blocks --snapshot-id <snapshot id> --next-token <value> --region <region>

NextToken が出力に表示されなくなるまで、このコマンドを繰り返します。これは、API がスナップショット内のすべてのブロックのリストを完成させたことを意味します。

Size of EBS full snapshot in KiB = BlockIndex of the last block returned * 512 KiB

インクリメンタルスナップショットのサイズを調べる

以降の Amazon EBS スナップショットには、前のスナップショットから変更されたブロックと、前のスナップショット内のブロックへの参照のみが含まれます。インクリメンタルスナップショットで変更されたブロックの数がそのサイズを示します。インクリメンタルスナップショット内のユニークなブロック、または現在のスナップショットと以前のスナップショットの間で変更されたブロックを確認するには、Amazon EBS ダイレクト API ListChangedBlocks を使用してください。

インクリメンタル EBS スナップショットのサイズを確認するには、次の AWS CLI list-changed-blocks コマンドを実行します。

aws ebs list-changed-blocks --first-snapshot-id <first snapshot id> --second-snapshot-id <second snapshot id> --region <region>

このコマンドは、2 つのスナップショット間で変更されたすべてのデータブロックを、そのブロックインデックスとブロックトークンとともに表示します。返されたブロックの数を数えます。API はブロックの総数を直接入力できないことに注意してください。ブロックトークン、またはブロックインデックスに基づいて、返されるブロックの数をカウントする必要があります。API はスナップショットの最初の 10,000 ブロックを返します。スナップショットに 10,000 個を超えるブロックがある場合、出力には NextToken が含まれます。

次の NextToken コマンドは、以降のコマンドで使用できます。

aws ebs list-changed-blocks --first-snapshot-id <first snapshot id> --second-snapshot-id <second snapshot id> --next-token <value> --region <region>

NextToken が出力に表示されなくなるまで、このコマンドを繰り返します。これは、API がスナップショット内の変更されたすべてのブロックのリストを完成させたことを意味します。

データのサイズを計算するには、変更されたブロックの総数に 512 を掛けます。

Size of EBS incremental snapshot in KiB = Total number of blocks changed in the snapshot * 512 KiB

サポートツール

Amazon EBS を管理するには、フレキシブルスナップショットプロキシ Python ツールを使用してください。詳細については、AWS GitHub ウェブサイトの「フレキシブルスナップショットプロキシ」を参照してください。

関連情報

Amazon EBS スナップショット

EBS クライアント

AWS公式
AWS公式更新しました 4ヶ月前