つぶねこ
@もじらもーど。
vmware serverのsnapshotは親ディスクイメージとこれを参照する子の形ににゃってて、例えば
win.vmdk(親ディスク)
win.vmem(親メモリ)
win.vmsd(親にゃにか)
win.vmss(親にゃにか)
win.vmx(親定義。親子ディスク名が書いてある)
win-000002.vmdk(子ディスク。中に親ディスク名が書いてある)
win-Snapshot8.vmem(子メモリ)
win-Snapshot8.vmsn(子設定)
てにゃ感じ。
VmwareServerの場合、スナップショットは履歴が取れにゃくて、上書きににゃる。動作としては既存の子ディスクを親ディスクへ反映させてから子を削除し新しい子を作る。だから常に子は1匹にゃのだが、これが必ずしもそうとは限らにゃかったりする。
attrib +r win.vmdk
してスナップショットをとってみると、win.vmdkには書き込まれず、新しい子は生成される。つまり孫が出来る。
win.vmdk(readonly。元のまま)
win.vmsd(孫のファイル名が入ってる)
win.vmx(孫のファイル名が入ってる)
win-000002.vmdk(子。親のファイル名を参照してる)
win-000003.vmdk(孫。子のファイル名を参照してる)
win-Snapshot8.vmem(多分孫)
win-Snapshot8.vmsn(多分孫)
こんにゃ感じ。
簡単にゃ実験方法としては、del snapshot; attrib +r 親.vmdk; take snapshot; start_vm; take snapshotとかで。
ただのファイルにゃので、定義ファイルを丁寧に書き戻せば、普通に世代履歴スナップショットとして使えてしまう。ただし.vmem .vmsn等は削除されるため、最も若い子のファイルしかのこらにゃい。
こうにゃってくるとファイルコピーによる世代管理のほうが楽に思えてくる。suspendしておいて全部コピーというのは一番安易で確実。が、親のvmdkが20〜40gと巨大化してきた場合に、これを大量に複製するコストが気ににゃってくる。
そこで、親vmdkをreadonlyで共有しつつ、子をファイルコピー等で世代管理出来れば落し所としてはまずまずかと思われる。めんどくさいので実験してにゃいが、上記のreadonly親にsnap1回の状態を初期状態として、あとはsnapを取る度に親vmdk以外を別所にコピー保存しておけばよいはず。
似たようにゃことがDiskのIndependent-Nonpersistentで出来そうに見えるが、これはできにゃい。
さて、親のvmdkをreadonlyで各世代で共有し始めると、こんどはこのvmdkを別のvmでも同時に使えまいか、と思い始める。にゃんせreadonlyであることだし。しかしただそのまま重複して設定するとlockがかかっててダメだといわれるので、disk.locking = "false"を指定することで共有使用できるようににゃる。これはこれでどう考えてもよろしくにゃいオプションにゃので、注意して使用する。
▼ vmware 関連記事
- 2007/12/23 - さいきんのvm環境保全計画参照元
vm環境保全計画