2009年9月19日土曜日

SSDによるコンテンツキャッシュ(ハード編)

このエントリーをはてなブックマークに追加
先日のエントリでSun Fire T2000はUltraSPARC T1には4Gbpsの帯域を埋める能力があると書きましたが、それを実現するには一つボトルネックを解決しなければなりません。それはディスクI/Oです。最近の速いハードディスクでも最外周で100MB/sくらいしか出ません。ビットにすると800Mbpsですね。ぜんぜん足りないのでRAIDを組んで性能を稼ぐ必要があります。

先ほど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本接続する
こういった構成のものをマックスサーブさんに作ってもらいました。これで工賃込みで12万円弱です。T2000にはPCI Express x8でSASを8レーン受けられるHBAを増設しました。

こうしてIntel X25-Mを4つ外付けしてZFSで一つのプールにしてみたところ、シーケンシャルリードで800MB/sを超える謎のストレージができてしまいました。ZFSの最大のブロックサイズである128KBのランダムリードでは300MB/sを超えました。ftp.jaist.ac.jpのZFSのブロックサイズの平均は100KB弱とこれより少し小さいですが、実際のアクセスは完全なランダムではないので、実運用ではもう少し高い性能が期待できそうです。(ソフト編に続く)

0 件のコメント:

コメントを投稿