lessfs+pdumpfs でバックアップ始めました
前回ファイルサーバーでlessfsをそのまま使うと問題があることがわかりましたが、
引き続き使い道を模索してみます
pdumpfsと組み合わせる
今回はpdumpfsの弱点補強に使ってみます
pdumpfsとはフォルダのフルバックアップを取るためのツールで
日付ごとのスナップショットを簡単に作ることができます
使い方もとても簡単
$ pdumpfs /home/iyokan /backup/
しかも単純にフルコピーするのではなく
("ファイルパス" "ファイルサイズ" "タイムスタンプ") が同じなら
ハードリンクを使って無駄なコピーを抑制してくれるすぐれものです
しかし完璧ではなくて
仕様上"ファイル移動"は追跡できません
たとえばフォルダを移動したらそれ以下のファイルすべてがフルコピーされます
また容量が大きいファイルの扱いも苦手です
変更するとファイル全体をコピーしてしまいます
こういった弱点をlessfsで重複排除してあげることで解決してみます
組み合わせる
組み合わせは何も特別な事はなく
lessfsでマウントした場所にpdumpfsでファイルを置くだけです
lessfsとpdumpfsはインストール済みとして
バックアップ用の設定をします
/etc/lessfs.cfg
lessfsの設定ファイル
"/usr/share/doc/lessfs/examples/lessfs.cfg"あたりからひな形を持ってこれる
データの格納パスだけ変更すれば基本的に大丈夫
DEBUG = 5 HASHNAME=MHASH_TIGER192 HASHLEN = 24 BLOCKDATA_IO_TYPE=file_io BLOCKDATA_PATH=/lessfs-data/dta/blockdata.dta BLOCKUSAGE_PATH=/lessfs-data/mta BLOCKUSAGE_BS=1048576 DIRENT_PATH=/lessfs-data/mta DIRENT_BS=1048576 FILEBLOCK_PATH=/lessfs-data/mta FILEBLOCK_BS=1048576 META_PATH=/lessfs-data/mta META_BS=1048576 HARDLINK_PATH=/lessfs-data/mta HARDLINK_BS=1048576 SYMLINK_PATH=/lessfs-data/mta SYMLINK_BS=1048576 FREELIST_PATH=/lessfs-data/mta FREELIST_BS=1048576 CACHESIZE=512 COMMIT_INTERVAL=10 LISTEN_IP=127.0.0.1 LISTEN_PORT=100 MAX_THREADS=8 DYNAMIC_DEFRAGMENTATION=on COREDUMPSIZE=2560000000 SYNC_RELAX=0 BACKGROUND_DELETE=off ENCRYPT_DATA=off ENCRYPT_META=on ENABLE_TRANSACTIONS=on BLKSIZE=131072 COMPRESSION=lzo
/etc/default/lessfs
このファイルを設定すると /etc/init.d/lessfs を通じてマウントできるようになる
#mountpoint MOUNTPOINT=/media/lessfs #config file LESSFS_CONFIG=/etc/lessfs.cfg
/media/lessfs/dump.sh
一連のバックアップ作業を書いたシェルスクリプト
#!/bin/bash DUMPFS=/usr/local/bin/pdumpfs DUMPDIR=/media/lessfs/dumpfs/cont LOGDIR=/media/lessfs/dumpfs/log function dump1 { mkdir -p $DUMPDIR/$2 $DUMPFS $1 $DUMPDIR/$2 find $DUMPDIR/$2 -type d -print0 | xargs -0 chmod 755 } #バックアップするフォルダをここに書く function dumpall { dump1 /etc/ etc/ dump1 /home/iyokan home-iyokan/ dump1 /var/www/ www/ } dumpall >$LOGDIR/`date +%y%m%d%H%M`.log 2>&1
sudo crontab -e
毎日朝5時に自動でバックアップするための設定
0 5 * * * /media/lessfs/dump.sh
以上で基本的な設定は終了
読み取り専用のWebDAV
以下ように設定すると読み取り専用になる
<Location /davfs-log> DAV on <LimitExcept GET HEAD OPTIONS PROPFIND> Deny from all </LimitExcept> </Location>
とりあえずこの設定でしばらく運用してみます
追記
このまま運用すると、700MBほどメモリを消費してしまいます。
さすがに無駄なのでキャッシュサイズを調整しました。
以下の設定でメモリ消費量が80M程度になるようです。
/etc/lessfs.cfg
... #CACHESIZE=512 CACHESIZE=32 ...