zfsにトーチャーテスト中

Posted by ゆのじ on 5月 5th, 2009

昼間だけど夜っぽい

追記:原因はメモリの可能性が高まった。下記のポストは全然的外れである可能性が高いのでいったん打ち消し線で削除させていただくことにした。追って調査の上報告したい。

メモリがきちんと動くことを検証したのち、再度下記のテストを行った。やはりディスクの電源を突然抜くと、panicまで起こさないものの処理を受け付けない状態になってしまった。sil3124を用いたHBAではホットプラグはやめておいた方が良い、ということだろう。

新しくわかったことだが、GA-G31M-ES2Lに乗っているrealtekのGbEアダプタも他の例に漏れず高負荷時におかしくなる。たちが悪いのは、ifconfigで一度downさせて再度upしても疎通が戻らない。OSにはエラーとして検知されない。rgeドライバが悪いかどうかはさておき、評判もよろしくないことだしPro/1000かBroadcomかのどちらかのインタフェイスを入れたいところ。

zfsを使って構築したNASにトーチャーテストをしているのだが、なかなか難しい。これまでに試したのは、下記のような感じ。ちなみに環境は前回のハードウェアにopensolaris2008.11(snv_101b)な環境。

■動作中のディスクの電源ケーブルを突然抜く。一度本体の電源を落としてから再接続して再認識させる。
これは問題なし。ディスクの電源が抜かれた後の最初のプールへのアクセスでエラーは検知され、自動的にREMOVE状態になった。電源を落として電源ケーブルをつなぎ直して起動すると、勝手にONLINE状態に戻る。(この動作が本当に正しいのかは若干疑問ではある)

■動作中のディスクの電源ケーブルを突然抜く。本体の電源を落とさずに再接続して認識させる。
これがダメ。一度切断されたHDDは再度接続しても/dev/dskには現れないので、cfgadmでconfigureしてやるのがスジのようなのだが、configureしなおしてすぐ、OSごと転けてしまう。
こちら(ZFS ストレージプール内のデバイスを置き換える)を見ると、本当はofflineにしてやらないといけないのかもしれないが、アレイ中の玉をofflineに出来ないのでうまくいかず。もしかすると置き換えることができないデバイス扱い、ということなのだろうか。可能であればホットスワップしたいところ、追って調査中。もしかしてSil3124のドライバがタコだったら嫌(*)だなと思っているところ。どうしようもなくなってしまったら、あちこちである程度実績があるっぽいAOC-SAT2-MV8を使うことも検討しようと思う。

(*)
[zfs-discuss] SIL3124 stability?なんてのがMLに流れているしー。
・さらに
ZFS Fileserver: Lost in Hardwareの中で "there’s a bug in the Sil3124 driver that loses an interrupt under heavy load"とか言われてるのもひじょーに嫌。定期的にscrubすればなんとかなる、、かもしれないとはいえ、業務じゃ無理だな。
・man si3124すると、NCQとMultiplierは未対応だよ、とある。じゃぁhotplugはどうかというと、ダメとは明記されていないんだが。
Thread: SATA controller suggestionではsil3124でhotplugうまくいかねー、という人のポストが華麗にスルーされている。
・それどころかmarvelのチップでもトラブルがあるらしい。とほほ…
Thread: SATA cards, any recommendations?あたりでは、単にunplugしただけでフリーズしたという話もある。しかし結局ここでもhotplug対応のオススメカードの結論はないなぁ。

■障害の起きた玉をホットスペアに切り替える
全く同じ玉をオンボードSATAインタフェイスにつないで、そちらにreplaceしようとしたところ、device is too smallと言われてしまってreplaceできない。同じ玉なのにtoo smallとはこれいかに。それはそれとしても、世のHDDは微妙に容量に差がある。ディスク丸ごとではなく、容量指定で切ったスライス単位でプールを構成しないと後が怖いんではないか、と思う。これも調査中。。

■そこそこ高負荷っぽいテスト
高負荷テストだけでは今のところ落ちていない。圧縮をgzip-9にするとさすがに時々コンソールまで黙る(これはこれでどうかと思うが、カーネルレベルで高負荷をかけてるんだからある意味仕方がないかもしれない)が、基本的に圧縮するつもりはないので問題なし。

