https://naba-san.hatenablog.com/


ESXiが壊れたので再インストール&設定リストアした。

USBフラッシュにインストールしたESXi 7.0が起動しなくなってしまった。

 

症状

・起動中、「imgdb.tgz」がCRCエラーで止まる。

 

そもそもESXi 7.0以降、インストール先の媒体には信頼性の高いSSD等を使用する事が推奨されているらしく、USBフラッシュなんぞにインストールするのが間違ってると言えば間違っている‥(インストール後に気付いたんですけどね。言い訳しても仕方ないよね。)

 

元々使ってたUSBフラッシュはこちら。発熱すごい割に放熱性に乏しいので、あまりオススメしない。

Amazon | 【 サンディスク 正規品 】5年保証 USBメモリ 32GB USB 3.1 超小型 SanDisk Ultra Fit SDCZ430-032G-J57 | SanDisk | USBメモリ・フラッシュドライブ 通販

 

対応方針

そう簡単にSSD増設できないので、何故か未開封のまま手元にあったmicroSDとカードリーダーを組み合わせて再インストールし、急場を凌ぐ事にする。

単に再インストールするだけだと再設定面倒なので、できれば環境設定まるごとリカバリしたい。ただし、起動しなくなった環境からの設定バックアップって結構面倒くさいらしく、

  1. 旧環境の復旧
  2. 起動した所で設定ファイルをバックアップ
  3. 新環境へリカバリ

と手順を踏むのが早いのではと踏んだ。実際これで成功した。

再インストール

microSDはこちら。
都合のよい事にMLCタイプがストックしてあった。(購入から半年ほど死蔵)

amzn.to

カードリーダーはこちら。
USB2.0なので速度は出ないけど、アクセス中ピカピカ光るのは便利。

amzn.to

こいつらをガッチャンコして、元々と同じバージョンを再インストール。
(普通にインストールしただけなので、作業手順は割愛する。)

 

旧環境の仮復旧

まずは旧環境の仮復旧から。今回起動しない原因は「imgdb.tgz」の破損なので、それだけ新環境からコピーする。他のファイルが破損した場合は適宜読み替えること。

新環境を起動し、SSHでshellにアクセス。
旧環境のフラッシュをマウントする為、USBデバイスのパススルーを停止。事前に余計なUSBデバイス類(特にストレージ類)は外しておく。

# esxcli storage filesystem rescan
# esxcli storage filesystem list

# /etc/init.d/usbarbitrator stop

(ここで旧環境のUSBフラッシュを刺す)

# esxcli storage filesystem rescan
# esxcli storage filesystem list

パススルー停止前後のファイルシステムを見比べて、旧環境のファイルシステム(BOOTBANK1, BOOTBANK2)が追加で認識されたことを確認する。

 

ファイルシステムのパスを確認したら、破損したファイルのパスも確認しておく。

# ls -l /vmfs/volumes/(旧環境のBOOTBANK1) *.tgz

多分 imgdb.tgz の存在が確認できるはず。こいつが起動障害の元凶。

 

「imgdb.tgz」は「BOOTBANK1」パーティションに存在しているので、新環境のBOOTBANK1→旧環境のBOOTBANK1へファイルをコピーする。

新環境の BOOTBANK1 は、/vmfs/volumes/BOOTBANK1 よりエイリアスが張られている。(旧環境は、エイリアスが張られてない方のBOOTBANK1)

# cp -a /vmfs/volumes/BOOTBANK1/imgdb.tgz /vmfs/volumes/(旧環境のBOOTBANK1)

 

環境設定のバックアップ

新環境をシャットダウンして、旧環境で起動する。

ここで起動しなければご愁傷様です‥
(新旧環境でコピーする方向間違えてないかとか一度確認してみましょう。)

 

仮起動したら、先ほど同様にSSHでshellアクセス。環境設定をバックアップする。

vim-cmd hostsvc/firmware/sync_config

vim-cmd hostsvc/firmware/backup_config

コンソール上に設定ファイルのexport先URLが貼られるので、ブラウザとかから一式ダウンロードする。

旧環境とはここでおさらば。シャットダウンする。

 

環境設定のリストア

続けて新環境を再度立ち上げる。

先ほどダウンロードしたファイルを何かしらの手段で転送する。(SCPで転送するなり、Web管理コンソールのdatastoreに突っ込むなり好きにするとよい。)

 

またSSHでshellにアクセス。先ほど転送した設定ファイル(tgz)を以下の通りコピーする。

cp -a /vmfs/volumes/618ba7ec-444bbb82-1af8-1c1b0dfa8c49/configBundle-(ホスト名).tgz /tmp/configBundle.tgz

そしてリストアを実行する。(緊張の瞬間です‥!!)

vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz

実行後は勝手に再起動するので、きちんと立ち上がってくることを期待して待つ。

無事立ち上がった方はおめでとうございました。

 

参考文献