Intel NUC に ESXi 6.5 を入れる

新しいおもちゃ is Now Available

Intel の NUC を買いました。第 6 世代のうちの、NUC6i5SYH です。

製品の Web ページ を見るとそろそろ第 7 世代のものが買えるようになりそうな雰囲気がありますが、待つのが嫌なので買ってしまいました。

使い道は考えていませんが、そういうときはとりあえず ESXi を入れます。新しいものが好きなので、現時点で最新の ESXi 6.5 にしました。

注意

Intel NUC は VMware Compatibility Guide に乗っていないハードウェアです。何があって文句は言えません。

買ったメモリとストレージも、Intel がテストした構成の一覧には記載のないデバイスです。

買ったもの

列挙します。

SSD はデータストアとして占有させたかったので、ESXi のブート用には USB メモリを別に用意します。

全部で 9 万円くらいですね。いい時代です。

インストール

何も考えずに製品の公式の ISO イメージをそのままインストールすれば問題なしでした。

昔は非公式のドライバを自分で突っ込まないとうまくデバイスが認識されなくてダメだったようですが、最近は公式のそのままで大丈夫みたいですね。

セットアップ

インストール後、そのまま DCUI で IP アドレスやらホスト名やらを設定したら、vSphere Client で ESXi につないで必要な設定をします。

vSphere Client は、C# 版はもうないので、HTML5 版を使います。ESXi に組み込みで用意されていて、ブラウザで ESXi に設定した IP アドレスに接続するだけで使えます。快適です。

トラブルと対処

さて、ESXi のインストールは何の問題なく終了したものの、データストアのアクセスが異常に遅いというトラブルが発生しました。

ESXi 6.5 になって追加された新しいデフォルトの AHCI ドライバが、NUC の SATA コントローラをうまくハンドルできなかったみたいです。

以下のようにして明示的に vmw_ahci ドライバを無効化することで解決できました。

esxcli system module set -e=false -m=vmw_ahci

このトラブル、具体的には、以下のような症状です。

  • I/O のレイテンシが 1,000 ms 以上ある
    • パフォーマンスのグラフの [最大待ち時間] が異常な数値
  • イベントログに以下のようなエントリがある
    • 接続の問題により、ボリューム XXXXX へのアクセスが失われました。回復処理が進行中です。まもなく結果が報告されます。
    • 接続の問題が発生後、ボリューム XXXXX へのアクセスがリストアされました。
  • vmkernel.log に以下のようなエントリがある
    • WARNING: NMP: nmp_DeviceRequestFastDeviceProbe:XXXXX: NMP device “XXXXX” state in doubt; requested fast path state update…
    • Cmd(0xXX) 0xXX, CmdSN 0xXX from world XXXXX to dev “XXXXX” failed H:0x2 D:0x0 P:0x0 Invalid sense data: 0xXX 0xXX 0xXX
    • Aborting txn calleriD: 0xXX to slot XX:  File system timeout (Ok to retry)

このログ、SAN 構成なら目にすることはありますが、DAS のストレージでは通常は出ません。真っ先に SSD の初期不良を疑い、そして NUC の初期不良も疑いましたが、調べてみると同じ症状の事例が海外で複数報告されていました。解決策も載っています。

その他

今回は問題にはなりませんでしたが、ESXi 6.5 では USB メモリもトラブルが起きがちのようです。

これも AHCI のドライバと同様、デフォルトのものが置き換わったことが原因だとか。KB 化もされていました。

ドライバ周りはトラブルが起きるとハード障害との切り分けがしにくくて厄介ですね。

今後

とりあえず vSphere 6.5 の環境をざっと触ってみたいので、ひとまず vCSA を立てていろいろ様子をみて、あとは素直に小さな仮想化基盤としておもちゃにします。

VMware Labs の Onyx に Web Client 用が出ていた

ぜんぜん知らなかったのだけれど、ふと VMware PowerCLI Blog を見たら、VMware Labs の Onyx の Web Client 対応版、Onyx for Web Client のリリースの案内が出ていた。

System Requirements には vSphere Web Client 6.0 用と書いてある。6.0 の Web Client から 5.5 につなげば 5.5 でも使えそう(後方互換、あったよね?)。

Onyx というのは、vSphere Client の操作を PowerCLI や C# や vCO 用の JS などのコードにしてくれるとても便利なもので、ぼくも三年前に『vSphere Client の操作を PowerCLI のコードにしてくれる VMware の Onyx がすごく便利』というエントリを書いている。

このエントリ、いまでもちょくちょくアクセスがあるのだけれど、この末尾にこんな一文を入れていた。

vSphere 5.1 からは vSphere Client ではなくて vSphere Web Client が標準になってくるので、Onyx たんがアップデートしてくれないといずれ使えなくなる疑惑がある。

結局、従来の C# 版クライアント用の Onyx も 2014 年までは継続的にアップデートされていて、なんだかんだで vSphere 5.5 の C# 版クライアントでも使えてはいる。とはいうものの、根本的に C# 版クライアントだとできないことも多いわけで。

Web Client 用のが出てくれないとそのうち困りそうだなあと、このときからつらつら考えてはいたのだけれど、無事にリリースされてくれてよかった。安心した。

Onyx 接続ボタン

vSphere Client の操作を PowerCLI のコードにしてくれる VMware の Onyx がすごく便利

前置

vSphere 環境をさわるとき、ふつうは vSphere Client でがちゃがちゃ操作する。そのうち慣れてくるとだんだん PowerCLI 環境に手を出すようになって、CLI 環境でいっぱいの VM をまとめて操作できてやばいこれちょう便利うひょーってなる。なるんだけど、それにも慣れると、もともと提供されてるコマンドレットって地味にかゆいところに手が届かないことにぼんやりと気付き始める。で、細かい操作をしようとすると、結局は定義済みのコマンドレットを卒業して、.NET インタフェイスをさわったり View オブジェクトをこねくりまわしたりしないといけないということを悟る。

ここまで来ると Web でぐぐって出てくる情報もだんだん減ってきて、vSphere Client ではすぐできるのに PowerCLI ではどう書けばいいのやらさっぱりだなあ、というところがぽろぽろ生まれてくる。

ある操作をするためのインタフェイスに GUI と CUI がある場合、(VMware に限らず)だいたいは CUI の方が原始的で、原始的だからこそ細かいところまで “なんでもできるはず” という幻想を抱かせてくれる。だから “GUI でできるのに CUI でできない” という状況に遭遇すると、GUI だって結局中で API 叩いてるんだろ、コード教えろやこのやろう、的な気持ちになること請け合い。どうにも納得できない。

このエントリで紹介する VMware Onyx は、まさにその『GUI ではできるのに CUI でどうやるのかわからない』を解決してくれるすばらしいツールなのでした。

続きを読む