失敗したのはオンボードのSATAインタフェイスはcmdk扱いになってしまうのでホットスワップできなさそうなところ。これはこれで困るので別口でインタフェイスを追加しなければならない。

ひとまずしばらくの方針としては、上の(*)にメモした情報と現状を元に、1)壊れたら電源を切ってハードウェアを入れ替える。2)ホットスペアはとりあえず無し。壊れたらすぐ人力で玉を変えるホットスペアは1台つけておく。replace出来ない問題は追跡する。3)hotswap/hotplugはしない、という方向でいけば、とりあえず最悪のデータロスは防げそうな気配。高負荷時に割り込みを取りこぼすという件は再現していないので再現してから考える。

なかなか思ったようにはいかないものだが、さんざん作って壊してを繰り返した結果、システムに慣れてきたように思う。経験値稼ぎだと思えばこれも無駄ではないだろう。

時間があるのは連休中だけ。なんとか連休のうちに立ち上げてしまいたいところ。引き続き調査。

NASを作る

Posted by ゆのじ on 5月 2nd, 2009

これまで使っていたIODATAのLANTANK GIGAだが、最近sata3(3本目のディスク)がさわってもいないのに取り外されてしまう問題が頻発していた。おそらく接点が痛んできたというような問題なのだろうが、RAID5で1本抜けてしまうのは致命的すぎる。
そんな状態で数ヶ月我慢していたのだが、もう我慢の限界、自前でNASを作ることにした。このポストではその設計~結果について書こうと思う。気にした点は容量、消費電力、騒音、だ。

■容量

容量は最近は1TBクラスのHDDが異常に安いのでそれを大量に使うことにして解決する。ファイルシステムは色々検討したのだが、Linux/RAID6よりはopensolarisにzfs(raidz2)のほうが安定しそうに思えたのでそれを使うことにした。使い慣れているFreeBSDにもzfsはポーティングされているのだが、過大な負荷を掛けるとpanicするという情報もあったため、泣く泣くopensolarisを選定している。
ハードウェアRAIDをあえて選定していないのは、コストの面もあるがそれに加えて運用方法がハードウェアによって独特で、学習コストが無駄に高いことをきらってのこと。運用ツールがOSのバージョンにかなり依存しているケースもあって、そうなるとかなり面倒なことになってしまう。それに比べると最近の速いハードウェアにソフトウェアRAIDであれば、運用方法もわかるし、大きなトラブルでアレイごと他のコンピュータに移す必要が出たりというレアケースにも対応しうるということは、実はかなり大きい。

さて、HDDを大量につなぐとなると困るのはインタフェイスだ。色々調査したのだが、1枚の拡張ボードでSATAを8ポートとなると敷居が高く、製品がかなり絞り込まれてまい、殆どがエンタプライズ用途向けばかりになってしまう。その手の製品は専用ドライバを要求したりで前述の運用が面倒という 話題をぶり返してしまいかねない。そういうことになっては馬鹿馬鹿しいことこの上ないので、玄人志向のSATA2I4-LPPCIというSiliconimge Sil3124を用いたSATA4ポートの素直なボードを2枚使うことにした(*)。SATA300は300MB/sec、PCI(32bit/33MHz)は133MB/secとHDDのインタフェイスの方が速いのだが、どうせファイルサーバであってGbE(=1000Mbps=125MB/sec)以上の速度は必要ないため、割り切ってしまうことにする。

(*)この手のディスクインタフェイス系デバイスはBootROMが喧嘩することがある。そのため、同じモノであっても2枚を同時に使うことが出来るか不安だったのだが、これも「出来る」というレポートを見つけることが出来たので後は自己責任ということで買ってしまった。結果、少なくとも私の構成では2枚同時に問題なく認識させることが出来ている。

HDDそのものは、容量を優先してSeagateのST31500341AS(1.5TB/7200rpm)を使おうかとも考えたが、後述する騒音問題が大きくなってしまう不安と、システム全体の費用が増えることを嫌って、Western Digital WD10EADSを10本(うち8本で6TBのraidz2を構築、1本はつないでおいてホットスペア、1本は完全に予備)を選定した。

■消費電力

