スナップショット (ファイルシステム)

ファイルシステムにおけるスナップショット



ファイルシステムにおけるスナップショットとは、ストレージ上に存在する特定の時点のファイルやディレクトリの状態を記録する仕組みです。この技術は、データのバックアップや復元、システムの保護など、多岐にわたる用途で利用されています。

スナップショットの目的



バックアップ処理中にファイルが更新されると、ファイル間の整合性が損なわれる可能性があります。例えば、データベースファイルやメールサーバーのスプールフォルダなど、更新頻度の高いデータをバックアップする場合、処理開始時と終了時でデータの状態が異なるため、不整合が生じやすくなります。スナップショットは、ある時点のファイルシステムの状態を固定し、その時点のデータをバックアップすることで、このような時間的な不整合を回避します。

スナップショットの仕組み



スナップショット作成中は、対象データの更新を一時的に別の領域(ジャーナルトランザクションログ)に記録し、実データの状態を固定します。これにより、スナップショット作成中のデータの変更を管理し、整合性を保つことができます。スナップショット作成中にデータへの読み出し要求があった場合は、実データに加えて、記録された変更情報も加味したデータが返されます。スナップショット作成が完了した後に、記録された変更情報が実データに反映されます。

スナップショットの種類



スナップショットには、ストレージレベルとファイルシステムレベルの2種類があります。

ストレージレベルのスナップショット: LVMやZFSなどのボリューム管理システムで作成されるスナップショットで、ファイルシステムの種類に関わらず利用できます。ただし、ストレージへの書き込みキャッシュの影響を受けやすいため、システムをアンマウントした状態でのみ整合性の取れたイメージを作成できます。専用ツールを使用することで、OSのバッファをフラッシュし、書き込みを一時停止した状態でスナップショットを作成できます。
ファイルシステムレベルのスナップショット: ZFS、UFS、NTFSなどのファイルシステムが提供するスナップショット機能です。ストレージ効率が高く、キャッシュ上のデータもスナップショットの対象となるため、整合性の問題は発生しにくいです。ただし、スナップショットに対応したファイルシステムである必要があります。

スナップショット機能の拡張



一部のファイルシステムでは、過去のファイルバージョンを内部的に追跡記録し、特定のスナップショットにアクセスできます。WAFL、Fossil、ODS-5などがその例です。また、NTFSやUFS2のように、ファイルの履歴にアクセスするためのAPIをOSが提供している場合もあります。読み書き可能なスナップショットは、特に「branching snapshot」と呼ばれ、ZFSでは「clone」として知られています。

実装例



Unix系システム: Linuxを含むUnix系システムでは、LVMを利用してブロックデバイス全体のコピーオンライト方式のスナップショットを作成できます。これにより、矛盾のないブロックデバイスイメージを保存できます。ZFSのように、ファイルシステム自体がスナップショット機能をサポートしている場合もあります。
Windowsのファイルシステム: Windowsでは、ボリュームシャドウコピーサービス(VSS) を利用してNTFSボリュームのスナップショットを作成できます。これは、バックアップと復元、以前のバージョンの復元、システムの復元ポイントなどの機能で利用されています。スナップショットデータは差分記録であり、シャドウコピー用の記憶域に保存されます。
* プラットフォーム仮想化システム: VMwareHyper-V、VirtualBoxなどの仮想化システムでは、仮想環境のスナップショットを作成できます。これにより、仮想環境の状態を過去の時点に戻したり、複製したりできます。

スナップショットの応用



スナップショットの考え方は、データベーストランザクション処理や、ソフトウェアトランザクショナルメモリのようなメモリ上のデータ構造にも適用できます。バックアップソフトウェアでは、スナップショット機能をオプションとして提供しているものもあります。

まとめ



スナップショットは、ファイルシステムのデータを効率的に管理し、整合性のある状態を保つための重要な技術です。データのバックアップだけでなく、システムの復旧や仮想環境の管理など、幅広い用途で活用されています。ストレージレベルとファイルシステムレベルのスナップショットの違いを理解し、適切な場面で利用することが重要です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。