ストレージの障害による停止後、fstrim の実行時に Linux VM で CPU のロックアップと vSCSI のリセットが発生する
search cancel

ストレージの障害による停止後、fstrim の実行時に Linux VM で CPU のロックアップと vSCSI のリセットが発生する

book

Article ID: 447756

calendar_today

Updated On:

Products

VMware vSphere ESX 8.x VMware vSphere ESXi

Issue/Introduction

免責事項: これは英文の記事 Following storage outage, Linux VM CPU lockup and VSCSI resets when fstrim runs (435667) の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  • ストレージの障害による停止後、VM でファイルシステムの破損が発生し、手動での fsck または VM の再起動が必要になる。
  • 次回のゲスト OS での fstrim (UNMAP) 操作中に、VM が CPU エラーでハングする:
    watchdog: BUG: soft lockup - CPU## stuck for xxs!

Environment

VMware vSphere ESXi 8.0

Cause

ストレージが障害により停止し、UNMAP コマンドが LUN 上で完了できない場合、古いメタデータのロックが残ってしまいます。
UNMAP プロセスがブロックの再利用を安全に行うには排他ロックを必要とするため、
これらのロックが後続のスペース再利用タスクを妨げ、トランザクションエラーを引き起こします。

/var/run/log/vmkernel.log には以下の通り記録されます:
vmkernel: cpu##:#######)VSCSI: 3772: handle ###################'(GID:####)(vscsi0:0):processing reset for handle ... state ##########
vmkernel: cpu##:#######)Res6: 2944: '<datastorename>': RC Lock not free for type 1, return TXN FULL
vmkernel: cpu##:#######)Fil6: 3816: <datastorename>: <FD c10 r89> - Failed to unmap file blocks 0/1:Transaction ran out of lock space or log space

Resolution

  • ゲスト OS がハングした場合には、vSCSI リセットループを解除するためにハード リセットが必要です

  • 影響を受ける VM を別のデータストアに移行してください
    VM のディスク ファイルを移動させることで、元のデータストア上の特定のブロックに関連付けられた古いメタデータのロックが、
    ストレージ層によって強制的に解放・解除されるためです。

  • クラスタ内のすべての ESXi ホストを順に再起動してください