消費電力は、当初atomプロセッサを使うことで解決しようと考えていたが、実はデスクトップボードに仕立ててあるatom搭載マザーボードは割と電気を食う(システム全体で40W以上という例もある様子)上、実は最近の45nmプロセスで製造されたプロセッサと、システム全体では激しく違うということもないということが友人M氏の指摘でわかった。それに加えて、atom搭載マザーボードの部品選定は、競合が少ないこともあっていまいち単体マザーボードより贅沢さが足りない(固体電解コンデンサが少なめだとか)ので、最終的にはGIGABYTEのG31M-ES2LとDualCore PentiumE5200を使うこととした。

■騒音

騒音は、HDD自体がある程度うるさいものである以上どうしようもないのだが、それでも静かにしたい。ということで前述の通り5400rpmのWD10EADSを選定したわけだがこれが大正解。ケースを開いたまま8本すべてがスピンアップしても殆どわからないくらいの音しかしない。さすがにアクセスがあったときのヘッド動作音は聞こえるので、そこだけは今後対処しなければと考えている。

構築と結果

あちこちのzfs情報を掲載しているサイトを巡りつつ、下記の通りpoolを初期化した。

root@melongena:~# zpool create tank0 raidz2 c5t0d0 c5t1d0 c5t2d0 c5t3d0 c6t0d0                                                     c6t1d0 c6t2d0 c6t3d0

構築後の容量は下記の通り。

root@melongena:~# zpool status
  pool: rpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c3d0s0    ONLINE       0     0     0

errors: No known data errors

  pool: tank0
 state: ONLINE
 scrub: scrub completed after 0h0m with 0 errors on Sat May  2 05:52:28 2009
config:

        NAME        STATE     READ WRITE CKSUM
        tank0       ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     0
            c5t1d0  ONLINE       0     0     0
            c5t2d0  ONLINE       0     0     0
            c5t3d0  ONLINE       0     0     0
            c6t0d0  ONLINE       0     0     0
            c6t1d0  ONLINE       0     0     0
            c6t2d0  ONLINE       0     0     0
            c6t3d0  ONLINE       0     0     0

unos@melongena:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rpool/ROOT/opensolaris
                     152562045   2383869 150178176   2% /
swap                   2176776       324   2176452   1% /etc/svc/volatile
/usr/lib/libc/libc_hwcap1.so.1
                     152562045   2383869 150178176   2% /lib/libc.so.1
swap                   2176484        32   2176452   1% /tmp
swap                   2176544        92   2176452   1% /var/run
rpool/export         150178195        19 150178176   1% /export
rpool/export/home    150178195        19 150178176   1% /export/home
rpool/export/home/unos
                     150191281     13105 150178176   1% /export/home/unos
rpool                150178248        72 150178176   1% /rpool
tank0                5732278181        41 5732278141   1% /tank0

この後、zvol と iSCSI と NTFS と zfs snapshotを参考にしたりしつつ、iSCSI Targetとして1000GBの領域を公開、Windows端末(ThinkPad T60/Core2Duo2.0GHz)からHDBENCH3.30でベンチマークを取ってみた。結果、Read 82,914kb/sec、Write 71,160kb/sec、FileCopy 18,423kb/secと、家庭用NASとしては十二分に早いと言える数字が出た。

(*)しかしながら、このいい数字は常にでるわけではなく、試しに2000MBのサイズで試したところ、Writeが20MB/sec程度にまで落ち込んだ。転送速度グラフをみるとピークは高いものの安定せず、時々転送速度がかなり落ち込むのが原因らしい。原因がどこにあるのかは追って調査中である。

