スナップショットは、ディスクのある時点のデータバックアップです。スナップショットを使用すると、スナップショットが作成された時点の状態にディスクを復元できます。このトピックでは、スナップショットの作成、アーカイブ、削除のプロセスについて説明します。また、スナップショットのサイズがどのように計算されるか、およびディスク容量との関係についても説明します。
スナップショット作成の仕組み
必要に応じて、ディスクのスナップショットを作成したり、自動スナップショットポリシーを作成したりできます。
仕組み
スナップショットは、ストレージシステムでデータを管理するための基本単位であるブロックを、データバックアップの最小粒度として使用します。スナップショットは、完全スナップショットと増分スナップショットに分類されます。ディスクに対して作成する最初の標準スナップショットは完全スナップショットであり、その時点のディスク上のすべてのデータをバックアップします。その後の標準スナップショットは増分スナップショットです。これらは、前回のスナップショットが作成されてから変更 (新規または変更) されたブロックのみをバックアップします。この方法により、必要なストレージ領域が削減され、スナップショットのストレージコストが節約されます。増分スナップショットにはディスクのすべてのデータが含まれているわけではありませんが、スナップショットチェーン内の前のスナップショットから変更されていないデータを参照します。これにより、任意のスナップショットを使用してディスクをロールバックし、そのスナップショットが作成された時点の状態にすべてのデータを復元できます。
スナップショットが作成されると、デフォルトで Object Storage Service (OSS) に保存されます。この OSS バケットはユーザーには表示されません。スナップショットを OSS に保存することで、長期的なデータセキュリティと柔軟な回復が保証されます。お客様が作成した OSS バケットを使用してスナップショットデータを保存することはできません。
例
ECS インスタンスにディスクがあり、10:00 と 11:00 にデータが変更され、新しいデータが書き込まれるとします。次の例では、このディスクのスナップショットがどのように機能するかを説明します。
9:00 の時点で、ディスクにはデータブロック A と B が含まれています。最初のスナップショットであるスナップショット 1 を作成します。これは、ブロック A と B をバックアップする完全スナップショットであり、その時点のディスク上のすべてのデータを保存します。
ディスクにさらにデータが書き込まれ、ブロック B が B1 に変更されます。10:00 に、2 番目のスナップショットであるスナップショット 2 を作成します。これは、変更されたブロック B1 のみをバックアップする増分スナップショットです。変更されていないブロック A はバックアップされません。代わりに、スナップショット 1 から参照されます。
さらにデータが書き込まれ、新しいブロック C が追加されます。11:00 に、3 番目のスナップショットであるスナップショット 3 を作成します。これは、新しいブロック C のみをバックアップする増分スナップショットです。変更されていないブロック A と B1 はバックアップされません。代わりに、ブロック A はスナップショット 1 から参照され、ブロック B1 はスナップショット 2 から参照されます。
このプロセスは、後続のスナップショットでも同様に続きます。
スナップショットのアーカイブの仕組み
仕組み
頻繁にアクセスする必要はないが、長期間保持する必要がある標準スナップショットをアーカイブできます。アーカイブすると、それらはアーカイブスナップショットに変換され、ストレージコストが削減されます。アーカイブスナップショットは、完全モデルと増分モデルを使用してデータを保存します。ディスクのスナップショットチェーンで最初にアーカイブされたスナップショットは、完全なアーカイブスナップショットになります。同じディスクの後続のアーカイブスナップショットは増分です。これらはこの完全なアーカイブスナップショットに基づいており、前回のアーカイブスナップショットが作成されてから変更されたブロックのみをバックアップします。詳細については、「スナップショットのアーカイブ」をご参照ください。
例
例 1: ディスクの唯一のスナップショットをアーカイブする
ディスクに標準スナップショットが 1 つしかないとします。このスナップショットをアーカイブすると、結果として得られるアーカイブスナップショットは、元の標準スナップショットと同じサイズになります。操作後、ディスクにはアーカイブスナップショットが 1 つだけになり、標準スナップショットのサイズはゼロになります。
例 2: ディスクの増分スナップショットをアーカイブする
ディスクに 3 つの標準スナップショットがあるとします。次に、増分スナップショット 2 と増分スナップショット 3 をアーカイブします。
標準スナップショット 2 をアーカイブすると、完全なアーカイブスナップショットに変換されます。これには、標準スナップショット 2 のすべてのデータが含まれます。つまり、アーカイブされたスナップショット 2 にはブロック A と B1 が含まれます。アーカイブ前、標準スナップショット 2 のブロック B1 は標準スナップショット 3 によって参照されていました。そのため、ブロック B1 は保持され、標準スナップショット 3 に関連付けられます。
後で、標準スナップショット 3 をアーカイブすると、増分アーカイブスナップショットになります。これには増分データであるブロック C のみが含まれます。変更されていないブロック A と B1 はバックアップされません。これらは、アーカイブされたスナップショット 2 から参照されます。
このプロセスは、後続のスナップショットでも同様に続きます。
アーカイブ後、ディスクには 2 つのスナップショットチェーンがあります。1 つの標準スナップショットを持つ標準スナップショットチェーンと、2 つのアーカイブスナップショットを持つアーカイブスナップショットチェーンです。
スナップショット削除の仕組み
スナップショットが不要になった場合、またはスナップショットの数がクォータを超えた場合は、スナップショットを削除してストレージ領域を解放できます。詳細については、「スナップショットの削除」をご参照ください。
各ディスクの手動、自動、およびアーカイブスナップショットのクォータの詳細については、「制限」をご参照ください。
仕組み
増分スナップショットにはディスクのすべてのデータが含まれているわけではありませんが、チェーン内の前のスナップショットから変更されていないデータを参照します。つまり、スナップショットを削除した後でも、残りのスナップショットのいずれかを使用して、そのスナップショットが作成された時点の状態にディスクを復元できます。
例
ECS インスタンスに、スナップショット 1、スナップショット 2、およびスナップショット 3 が作成されたディスクがあるとします。各スナップショットのデータブロックは次のとおりです。
スナップショット 1: データブロック A と B を含む完全スナップショット。
スナップショット 2: 増分データであるブロック B1 のみを含む増分スナップショット。変更されていないブロック A はバックアップされません。代わりに、スナップショット 1 から参照されます。
スナップショット 3: 増分データであるブロック C のみを含む増分スナップショット。変更されていないブロック A と B1 はバックアップされません。代わりに、ブロック A はスナップショット 1 から参照され、ブロック B1 はスナップショット 2 から参照されます。
例 1: ディスクの完全スナップショットを削除する
完全スナップショット 1 を削除すると、チェーン内の次のスナップショットであるスナップショット 2 が完全スナップショットになります。スナップショット 2 はスナップショット 1 からブロック A を参照するため、ブロック A は保持され、スナップショット 2 にマージされます。スナップショット 1 に固有のブロック B は削除されます。スナップショット 3 の場合、ブロック A の参照はスナップショット 2 に変更されますが、ブロック B1 の参照は変更されません。
例 2: ディスクの増分スナップショットを削除する
増分スナップショット 2 を削除すると、システムはデータ参照を管理します。スナップショット 2 はスナップショット 1 からブロック A を参照し、スナップショット 3 はスナップショット 2 からブロック B1 を参照します。したがって、スナップショット 2 を削除すると、スナップショット 2 からブロック A への参照は削除され、ブロック B1 は保持されてスナップショット 3 にマージされます。
スナップショットサイズの計算方法
仕組み
ディスクの合計スナップショットサイズは、そのディスクのすべてのスナップショット間の関係のチェーンであるスナップショットチェーンに基づいて計算されます。サイズは、現在のすべてのスナップショットのデータブロックが占めるストレージ領域を測定することによって計算されます。一部のスナップショットをアーカイブすると、ディスクには標準スナップショットチェーンとアーカイブスナップショットチェーンの 2 つのスナップショットチェーンができます。システムは、各チェーンのサイズに基づいて、標準スナップショットとアーカイブスナップショットのストレージ料金を個別に計算します。詳細については、「スナップショットチェーンごとに単一ディスクのスナップショットサイズを表示する」および「スナップショットの課金」をご参照ください。
スナップショットチェーンに基づくスナップショットサイズの計算には、数分の遅延が生じる場合があります。実際の料金については、請求書をご参照ください。
次の概念は、スナップショットのサイズに関連しています。
スナップショットの完全サイズ: 単一のスナップショットのすべてのデータブロックが占める合計ストレージ領域。
スナップショットの増分サイズ: 同じスナップショットチェーン内の現在のスナップショットと前のスナップショットで異なるデータブロックが占めるストレージ領域。
合計スナップショットサイズ: 最初のスナップショット (完全スナップショット) の完全サイズと、チェーン内の後続のすべての増分スナップショットの増分サイズの合計。
スナップショットサイズの計算例
ディスクの容量が 100 GiB で、30 GiB のデータが書き込まれているとします。10:00 と 11:00 にデータが変更され、新しいデータが書き込まれます。次の例では、このディスクのスナップショットサイズがどのように計算されるかを説明します。
標準スナップショット 1: 9:00 の時点で、ディスクには 30 GiB のデータが含まれています。最初の標準スナップショットであるスナップショット 1 を作成します。これは、ディスク上のすべてのデータをバックアップする完全スナップショットです。その完全サイズは 30 GiB です。
標準スナップショット 2: ディスクにさらに 10 GiB のデータが上書きされます。10:00 に、2 番目の標準スナップショットであるスナップショット 2 を作成します。これは、変更された 10 GiB のデータのみをバックアップする増分スナップショットです。他の 20 GiB の変更されていないデータはバックアップされません。代わりに、標準スナップショット 1 から参照されます。
標準スナップショット 3: さらに 10 GiB の新しいデータがディスクに書き込まれ、ディスク上の合計データは 40 GiB になります。11:00 に、3 番目の標準スナップショットであるスナップショット 3 を作成します。これは、標準スナップショット 2 が作成されてから変更された 10 GiB のデータのみをバックアップする増分スナップショットです。30 GiB の変更されていないデータはバックアップされません。この変更されていないデータのうち、20 GiB は標準スナップショット 1 から参照され、10 GiB は標準スナップショット 2 から参照されます。
これら 3 つの標準スナップショットは、ディスクの標準スナップショットチェーンを形成します。アーカイブ前の合計標準スナップショットサイズは次のように計算されます。完全な標準スナップショット 1 + 増分標準スナップショット 2 + 増分標準スナップショット 3 = 50 GiB。
スナップショット 2 とスナップショット 3 をアーカイブするとします。これら 2 つのアーカイブスナップショットは、ディスクのアーカイブスナップショットチェーンを形成します。
アーカイブスナップショット 2: すべてのデータをバックアップする完全スナップショット。その完全サイズは 30 GiB です。
アーカイブスナップショット 3: 変更された 10 GiB のデータのみをバックアップする増分スナップショット。30 GiB の変更されていないデータはバックアップされません。代わりに、アーカイブスナップショット 2 から参照されます。
アーカイブ後、ディスクには 2 つのスナップショットチェーンがあります。
合計アーカイブスナップショットサイズ = 完全アーカイブスナップショット 2 + 増分アーカイブスナップショット 3 = 40 GiB
合計標準スナップショットサイズ = 完全標準スナップショット 1 = 30 GiB
サイズを比較すると、アーカイブ後の合計スナップショットサイズは 20 GiB 増加しています。ディスクのスナップショットの一部のみをアーカイブしても、コストが削減されない場合があります。すべてのスナップショットをアーカイブする前後の詳細なコスト比較については、「スナップショットのアーカイブ」をご参照ください。
スナップショットサイズとディスク容量の関係
ディスクの単一のスナップショットのサイズは、ディスクの容量を超えません。ただし、作成するスナップショットが増えるにつれて、すべてのスナップショットの合計サイズがディスクの容量よりも大きくなる可能性があります。
たとえば、40 GiB のディスクを作成し、それに 30 GiB のデータを書き込むとします。この時点で作成するスナップショットは 30 GiB です。後で、そのデータを別の 30 GiB のデータで上書きし、2 番目のスナップショットを作成します。ディスク容量は依然として 40 GiB ですが、30 GiB のデータが変更されたため、ディスクの合計スナップショットサイズは 60 GiB になり、ディスク容量よりも大きくなります。
スナップショットチェーンを使用して、単一ディスクの容量とそのスナップショットサイズを表示できます。詳細については、「スナップショットチェーンごとに単一ディスクのスナップショットサイズを表示する」をご参照ください。次の図では、① はディスク容量を示し、② はディスクのすべてのスナップショットの合計サイズを示します。

