- 目的
- 仮想マシン構成
- テスト用マザーボードとCPU
- 本稼働用マザーボードとハードディスク
- USB3.0コントローラーのパススルーテスト
- NICパススルーはゲストマシンに負荷がかかる?
- ハード構成まとめ
- 中間総括
- AMDから最新の22nmのIntel Ivy Bridgeに移行して省エネを加速しつつ適度なCPUパワーを得たい。 目標は、現状125W --> 目標85W (目標は 40W削減 だけど結果は未達成)
- フロントパネル。マシン単体ではワットチェッカーの読みで85W程度。
- アイドル時(公開サーバー稼働中)、マシン本体+光モデムルーター+Gbハブなど補機入れてUPSの出力で95W。(移行前から30W削減)
- PCIパススルーを活用したい。
注意:ESXi5.1では、USBコントローラのパススルーが設定できない不具合があります。 USBコントローラをPICパススルーする場合は、ESXi5.0に最新パッチを当てて使用します。
- Windowsクライアントを安定稼働させたい。
- Musicサーバーのプチプチ途切れ音、ブルースクリーンを減らしたい。
- 家族用ゼロクライアントマシンが時々ブルースクリーンになるのを無くしたい。
- NAS用ディスクを、PCIパススルーしたSATAコントローラ配下でマウントして使うことで、RAWディスクとして使用可能としたい。
- 今までのようにESXi管理下のVMFSフォーマットでは、いざというときの使い回しやバックアップ復旧などで制約が増えるので使い辛かった。
RAWマウントによりディスク状態もマウントするOSから直接モニタできるので管理が圧倒的に楽になる。
- ESXi管理下のVMFSフォーマットでは、ディスクが解列すると即停止か再起動時に設定変更が必要なので、Linux RAIDは現実的ではなく、純ハードウエアRAIDか前回構成のようにeSATA外付けRAIDケースなどを使用するしかなかったが、RAWディスクになることで問題なくLinux RAIDが使える。
- PCIパススルーの設定現状
3スロットあるPCIバスは、パススルーの設定は一括となり、1枚ごとの設定は出来ない。 PCIeバスは個別に設定可能。
各スロットの構成。パススルーゲスト列が空欄のものはPASSスルーしないの意味。
スロット | デバイス名 | パススルーゲスト |
00:02:0 | オンボード | VGA |
00:1a:0 | オンボード | USB-1 |
00:1d:0 | オンボード | USB-2 |
00:1f:2 | オンボード (Intel)Panther Point AHCI | SATA | CentOS 6.3 |
00:1c:0 02:00:0 | PCIe X2 (MARVEL)88SE9230 | SATA |
00:1c:4 03:00:0 | オンボード (Realtek)R8168 | GbLAN |
00:1c:5 05:00:0~2 | PCI (NEC)USB/USB2.0 (玄人志向)USB2.0N6P-PCI | USB2 | WindowsXP |
00:1c:5 05:01:0 | PCI (Intel)82541PI | GbLAN | WindowsXP |
00:1c:6 06:00:0 | PCIe X1 (玄人志向)USB3.0RD-PCIe | USB3 |
00:1c:7 07:00:0 | PCIe X2 (Intel)82574L | GbLAN |
仮想マシン構成 [6]
以下の6つのゲストマシンを常時稼働中。
- NAS/iSCSIターゲット/REGZA録画用: CentOS6.3 (2vCPU)
- 公開WEBサーバー: Scientific Linux 6.3 (1vCPU)
- 従来は2vCPU割り当てていたけれども、今回は1vCPUで試してみたら全く不足なし。
- メールサーバー、DNS: CentOS5.8 (2vCPU)
- これも2vCPU割り当てていたけれども、1vCPUで全く不足なし。
- ソフトルーター: vyatta (1vCPU)
- Musicサーバー: WindowsXP (2vCPU)
- 家族用ゼロクライアント: WindowsXP (2vCPU)
テスト用マザーボードとCPU [9]
ESXiなどの仮想化マシンでPCIパススルーを行うには、M/BとCPUの両方が IOMMU(VT-d/AMD-Vi) に対応している必要がある。
- マザーボード:(AsRock)ZH77 pro3
- CPU:(Intel)Core i5 3470S
- SATAボード:(High Point) Rocket 640L [SATA6Gb/s/RAID]
- CPU
Intelでは、今年出たIvy BridgeのCorei5系CPUにVT-d対応品が多く展開されているので、その中から省エネ・パワーバランスの良さそうな Core i5 3470S BOX[10] を選定。
- Ivy BridgeでもVT-d非対応のものもあるので要注意!
- Hyper Threadingは非対応だが問題なし。
- マザーボード
安価なH77チップセット系から選定。 「7」系のIntelチップセットで、VT-dの正式サポートを謳っているのはQ77くらいしか無いのだが、 H77やZ77でもサポートは無いものの一応使えるようになっている。
メーカーにもよるが、大体のM/BではBIOS/UEFIの設定の中に「VT-d」の有効/無効があるので、これを有効にすることで使えるようになる。
まずはテスト用なので、安価な(AsRock)ZH77 pro3[13] を選んでみた。 PCIパススルーするには拡張スロット数が少ないのだがテスト用・予備用としてはOK。
- SATAボード
M/B上のSATAコントローラをパススルーすると、ESXi起動直後のデータストアが何も無くなってしまうので、既存SSDを繋げるためのSATAポート用として(High Point) Rocket 640Lを使用。
この時、AoyamaさんのESXi5.1のIDマップを作成してみる(Marvell 88SE9123/88SE9230編)[14] の適用が必要です。
--> 結果的には、4ポートのうち2ポートしか認識しない。BIOS上では認識しているのだが、ESXiの認識が2ポート限定。パススルーしても同様。
本稼働用マザーボードとハードディスク [15]
- マザーボード:(ASUS)H77V-LE[16]
- PCIe X4スロットが1本ある。
--> Rocket 640L もフルで4ポート使える?
--> 結果、このM/Bでも2ポートしか認識しない。H77チップセットとESXiの相性かなあ。。
- PCIe X1スロットが2本ある。
- 内蔵NICはAsRockのM/Bと同様に(Realtec)8111なのでESXi5がデフォで認識する。
- HDD:(Western Digital)NAS用REDシリーズ WD30EFRX[17] x2台
少し高くてSOHO・自宅用としてはオーバースペックな気もするけど、常時稼働だから良い物のほうが結局長く使えてお得! だといいんだがどうなるかな。
- ディスクドライブの構成のパーティション
- SSD == VMDKフォーマット、ESXi用ストレージとし各ゲストマシンのシステム領域として使用。
- HDDはパススルーしたRAW DISK をメインゲストマシンのCentOS6.3にて、mdadm(Linux Raid-1)、LVMで管理。
- sda,sdb: (WD) WD30EFRX (3TB) == データ領域。
- LVMの先頭ボリウム [vm0-lv0] はiSCSIターゲット領域としてESXiからマウント
- 以降のボリウム [vm1-lv1] はNAS用としてext4でマウントし、sambaでLANに公開。
- sdc,sdd: (WD) WD25EZRX (2.5TB) == データ領域のRAID-1スペアディスクに割り当てて、残りをREGZA録画用にext4でマウントし、sambaでLANに公開。
- RAW DISKのパーティション・ボリウム構成は以下のようにして、スペアディスクを確保しつつREGZA録画用ボリウムもRAID-1(スペア無し)にまとめた。
領域 | ボリウム | sda | sdb | sdc | sdd |
1 | vg0-lv0 iSCSI target用 | md0 | md0 | md0(s) | md3(s) |
2 | vg1-lv1
DATA用 | md1 | md1 | md1(s) | md2(s) |
3 | md2 | md2 | md5 | md5 |
4 | md3 | md3 | md6 | md6 |
5 | md4 | md4 | - | - |
(s)はRaid-1スペアディスク
- mdadmでRAIDを構成する際の注意点
仮想化の話ではなくてLinux RAIDの話になるが、今回ESXiでパススルーしたディスクが、ゲストマシン起動の度にSSDから切り出したVMFSの起動ディスクとの順番が先頭(sda)になったり最後になったり(sdb)する。
そのままだとRAIDの構成がおかしくなってしまうので、以下のような手順でRAID構成を保存しておくと良い。
- /etc/mdadm.conf を編集
続いて、以下のコマンドで表示される内容を、そのまま/etc/mdadm.confに追記する。
/etc/mdadm.confは以下のようになった。
| DEVICE partitions
ARRAY /dev/md0 metadata=1.2 spares=1 name=localhost.localdomain:0 UUID=6f66ab25:24fd7989:ea21c109:2ab9f1a1
ARRAY /dev/md1 metadata=1.2 spares=1 name=localhost.localdomain:1 UUID=79af2472:1d50889a:58c109ec:afbc226e
ARRAY /dev/md2 metadata=1.2 spares=1 name=localhost.localdomain:2 UUID=395d8c9d:7b93f1cb:66588da3:36f7579e
ARRAY /dev/md3 metadata=1.2 spares=1 name=localhost.localdomain:3 UUID=1edf07a8:5908ee21:b45a08f6:40a3b449
ARRAY /dev/md4 metadata=1.2 name=localhost.localdomain:4 UUID=c7b2e3fa:11e7cda9:d6b71a77:e2607793
ARRAY /dev/md5 metadata=1.2 name=localhost.localdomain:5 UUID=8d9165db:af7999a6:dd3634dc:fed73f96
ARRAY /dev/md6 metadata=1.2 name=localhost.localdomain:6 UUID=e29c0f5b:52d09630:2f2edae8:d30a18f3
|
- mdadm(Linux RAID) ではなくて、Fake RAIDと呼ばれるオンボードのRAIDを使って、Linux上でdmraidドライバを使うことで、多少軽量にRAID-1を構築できるし実験済みだけど、スペアディスク構成などのフレキシビリティや、障害発生時の対処方法の分かり易さなどを総合的に判断して、オーソドックスに Linux RAIDに戻ってきた。
一度解列されると再構築に時間がかかるのだが、そのぶん普段は意外にCPU負荷が少ない。 この辺はZFSファイルシステムとは正反対とも言えそう。
- メインのゲストマシンにFreeNAS/NAS4FreeでZFSファイルシステムを使うのも有だが、後でボリウムを拡張/縮小/物理ディスク移動など色々なフレキシビリティの良さを考えると、LVMと組み合わせて使えるLinuxがやはり良い。
- Crystal Disc Mark のベンチ
キャッシュが十分に効いている状況でのテストです。 これだけ速いと、メインゲストのCentOSのCPU負荷もかなり上がり、ESXiマシン全体でCPU使用率60%を超えます。
USB3.0コントローラーのパススルーテスト [20]
テスト的に、(玄人指向)USB3.0RD-PCIe、Ubuntu12.04でUSB3.0で接続できた! 同物理マシン上のCentOS6からNFSマウントして、100MB/s出ている。但しなぜか読み込みはエラーで使えず。
- 使用機器
HDDケース
- (NOVAC) 2SATA HDDはい~るKIT RAID Data Saver NV-HS222U3S[22]
- USB3.0 と eSATA のどちらか片方の接続が可能
- RAID使用可能と思うが、今回は単独ディスクとして確認
コントローラ/ゲストOS | CentOS 6.3 | ubuntu 12.04 |
M/B内蔵H77(Intel)コントローラ ESXi usbパススルー | ×(2.0) | ×(2.0) |
M/B内蔵H77(Intel)コントローラ PCIパススルー | ×(2.0) | ×(2.0) |
(玄人志向)USB3.0RD-PCIe PCIパススルー | ×(2.0) | ○ |
- 但し、USB3.0接続できた組み合わせでも、HDDを2台入れた状態でも1台しか認識しない。 eSATAのマルチポートプライヤみたいには行かない。
- 書き込み速度は、100MB/s程度出る。 但し、読み込みはUSB3.0だとエラー頻発で使い物にならない。USB2.0機器だとOK。
- 他のOS
- Windows XP sp3では、(玄人志向)USB3.0RD-PCIeをパススルーしても、ルネサス製デバイスドライバーの最新版を(3.23)入れても認識しなかった。
- Windows 7 ではディスクの認識はOK、USB2.0だと読み書きOKだけど3.0だとだめ。
NICパススルーはゲストマシンに負荷がかかる? [23]
(INTEL)PRO/1000 GT DESKTOP ADAPTOR[24](PCI) をパススルーして、WindowsXPゲストマシンで使ってみると、大したことをしていないのに何やら負荷が急上昇。
- パススルーではなくてESXi経由で普通に使う分には大丈夫なんだけど・・
- 最近のPCIスロットはネイティブPCIではなくて、PCIe/PCI変換を行っているらしいから、そのせいかもしれない。
- 今回のCPUは確かに省電力ではあるけど、CPUパワーはそれほどでも無かった印象。 PCIパススルーするとゲストマシンのCPUパワー消費が増えるのでそのせいもあるかも。
- PCIパススルー自体は可能な拡張ボードでも、パスした結果ゲストOSがどう扱えるのかは、個別に異なる。 期待通りに使える場合も、使えない場合もあるので、人柱のリスクがあるからあまり高価なボードを買う気にならない。
- Musicサーバー用に当初はオンボードのUSBコントローラ-2をパススルーしてみたが、USB2.0のボードを追加購入してそちらをパススルーすることで安定運用している。
- しかし、このマザーのH77チップセットだとPCIボードは一括でパススルー設定になるので少々使い辛い。PCIeと同様に個別設定可能だとよかったが。
- 家族用ゼロクライアント用にPCIのGbLANをパススルーするとCPU負荷が尋常でないほど増えてしまうので、結局VM Network経由とした。今のところ安定的に使えているけど、ちょっと残念。 まあ、PCIeスロットが一つでも多いマザーボードを使ってそちらのNICをパススルーすれば済む話かもしれない。
ということで、当初の目的に照らすと微妙に未達成な面もあるのだが、移行自体は終わったので一区切り付いたと思う。