ファイルシステムにおけるスナップショットとは、ストレージ中に過去のある一時点で存在したファイルとディレクトリの集合、またはその記録処理を実現する仕組みである。あるファイル・ディレクトリ群をバックアップする際に、対象中のファイルがバックアップ処理中に更新されると、ファイル・ディレクトリ相互の整合性が合わなくなる可能性がある。バックアップ処理開始近辺にバックアップされるファイルと、処理終了近辺にバックアップされるファイルとでは、各々がバックアップされる時刻が異なっているためである。更新のかかるデータベースファイルや、メールサーバのスプールフォルダなどのバックアップでは、このような時刻のずれに対処しないと不整合が起きやすい例である。そこで、ある一時点のファイル・ディレクトリの状態を統一的に保持してその内容(またはその内容から得たスナップショットデータ)をバックアップすることで、ファイル・ディレクトリ相互の時間的整合性を保つために導入される仕組みの一種が「スナップショット」である。データ保全のためのバックアップ用途以外に、スナップショットデータの有用性を生かした他の用途でも利用される。スナップショットデータを作成する際には、作成している間その対象が更新されてはならない。ただし、スナップショットデータ作成中でも対象のデータを「更新可能」な仕組みがある。原理としては「スナップショットデータ作成中はファイル・ディレクトリ更新において実データを直接更新させず、特別に用意した別の領域(ジャーナル、トランザクションログなどとも呼ばれる)にそのことを記録させ、スナップショットデータ作成中の実データの情報を固定させる。スナップショットデータ作成中に読み出しアクセスを受けた際は、実データに特別な領域の情報を加味した内容を返す。スナップショットデータ作成終了後に、実データに特別な領域に記録した更新情報を反映させる」方法などが用いられる。ファイルシステムによっては、内部的に過去のバージョンのファイルを追跡記録しており、特別な名前空間を使ってそのスナップショットにアクセスできるものもある。そのようなファイルシステムとしては、WAFL、ベル研究所のPlan 9用ファイルシステムFossil、ODS-5が挙げられる。他にもNTFSやUFS2のように、ファイルのヒストリにアクセスするためのAPIをオペレーティングシステム (OS) が備えている場合もある。スナップショットに読み書き可能なものは特に"branching snapshot"とも呼ばれる。これは、この機能が、スナップショット中のデータの枝分かれしたバージョンを暗黙のうちに作成することによる。ZFSではこの機能を"clone"と呼ぶ。Linuxを含むUnix系システムの中には、スナップショットを利用できるLVMを備えるものがある。これらは、ブロックデバイス全体に対するコピーオンライトを実装している。具体的には、変更対象のブロックをストレージの別の場所にコピーすることで実現している。これによって、矛盾のないブロックデバイスのイメージを保存することができる。このイメージ上のファイルシステムは、読み取り専用メディアとしてマウントすることもできる。ほとんどの場合において、ブロック単位でのスナップショットは、ファイルシステムレベルでサポートするスナップショットと比べて、記憶容量の点で効率が劣る。例外はZFSで、スナップショットがファイルシステムに必要不可欠な構成要素となっている。Windows XP と Windows Server 2003 以降では、NTFS ボリューム向けに(Volume Shadow copy Service、VSS) と呼ばれるスナップショット機能を提供している。OS の次の機能で主に利用されており、アプリケーションからも利用可能である。スナップショットのデータは、内部的なシャドウコピー用の「記憶域」内に記録される。差分の記録であるため、繰り返しスナップショットを取得した場合でも取得回数分に正比例して増えることはない。また、採取の際に、スナップショット個数の上限や、指定した記憶域のサイズを超える場合は、古いスナップショットデータから削除されていく。シャドウコピーの管理には、エクスプローラ、vssadmin コマンド、WMI の Win32_ShadowCopy などを用いる。スナップショットデータ内のファイルにアクセスする際には、フォルダのネットワーク共有機能(共有フォルダ)を介する。これはローカルファイルに対しても同じであり、たとえば日本標準時 (JST) 2012年8月20日 12:05:10 に採取した C:WindowsSystem32 内を参照する際は、 "\localhostC$@GMT-2012.08.20-03.05.10WindowsSystem32" といわゆるドライブの「管理共有」を介して指定する。VMWare社の各種仮想化ソリューション、Microsoft Hyper-V、Oracle VirtualBox などにおいて、仮想環境のスナップショットを採取することが可能である。過去の時点に復元させたり、スナップショットデータを複製することで別に用意された仮想環境に複製元の仮想環境の状態から動作させることが可能である。シャドウページングとログ先行書き込みはスナップショットによく似たメカニズムで、これは多くのデータベースでトランザクションを実装するために使われている。 スナップショットの考えかたは、メモリ上にしか存在しないデータ構造に対しても適用できる。例としてソフトウェアトランザクショナルメモリが挙げられる。事実上、永続データ構造はメモリ上のデータのスナップショットであると言える。バックアップソフトウェアの中にはスナップショットの機能をオプションとして別で提供しているものもある。例えばBackup Execでは、これは"Open File Option"という名前で提供されている。
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。