DAS
2011年1月の内容です。すぐに陳腐化する内容だと思うので参考にする際は注意が必要です。
はじめに
D2Dバックアップでのバックアップ先のストレージのために、DASでHDDを増量してみました。
- バックアップ用途なので、それほど堅牢性は求めません。頻繁に壊れないなら十分です。
- ほとんどのデータはGbEのネットワーク経由で転送するので、速度もほとんど求めません。(ここを何とかしたいけど、待てば確実に安くなるので我慢)
- 容量は、バックアップ元のファイルサーバの容量が6TBなので、その4倍くらいで、24TBくらいが欲しいです。
RAIDにしないので、2TBのHDDだと12台です。
参考価格
DELLのPowerVault MD1000は意外と安くて、WEBで80万くらいでハードが買えます。代理店を通すともう少し安くなると思います。HDD込みだと、安くてもそれくらいするようです(感覚的には劇的に安い)。HDDなしなら、20万くらいで済みそうですが、もはやサポートもほぼ無しです。
(当然ハードだけの価格です)
HDDなしのDASを買ってきてパーツ扱いするという手も安く手に入るなら良さそうですが、今回は、普通にパーツを買ってきて構築しました。
3.5インチSATA HDD15台のDASにするので、ホストとの接続はSASエクスパンダにしました。
パーツ選定
| 分類 | メーカー | 型番 | 単価 | 個数 | 小計 |
| ケース | scythe | STURM-BK | 6,195 | 1 | 6,195 |
| HDDケース | Cremax | MB455SPF | 18,282 | 3 | 54,846 |
| 電源 | scythe | GOURIKI3-600A | 6,948 | 1 | 6,948 |
| スイッチ | ainex | KM-02B | 980 | 1 | 980 |
| SASエクスパンダ | CHENBRO | CK12803H0C03 RevB1 | 35,933 | 1 | 35,933 |
| ケーブル | adaptec | I-mSASx4-4SATAx1 0.5m R | 2900 | 4 | 11,048 |
「押さえないといけないところは、そこそこ金をかけて、必要ないところは安価に」が方針です。金額の半分はHDDケースです。ここには挙げていないHDDは、12万くらいかかります。
ケース
- 高さが445mm以下
- 前面がすべて5インチベイ(9個以上)
- 個々の5インチベイにガイド用の突起がない
というのが条件です。
445mmを超えると19インチラックに入りません。ラックマウント用のケースでもいいのですが、大抵スチールでちゃんと作ってあるので重いです。あと、単純に高いです。HDDを入れるだけなので、奥行きも必要なく、箱になっていればいいだけなので安く済ませます。マザーボードを載せる部分が空くので、リダンダント電源も簡単に載ります。
5インチベイは、リムーバブルケースを入れるので、全面5インチが理想です。よくガイド用に5インチベイをハーフハイト単位で突起があるものがありますが、そのようなケースだと突起を潰さないといけないので面倒です。
HDDケース
HDDケースは、3.5インチHDDをなるべく高密度に配置したいので、5インチベイ3つで3.5インチHDDが5台積めるケースを使いました。Cremax製です。センチュリーからも同機能のケースが出ていますが、アレはダメです。使ったことがありますが、構造的な問題があります。
リムーバブルでない方が安く上がるのですが、交換時の手間は最小にしたいので、リムーバブルにします。ここを妥協すれば、全体の金額(HDD除く)が半額くらいになります。
5インチベイの数と同じで良いなら、zalman ZM-HDR1が安くて良いです(HDD3台分で、6千円くらい)。最近よく使っています。
ちなみに、MB455はあまり冷えません。
電源
電源は、この手の用途だと通常はリダンダントですが、電源の故障はそれほど多くないのと、バックアップ用なので電源障害で全滅しても困らない環境なので、普通のPC用です。
スピンアップを分散させられれば、あまり電力は必要ないのですが、一応HDDの定格くらいは確保してみます。1台あたり12V2A,5V1.2A(HUA722020ALA330より)として、15台で12V30A,5V18A必要です。
余裕をもって、1.5倍くらいにして、12V45A,5V27A以上くらいで探しました。
GOURIKI3-600Aは、実は1.5倍には足りていません。あまり余裕があると効率が悪くなるのでやや控えめです。
同700Wモデルにしなかったのは、何故か700Wモデルの方が5V出力が弱いからです。600Wモデルで、12V35A,5V24Aは出せます。
12Vは、CPU用にレーンが分かれていて、35A, 25Aで合計では500Wまで取れるらしいです。外からだとどういう分割になっているか分からなかったので分解して調べました。4Pin*2のCPUだけが別系統でした。でも元は同じで、それを分割して、それぞれの過負荷を別に監視しています。
とりあえず、ストレージで目一杯使うなら、CPU用の8PIN CPUと書いてあるところからも取ったほうが良さそうです。でも、今回は足りそうなので特に対処しません。
と思っていたけど、パーツの到着待ちで暇だったので、つい改造してしまいました。
電源スイッチ
マザーボードを使わないので、ATX電源を直接スイッチで起動する必要があります。自作しても大した手間ではないのですが、一緒に売っていたので市販品を買ってきました。
電源まわりの改造のためのパーツとして使います。ATX電源のコネクタはパーツとしては使いやすいのがあまり売っていないので、基板もついていて便利そうです。
SASエクスパンダ
SASエクスパンダはCHENBROか、最近出たIntel製のRES2SV240くらいしか、普通に買えるのがないようです。Intel製は6G対応ですが外部にコネクタを出すのが面倒なので、CHENBROになりました。
内蔵16ポートと、外部があればいいので、28port版です。
外部端子で、Input/Output用が出ているので理想的です。
使用チップは、LSISASx28です。
ちなみに、RES2SV240は、LSISAS2x24です。
内部ケーブル
SFF-8087からSATAへの変換ケーブルは、電源付きのケーブル(SFF-8482)だとHDDケースに繋がらないので、SATA用の7ピンのケーブルに変換できるものが必要です。安いもので良いので適当です。
組み立て その1
ケースと電源が届いたので組み立てます。
ホットメルトで両面テープが付いているので剥がすとこんな感じ。
![]()
電源スイッチ
多くのATX電源はPS-ONをGNDレベルにすると電源が入る(それだけだと入らない電源もある)ので、トグルスイッチを使うと単純に電源スイッチになります。
しかし、通常のATXケースの電源スイッチは押した時だけ通電するプッシュスイッチです。
ainex KM-02Bは、前者のトグルスイッチになっています。そのため、ケースの電源が使えません。
少し付加回路を付けてケースの電源が使えるようにします。
その辺に転がってたもので即興で作りました。
![]()
回路図と配線図。配線はもう少しシンプルにできます。
![]()
適当な上に途中で間違いに気付いて手直ししているのでかなり汚いです。
試したら、ちゃんと使えました。
ケース
フロントは蝶番で開くようになっています。
事前には知らなかった機能ですが、割といい感じです。
![]()
取れるものは全部取りました。
普通に外していってここまで空になるケースも珍しいです。
![]()
余ったパーツ。
![]()
蓋は有ったほうがよさそうだったので、一回捨てたあとに回収しました。
電源を載せました。
3.5インチ用だったファンは再利用でリアに取り付けました。でも、このファンの回転数は低いし、ケースの気密度も低いので、あまり意味はなさそうです。
![]()
ひとまず完了。
この状態で、7.4kgです。
![]()
![]()
安いケースなのに、案外サーバっぽい感じになりました。(高級感ではありません)
HDDをフル装備したら、いい感じに仕上がりそうです。
ストレージ用には十分ですが、サーバ用にマザーボードを乗せるとなると、ちょっと狭いかもしれません。
電源内の配線を変更
時間があったので、邪魔な電線を外して、CPU用の12Vをドライブ用に使えるようにしました。
ドライブの電源で使う4ピン出力が2系統しかなくて、使われている電線(18AWG)だと、ドライブ15台分の30Aを取れないというのも改造の理由です。(実際にはそんなに流れないとは思う)
注:電線の取り外しはかなりの熱が加わって部品に負担もかかるし、ATX電源としての機能は失われるので、普通はやらないほうが無難です。
ちなみに、改造後は十分にテストしてます。
今回の用途のための電源になってしまいますが、覚悟を決めていろいろ捨て去りました。SATA用の電源すらありません。
![]()
間引いたあとの電線の量
これでケース内の配線がすっきりします。
風通しが良くなるので、コンデンサの寿命も多分延びます。
![]()
これくらい抜いています。
ヤニがかなり汚いけど、これで壊れたりはしないので別に気にしません。
CPU用の12V2からの出力をドライブで使えるように取り出しました。
あとは、外部FAN電源が邪魔だったので省いたり、ATX24ピンから4ピンを無くして12V,3.3V,5V,-5Vも供給してなかったりと、要らなそうなところを省いています。
メンテナンス性には何の影響もありませんが、この改造で0.4kg軽くなりました。
電源を調べる
パーツが届かなくて暇なので、電源の出力波形を見てみました。
まずは、無負荷時から。
スイッチング周波数は155kHzくらい、リップルは12Vで900mV、 5Vで350mVくらいです。ちょっとスパイクノイズが大きすぎる気がします。
でも、波形を見たからといった特に何かするわけではありません。
次に負荷を繋いだときの状態を見るために、その辺に転がってたHDDを適当に8台接続しました。
50us,50mV
![]()
2us,50mV
![]()
5Vも12Vもほぼ同じです。
あと、今日ATXコネクタを見ていて、3.3Vに謎な配線があることに気付きました。追ってみると、ATXコネクタ端で折り返して帰還していて、配線の電圧降下分の補償しているようです。接続してなくても問題なさそうですが、気分的に悪いので、電源内で接続しました。
HDDケース・電源スイッチ
HDDケース装備。
5インチベイの都合で面一にはなりませんでした。最も奥にした状態で20mmはみ出します。そして、この状態ではフロントカバーが閉まらないので外しました。
せっかくケースのスイッチが使えるようにしたのに、結局外付けでスイッチが必要になりました。
現物合わせで作ってるので仕方ありません。
エクスパンダ
- CK12803H0C03
- I-mSASx4-4SATAx1 0.5m R
- miniSAS(SFF-8088) to miniSAS(SFF-8088)Infiniband(x4)ケーブル1m
が届いたので設置。
発注してから丸2週間かかりました。
SASエクスパンダ
![]()
ケーブル類です。
SFF-8088 to SFF-8088ケーブルは安くても1万弱します。
SFF-8087 to SATA*4は2,500円くらいからあります。
![]()
配線しました。SASエクスパンダの奥行きがぎりぎりで、ケーブルも固いので、かなり無理をしています。HDDケースを少し手前に配置すれば問題なさそうですが、今回は無理やり詰め込みました。
![]()
完成しました。HDDなしで10.7kgで、かなり軽く仕上がりました。
内部にアクセスすることはほとんどないのでスライドレールは要らないけど、HDD挿入時に動くので耳は欲しいです。
HDDは15台で10kgくらいになるので、全体で約20kgです。
さらなる拡張
SASエクスパンダでの拡張で、拡張用のコネクタも余っているでの、同構成のハードウェアを増やせば単純に繋げられます。3段以上はデイジーチェーンにはしないで、ホスト側を拡張したほうが良いとは思います。
ちなみに、拡張予定はありませんし、想定もしていません。すぐに拡張するのでなければ、おそらくHDD総入れ替えの方が良いです。
ソフトウェア設定
ホスト側
ホストのSASカードです。
OS: debian5.0 (kernel 2.6.26)
候補
- areca ARC-1300-4x
- debianで標準サポート
- 3Gbps
- 約20千円
- PCI-e x4
- LSI SAS 9212-4i4e
- ドライバをビルドすれば使える
- 6Gbps
- 約35千円
- PCI-e x8
今回はnonRAIDカードなので、ほぼチップそのままという気がするので、エクスパンダと合わせてLSI製にしました。
速度の点でも、LSIの方が6Gで速いです。でも、今のところExpanderが3Gなので6Gは無駄です。
arecaは使ったことがないので避けたというのも理由のひとつです。WEBで調べる限りは良さそうな感じでした(RAIDカードは)。
debian5.0標準では対応していないので、ドライバをインストールします。
まず、
から、Linux RHEL5等のドライバをダウンロードしてきます。
2011/1/14の時点で、08.00.00.00-3で、ファイル名はLinuxMPT_SAS2_RHEL5_SLES10_P8.zipです。
解凍すると中にmpt2sas-08.00.00.00-src.tar.gzがあるので、これを使います。
その前に、カーネルをビルドする環境になっていない場合は、ビルドできるようにします。
fakeroot, kernel-package, linux-source-2.6のパッケージをインストールします。
1 2 | |
LSIのドライバ MPT2SASをソースツリーにコピーします。
1 2 3 | |
もっと正しい方法があるような気がするのですが、
/usr/src/linux-source-2.6.26/drivers/Kconfigに、
source "drivers/scsi/mpt2sas/Kconfig"
を追加
/usr/src/linux-source-2.6.26/drivers/Makefileに、
obj-$(CONFIG_SCSI_MPT2SAS) += mpt2sas/
を追加します。
1 | |
を実行します。特に何も変えなければ配布されているカーネルと同じになるようです。
ここで、
Device Drivers ---> SCSI device support ---> [*] SCSI low-level drivers ---> <M> LSI MPT Fusion SAS 2.0 Device Driver (128) LSI MPT Fusion Max number of SG entries (16 - 256) [*] LSI MPT Fusion logging facility
と設定します。
1 2 3 | |
/usr/src/linux-image-2.6.26_custom.1.0_i386.deb
ができるので、
1 | |
でインストールします。
あとは、
shutdown -r now
で再起動して、ブートメニューで2.6.26を選べば新しいカーネルになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
MSM
MSM_Linux_installer-6.90-05.tar.gz
MegaRAID_Storage_Manager-*.noarch.rpm
Lib_Utils-1.*.noarch.prm
が必要です。
http://kb.lsi.com/Attachment781.aspx
以下のパッケージをインストール
csh
libstdc++5
libstdc++6
alien
alien -k --scripts Lib-Util_1.00-07_all.rpm
alien -k --scripts Lib-Util2_1.00-01_all.rpm
alien -k --scripts Megaraid-Storage-Manager_6.90-05_all.rpm
dpkg -i megaraid-storage-manager_6.90-05_all.deb
dpkg -i lib-util_1.00-07_all.deb
dpkg -i lib-util2_1.00-01_all.deb
/etc/init.d/vivalidiframeworkd start
/etc/init.d/mrmonitor start
megaraid-storage-manager_6.90-05_all.rpm
だけでもサービスは一見動くようにみえるが、機能しない。
Lib-Util, Lib-Util2を入れれば大丈夫。
エクスパンダ経由で複数台繋ぐとMSMでの認識がおかしいです。
driverでは正しく認識されているので、使用上は問題ありません。
おそらくサーバ側のソフトの問題だとは思いますが、よく分かりません。
すべてslot0と表示されているので、Expander以下の認識が悪いみたいです。これが非対応OSのためなのか、ハード構成が悪いのかは不明です。
とりあえず、正式対応しているOSで試してみたいところですが、保留中です。
MegaCliは、HBAには対応していないようなので使えません(コントローラを認識しません)。
デバイス名が外部優先になる
PCI-Expressで繋ぐので外部ストレージ用のカードが優先になってブートで困ったりします。
いろいろ方法はあるようですが、ラベル付けして
/boot/grub/menu.lstの kernel設定で
root=/dev/disk/by-label/boot
のようにしてしまうのが楽でした。
ちなみに、fstabも全部ラベルかUUID指定にしています。
ext2/ext3のラベル設定 e2label device new-label
swapのラベル設定 mkswap -L label device
UUID確認 blkid device
Ctrl+C でBIOSに入れない
ブート設定をしないとBIOSに一向に入れません。
このカードからブートするようにマザーボードのBIOSで設定しておくと、LSIのBIOSに入れます。データ置き場用カードとしてブートに使わない場合は要注意です。
LSIのBIOSの設定で、ブートにBIOSかOSかを選ぶ項目があるので、ここをBIOSにしておくと、ブートの優先にしておいても実際にはOSはブートしないようです(ややこしい)。
HDD
HDS722020ALA330は問題なく使えているようですが、少し高いので、SeagateのST32000542ASをテスト中です。
実運用前なので、破壊的にテスト中です。
1 | |
ちなみに、動作中にHDDを追加してもちゃんと認識しますが、以下のようなエラーが出ることがあるので、リブートしたほうが良いようです。
1 | |
MPI(Message Passing Interface)のリプライに基づくワーニング表示です。
PLは多分PhysicalLayerだと思うけど不明です。他にIOP(I/O Processor)と、IR(Integrated RAID)があります。
なぜかこのドライバだと解釈されませんが、PLのcode=0x12はAbortらしいです。
リブートしてからはとりあえずエラーは出ていません。
単体HDDをテープのように使っているので、残り容量が少なくなったら足す予定です。RAIDにしていないので追加が簡単です。
その他、WesternDigitalのWD20EARSも使ってみましたが、問題ありませんでした。今のところ相性問題が出たHDDはありません。(速度は気にしないので測っていません)