自宅にInfiniBandを導入した
InfiniBandを導入した.本当は10ギガビットイーサネットを導入したかったのだが,10GBASE-T対応のNICがまだ高額だったので,中古での値下がりが進んだInfiniBandを導入することにした.
導入する環境
- ファイルサーバーとメインマシンをInfiniBandで繋いで高速化することが今回の目標.
- ファイルサーバーは,Windows Server 2008 R2のHyper-V上で動作しているWindows 7 Professional 32bitのマシン.
- メインマシンは,Windows 7 Professional 64bit.
下調べ
- InfiniBandでは,ネットワークカードをNICではなくHCA(ホストチャネルアダプタ)と呼ぶ.
- IPoIB (IP over InfiniBand) というものを使うことで,InfiniBand上に通常のIPネットワークを構築することができる.
- InfiniBandには速度やケーブル,コネクタ形状にいくつか種類がある.対応関係はこのpdfがわかりやすい. http://www.viops.jp/ibday02-BASIC-xsigo.pdf
- ドライバの対応状況,OEM品の情報などはこのページがわかりやすい. http://moca.espresso.gr.jp/wiki/wiki.cgi?page=InfiniBand
- 今回使ったHCAはCisco SFS-HCA-320-A1.OEM品であり,正体はMellanoxのMHGS18-XTC.ヤフーオークションで1枚4千円ほどだった.InfiniBand 4X DDRのポートが1つだけついていて,ケーブルはCX4コネクタの銅ケーブルを使う.Windows対応.IPoIB対応.
- ケーブルはebayでアメリカから輸入した.30ft (約9m)で,送料含めて8千円ほど.
届いた
ケーブルが予想以上に太くて取り回しづらかった
インストールと設定
- HCAをマザーボードに刺し,マシンを起動する.そのままではボードは認識されない.
- MellanoxのサイトからWinOF(Windows用のドライバとユーティリティ群)をダウンロードする.今回使ったHCAは古い製品なので,最新版のWinOFにはドライバが含まれていない.そのため,Archiveから,最終対応版であるWinOF v2.1.3 Releaseをダウンロードする.
- WinOFインストールするとHCAが認識され,Windowsのネットワーク接続の一覧に,Mellanox IPoIB Adapterが現れる.
- HCAが認識されても,ケーブルを繋いだだけではネットワークは有効にならない.ネットワーク内にサブネットマネージャというものが必要らしい.WinOFをインストールしたときにOpenSMというサービスが一緒にインストールされているはずなので,サーバー側のマシンでOpenSMサービスを起動する.
- OpenSMを起動すると,めでたくネットワークが繋がった状態になる.あとはIPoIBアダプタにIPアドレスなどを設定すれば完了.
ベンチマーク
iperfでのスループット測定.理論値16Gbpsと比べるとかなり遅いが,そこまで速い必要もないので,まあ満足.
SSDをネットワーク越しにベンチマーク.実際はHDDでの運用なので,これだけ出れば十分.ちなみにGbEだとシーケンシャルリードで50MB/s程度しか出ない.
Hyper-V上の仮想マシンをつなぐ
- Hyper-Vでは,仮想マシンを物理ネットワークへ繋ぐ際に,仮想マシンへ物理NICを直接割り当てるということはできず,必ず仮想スイッチを経由させなければならない.そのため,プロミスキャスモードがサポートされないNICは,仮想マシンから利用することができない.
- IPoIBはプロミスキャスモードをサポートしない(というかデータリンク層がEthernetではない)ため,Hyper-V上の仮想マシンから直接利用することはできない.仮想ネットワークは問題なく作成できるので,一見うまくいきそうに見えるのだが,通信はできなかった.
- しかたないので,仮想ネットワークとIPoIBネットワークは分け,ホストOS側でルーティングの設定をし,それぞれのマシンに静的ルートを登録したところ,きちんと通信できた.ただ,ソフトウェアでのルーティングで,どれだけスループット低下とCPU負荷がかかるか……
仮想マシンでベンチマーク
遅い.ファイルサーバーは物理マシンで構成しよう.
コメント