先ほど100MB/sと書きましたが、これは理想的な条件下でのシーケンシャルリードの値です。ミラーサーバのアクセスパターンは基本的にランダムリードです。いくつかのDVDのISOイメージにアクセスが集中する傾向はあるのですが、多くのプロセスが大きなファイルの別の場所を同時に読みますからシーケンシャルにはなりません。
ランダムライトほどではありませんが、RAIDでランダムリードの性能を稼ぐのは簡単ではありません。コントローラが速くないとだめですし、ディスクの回転数も速くないとだめです。ですがミラーサーバごときに、そんな高級なディスクアレイは使えません。T2000は高級じゃないのかって? これはSunから寄付していただいたものなんです。宣伝効果抜群でしょう?(笑)
ftp.jaist.ac.jpでは古いSATAのディスクアレイを3基使っています。このディスクアレイは5+0をサポートしていないので、性能を稼ぐために14D+1P+1Sという耐障害性の低いRAID5にしています。このうち2基をZFSでまとめて一つのプールに、もう1基はUFSで運用しています。ZFSの2基があまりにも性能が出ないので、あとでもう1基お下がりをつないでUFSにしました。
実際に運用したときの性能はZFSの2基が合わせてピークで40MB/sくらい、UFSのほうが80MB/sくらいです。メモリによるキャッシュがあるとはいえぜんぜん足りません。それにしてもZFSのほうの性能が低すぎます。なぜZFSの性能が出ないかは別の機会に書きます。
それで我々は、SSDにアクセスの多いファイルをキャッシュすることで性能を稼ぐことにしました。キャッシュ用に購入したのはランダムアクセスに強いといわれるIntel X25-M 160GBを4つです。T2000にはドライブベイが4つあるのですが2つはミラーしたブートドライブで埋まっています。4つ付けようと思ったら外付けにするしかありません。
でも、安くていいエンクロージャがなかったので、
- Supermicroの1Uで2.5インチドライブが8つ入るケースに、マザーボードなしで電源を制御可能にするオプション(CSE-PTJBOD-CB1)を付ける
- ファンユニットに電源から線を引っ張る
- 2つのSFF-8087をSFF-8088にして外に出すブラケットを付ける
- 4つのSATAを4レーンSASコネクタ(SFF-8087)に束ねるケーブルを2本接続する
こうしてIntel X25-Mを4つ外付けしてZFSで一つのプールにしてみたところ、シーケンシャルリードで800MB/sを超える謎のストレージができてしまいました。ZFSの最大のブロックサイズである128KBのランダムリードでは300MB/sを超えました。ftp.jaist.ac.jpのZFSのブロックサイズの平均は100KB弱とこれより少し小さいですが、実際のアクセスは完全なランダムではないので、実運用ではもう少し高い性能が期待できそうです。(ソフト編に続く)
0 件のコメント:
コメントを投稿