ESXi 5.1U2 + RR2720SGL + FreeBSD 9.2でinterrupt storm detected on発生
まずは環境:
- MSI Z77A-GD65
- Xeon E3-1240L
- 24GB(8GBx2 + 4GBx2)
- RocketRAID 2720SGL (PCIパススルー)
- ESXi 5.1 Update 2
- FreeBSD 9.2-RELEASE (x64)
これでVMを起動したら「interrupt storm detected on “irq19:”; throttling interrupt source.」が出まくった。
vmstat -iで確認すると間違いなくRR2720SGLが原因。もっとも、非仮想化環境なら大丈夫なのでRRとESXiが原因と言うべきか。割込みの嵐が発生してても問題ないっちゃ問題ないんだが、CPUをかなり持ってかれるので対策出来るならしときたい。
うちの環境だとVMのBIOSでFDDが有効またはhw.pci.enable_msi=1(デフォルト設定)だと発生するっぽい。FDDっていうか、たぶんSuperI/O系全般がダメなんじゃないかと思う。試してないけど。
FDD無効のhw.pci.enable_msi=0で警告は治まったものの、肝心要のRocketRAIDがディスクを認識しやがらなくなってやんの。嵐ってる時は大丈夫だったんだけどね。
というわけで、うちの仮想化環境でRR2720SGLは使えませんでしたとさ。や、使えるには使えるけどさ、割り込み処理にCPUがかなりもってかれて、電気代的な意味で非常によろしくない。
ESXi 5.5にしたらSATAのパススルーが出来なくなった(´・ω・`)
vSphere Hypervisor 5.5のDeep C-State対応の効果を試してみたくて5.0U3から更新してみたら、内蔵SATAとPCIe SATAのパススルーが出来なくなった…。
vSphere Client上はパススルー出来ているように見え、FreeBSD上からもPCIデバイスとして認識されてはいるもののHBAとして機能しない。FreeBSDの問題の可能性もあるが、ダメだこりゃ。
肝心のDeep C-Stateも、うちの環境だと効果がなかった。もはや5.5に留まる理由はないので、ESXi起動時にShift+Rでリカバリモードに入り、さくっと5.0U3にロールバック。
5.1以降、目に見えて安定度というか完成度が下がった気がする…。
ESXi 5.0U3の省電力設定を弄ってみる
おうちサーバの頭痛の種の一つが電気代。1Wと謂えども常時稼働だと1ヵ月で720Whとなり、馬鹿にできない。まさに塵も積もれば山となる。節約には何事も固定値の削減が肝なので、ESXiの省電力設定を弄ってみる。
マシン構成
CPU | Intel Xeon E3-1260L (SandyBridge/2.4GHz/4C8T) |
---|---|
M/B | MSI Z77A-GD65 |
RAM | 24GB (DDR3-1333 8GB x 2 + DDR3-1333 4GB x 2/1.3V駆動) |
VGA | CPU内蔵 |
HDD | 3.5インチHDD x 7 2.5インチHDD x 2 2.5インチSSD x 1 |
PCIe | SATA 6Gbpsカード x 1 (Marvell 88SE9123) PT3 |
電源 | ANTEC EarthWatts EA-450-PLATINUM |
VM | FreeBSD 9.2-RELEASE Windows 7 Professional |
消費電力
各VMのログイン画面が表示され、ワットチェッカーが落ち着いた状態で測定。
管理ポリシー | 消費電力 |
---|---|
高パフォーマンス | 72〜73 |
バランシング済み | 71 |
低電力 | 69〜70 |
カスタム | 67〜68 |
おお、結構違いが出るもんやね。
esxtopの表示を信じればESXi 5.0はC2ステート、5.1はC3ステートまでの対応っぽい。5.5はDeep C-State対応ということなので、C6かC7ステートらへんまで使えるのだろう。5.5にすれば更に5W程削れそうな予感?
5.5にしてみたが、esxtopは相変わらずC2ステートまでしか表示してくれなかった。BIOSの設定も問題なさそうだし、CPUが対応してないって事もなさそうなんだが、よくわからん。
FreeBSD on ESXi 5.1でRDMのHDDが0 MBになってた件
vSphere Hypervisor 5.1 + FreeBSD 9.0-RELEASEで750GBのHDDを物理RDMで使っていたのだけど、いつの間にか「0 MB (no media?)」が出るようになっていた。
2TB以上のストレージで起きるのは環境構築時に遭遇したが、よもや2TB未満のHDDでも発生するとは……しかも8月頃に確認した際は問題なく動いていた。この間、ハードウェア構成もESXiもFreeBSDも変えてないので、原因は全く以て謎。
それでいてgptzfsbootは問題のHDDから行われているっぽいのがイミフ過ぎる。今まで気付かなかったけど、PCIパススルーしたHBAのHDDからはブート出来ないのね(自分の持ってるカードだけかもしれんが)。FreeBSD配下のHDDは基本的にPCIパススルーでくっつけており、SATAポートの関係で件のHDDだけRDMしてたために偶々ブート出来てたっぽい。更に言うと、ブートHDDはZFSでミラーリングしているため、片方がno mediaになってもパススルーの方が生きており使えてたという。綱渡り具合もいいところ。
閑話休題。
とりあえずESXiを介さずにFreeBSDを直接ブートし、まずはRAIDを修復。それからIDEバスに物理RDMし直したところ症状は出なくなったが、今度はCAMがDRDY ERRなるものを吐きまくってなにこれこわい。
ESXi 5.1はどうも安定性に欠ける気がする(根拠は全くない)ので、5.0U3に変えたら落ち着いた模様。SCSIにくっつけると相変わらずno mediaになるけど。前は動いてたのに何でだー。
サーバのESXi化が泥沼化 その2 - SATAコントローラの追加
前回、H77のSATAをパススルーしたら他のSATA I/Fが認識されなくなったのは、AHCIのドライバが読み込まれなくなったせいらしい。
ESXiの各種ドライバは、ESXiが公式に対応するデバイスが存在して初めて読み込まれる仕組みになっているそうなので(まぁそりゃそうか)、H77がパススルーによって見えなくなる→AHCIドライバが読み込まれない→他のSATA I/Fが使えないという状態だった模様。これまでASM1061と88SE9123は、H77 SATAのおこぼれで偶然動いていたというわけ。
デバイスとドライバの対応表を弄れば、非公式デバイスを使えるようになるっぽいので書き換えてみる。
下記作業ログ内に出てくるsata-ahc.v00は、sata-ahc.v00(ハイフン)な環境とsata_ahc.v00(アンダースコア)な環境がある模様。自分の環境では間違いなくハイフンなんだけど謎。コマンドをコピペされる際は注意されたし。
5.1をクリーンインストールした場合はアンダースコア、5.0から5.1にアップデートした場合はハイフンな模様。
- ESXiホストにSSHでログイン
- lspciコマンドで追加したいデバイスのベンダIDとデバイスIDを確認(必要な箇所のみ抜粋)
# lspci -v 000:001:00.0 SATA controller Mass storage controller: Marvell Technology Group Ltd. 88SE9123 PCIe SATA 6.0 Gb/s controller [vmhba34] Class 0106: 1b4b:9123 ←これ 000:006:00.0 SATA controller Mass storage controller: [vmhba36] Class 0106: 1b21:0612 ←これ
- hwinfoコマンドでサブIDを確認(5.0のみ。5.1だとコマンドがなくサブIDは0000:0000で大丈夫っぽい?)
# hwinfo -p 000:001:00.0 1b4b:9123 1b4b:9123 11/ 11/0x88 A V ahci vmhba34 000:006:00.0 1b21:0612 1849:0612 5/ 5/0xa0 A V ahci vmhba36 ↑これ
- マップファイルを展開
~ # cd /tmp /tmp # mkdir tweak; cd tweak /tmp/tweak # vmtar -x /bootbank/sata-ahc.v00 -o sata-ahc.tar /tmp/tweak # tar xvf sata-ahc.tar
- マップファイルに上で確認したデバイスを追加
/tmp/tweak # vi etc/vmware/driver.map.d/ahci.map (↓を最後に追加) regtype=linux,bus=pci,id=1b4b:9123 1b4b:9123,driver=ahci,class=storage regtype=linux,bus=pci,id=1b21:0612 1849:0612,driver=ahci,class=storage
- vSphere Client上でストレージアダプタ名を正しく表示させたければ、The PCI ID Repositoryでベンダ名とデバイス名を探して、デバイス名リストに追加する。デバイス行のインデントはタブ文字なので注意。弄らなくても動作に支障はない。
/tmp/tweak # vi usr/share/hwdata/driver.pciids.d/ahci.ids 1b4b Marvell Technology Group Ltd. 9123 88SE9123 PCIe SATA 6.0 Gb/s controller 1b21 ASMedia Technology Inc. 0612 ASM1062 Serial ATA Controller
- 編集したファイルをアーカイブし直し、元のアーカイブを上書き
/tmp/tweak # rm sata-ahc.tar /tmp/tweak # tar cvf sata-ahc.tar etc usr /tmp/tweak # vmtar -c sata-ahc.tar -o sata-ahc.vgz /tmp/tweak # mv sata-ahc.vgz /bootbank/sata-ahc.v00
- 再起動
上手く追加出来てればvSphere Clientから正しく認識される。追加前と追加後でvmhbaの割り当て順が変わってるが、まぁキニシナイ。
これでようやくH77 SATAのパススルーが出来る!と、喜び勇んで設定&FreeBSDのVMに割り当てて起動!そして、PSoD………/(^o^)\ナンテコッタイ