皆さん今日は 三度の飯よりジャンクが好きなGriです。
FreeNASのインストール、設定はWEBをググれば沢山出てきますので割愛して
あまり情報の無いハードウエア的な側面からFreeNASを書きたいと思います。
ジャンクで作ると言っても今回は、中長期的な運用(少なくとも3年~)とHDD多載、メンテナンス性に重点を置いたハードウエア構成で構築しています。
ご託は後にして、完成品を見てみよう・・・
ドーン!
3.5インチHDD14基搭載のFreeNASに仕上がりました。+SSDを3つ繋げているので17個分のSATAコネクタが必要です。
えっこれがジャンク?はい、そうです。電源と家に転がっていたジャンク品以外は全てヤフオクの
ジャンク品でそろえました。
電源は家に転がっていた
同じGC大阪支部の先輩
おすすめの新品を使用しています。
では構成を晒していきましょう。
FreeNAS:11.1-U7
ケース:antec nine hundred two
マザーボード:P7P55D EVO
電源:owltech RAIDER 750W (26A +5V) 80PLUS SILVER
CPU:i7 870
メモリ:32GB (P7P55D EVOは公式16GBまで対応となっているが、CPUが32GB対応してたら動く)
SATAカード:Asrock SATA3 Card 、玄人志向 SATA3RI2-PCIe、DELL H200 (HBA化)
CPUクーラー:COOLERMASTER Hyper212X
ビデオカード:PCI接続の安いもの(映れば良い)
LANカード:EXPI9402PT
HDDマウンタ:iStarUSA BPN-DE Series リムーバブルラック 5Bayモデル (BPN-DE350SS) 1基
3Bayモデル (BPN-DE230SS) 3基
HDD:2TB(TOSHIBA、Seagate 7200rpm CMR ) 14基
SSD:kingston SV100S2 32GBx2、SunDickSDSSDHP-256Gx1
と言う構成です。
この構成のメリット
なんと言っても一番のメリットはホットスワップとリムーバブルラックによりHDDトレイレスで
使用できるところですね。
ホットスワップが使えるのでHDD障害時も無停止運用できます。
そして最大のメリットと言えば、HDD障害時にどのHDDが障害を起こしているか一目でわかる
と言う部分です。
こんな感じで、障害HDDが赤LEDで光るので一目瞭然。
流石に14基もHDD搭載してて、単純なネジ止め式のHDDマウンタを使用していると
シェルコマンドで障害HDDのシリアルナンバーまでは特定できても何処に繋がれているのか
わからず、毎度毎度HDDに型番をテプラ等で書いとかないと大変な事に。
その点において、このリムーバブルラックはディスク交換もトレイレス、ネジレスで交換できるし
交換対象HDDも一目でわかるので、メンテナンス性は抜群です。
仕事等で家でサーバメンテナンスする時間があまりない人やズボラさんにはぴったりですね。
障害HDDのLEDが光ると言うのはラックマントサーバと同じ形ですね。
マウンタに関しては諸説色々ありまして、本当にマメで保守的な方はネジ止め式のシンプルな
マウンタを選ぶ傾向があるようです。
理由は、一つ一つ独立式のHDDマウンタでないと一つのマウンタが壊れると
他のHDDも巻き添え食ってアクセス不能になる → ZFSが壊れる。
と言う理由です。
しかし、このiStarUSA のリムーバブルラックはHDD接続基盤が、半独立式(端子・回路は独立、電源は共有)の為、余程の事が無い限り、壊れてもHDD単独で壊れるだけで済みます。
さらに言えば、ZFSは一気にHDDが何台アクセス不能になろうが、
HDD以外のハードウエアが全取っ替えになろうが
HDDが正常にアクセスできる状態にキッティングして
接続してからボリュームのインポートをしてやれば大抵の場合復活します。
ZFSファイルシステムは丈夫です。
HDDとSATAポートの取り付け順がキッティング以前と変わっていても正常動作します。
なので、基本的にHDDさえ無事なら極論その他のハードウエアは全てライフサイクル毎に
上位製品に置換可能です。にゃめんなよ!
リムーバブルラックの話から逸れますが、この構成のメリット
というかFreeNASのメリットですが、多様なSATAカード、HDDの混在環境でも
問題なく動作すると言う点があります。
RAIDカードによっては同じ型番のHDDでないと駄目とか時々あるんですが、そんな事はないです。
さらに、家で使用しているHPのP4500と言うラックマウントサーバー
の
P410と言うRAIDコントローラーなんて同じ2TBでこっちのほうが搭載HDD数は12基なのに
HDD1つ交換リビルドするのに丸二日くらい掛かります。
しかもBBWCのバッテリがなくなるとライトバックできなくなるので極端に性能低下します。
それに比べ、この構成のFreeNASではHDD14基のRAID-Z3でも
リビルド(FreeNASではResilverと言う)が5時間くらいで終わります。明らかに速い。
まぁリビルドはCPU依存なのでCPUをもっと今の世代のものに変えてやるだけでリビルド時間は
もっと速くなる可能性がありますね。
因みにZFSはマルチコアの総合CPUスコアは関係なく、単一コアのCPUスコアに影響されるので
CPU選びからする場合は、同じCPUシリーズのラインナップであればコア数少なくてクロックの
高いものが良いです。
エアフロー
FreeNASは使い方にもよりますが、結構CPUを使いますので熱くなりがちです。
なので横面吸気、背面排気、上面排気付きで5インチベイが9個もあるこのケースは意外と
貴重だったりします。
HDD熱くならないの?
こんなにぎゅうぎゅう詰めにしてHDDの温度はどうなのでしょうか?
結論から言うと、室内温度28度固定でHDDは熱くなっても40度前後となります。
このFreeNASを作る前に同じ構成でWindows Server 2012R2を入れて
ダブルパリティで運用していた時期がありました。
その際のCrystalDiskInfoの数値が根拠になります。
エビデンスとってなかったなぁ。昔の事なので。
長期的な運用性
HDDは交換していますが、この構成で2年くらいほぼ連続稼働させています。
ジャンクな構成でもこれくらい安定動作すれば自分的には御の字かと。
後術しますが、ブータブルメディアにはUSBではなくSSDを使用しています。
「この構成のメリット」の項でも記述していますが、ZFSはハードウエアのライフサイクル毎に
ハードウエア総取り替え可能なので中長期運用が可能です。
とはいえこの構成はエンタープライズ製品ではないので可能な限りの中長期運用になってしまいますが。
あれ、写真一部差し替わってない?
そうです。
「この構成のメリット」の部分で表示している画像のリムーバブルラックの色が
変わっていますよね。
はい、私がリムーバブルラックを本物のジャンクにしてしまったので交換しました。
どうやらこのリムーバブルラック、HDDの挿入方向で壊れる事があるみたいです。
正確にはSATA端子側をまちがって前後逆にして挿入すると、以降そのスロットはHDDを
認識しないようです。
寝ぼけ眼でうっかりHDD換装した時にやらかしてしまったようです。
SATA端子側を逆にして挿入してしまうパターン↑NG
本来の挿入方向↑OK
何で今更2TB構成なの?
8TB主流の今現在において何故多載で2TB構成にしたのか。
丁度家に2TBのHDDが10個程転がっていたので(どんな家やねん)4つHDDを
ヤフオク中古HDD(CrystalDiskInfoで正常判定)で購入して多載長期運用時における
運用ノウハウの確立や運用試験を行ってみたかったからです。
8TBx14は流石にコストが掛かりすぎて手が出せませんでした。
LANについてはオンボードLANだと駄目なの?
LANについてはEXPI9402PTを使用しています。
このマザーボードのLANはRealtekなのですが、FreeNAS10くらいからRealtekだと
転送速度が40mb/sくらいになってしまうようになりました。
XigmaNAS(NAS4Free)だと80mb/sくらいでるんですけどね。
Windowsの世界では蟹チップことRealtekは昔に比べれば通常使用に問題ない程になってきましたが逆にWindows以外だとあまり性能がでません。
EXPI9402PTだと(と言うかintel系のLANカードだと)安定して110mb/s程で通信できます。
ネットワーク越しにWindows10でCrystalDiskMarkをとってみます。
うーん、オンメモリに乗ればリードはReadはワイヤースピード限界まで出ていますね。
Writeもなかなか健闘しています。
1GbEのネット越しでRAID-Z3では以前ブログにあげた下記構成には流石に負けてしまいますね・・・
[RAIDカード] DELL H700 1GB cachecadeのベンチマーク検証
システム構成
HDD 14基、L2ARC 256GB SSD、ZIL32GB SSD のRAID-Z3にしています。
以前RAID-Z2にて運用していましたが、仕事が忙しくてFreeNASがdegrade起こしているのに
メンテナンスできず、飛ばしてしまった時があったんですよね。
別機で同期させておいたバックアップからデータ戻しましたけど。
なので今は速度よりも安定性重視と言うことでRAID-Z3にしています。
ぇ?RAID-Z2で2プール運用しろよって?
本当はそうすべきなんでしょうが、本来の目的がHDD多載で中長期運用をコンセプトとした
試験モデルなので、このような構成にしています。
そしてFreeNASのOSが入っているブータブルメディアはUSBメモリではなく、
USB to SATAケーブルを使い、32GBのSSDを使用しています。
こんなの。
よく一般にFreeNASはUSBメモリでブートさせてたり、USBメモリ同士の同期を行う機能で
冗長性を図っていますが、長期的にみればUSBメモリは、SSDタイプであろうと、SLCであろうと
壊れる時は壊れます。
壊れた方のUSBメモリを同期されても困るし・・・
では何故USBメモリは壊れるのでしょうか。
これは度々FreeNASのフォーラムでも話題に上がっていて何が最適解なのか議論されていますが
私なりの答えは、USBメモリはそもそも常時接続前提で作られているデバイスじゃないから、
熱や電圧変化で経年劣化し易いと言う考えです。
USBメモリの書き換え耐久の問題等は実はあまり大きく影響しないように思います。
しかもFreeNAS(embeddedインストール)もESXiも極力オンメモリで書き換え少ないように設計されています。
上記の理由から長期安定運用目的なら常時接続が前提で作られている製品にすべきです。
よってここでは余り物の32GBのSSDを選択しています。
SATAポート節約の為に、USB接続にしているだけです。
運用上のトラブル
予め長期運用を目的として構築しているのでトラブルらしきトラブルはなかったのですが、一つだけドハマリしたトラブルがありました。
ある日、S.M.A.R.T.でHDD異常が検知され、HDD一つがremovedされdegradeを起こしました。
早速交換用HDDを用意し、replaceしようとしたのですが、下記のエラーで上手くreplace出来ませんでした。
Request Method: POST
Request URL: http://xxx.xxx.xxx.xxx/storage/disks/wipe/ada0/
Software Version: FreeNAS-11.1-U7 (b45bfcf29)
Exception Type: MiddlewareError
Exception Value:
[MiddlewareError: Failed to wipe ada0: dd: /dev/ada0: Input/output error
1+0 records in
0+0 records out
0 bytes transferred in 0.016574 secs (0 bytes/sec)
]
Exception Location: ./freenasUI/middleware/notifier.py in _do_disk_wipe_quick, line 3613
Server time: 日, x x月 20xx 17:26:57 +0900
Traceback
Environment:
Software Version: FreeNAS-11.1-U7 (b45bfcf29)
Request Method: POST
Request URL: http://xxx.xxx.xxx.xxx/storage/disks/wipe/ada0/
Traceback:
File “/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py” in inner
42. response = get_response(request)
File “/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py” in _legacy_get_response
249. response = self._get_response(request)
File “/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py” in _get_response
178. response = middleware_method(request, callback, callback_args, callback_kwargs)
File “./freenasUI/freeadmin/middleware.py” in process_view
162. return login_required(view_func)(request, *view_args, **view_kwargs)
File “/usr/local/lib/python3.6/site-packages/django/contrib/auth/decorators.py” in _wrapped_view
23. return view_func(request, *args, **kwargs)
File “./freenasUI/storage/views.py” in disk_wipe
867. notifier().disk_wipe(devname, form.cleaned_data[‘method’])
File “./freenasUI/middleware/notifier.py” in disk_wipe
3638. self._do_disk_wipe_quick(devname)
File “./freenasUI/middleware/notifier.py” in _do_disk_wipe_quick
3613. “Failed to wipe %s: %s” % (devname, err)
Exception Type: MiddlewareError at /storage/disks/wipe/ada0/
Exception Value: [MiddlewareError: Failed to wipe ada0: dd: /dev/ada0: Input/output error
1+0 records in
0+0 records out
0 bytes transferred in 0.016574 secs (0 bytes/sec)
]
Request information
GET
No GET data
POST
Variable Value
all ”
method ‘quick’
__form_id ‘form_DiskWipeForm’
FILES
No FILES data
COOKIES
Variable Value
fntreeSaveStateCookie ‘root’
csrftoken ‘********’
sessionid ‘k7l34y1f9gercp41ejwgnbzo87m2xoth’
META
Variable Value
何なんだこれは・・・
MiddlewareError: Failed to wipe ada0: dd: /dev/ada0: Input/output error
って書いてあるけど・・・
結論から言うと、SATAポートの一つがどうやら異常のようで、余剰のSATAポートに
つなぎ替える事によって問題なくreplaceできました。
しかし、ここまでたどり着くのに結構時間を費やしまして、他の作業と並行しながらのメンテ
だったので純粋な時間は不明ですが、5日程かかりました。
このエラーの対策法をググっていると下記のページにたどり着きまして
sshから
sysctl kern.geom.debugflags=0x10
dd if=/dev/zero of=/dev/ada0 bs=512 count=1
その後、ディスクをwipeしたのですが、症状はなおらず、ZFS情報が交換用HDDに
残ってしまっているからかなと思い、交換用HDDを一回取り出して
Windows機に繋げ直してCrystalDiskInfoで異常がないことを確認した上で
AOMEI Partition Assistantで0セクタ埋めを行った(FreeNAS上ではDDコマンドがdd: /dev/ada0: Input/output errorになるので)
のですが、解決せず、HDD単体の問題かFreeNASのシステム上の問題か
問題の切り分けができなかったので、もう一つHDDを用意してreplace。
また同じエラー。
なんてこったい。
FreeNASのシステム上の問題だったら面倒だなと思いながら
今度は物理的な原因切り分けの為、余剰のSATAポートに繋げてみると
何事もなかったかのように上手くreplaceできましたとさ。
最初、対象のSATAポートからディスクは検出されているので
まさかポートが問題だとは思っていなかった。
※因みにSATAケーブルは正常でした。
びっくりしたなぁもう・・・
後ちょっとしたトラブルはありました。
CPUを定格OCしてお試し性能アップを図ろうとしてた時期があったんですが、
リビルド(Resilver)時に
critical temperature detected. Suggest system shutdown
となって延々再起動リビルドを繰り返していました、朝リビルドして仕事行って帰ってきたら
ログに延々これの繰り返しだったので、安定稼働志向に切り替えてOCは辞めました。
XigmaNAS(NAS4Free)とFreeNASどっちがいいの?
これは結構悩ましい問題であったりもします。
結論から言うと自分で判断付かないならFreeNASをお勧めします。
XigmaNAS(NAS4Free)の方が色々な面で頭一個上に抜きんでてます。
速度面、対応デバイス面、オンメモリオーバー時の回復タイムがFreeNASより早いetc・・・
しかし、XigmaNAS(NAS4Free)は基本CUI操作メインでおまけでGUIが付いてきているような
形なので、CUI操作わからないとハマった時辛い。
しかもCUI操作バリバリこなせる人ならXigmaNAS(NAS4Free)使わなくても
FreeBSD直接触ればいいじゃんって話になる。
しかも情報資産が少ない。
如何ともしがたいニッチなOSSなのです。
対してFreeNASは耐障害性が高く、なんと言ってもWEB上の情報資産が多い。
そして初めての人でも取っつき易いGUIメインのインターフェイス。
大概の事はGUIで事済みます。
以上が自分で判断付かないならFreeNASをお勧めする理由です。
終わり
・・・しかしこれは序章に過ぎなかった。
実は今、メモリ最大288GB積めるDELLの4Uタワーサーバを入手していまして、
こいつで本格的な10GbE FreeNASを作ろうと画策しています。
今は資金調達の為、頑張って働いています。← おい!
出来上がったらまたブログにしたいと思います。
ではではー