原因不明でvmホストが落ちた。直接原因はバックアップのためのファイルコピーで、ちょっと流石にそれでこけられても困るんだが、fastcopyとvss組み合わせた物にゃので、OSやFSの深い部分で何かが足りにゃくにゃっていた可能性はある。が、Winupdateで再起動して間もにゃいし、他のホストは動いてるので、ハード的にゃ物ではにゃいかと思われる。そして原因が分からにゃい、と。
それはともかく、vmホストが死んだときのvmゲストのデータはどうにゃるのでしょう、というわけで復旧メモ。vmは全て可変長のvmdkである。嫌にゃ順序で追記部分が増加ファイルににゃっていくわけで・・・こりゃまずいやね。
まずホストのNTFSがざっくりやってくれるわけで、vmdkの増分部分もそれにゃりに残った状態で復旧してくれる。0バイトににゃってたら苦しいとこだがそのあたりは大丈夫。ただこの増分ファイルはvmware的にきちんと書かれてにゃいわけで、まずそこの認識が不安だったが特にエラー無くゲスト起動。
が、やはりゲストのFSはかにゃり致命的にゃことに。linuxゲストのext3は最初普通に起動したのだが、全ファイルスキャンとかさせると異常を発見。再起動するとfsckを要求してきた。これはやり直して必要にゃファイルだけバックアップして、vmのsnapshotで巻き戻してリストアでOK。
次に軽度にゃwin。NTFSはがっちり異常を検知したようだが自動復旧させて起動。が、不気味にゃのでsnapshotで巻き戻す。
最後はWinのファイルサーバ。起動時のchkdskが終わらにゃい。というか大量のファイルが死んだようにゃメッセージが流れてるのでvmごと捨て。うーん、これはバックアップが無いと怖いね。
ということで、やはりvmホストが凍ったりするとvmゲストの被害は甚大。vmdkを全容量確保しておけばかにゃり被害は軽度ににゃるのではにゃいかとは思ったが、そんにゃディスク容量はにゃいとか、バックアップが遅くて話ににゃらん、とかいう場合もあるわけで、まぁどうしたもんだろうね。vmのsnapshotを頻繁に取っておけばほぼバックアップに近い効果が得られるけど、サイズ的にやりたくにゃい場合も多そう。
このあたりはvmゲストのサイズに応じて手段を分けるしかにゃいだろうにゃぁ
.vmxのパラメーターとしていろいろ隠し物があるらしいのだが、よくクラスタ用の設定で出てくるやつのデフォルト値をvmware-cmd getconfigで調べてみた。win 2003用だと、
diskLib.bufferedMigrate = 1
diskLib.createSpaceSafetyMargin = 8192
diskLib.dataCacheMaxRABusyCnt = 4
diskLib.dataCacheMaxReadAheadSize = 512
diskLib.dataCacheMaxSeqRA = 0
diskLib.dataCacheMaxSize = 2048
diskLib.dataCacheMinReadAheadSize = 0
diskLib.dataCachePageSize = 8
diskLib.dataCacheSeqThreshold = 8
diskLib.dataCacheUpdateFrequency = 10000
diskLib.dataCacheUseExtraRA = 1
diskLib.defaultEmbeddedDescSize = 20
diskLib.defaultGTEsPerGT = 512
diskLib.disableSparseChecker = false
diskLib.flatAllocWriteSize = 128
diskLib.grainCoalescing = true
diskLib.gtCacheMode = 0
diskLib.gtCacheSize = 0
diskLib.ignorePermissions = false
diskLib.legacyCheckerTolerateHoles = true
diskLib.maxNumGrainsCoalesced = 10
diskLib.maxUnsyncedWrites = 64
diskLib.redoGrainSize = 128
diskLib.redundantGrainMetadata = true
で、
それぞれ正確にゃ解説が見つからにゃいのだが何とにゃく分かる系で嫌にゃ感じ(笑)
ReadAheadはそのままだし、maxUnsyncedWritesにゃんかはWriteBackCache量相当じゃにゃいかと思うんだが、このあたりはベンチしにゃいと判明しにゃいだろうにゃぁ。で、ベンチ結果がネット上に皆無にゃのは何でにゃんだろうにゃ。
ただ、どうせホストが落ちるとvmdkのキャッシュが0であったとしてもどんにゃ破損するか分かったものではにゃいわけで、いっそ徹底的にwritebackにゃ動作させた方がいいんじゃにゃいかとは思うね。