スナップショットサイズとシステム容量の違い
スナップショットは、データバックアップの最小粒度として固定サイズのデータブロックを使用します。スナップショットサイズは、これらのデータブロックに基づいて計算されます。
ディスク上のファイルを削除すると、オペレーティングシステムによって表示される使用可能な容量が増加します。ただし、ほとんどのファイルシステムでは、ファイルを削除すると削除済みとしてマークされるだけで、対応するデータが物理的に消去されるわけではありません。ディスクの観点から見ると、ファイルの削除はメタデータを変更する書き込み操作です。この操作では、ディスク上のデータが実際に占有する領域は減りません。この時点でスナップショットを作成すると、スナップショットには削除されたファイルのデータブロックがまだ含まれています。このデータは、ファイルシステムが TRIM コマンドなどを使用してファイルを物理的に削除した場合にのみ削除されます。
システムディスクに積極的に書き込みを行わなくても、スナップショットのサイズが増加することがあります。これは、オペレーティングシステムが実行時にシステムファイルを生成するためです。これらのファイルはディスクに書き込まれ、スナップショットにバックアップされます。
スナップショットのサイズは、ディスクに書き込むデータの量よりわずかに大きい場合があります。これは、ファイルシステムのメタデータもディスク上の領域を占有するためです。スナップショットのデータブロックには、実際に書き込んだデータに加えて、このメタデータが含まれます。たとえば、ディスク上に 1 MB のテキストファイルを作成した場合、バックアップされたデータのサイズは、ファイルシステムのメタデータが含まれるため、1 MB よりわずかに大きくなります。