■Hyper-V のゲスト OS の基本的な構成
?
まずは、Hyper-V のゲスト OS の基本的な構成のおさらいを。
Hyper-V のゲスト OS を作成すると以下のファイルが作成されます。
拡張子 | 内容 |
VHD | ゲスト OS で使用している仮想ハードディスクファイル |
XML | 構ゲスト OS の構成が記載されている構成ファイル |
BIN ※ | ゲスト OS の保存時に使用される、メモリ情報を保存するファイル ゲスト OS に割り当てられているメモリと同一量のファイルが作成される |
VSV ※ | ゲスト OS の保存時に使用される、CPU のプロセス状態を保存するファイル |
※ 起動時にファイルが作成されます。
ファイルの構成は以下のようになります。
# SCVMM 2008 R2 で作成した時の状態です。
?
■スナップショットを取得
?
それではスナップショットを取得してみます。
スナップショットを取得すると、スナップショットツリーが作成されます。
スナップショットを取得するとファイルの構成は以下のようになります。
スナップショットは [差分 HD] が使用されますので、スナップショットを取得したタイミングで [AVHD ファイル] が作成されます。
現在の状態は、作成された AVHD ファイルが使用されるようにゲスト OS が構成されることになります。
# スナップショット 1 はルートのスナップショットツリーになりますので、スナップショット 1 で設定されている、仮想ハードディスクは 差分ではなく、オリジナルの VHD ファイルが設定された状態になっています。
また、[Shanshots] ディレクトリが作成され、その中に構成ファイル等が作成されます。
この時に BIN と VSV も Snapshots ディレクトリに作成されるのですが、このファイルがスナップショット取得時のメモリと CPU の内容になります。
もう一度スナップショットを取得すると以下の構成になります。
新規に取得したスナップショットが以下の図で [スナップショット 2] として記載しているものになります。
仮想ハードディスクに関しては新規に AVHD が作成され、新規に作成された AVHD が現在の状態で使用されます。
それまで使用していた AVHD が取得したスナップショットで設定されている、仮想ハードディスクになります。
スナップショットが取得されるまでに使用されていた差分の仮想ハードディスクと、CPU / メモリの状態を復元することで、スナップショット取得時点の状態が復元されることになります。
スナップショットツリーの状態はこのようになります。
このファイル構成は以下のようなスナップショットツリーを作成した場合でも変わりません。
■スナップショットの削除と結合について
?
以下のようなスナップショットを取得した状態にします。
この場合、各スナップショットと、AVHD の関係は以下のようになります。
一階層目のスナップショットに関しては、VHD + AVHD となり、2 階層目以降は、AVHD + AVHD となります。
現在は、スナップショット 1-3-1 の下になっているので、ディスクに関しては、1-3-1 の AVHD を親としてた差分ディスクが使用されています。
ここで、[スナップショット 1-3-1] を削除してみます。
スナップショットを削除すると、このようなスナップショットツリーとなります。
スナップショットを削除すると、スナップショット 1-3-1 で使用されている BIN / VSV とディレクトリが削除されます。
ただし、現在の状態の VHD に関しては、OS が起動中のため構成に変化はありません。
スナップショットを削除後にゲスト OS をシャットダウン (停止でも) すると AVHD の結合 (マージ) 処理が実行されます。
# ゲスト OS 上で再起動 / リセットでは結合は実行されません。
今回の場合では、親ディスクとして使用していたスナップショット 1-3-1 の AVHD にそれまで (現在) 使用していた AVHD の内容がマージされます。
そうするとスナップショットの状態は以下のようになります。
?
スナップショットを削除した場合、一度シャットダウンをしないと結合が行われないという点がスナップショット削除時の注意点ですね。
差分ハードディスクの内容が多いと、シャットダウン時の結合処理にもかなりの時間がかかりますので。
スナップショットのディスクの親子関係ですが、スナップショットの設定を開いて、対象のディスクの [検査] を実行することで確認できます。
設定はスナップショットだけでなく、スナップショットツリーで [現在] となっているものに対しても確認ができます。
?
現在起動中の状態がどのディスクを使って起動されているかを確認することも可能です。
一から勉強しようと思ったのですが、あまりうまくまとめられていないですね…。
あらためてスナップショットを勉強してみたのですが、差分ハードディスクの状態を文章にまとめることが難しく、きちんと理解できていないんだな~と実感しました。
ルートを 2 つにしてみたり、スナップショットツリーの途中を消した場合の動作に関しても勉強する必要があると思いますので、これに関しては別の投稿としてまとめていきたいと思います。
はじめまして.. でも、どこかで書き込みしてたかも..
綺麗な図ですね.. 素敵です..
Hyper-V snapshot は、 ツリーの途中を削除すると、ツリーに現れない(未結合の)avhdが残ることがあります。
VM動作中だったり、枝分かれの幹を削除したときとか。
削除時は、
枝のavhd差分が幹のavhdに結合されたあと、枝のavhdが削除されて、(結合後の)幹のavhdが枝の一部として保持される。
みたいなイメージでしょうか。
avhdファイルの余分な名前変更やコピーなどせずにすむので、これはこれでうまく実装されていると思います。
あと、これは、実験環境以外ではやらないほうがいいですが..
根元(ルート)から枝分かれして、その根元を削除して、さらに現在の親にある幹を全部削除すると、面白いものが見れますよ..
knoji
5 10月 10 at 03:39
knoji さん。
とても参考になるコメントありがとうございます。
以前、LiveSpaces で同名のブログを公開していた際に、投稿にコメントをいただいておりました。
今後ともよろしくお願いいたします。
ルートの根元を削除まではやったことがあるのですが、現在の親の幹を削除したことはなかったので今度実験してみたいと思います。
(どんな動作になるのか、わくわく)
Masayuki.Ozawa
5 10月 10 at 07:36