朝、出社すると何故かサーバー群が全滅!
なんじゃこりゃぁぁ!! 情シス突然のピンチ到来です
事象
何が起きた?
WindowsServer2012 R2のHyper-VのゲストOSがすべて全滅していました。Hyper-Vが起動しない。なにも設定を変更していないのに突然、起動できなくなってしまいました。
ホストのハードウェアが故障したのかと思ったのですが、ホストサーバーは無事でした。確認するとHyper-Vで運用していた仮想サーバ(ゲストOS)がすべて起動できなくなっていました。
選択した仮想マシンの起動中にエラーが発生しました。
ハイパーバイザーが実行されていないため、仮想マシンを起動できませんでした。
表示されたヒント
- 物理コンピュータのプロセッサに、サポートされているバージョンのハードウェア対応仮想化が存在することを確認します。
- ハードウェア対応仮想化及びハードウェア対応データ実行保護が、物理コンピュータのBIOSで有効になっていることを確認します(BIOSを編集してどちらかの設定を有効にする場合、物理コンピュータの電源をオフにして、もう一度オンにする必要があります。物理コンピュータをリセットするだけでは不十分です)。
- ブート構成データストアに対して変更を加えた場合は、これらの変更点を見直して、はスパーバイザーが自動的に起動するよう構成されていることを確認してください。
調査の結果、原因が判明
BIOSの設定?
いろいろググったけど、よく出てきた事例はBIOSで仮想化できる設定になっていないというもの。もう数年間仮想サーバで運用していたので突然BIOSの設定が変わることはない。つまり関係なさそう。
今回初めてHyper-Vを使ってゲストOSを起動するという場合は、BIOSの設定を確認したほうがよさそうです。
Windowsイベントログを確認
エラーが発生した時の調査の超基本行動、それはログの確認。
いきなりググる人が多いですが、まずはログを確認して現在の状態を正しく把握することが重要です
(とかいいつつ今回は仮想サーバー全滅というショッキングな状態だったのでいきなりググった私w)
Windowsの場合は、まずWindowsのイベントログを確認しましょう。やはり、Hyper-Vのエラーが出ていました。
Hypervisor launch failed; The operating systems boot loader failed with error 0xC00000BB.
ブートできないというエラー。直前で仮想マシンのMBRいじっていたりすればこのケースもありえますが、今回は何もしていないのでこれも違う。
既存のゲストOSは全滅。切り分けのために新しくゲストOSをインストールするために仮想マシンを作成してLinuxのISOブートしようとしたのですが、これも起動できませんでした。
これでHyper-V本体の問題であることが確定しました。とりあえずゲストOSのイメージがぶっ壊れたわけではないので少しだけ安堵。ただ問題が解決したわけではないので引き続き調査です。
エラーが起きる前後でなにかが変わったはず
エラーの調査をする時は、エラー発生の直前と直後を重点的に調べるのが鉄則です。今回の場合は新しくゲストOSをインストールしたわけでもなく、仮想環境の設定を変更したわけでもない。
ほんとに何もしてないの。心当たりがまったくないの(T_T)
いや、待てよ、怪しいやつがある。。。
はい、こいつです。WindowsUpdate。自動インストール設定でちょうど昨夜適用されとるやないかい。これは臭う、、というか、たぶんこいつやろ。
解決編とその後の対策
直近のWindowsUpdateをロールバック
エラー発生直前で自動で適用されたWindowsUpdateを削除してみたところ、何事もなかったように仮想サーバー全復旧です!
除去した更新プログラム
- KB5008868
- KB5008883
- KB5009624
このようにWindowsUpdateでダメパッチが展開されてしまう場合があるので、気をつけましょう。削除しても自動インストール設定にしているとまた勝手にダメパッチが自動でインストールされてしまうので、一時的に設定を変更しておいたほうが良いでしょう。
インストールの実行だけ手動に変更しておいたら、さっそく再インストールのメッセージが・・・もちろん無視です。
対策
今回は社内のサーバーなので油断していました。商用のサービス環境じゃなくて本当に良かった。
商用サービス環境の場合は、テスト環境できちんとOSパッチの検証をしつつ、本番適用時は2系統以上で運用していると思うので、片系ずつアップデートしていくべきですね。
いやー、直ってほんと良かった。
これで半日ロスったので、記録に残しておこう。
コメント