vCenter Server Appliance 6.0 がディスクのエラー(Bad Block)で正常起動できなくなった際の対処メモ(当然ながら自己責任版)

※本エントリーを参考にして操作を実施した結果、問題が発生しても責任は負いません。自己責任で参考にしてください。本操作を実施することにより、VMwareからの正式なサポートを受けられなくなる可能性があります。

vCenter Server Appliance (VCSA) はファイルシステムとしてLVMで構成されているが、突然の電源断やディスク容量の枯渇などによってファイルシステムに破損などが生じた場合に、正常に起動できなくなることがあります。
その場合は、fsckをするしかないのですが、デフォルトではroot権限がDisableとなっていてbashが起動できないため、ちょっと対処が必要となります。

VCSAは複数の仮想ディスクで構成されています。特定のディスクがrwでマウントできないなどの状況となった場合には、roマウントした上で機能が制限されたコマンドプロンプト状態となります。
しかもこの場合にはrootアカウントでログインした上で、"shell.set --enabled True"コマンドでShellを有効化してShellコマンドでShellに入れとメッセージが出るのですが、そもそもshell.setコマンドが"unknown command"として受け入れてくれない場合があります。というか、これが使える状況なら以下の操作は不要です。

この場合はもはやどうにかしてbashにたどり着かないとfsckもなにもないので、以下の手順を行います。

1. Ctrl+Dコマンドで再起動し、GRUBブートローダ画面でスペースキーを押すなどして自動起動を停止する
2. "p"を押してrootのパスワードを入力する

3. "e"を押して起動オプションの編集モードに入る
4. (おそらく2行目にある) "kernel /vmlinuz-3.0.xxxx"で始まる行を選択し、"e"を押す

5. 起動オプションに"init=/bin/bash"を追記する

6. Enterキーを押してGRUBのメニュー画面に戻る
7. "b"を押して起動する
8. Bashで起動するので、まずはroでマウントしてしまっている/dev/sdaXについてfsckを実行する

以下の例では /dev/sda3 にBad Blockが検出されている

9. 再起動する(おそらくCtrl+Dでは正常に再起動できないので、仮想マシンとしてリセットするしかない)→ここで正常にVCSAが起動できた場合は以下の手順は不要。念のためもう一度F12&F11キーで正常操作としての再起動を行って問題ないことを確認する ※ここで再起動をしておかないと、PSCとの間で正常に連携できない状態となっている可能性があります
10. LVMの / (root)がマウントできない状態となっていて再度vCenterが起動しない場合は、改めてCtrl+Dで再起動した上で、1.〜7.までの手順を再度実施する

11. Bash画面で"chsh -s /bin/bash root"を実行し、Shellの変更が設定されたことを確認のうえでVCSAを再起動する(仮想マシンとしてのリセット)

12. rootパスワードを入力してログインすると、ファイルシステムリカバリが可能なコマンドプロンプト状態(repair filesystem)#で起動するので、"fsck /dev/mapper/log_vg-log"コマンドでチェックを実施する

13. Ctrl+Dコマンドで再起動する
14. めでたく正常にVCSAが起動することを確認する

なお、本手順を踏んでVCSAとしては正常に起動したとしても、vCenterとしての正常動作ができるかどうかまではわかりません。DBレベルで修復不可能な状態になっていた場合は、残念ながらサービスとしては回復できない可能性があります。
また、PSCを分離している場合は、PSCの復旧後にしばらく(10分程度でいいかと思いますが…)時間をあけてからVCSAを起動してください。