write ロックによってジョブの実行が行えなくなる事象の対処方法

Published: / Last update:
Contributors:
feedback 共有

皆様こんにちは、System Center サポートチームの 保科 です。
今回は、SCVMM の運用上オブジェクトに write ロックが発生したことによって、仮想マシンの操作が行えなくなった場合の対処方法をご案内します。

本ページが対象とする SCVMM バージョン

SCVMM 2016 以降の全バージョン

概要

SCVMM ではデータベース上のオブジェクトを変更する際、ロックテーブルにエントリを書き込み、ロックがある場合は他のジョブが更新出来ない様になっています。
このテーブルにロックが残ることがあり、クリアしないと更新が出来なくなる場合があります。
ロックが発生したオブジェクトに対する操作を行った場合、以下のエラーが表示されることが一般的です。

エラー(2606)
型VMHostのオブジェクトxxxxxxはタスクxxxxx’バーチャルマシンプロパティの更新’によって’Write’ロックでロックされているため
このオブジェクトに対する’Write’ロックを取得できません

推奨される操作
ロックを保持しているタスクを取り消すか、完了するまで待機してから操作を再試行してください

対処方法

write ロックは SCVMM で実行されるジョブによって設定されます。
そのジョブの実行完了とともに write ロックが解除されることが一般的で、多くの場合時間経過によって解消が見込まれます。
ただし、時間経過によって解消されない場合、write ロックの手動削除が必要となります。
下記にご案内とします手順は、その手動削除を行うための操作となります。

1. SCVMM データベースのバックアップ

  1. SCVMM コンソールを起動し、管理者の権限を持つユーザーでログインします。
  2. ナビゲーション ボタン (左下) の [設定] をクリックします。
  3. 上部のリボン メニューから [バックアップ] ボタンをクリックします。
  4. バックアップの作成先となるフォルダー (例: C:\Temp) を入力して [OK] ボタンをクリックします。
    指定するフォルダーは、SQL Server 上に存在し、アクセス可能なフォルダーである必要があります。
  5. ナビゲーション ボタン (左下) の [ジョブ] をクリックします。
  6. VMM データベースのバックアップの作成 ジョブが完了したことを確認します。
    指定したフォルダーに bak ファイルが作成されたことを確認します。

2. SCVMM サービス再起動

  1. SCVMM コンソールを閉じ、スタートメニューから、”サービス” を開き、[System Center Virtual Machine Manager Service] を停止します。
  2. “Microsoft SQL Management Studio” を開き、”VirtualManagerDB” -> “テーブル” -> [dbo.tbl_VMM_Lock] を確認し、空となっていることを確認します。
  3. テーブル空となっている場合、write ロックの削除は完了しております。
    スタートメニューから、”サービス” を開き、[System Center Virtual Machine Manager Service] を起動します。
    SCVMM コンソールを開き、以前までに失敗していたジョブが正常に完了するかご確認下さい。
    もし空になっていない場合、サービスの起動は行わず、次の手順を実行します。

3. write ロックの全削除

  1. “VirtualManagerDB” -> “プログラミング” -> “ストアド プロシージャ” -> “システム ストアド プロシージャ” -> [dbo.prc_VMM_ReleaseAllLocks] を探します。
  2. [dbo.prc_VMM_ReleaseAllLocks] を右クリックし、”ストアド プロシージャの実行” をクリックします。
  3. [プロシージャの実行] ウインドウにて [OK] をクリックします。
  4. 再度 “Microsoft SQL Management Studio” を開き、”VirtualManagerDB” -> “テーブル” -> [dbo.tbl_VMM_Lock] を確認し、空となっていることを確認します。
    スタートメニューから、”サービス” を開き、[System Center Virtual Machine Manager Service] を起動します。
    SCVMM コンソールを開き、以前までに失敗していたジョブが正常に完了するかご確認下さい。

対処方法実施による影響

結論として、対処操作実施による影響はございません。
Write ロックの削除を行うストアド プロシージャは、[dbo.tbl_VMM_Lock] テーブルのレコードをすべて削除する操作となります。
ただし、削除操作は [System Center Virtual Machine Manager Service] サービスを停止してから行う手順としております。
このサービスは SCVMM サーバー本体のサービスに該当するため、削除操作中は SCVMM サーバー機能が停止中の状態となります。
そのため、削除操作中に新たに write ロックが発生することもないため、安心して削除操作を実施いただいても問題ございません。
レコードの個別削除は、どのオブジェクトに write ロックがかかっているか、といった高度な診断が必要となります。
どちらの場合で、以下の観点から全削除の方が効果的な対処方法とご判断ください。

  • SCVMM 環境への影響を及ぼすことなく操作を行えること
  • SCVMM サービス停止中は write ロックは存在しないことが理想的につき、最終的には write ロックはすべて削除する状態 (= 全削除でも個別削除でも最終目標は同じ) を目指すため

ご参考

本ブログでご紹介しました内容は、弊社公開情報に纏められた手順を詳細にまとめたものとなります。
System Center Virtual Machine Manager で仮想マシンをデプロイするときのエラー 2931


write ロックの削除方法は以上となります。
write ロックがかかった状態となり続けることは稀ですが、万が一発生した場合はこの手順に沿って対処を行ってください。
最後までご覧いただきありがとうございました。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。