iSCSIターゲットには何度かこのブログにも登場しているExpress5800 GT120aを使用しようと考えていて、どうせならHDDも10台積んで(2台はOS用)ストレージタンクを構築しようと思い、それにはまず鯖入手時についていたMegaRAID SAS 8708EM2がどの程度使えるのかベンチマークを取ろうと思いました。
8708EM2をExpress5800から取り外し、バラックで置いてあるMBに挿し、SFF8077>SATAx4に変換するケーブルをHDD挿し起動してみると、何故かHDDを認識しないのです。コントローラーのBIOSからもWindowsからも見えません。HDDとの相性なのか、それともコントローラーが死んだのか、それともケーブルが死んでいるのか。
Express5800にはもともとホットスワップなベイがついているのですが、これが8708EM2とSFF8077<>SFF8077でつながっていて、これにつないだときはしっかりとHDDを認識するのです。
逆に、このベイにSFF8077>SATAケーブルを繋ぎ、マザーボードオンボードで持っているICH10のSATAにつないだときは問題なくベイに刺さったHDDを認識します。
もしかしてOEM用にコネクタがDisableにされてる?とか思ったのですが、今になってSFF8077にはリバースとフォワードがあることを知りました。まさかこのコネクタでDB9ピンケーブルのクロス・ストレートの罠のようなものがあるとは思いもしませんでした。
HDD8ポート全てをこのカードに任せようと思ったのですがケーブルがありません。無いものは仕方がないので、とりあえずICH10と8708EM2の両ポートを使うことにしました。考えているのは非対称なraid-zアレイをHDD4台ずつで組もうと思っているのですが(HDDが安ければ2Tをもう4台買うところですが今は高すぎるのでファイルサーバーのバックアップ機に使っていた1.5x4を転用する)どうせHW-RAIDは使わないし、接続するものはHDDなのでどっち使っても帯域には余裕があると思うのでまあこれはいいとしましょう。
ZVOL1
ICH10
HDD 1
HDD 2
HDD 3
HDD 4
ZVOL2
8708EM2
HDD 1
HDD 2
HDD 3
HDD 4
こうなる予定です。
この次にはまったのがMegaRAIDのマネージメントです。WindowsならMegaRAID Storage Managerを入れればそれで終わるのですが、Linuxの場合はそうはいきませんでした。
ドライバに関してはOS側で最初から持っているのですが、それを管理するLinux用MegaRAIDStorageManagerがRPMで配布されているのでdebianの場合はalienでパッケージのコンバートをする必要があります。
alien --scripts -d megaraid-storage-manager_8.10-04.rpm
dpkg -i megaraid-storage-manager_8.10-04.deb
とすることによりインストールは出来るのですが、/etc/init.d/mrmonitorを起動しようとすると
error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS64
と言われて起動できず。64bit環境で32bitプログラムを動かすには?と調べるとia32-libsをaptで入れればいいらしい。そういえば前も似たようなことをやった記憶が。これでとりあえずデーモンは立ち上がりました。
とりあえずこれでmrmonitordは動くようになったのですが、今度はアレイを作ったりする為のmegaraid-cliが動かない。これもrpmで配布されているのですがalienでインストールしても動かない。
Einarcと言うプログラムでRAIDカードのマネジメントが出来るようなことが書いてあったのですが、これは各RAIDカードを同じコマンドで管理するためのCLIのラッパでありCLIコマンドが動かないと意味がありませんでした。configure --modules=lsi_megacliとやると本来なら動くみたいなんですが…。
管理ツールが動かなくても、管理デーモンは立ち上がっているようなので今度はWindows側にMegaRAIDStorageManagerを入れ、リモートで管理しようと思ったのですが、いくらサーバーを探してもそんなサービスはないと言われ見つからず。何故だ…と悩んでいたのですが、ここに来てカードのBootROMの起動が遅いので殺していたことを思い出します。
こういった形でスロットのROMを選んで殺せるのですが、これを有効にしてOSを起動してみると無事にWindows側から見ることが出来るようになりました。
BootROMを殺していても、一度アレイがConfiguredになればそのアレイは/dev/sdXとして見えるので、OSの起動ドライブ時以外はいらないのではないかと思っていたのですが間違いでした。
これで晴れてMegaRAID SAS 8708EM2を使うことが出来るようになったのですが、そもそも8708EM2にはJBOD(単発のただ伸びてるだけの状態のディスク)という概念が無いらしく、単発で動かすには1台だけのRAID0を組むしかないようです。
これでもパフォーマンス的には問題ないのですが、ZFS Howtoには「zpoolに入れるにはJBODで起動させ、いかなるRAIDファンクションも使うべきではない(要約)」と書いてあったので悩ましいところです。RAIDカードにはバッテリもついているので(へたっているかもしれませんが)多分一台だけのRAID0x4で構成しても大丈夫ではないかと思うのですが…。
また、一台だけでRAID0をしても、中身としてはRAID扱いなので、もしRAIDカードが死んで他のカードに交換しないといけなくなった場合にも問題があります。おそらくLSI系であれば読めると思うのですが、他のベンダーだとアレイを認識してくれないという問題があるので、せっかくのSW-RAIDの柔軟さをかなり失っている気がします。対処法としてはもう一枚同型のカードを買って暗所保管しておくことですが…悩ましいです。
はまりにはまっているような気がする今日この頃です。
ツイート
コメントを書く
必要事項とコメントを入力して下さい。