このページでは、スナップショットの概要、仕組み、制限事項、ベスト プラクティスについて説明します。
スナップショットの使用方法については、次のガイドをご覧ください。
- スナップショットを使用してデータの状態を保持する
- スナップショットからファイルを復元する
- ファイル共有を以前のスナップショットに戻す
- Filestore Enterprise のスナップショットのスケジュールを設定する
スナップショットとは?
Filestore のスナップショットとは、スナップショットが作成された時点でのファイル共有データを保存した状態のことです。インスタンスでは、スナップショットの作成後に変更されたファイルの状態が維持されます。ファイルをスナップショットに保存された状態へ復元する場合は、関連するスナップショット ディレクトリのファイルで現在のファイルを上書きします。
スナップショットは、Filestore インスタンス内に保存され、インスタンスの子リソースです。インスタンスのデータが変更されるまで、データの複製や容量の消費は発生しません。インスタンスのすべてのスナップショットでは、共通のデータが共有されます。つまり、インスタンスにはスナップショット間の違いのみが保持されます。
スナップショットは、他の Filestore データ復元オペレーションと比較するとコスト効率が優れていますが、ファイルが変更されるたびに、使用可能なインスタンス容量は継続的に減少します。
スナップショットの作成
ファイル共有のすべてのディレクトリには、非表示の .snapshot
ディレクトリが含まれています。各 .snapshot
ディレクトリには、作成した親ディレクトリのスナップショットが含まれます。次に例を示します。
volume1/
│ genomics-file.txt
│
└───.snapshot
│
├───snap1/
│ genomics-file.txt
│
├───snap2/
│ genomics-file.txt
│
└───snap3/
genomics-file.txt
スナップショットには、スナップショットの作成時に親ディレクトリ内に存在するすべてのファイルとサブディレクトリの読み取り専用ビューが含まれます。すべてのファイル属性(atime
、ownership
、読み取り/書き込み権限など)は保持されます。
スナップショットの作成はデータのコピーを伴わないため、通常 2 分もかかりません。また、インスタンスのパフォーマンスにも影響しません。
一度に作成できるスナップショット数は、インスタンスごとに最大 240 個です。ファイル共有名とスナップショット名は、合わせて最大 78 文字です。
スナップショットの整合性
Filestore スナップショットには、NFSv3 整合性セマンティクスがあります。スナップショットが開始される前に、Filestore インスタンスが安定したストレージに書き込まれたものと認識した書き込み、または後に確認済みの COMMIT
が続く書き込みは、スナップショットに追加されます。詳細については、NFSv3 RFC-1813 のセクション 3.3.7 をご覧ください。
最適なスナップショット整合性を確保するため、ファイル共有を準備する
スナップショットの品質は、大量の書き込みワークロード中に作成されたスナップショットから復元するアプリケーションの能力によって決まります。ほとんどの場合、アプリケーションがファイル共有にデータを書き込んでいる間でも、優れた整合性を持つスナップショットを作成できます。ただし、アプリケーションで厳密な整合性が求められる場合は、次のうち 1 つ以上を行うことをおすすめします。
- sync マウント オプションを使用するか、
O_DIRECT|O_SYNC
でファイルを開きます。どちらの方法でも整合性は改善されますが、保証はされません。 - ファイル共有にデータを書き込むアプリケーションまたはオペレーティング システム プロセスを一時停止し、スナップショットを開始する前にファイル共有に対する変更をフラッシュする。詳細については、fsync(2) をご覧ください。
- アプリケーションで複数の共有間の整合性が求められる場合は、すべてのアプリケーションに書き込む全インスタンスの全アプリケーションを一時停止し、すべてのファイル共有のスナップショットを作成してから、アプリケーションを再開する。
- アプリケーション レベルの整合性が必要な場合は、スナップショットを作成する前に、アプリケーションを停止して、ファイル共有のマウントを解除する。
.snapshot
ディレクトリの NFS セマンティクス
.snapshot
ディレクトリは、親ディレクトリで撮影されたスナップショットを格納する特別な非表示ディレクトリです。次の例外を除き、すべての NFS コマンドと bash コマンドがこれらのディレクトリで機能します。
.snapshot
という名前のファイルやディレクトリは、スナップショット用に予約されているため作成できません。.snapshot
ディレクトリは、READDIR
コマンドまたはREADDIRPLUS
コマンドの出力にも、ls -a
bash コマンドの出力にも一覧表示されません。.snapshot
ディレクトリに変更するには、.snapshot
文字列を明示的に入力する必要があります。例:cd somedir/.snapshot/
- シェルコマンドの予測入力では、
.snapshot
がオプションとして一覧表示されません。
スナップショットに取り込まれたファイルを削除する
スナップショットに取り込まれたファイルを削除しても、インスタンスの空きディスク容量は増加しません。
スナップショットの状態に戻す
インスタンスをスナップショットの状態に戻すことができるのは、通常、ゾーン、高スケール SSD、リージョン、エンタープライズのインスタンスのみです。
スナップショットに取り込まれている状態へインスタンスを戻すと、そのスナップショットの作成後に書き込まれたすべての新しいデータは削除され、復元できなくなります。対象スナップショットの後に作成されたスナップショットは、元に戻す処理によっても削除されます。
機能の制限事項
スナップショットに戻す機能は、元に戻せないオペレーションであり、ライブ ファイル システムからデータが削除され、チェーン内の後続の新しいスナップショットごとに削除されます。そのため、誤ってデータを失うリスクが高くなります。これは、バックアップからの復元とは動作が大きく異なります。バックアップからの復元では、バックアップは使用後に現在の状態のまま残るため、複数のバックアップから復元して最適なものを見つけることができます。元に戻す機能は慎重に使用してください。
ターゲット スナップショットの作成後に書き込まれたすべてのデータは、最初に削除され、復元はできません。対象スナップショットより新しいスナップショットもすべて削除されます。たとえば、
snapshot1
、snapshot2
、snapshot3
は順番に作成されます。インスタンスをsnapshot2
でキャプチャした状態に戻すということは、snapshot2
の後に書き込まれたすべてのデータと、snapshot2
の作成後に取得されたすべてのスナップショットが、元に戻すプロセスで削除されることを意味します。削除されたデータのクリーンアップには、6 時間から 10 日ほどかかることがあります。この間、インスタンスの容量とパフォーマンスに影響が出る可能性があります。
インスタンスをスナップショットの状態に戻すと、NFS ファイルシステム ID(fsid)が更新されます。既存のマウントを使用してクライアントにアクセスしようとすると、古いファイルの操作エラーが返されます。ベスト プラクティスとして、元に戻すオペレーションの前に、インスタンスからすべてのクライアントをマウント解除し、完了したら再マウントすることをおすすめします。
元に戻すオペレーションは、完了するまでに最大 2 分かかることがあります。
- チェーン内の後続のスナップショットの削除など、元に戻すオペレーションに関連するクリーンアップは、関係するファイルの数に応じて、完了するまでに 6 時間から 10 日かかる場合があります。
- 元に戻すオペレーションの実行中とクリーンアップの完了中は、他のオペレーションを実行できます。
- 別の元に戻すオペレーションを開始する前に、元に戻すオペレーションが完了するまで待つ必要があります。
スナップショットとそれに関連する
revert
オペレーションは、ほとんどのサービス階層で使用できます。スナップショットは、基本 SSD サービス階層と基本 HDD サービス階層では使用できません。1 つの共有を持つインスタンスのみをスナップショットの状態に戻すことができます。
スナップショットはエンタープライズ サービス階層でサポートされていますが、Filestore マルチシェア機能と組み合わせることはできません。
次のステップ
- スナップショットを作成および管理する方法を学習する。
- バックアップについて学習する。