仮想マシンの実体である仮想ハードディスク。スナップショットを作成した場合に、どのようになるか正しく理解されているでしょうか。仮想化が普及しだしたころ、なかなかイメージを掴めずにいました。同じような方の理解の役に立てばと思い、イメージ図を作りました。「透明なフィルム」がポイントです。…では、解説に移りましょう。
スナップショットとは
仮想化ソフト(VMware vSphere、Hyper-Vなど)で、仮想マシンのある時点の状態を保存するときに使うのがスナップショットです。例えば、何かのパッチをインストールする前にスナップショットを作成しておき、正常に動作しなければインストール前の状態に戻すことが出来ます。
Hyper-Vでは「チェックポイント」と呼びますが、同様のものを表しています。ここでは、Hyper-Vのチェックポイントも含めて、スナップショットと呼ぶものとします。
データファイルのイメージ
さて、スナップショットの機能は知っているけど、仮想マシンの実体である仮想ハードディスクがどのような状態になるかについては、ご存じない方が多いのではないでしょうか。下の図は、 ある時点のスナップショットを作成し、その後少しデータを変更した場合のイメージです。
単純に仮想ハードディスクが2つ出来るのではなく、変更部分のみの差分ファイルが別に作られるという点がポイントです。上の例では、スナップショット作成後に黄色の部分(999,FFF)のみ変更しており、透明なフィルムにこの変更データ部分だけを記録したものが、差分ファイルのイメージです。
最新のデータを参照する際は、図のように2つを重ね合わせたものを読み取ります。こうすることで、スナップショット作成時点のデータは保持しつつ、データを更新でき、かつデータサイズが肥大化せずに済みます。(単純に仮想ハードディスクを2つ用意すると、データサイズが非常に大きくなります)
なお、スナップショットの作成処理はほとんど時間がかかりません。これは、現在の仮想ハードディスクを凍結状態にして、新しく空の差分ファイルを用意するだけだからです。逆に処理時間がかかるのは、スナップショットの削除時で、これについては後述します。
他の処理の場合
2つ目のスナップショット作成時
スナップショットを作成した状態で、2つ目のスナップショットを作成することも出来ます。この場合、上の図のように、差分ファイルがもう一つ作られ、以降の変更分データはそちらに保存されます。データを読み取るときは、同様に3枚重ねて読むイメージになります。
スナップショット削除時
作成したスナップショットを削除すると、まず差分ファイルに保存された変更分データを、ベースの仮想ハードディスクに反映します。この処理を「統合処理」や「マージ処理」などと呼ばれ、変更分データが多いほど時間がかかります。データの反映後、差分ファイルを削除して処理は完了です。
補足
スナップショットは便利ですが、デメリットもあります。データアクセス時に、スナップショットがあると、ベースのファイルと差分ファイルをそれぞれ参照する必要があります。そのため、IOパフォーマンスが低下します。
VMware社のベストプラクティスによると、「1つのスナップショットを24時間から72時間以上にわたって使用しないでください」とあります。つまり、72時間以内には削除せよということです。
実際には72時間以上保持するケースは多いのですが、この指針にはうなづけます。というのは、用が済んだらすぐに削除しないと、そのまま忘れがちだからです。例えば、本番システムサーバーの構築時にスナップショットを作成し、消し忘れて本番運用に入ってしまうと、本来の性能を発揮できないし、削除タイミングにも困るということになってしまいます。
おわりに
今回の記事は以上です。
当サイトでは、ITインフラ関連の知識やノウハウをメインに紹介しています。下の関連記事にも役立つ情報があるかもしれませんので、ぜひご覧下さい。
また、知識やノウハウを効率的に学ぶ方法として、Udemy の「ながらセミナー」もおすすめです。三日坊主にならず、普段の生活の中でスキルアップする方法です。これについては下の記事で紹介していますので、良ければご覧下さい。
最後まで読んでいただき、ありがとうございました。
フィードバック
あなたが抱えている疑問や悩みは解決できたでしょうか?当ブログではそれを最重視しています。今後もあなたの役に立つ情報を提供するために、ぜひ教えて下さい。
コメント