先日、こんなトラブルに遭遇しました。 Issue 【構成および前提】 ・1-4号機の4台によるvSAN構成 ・4台ともEnhanced vMotion Compatibility(EVC)はL6(Haswell世代)にて有効 ・ESXiバージョンは6.7U3 ※ただし、1号機のみ別問題対応にて、6.7U3クリーンインストール 【現象】 1号機をメンテナンスモードにしようとした際、複数のVMが2-4号機にvMotionできず失敗となった。なお、一部のVMは、1号機から2-4号機へvMotionできていたことを確認した。 【切り分け】 ・手動で1号機から2号機へvMotion実施(メンテナンスモード移行時に失敗したVM) →EVCの不一致エラーで失敗 ・2号機から1号機へvMotion実施(メンテナンスモード移行時に成功したVM) →vMotion成功 ・テストVMを1号機で起動し、2号機へvMotion実施 →vMotion失敗(同じエラー) ・テストVMを2号機で起動し、1号機へvMotion実施(その後3、4号機へvMotion) →vMotion成功 ここまでで、どうやら1号機で起動したVMは、2-4号機へvMotionできないことが分かった。1号機だけクリーンインストールを実施したことで、何かしら差異があるのだと仮定して、ホストプロファイルの見直し、EVC含むその他設定なども見直したが、あたりがつかず・・・。
・仮想マシン単位のEVCをテストVMでwestmere世代まで落として1号機で起動 →1号機で起動し、2-4号機へvMotion成功 んー・・ますますわからん・・・^^; 本番環境なので、安易に再起動などできない上に、、そもそもメンテナンスモードに移行できないし・・・。 というわけで、いったん主なログやconfigを取得し、調査開始。
Resolution 1号機と2-4号機で、CPUに関する差異があることはなんとなくわかった。 そこで、configの見直しを実施。
結論から言うと・・ --/etc/vmware/config こいつだった。
この「MDCLEAR」というのは、Intel CPUのマイクロコードに関する脆弱性に関連しており、その緩和策としてこの値が「無効」になっていたということになる。 1号機のみESXi6.7u3をクリーンインストールしたことで、この値の差異が生まれてしまったということが原因だった。 はっきりとしたことはわからないが、脆弱性に対応したバージョンにアップデートした後、なんらかの原因でこの値が正しく有効にならないケースがあるようだ。 2-4号機では、MDCLEAR機能が有効になっていなかった状況が確認できた。(そのためにvMotion時に行われるMDCLEARのチェックがエラーとなっていた)
本来であれば、6.7P01へアップデートした際に、有効となっていなければならなかったようだ。おそらくは、BIOSレベルの設定であるため、ハードリセットが必要であったと考えられる。(物理サーバを完全にパワーオフ→パワーオンの動作)
今回は、2-4号機についてもすでに6.7U3へアップデート済みのため、下記対応を実施。 2-4号機について、1台ずつ 1.メンテナンスモードへ移行 2.ESXiをシャットダウン 3.サーバをパワーオフ 4.サーバをパワーオン 5.ESXi起動後、メンテナンスモード解除 下記、コマンドでMDCLEARが有効になったことを確認
# vim-cmd hostsvc/hostconfig|grep -A 2 MDCLEAR
これが
こうなっていればOK key = "cpuid.MDCLEAR",
2-4号機すべて完了した後、手動でvMotionを実施 →成功 1号機をメンテナンスモード移行 →成功
というわけで、トラブルシューティングを完了できました。 (责任编辑:) |