SCVMMをしばらく使っているのですが、気がつくとクラスタ内の特定のホストにのみ仮想マシンが展開できない状態になってしまっていました。確認した具体的な現象は以下です。
- テンプレートから新規に仮想マシンを展開する際に特定ホストに展開すると必ず失敗する。
- 特定ホストから他のホストへの移動(Live Migration)は成功するが、逆方向の移動は失敗する。
- 問題のホスト上で稼働している仮想マシンには何も問題が無い。
発生していたエラーは以下です。
エラー (801) VMM は、VirtualHardDisk オブジェクト 3256807c-4362-45d5-8aab-bc3526ca4d44 を見つけることができません。 推奨される操作 このオブジェクトがクラウドのプライベート ライブラリ領域内に保管されている場合は、帯域外アクセスを介してオブジェクトが存在することを確認してください。それ以外の場合は、クラウド管理者に連絡してください。 このIDを持つオブジェクトが本当にあるのかどうか確認してみたのですが見つかりませんでした。どうやらSCVMMの内部レコードが壊れてしまいおかしな状況になってしまっているようです。
情報を探した所、以下のKBを見つけ、SQL分を実行した所症状は改善されました。
- [Performing an operation in Virtual Machine Manager fails with error 801](http://support.microsoft.com/kb/2756886/ja)
BEGIN TRANSACTION T1 DECLARE custom_cursor CURSOR FOR SELECT VHDId, VDriveId from dbo.tbl_WLC_VDrive WHERE [VHDId] NOT IN (SELECT VHDId from dbo.tbl_WLC_VHD WHERE VHDID IS NOT NULL) DECLARE @VHDId uniqueidentifier DECLARE @VDriveId uniqueidentifier OPEN custom_cursor FETCH NEXT FROM custom_cursor INTO @VHDId, @VDriveId WHILE(@@fetch_status = 0) BEGIN if(@VHDId is NOT NULL) DELETE FROM dbo.tbl_WLC_VDrive WHERE VDriveId = @VDriveId FETCH NEXT FROM custom_cursor INTO @VHDId, @VDriveId END CLOSE custom_cursor DEALLOCATE custom_cursor COMMIT TRANSACTION T1
実行に必要な時間はものの数秒です。
出ているエラーメッセージと解決方法にかなり乖離があるので、注意が必要です。また、このような状況になってしまうということはSCVMMに製品として問題があるという事でも有り、長く運用する中では注意が必要なようです。