lessfsを使った冗長排除?

本家 http://www.lessfs.com/wordpress/
重複排除の他にも透過的圧縮も使えそう。

下準備

$ sudo yum install openssl-devel fuse-devel lzo-devel autoconf bzip2-devel
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/mhash-0.9.9.9-3.el6.x86_64.rpm
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/mhash-devel-0.9.9.9-3.el6.x86_64.rpm
$ sudo yum localinstall ./mhash-0.9.9.9-3.el6.x86_64.rpm ./mhash-devel-0.9.9.9-3.el6.x86_64.rpm

っで、
下記のtokyocabinetライブラリーは現在、お勧めではなく、BerkeleyDB(stable)かhamsterdb(experimental)をお勧めしている。
っで、ここでBerkeleyDBを用意。CentOS6.xのBerkeley DB database libraryは 4.7 で、肝心のlessfsは4.8を所望されているので
ソースをORACLEさんから取得してコンパイル。

$ gzip -cd db-4.8.30.tar.gz | tar xf -
$ cd db-4.8.30/build_unix
$ ../dist/configure --prefix=/opt/BerkeleyDB.4.8
$ sudo make install
$ cd /opt; sudo ln -s BerkeleyDB.4.8 BerkeleyDB
$ sudo echo /opt/BerkeleyDB/lib >> /etc/ld.so.conf.d/BerkeleyDB.conf
$ sudo ldconfig

でもconfigureの際、tokyocabinetの存在も確認しているようなので、tokyocabinetも入れます。

$ wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.48.tar.gz
$ gzip -cd tokyocabinet-1.4.48.tar.gz | tar xf -
$ cd tokyocabinet-1.4.48
$ ./configure --prefix=/opt/tokyocabinet.1.4.48
$ make; make check
$ sudo make install
$ cd /opt; sudo ln -s tokyocabinet.1.4.48 tokyocabinet
$ sudo echo /opt/tokyocabinet/lib > /etc/ld.so.conf.d/tokyocabinet.conf
$ sudo ldconfig

そして本体。

$ wget http://downloads.sourceforge.net/project/lessfs/lessfs/lessfs-1.5.12/lessfs-1.5.12.tar.gz
$ gzip -cd lessfs-1.5.12.tar.gz | tar xf -
$ cd lessfs-1.5.12
$ env PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
  CFLAGS="-I/opt/BerkeleyDB/include -L/opt/BerkeleyDB/lib" \
  ./configure --with-crypto --with-lzo --berkeleydb --prefix=/opt/lessfs-1.5.12
$ make
$ sudo make install
$ cd /opt; sudo ln -s lessfs-1.5.22 lessfs

っで、設定。
基本方針は /mnt/lessfs-storagelessfsファイルシステムにします。
ですが、この /mnt/lessfs-storage は仮想的な存在で、実際には追加したディスク /mnt/d1 にデータが入ります。
その際、冗長を排除の計算がされてどことどこが冗長なのかのデータベースもここに置かれます。
設定ファイル /opt/lessfs/etc/lessfs.cfg の下記部分を調整します。
 META_PATH=/mnt/d1/mta
 BLOCKDATA_PATH=/mnt/d1/dta/blockdata.dta
他にもパラメータはありますが、基本これで。

そして、動かすには、
1.lessfsファイルシステムを作成
 mkdir -p /mnt/d1/mta /mnt/d1/dta     *データ置き場所を作成
 /opt/lessfs/sbin/mklessfs -c /opt/lessfs/etc/lessfs.cfg   *mkfsなもの
 *ここでパスワードの定義が求められます。

2.作ったlessfsファイルシステムをマウント
 lessfs /opt/lessfs/etc/lessfs.cfg /mnt/lessfs-storage   *mountコマンドですな
 *ここでmklessfsの時に定義したパスワードが求められます

これで完了。
っでテスト。
簡単にテストするには、この/mnt/lessfs-storage をsambaの共有フォルダにしてしまう。
っで、windowsからファイルをコピーして、複製を繰り返してみた。
SAMBAの設定は/etc/samba/smb.confに

[lessfs]
       path=/mnt/lessfs-storage
       browseable = yes
       writable = yes

を追加して、sambaを再起動。複数のファイルを持ち込み、840MBほどのファイルを複製してみた。結果
2012y10m04d_161651890.png
とwindowsでは1.6GB消費されているのに、lessfs側では910MBと重複が排除されている(圧縮も掛けているけど)。


*古い記事です
まずはライブラリ
tokyocabinet http://fallabs.com/tokyocabinet/index.ja.html
をインストール

$ yum install zlib-devel bzip2-devel
$ wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.48.tar.gz
$ gzip -cd tokyocabinet-1.4.48.tar.gz | tar xf -
$ cd tokyocabinet-1.4.48
$ ./configure
$ make; make check
$ sudo make install
$ sudo echo /usr/local/lib > /etc/ld.so.conf.d/tokyocabinet.conf
$ sudo ldconfig

次にmhash

$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/mhash-0.9.9.9-3.el6.x86_64.rpm
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/mhash-devel-0.9.9.9-3.el6.x86_64.rpm
$ yum localinstall ./mhash-0.9.9.9-3.el6.x86_64.rpm ./mhash-devel-0.9.9.9-3.el6.x86_64.rpm

っで

$ yum install lzo-devel fuse-devel openssl-devel

にして、

$ wget http://downloads.sourceforge.net/project/lessfs/lessfs/lessfs-1.5.12/lessfs-1.5.12.tar.gz
$ gzip -cd lessfs-1.5.12.tar.gz | tar xf -
$ cd lessfs-1.5.12
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
$ ./configure --with-crypto --with-lzo

使い方

テンプレートがあるのでそれを使います。

$ sudo cp lessfs-1.5.12/etc/lessfs.cfg-tokyocabinet /etc/lessfs.cfg
$ sudo vi /etc/lessfs.cfg
    *ファイルの実置き場所とか、データベースの格納場所およびログの書き出しについて定義
$ sudo mkdir -p /data/dta /data/mta
    *定義に従い、場所を確保
$ sudo mklessfs -c /etc/lessfs.cfg
$ sudo lessfs /etc/lessfs.cfg /mnt/tmp

っで完了。
っが、
Using tokyocabinet is DEPRECATED and no longer recommended. Please consider using (1) Berkeley DB or (2) Hamsterdb.と表記される。
Hamsterdbとかに乗り換えた方がいいのかも知れない。

使ってみる

なんか実態を収める場所をパーティションで独自に作った方がいいみたい。
/mnt/lessfs-storage
とかして。この場所を/etc/lessfs.cfgに記載して、実際に使う場所は/mnt/lessfs-useとか...
そんな気がする。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2012-10-04 (木) 17:19:52 (2118d)