SCVMMで管理されている特定のホストに仮想マシンを展開(移動)できない「VMM は、VirtualHardDisk オブジェクト xxxx を見つけることができません。」

SCVMMをしばらく使っているのですが、気がつくとクラスタ内の特定のホストにのみ仮想マシンが展開できない状態になってしまっていました。確認した具体的な現象は以下です。

  • テンプレートから新規に仮想マシンを展開する際に特定ホストに展開すると必ず失敗する。
  • 特定ホストから他のホストへの移動(Live Migration)は成功するが、逆方向の移動は失敗する。
  • 問題のホスト上で稼働している仮想マシンには何も問題が無い。

発生していたエラーは以下です。

image

エラー (801)
VMM は、VirtualHardDisk オブジェクト 3256807c-4362-45d5-8aab-bc3526ca4d44 を見つけることができません。
推奨される操作
このオブジェクトがクラウドのプライベート ライブラリ領域内に保管されている場合は、帯域外アクセスを介してオブジェクトが存在することを確認してください。それ以外の場合は、クラウド管理者に連絡してください。

このIDを持つオブジェクトが本当にあるのかどうか確認してみたのですが見つかりませんでした。どうやらSCVMMの内部レコードが壊れてしまいおかしな状況になってしまっているようです。

情報を探した所、以下のKBを見つけ、SQL分を実行した所症状は改善されました。

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に製品として問題があるという事でも有り、長く運用する中では注意が必要なようです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です