ZFSは、とても偉大で、革新的な次世代ファイルシステムですよね。

うちのデスクトップは、ストレージサーバ用にFreeBSD10.1をZFSで構築し、そのZFSストレージをiSCSIでNAS化して、そのストレージ内にセットアップしたUbuntuイメージから起動する変態仕様です。

メリットは、デスクトップをディスクレスに出来たり、他のOSを簡単に切り替えたり、ZFSのスナップショットを使えたりです。

しかし、デメリットは、普通のディスクに比べて遅いことです。

この遅さをなんとかすることが、今回の目的です。

 ZFSには、読み込みキャッシュを別のデバイスに割り当てる機能があります。

読み込みキャッシュとは、何度も同じとこを読み込むようなことが発生した場合、ディスクに何度も同じ場所を読み込みに行くのでは無く、高速なメモリに読み込んだ内容を覚えさせておいて、次からそのメモリを使って読み込みします。

メモリは、ディスクに比べて大幅に高速なので、すさまじい効果が得られます。

しかし、メモリは、ディスクより1MB辺りの単価が、非常に高いです。 ですから、大きな容量をキャッシュに割り当てることが現実的に無理です。

ここで登場するのが、SSDです。

メモリより、10倍くらいは、安いです。

HDDに比べて高速です。(まー、この辺りは、Googleで調べれば、SSDの高速性はわかるでしょう。)

で、そんな絶大な効果が得られるキャッシュなんですが、ZFSは、このキャッシュをブロックデバイス(つまりSSD)に割り当てることが可能なのです。

もともとZFSのキャッシュは、メモリを使うのですが、その容量が不足した時に、別のブロックデバイスとしてSSD等を割り当て、併用することができます。

 これをl2arcなんて呼ぶらしいです。

こんな機能を使わずにいられなくなり、今回、運用してみることにしてみました。

かなりの好奇心で、やってますよ。

 

では、早速

SSDは、以下のようにパーティションを作って準備してあげましょう。

gpart create -s GPT [SSDのブロックデバイス]

gpart add -t freebsd-zfs -l zarc0 -s 70G [SSDのブロックデバイス]    <- 70Gの場合ですよ

 

コマンドは、

zpool add [プール] cache gpt/zarc0

と、超カンタンです。

 

 では、効果の程は、どんなもんかというと、初回こそ激遅ですが、一回、読み込んだ後は、超特急状態となります。

数字上は、わかりにくいですが、ストレージサーバとしての機能は、ものすごく期待して良いと思いますね。

 

 ↑これが、導入前

  ↑これが、導入後

数値上は、ほぼ変わらないんですが、大量のキャッシュを持ってしまえるので、使えば使うほどこのようなグラフになっていきます。

つまり、いつでも、高速なパフォーマンスの継続が期待出来るといえます。

で、今回、ZILと呼ばれる書き込みキャッシュも導入したのですが、効果があるようですが、色々実験しても、飛び抜けた効果が無いように感じました。

コマンドは、

gpart add -t freebsd-zfs -l zil0 -s 8G [SSDのブロックデバイス]

zpool add [プール] log gpt/zil0

です。

Sambaで共有したボリュームに書き込む時にスムーズになったような感覚でした。

効果は、微妙です。

 

で、今回、用いたSSDです。

SanDisk SSD UltraII 120GB SDSSDHII-120G-J25

です。

読み書きともに、500MB近くを叩き出す爆速SSDです。

ちょっと、耐久性が懸念されますが・・・

潰れたら、記事を更新します。

更新してない間は、壊れていないということで。

 

 

 

 

Joomla templates by a4joomla