仮想化でプリセールスしてるSEの一日

VMware から Azure まで、インフラや仮想化の最新情報をベンダー色をできるだけ抑えて綴っていきます

USB ブートのフラッシュメモリが壊れるとこんな感じ - vSphere 6.0 編

f:id:ogawad:20190203195705p:plain:right

USB メモリや SD カードといったフラッシュメモリに ESXi や Hyper-V ハイパーバイザーをインストールできることはよく知られています。

「ゲストはストレージ側に入れるんだし、ブートのためだけに内蔵ディスクや RAID コントローラーを買うのはもったいない」というコスト由来のもので、仕組みも SAN ブートに似ています。ただ、個人的には SAN ブートにするのであれば USB ブートの方が圧倒的におススメです。

実際のところ、USB ブートを好む SIer と嫌う SIer が居るのですが、最近では VMware Virtual SAN や Windows Storage Spaces など、内蔵ディスクのスロットを少しでも無駄にしたくないという案件や、またハード側も SD カード 2 枚挿しで冗長構成をとれる機種も増えており、少しまた伸びてきている印象です。

vSphere ESXi ハイパーバイザーの稼働設計

下図はいまから4年前、vSphere 5.0 のときに自分が書いた本の切り抜きです。
ESXi ハイパーバイザーはこのようなアーキテクチャーで稼働しています。


  • ハイパーバイザー起動時にメモリに全部ロードしてしまうので、USBブートでもHDDブートでも基本的な動きは変わらない
  • 稼働中はインメモリ(RAMディスク)で運用され、不揮発領域への書き出しはリアルタイムに行わないなど、フラッシュメモリの寿命を考慮している


HDDに比べるとフラッシュメモリは消耗しやすく、書き込みが多いと寿命が来てしまうため、ブート時・シャットダウン時以外のアクセスはできる限り減らすよう考慮されているのが特徴です。

運用中にフラッシュメモリが壊れるとこんな感じ

「考慮されている」といっても、絶対に壊れないはありません。
私のマシンのうち、検証用の一部は転がっていた市販のSDカードで運用していたのですが*1、純正品ほどの品質は無かったのか、運用中に壊れてしまいました。


エラーメッセージ(vSphere 6.0)


エラーレベルとしては黄色の「警告」扱い


ストレージ設定画面ではこういう状態


ハイパーバイザーはインメモリ。つまりフラッシュメモリから DIMM の方にコピーされているため、フラッシュメモリに障害が発生しても仮想マシンに直接の影響はなく、ホスト自身も動き続けるようです。
メンテナンスの時間が取れず2週間以上そのまま放置していますが、ホストも稼働中の 100 台超の仮想マシンも何ら問題は発生していません。ブートディスクが壊れているため、ホストの再起動は考慮が必要ですが、これはこれで興味深い。


書いていてふと思いました。
メディア破損(いわゆる物理セクタ障害)とは動きが違うかもしれませんが、サーバーの背面ポートに USB メモリを挿して、稼働中に抜いてみると簡単に再現できますね。。。

USB ブートで運用している Hyper-V もあるので、こちらも運良く (?) 障害に遭遇してたら、状況をまた記事にしたいと思います。

*1:多くのサーバーベンダーでは、純正以外のSDカードの利用することはサポート対象外になります