今後、無理矢理ディスクを抜いてみたりというトーチャーテストを行った上、問題がなさそうであればsamba等必要なパッケージ類を突っ込んで、新NASの出来上がりとなる。今のところ目下の課題は使っているケースへのHDD固定方法、ではあるのだが…。(^^; この上3台くらい入るかと思うと気が重い。。。。

7318249-5c7c58acdb926e3cc31525d593bdb4e8.49fb726c-full[1]

余談。途中で気づかれた方もいるかと思うが、新NASの名前はmelongenaにした。茄子の学名である。

追記:

read/writeの数字、そのときの実測ではあるのだが、iostatでHDDの速度を見ていると、ピークでも1発あたり10MB/sec程度しか出ていない。これを上限とする限り、ピークでも読み出しは(パリティは飛ばして読んでいるとしても)80MB/sec、書き込みはパリティ分実速度から落ちるので60MB/secが限界のはず。zfsはメモリに随分キャッシュするのでその関係でこういう速度が出ているのだろうと思う。

しかしWD10EADSのような最近の単体で速度がでる玉を使っておいて10MB/sec。さすが33MHz32bitPCIに4つもSATAをぶら下げるだけのことはある、本当に、遅い。

日本はダメらしいという話

Posted by ゆのじ on 4月 30th, 2009

image

とある割と有名な人が、もう日本はダメだ、というようなことをblogに書いていて、別の有名な人がそれに同調したりしてる。見てる限り、そこに共通するのは、割と金銭的に成功していたり(つまりそれなりに必要十二分な収入を得られていたり)、知名度があったりとまぁそういう感じの人が書いているということ。そういう立場まで進んでいった運と実力は素直に認めるしすごい努力の賜物であったりするのだろうと思うけれど、書いてる内容はそういうエライ人にしちゃ思慮が足らないんじゃないかと思う。

日頃から私が口癖のように言ってる言葉に、無理と口に出した瞬間それは不可能になる、というのがある。無理だと言わず続けることこそ、看板のような武器を背負っていない人でも使える壁を突破するための手段なのだ。もっとも、そういう前提である以上、強烈な看板であるとか運であるとか実力であるとかを持つことが出来たエライ人にはそういうのは多分わからないのだろうなとも思う。わからないなら思慮もなにも出来るわけがない。思慮は知ることから始まるからだ。

しかし、だ。そういった所謂「高いところ」にいる人は概して声がでかい。遠くまで声が届いてしまう。そういった人が、世の中の端々にいる、まだ自分で考えること(特に、物事をマクロに俯瞰的に見て考える、100年以上のスパンで考えること)が出来ていない人にも諦観に近い考えを振りまいてしまうのはどーなんだろう、浅はかなんじゃないだろうか。

いや、別に人生は常に戦場だとか、周りはすべて敵でカモだ、とか、人を見たら泥棒と思え(*)だとかいうアグレッシブな思考の持ち主で、24時間365日そういう感覚で生きていけるごく一部のborn to killな人々はそういう考え方が正しいと思うのだが、いかんせんblogやらなにやら、ウェブのメディアは誰にでも話が読めてしまう。仕事じゃないから読者層を意識しなくて良いのは確かだけれど、声がでかいという自覚があればそこは意識するべきで、それが声がでかい人の資格ではないかと私は思う。自由の裏側には責任があるというのはこのことで。

(*)これは言い過ぎ。

翻って、今の日本のシステムを見ると、確かにどうもダメっぽい気はしている。本当に必要そうなところにはお金が落ちていなくて、本当にお金が必要になる人たちはお金を生み出さないでしこたまため込むだけ。将来に対する不安なり、政治に対する不信があるからため込むわけで、それを取り除けばいいのにとは思うが、強大な意思の塊になってしまった日本という構造は政治家では太刀打ちできないくらいの強さを持ってしまったようだ。

さて、どうするのか。妙案は浮かばないが、無理といわず、まずはちっと人を信じてみるところから始めてみたらどうだろうね。日本はそう簡単に変わることは出来ないだろうけど、そう簡単に転けもしない。あんまり焦らず、考え続けることが大事なんじゃあるまいか。何、政府が転けても飯には困らないと思う。周りはすべて敵でカモだと思っていなければ。

余談を追記。餓鬼のうちは、わーいベンチャーだお金儲けだー、とか思っていた時期もあったが、結局世の中の「金」の仕組みと意味合いを考えるに、大抵の枠のでかい金儲けの話は泥棒の計画と大差ないような気がしてきてどーにもこーにも興味がない。FXやらも株やらも、短期で扱うなら同じ臭い。どれもこれも人の財布から小銭ちょろまかした大金財布に突っ込んで楽しいのだろうか。いや、楽しいならいいのだが、やるならどっか遠い島でやって欲しいのが正直なところ。金払うところには払うから、サービスなり商品と金がちゃんとリンクしていて払う側がちゃんと理解したところで払わせて欲しい。じゃないと詐欺だぜ。