はじめに
データをバックアップするためのソフトは多々ありますが、なにはともあれ静止点を作成する必要があります。
そして、アプリケーションが静止点を保持することで生じる負荷を極力少なくする技術にスナップショットがあります。
本記事では、スナップショットという用語を初めて聞いた方向けに分かりやすく説明します。
関連記事
スナップショットとは?
スナップショットの流れは以下の2ステップです。
- ディスクへの書き込みを一時停止し、メモリ上に残っているデータを全てディスクに書き出す(静止点作成)
- 静止点が確保されたデータの複製を作成する
この「データの複製を作成」する部分の方式は複数ありますが、本記事では一例としてコピーオンライト方式について説明します。
コピーオンライト?
ポイントは「論理的」なコピーを一瞬で終わらせて静止点を解除し、「物理的」なコピーをじっくり行う点です。
以下の図が論理的なコピーを可視化しています。
( https://www.atmarkit.co.jp/ait/articles/0909/07/news095_2.html より画像を抜粋 )
要は、データの実態ではなくデータを指す場所を複製し、この情報を元に静止点を解除した後にデータを物理的にコピーしていきます。
用語を統一するためにに、コピー元のディスクを本番データ、コピー先のディスクを複製データと言います。
さて、どのようなタイミングで物理コピーを行うのでしょうか。
それは、論理コピー後に本番データに変更が入る時です。
本番データが修正される前にデータを物理的に複製データとしてコピーします。この「データが更新される際に初めてデータをコピーする」という考え方がコピーオンライトです。
この方針のメリットは、物理コピーを全て待つ必要がない ことにあります。つまり、「データの書き換えは頻繁に起こるわけではない」という原則に立ち、まずは論理的にコピーし、データの書き換えが発生したタイミングで物理的にその部分のコピーを行います。
逆に、複製データの参照が行われた場合に「本番データの変更が発生していない箇所」は本番データを見に行きます。
そういった意味では、バックアップは取れていますが「本番データ」が物理的に壊れてしまうと「複製データ」も壊れてしまう危険性もあります。
まとめ
スナップショットとは静止点を保持する時間を短くするバックアップ技術であり、その中でもコピーライト方式は変化が発生したタイミングで物理コピーを行う手法です。
コピーオンライト方式にはデメリットもあり、複製データへのアクセスも実体は本番データへのアクセスになる場合がある点です。そうなると本番環境のパフォーマンスに影響が出る可能性があります。
本記事にて、スナップショットのイメージが少しでも掴めれば幸いです。