ubuntu NAS に dedup(重複排除)を入れてみた

lessfs というパッケージがすごいらしい

linuxで重複排除

このfuseを使うとlinuxで重複排除機能を実現できる
ブロック単位の重複排除だけじゃなく
データの透過的圧縮とレプリケーション機能も付いてる
しかもzfsと違い膨大なメモリを要求しない

導入方法

リンク先にもある通りかなり手軽に導入できる

ppa から導入.
$ sudo add-apt-repository ppa:brandonsnider/lessfs
$ sudo apt-get update
$ sudo apt-get install lessfs

設定ファイルをパッケージのベースから作成.パスだけ環境に合わせて編集した.
$ cp /usr/share/doc/lessfs/examples/lessfs.cfg /media/lessfs
$ mkdir /media/lessfs/{dta,mta}

マウント
$ mkdir /media/lessfs/mnt
$ lessfs /media/lessfs/lessfs.cfg /media/lessfs/mnt

同様のパッケージにopendedupという物もあるが
こちらはjava7を要求するなど敷居が高かった

圧縮形式の変更

デフォルトの圧縮形式(qlz)にはバグがあって
無制限にメモリを食いつぶしてしまう

このバグを回避するため圧縮形式にlzoに設定する
設定ファイル(lessfs.cfg)の変更は以下の部分を変更する
コメントを付けはずしするだけだ

#COMPRESSION=qlz
COMPRESSION=lzo

これでメモリ利用量は
指定したキャッシュ量付近が上限になった
キャッシュ量デフォルトは512Mで
これも設定ファイル(lessfs.cfg)で変更できる

読み書き性能について

100MB単位のファイルのシーケンシャルな書きこみでは
バッファに貯めこんで一気に書きこむような動作をした
バッファ作成時にはcpuを使い切り
書きこみ時にはHDDの限界性能くらいの書き込みをする
平均をとるとびみょーな性能だった
書き込み35MB/s
読み込み55MB/s

シーケンシャルアクセスならそこそこの性能のように思えるが
たとえば数kb程度の大量のファイルの書き込みで4MB/s程度になる様子
ランダムアクセスはかなり遅い

データ削減効果について

普通のファイルサーバーの場合はあまり容量削減効果が期待できない様子
我が家では10%前後のデータ削減効果しかなかった

読み書き性能劣化を回避しデータ削減効果を最大限に享受するには?

NASのバックアップドライブにはいいかも?
日毎のフォルダにフルバックアップを行う形でもディスク消費量は差分のみになるはず
どうせバックアップドライブは常用しないのでパフォーマンスの低下も気にならないかも?
今度時間つくってためしてみます