SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
バックアップに一番いいファイルシステムを頼む
KenichiroMATOHARA(matoken)
http://hpv.cc/~maty/
 現在バックアップに rsync で--link-dest オプションを利用して世代バックアップをしています.
これはファイルシステムのハードリンクを利用してファイル単位で毎回差分バックアップをするので
すが,バックアップされたファイルを見ると毎回フルバックアップを取得しているように見えます.
Mac OS X の TimeMachine にイメージは近いです. 削除も古いものをディレクトリごと削除す
るだけなので運用も楽です.編集ファイルが少なかったり,差分が少ない時には向いています.仮想
マシンイメージなどがあると仮想マシン実行毎に差分が発生するのであまり向かないでしょう. 以
下はバックアップの例です.crontab で毎日深夜に実行するようにしています.
# 日時バックアップ
3 25 * * * /usr/bin/rsync -avv --delete --link-dest=/backup/`/bin/date -d '1 day
ago' +%Y%m%d`/ /home/mk/ /backup/`date +%Y%m%d`/ > /dev/null 2>&1
# 14 日前のバックアップを削除
3 15 * * * /bin/rm -rf /backup/`/bin/date -d '14 day ago' +%Y%m%d` > /dev/null
2>&1
 これで,/home/mk を毎日/backup/yyyymmdd 以下に 2 週間分バックアップします.差分
バックアップですが,見た目は毎日フルバックアップのように見えます. rsync の他のオプションも
勿論利用できるので,リモートバックアップや,特定のファイル・ディレクトリを除外といったことも可
能です.
 これはこれで便利だしそこそこ満足しているんですが,欲を言えば圧縮が効けばいいなというこ
とで,幾つかファイルシステムを試してみました.
NILFS2
 国産の Linux 用ファイルシステムで,オンラインでスナップショットをどんどん取っていけるログ
構造化ファイルシステムです.間違って削除してしまったり,上書き保存してしまっても過去のデー
タを参照して復旧できます.
 ということで前から興味はあったけど実際運用したことのない nilfs2 ですが,東京 Debian 勉
強会で取り上げられたのをきっかけに試してみました.
※以下の NILFS2 の設定は DebianSqueeze と UbuntuNatty の環境で確認しました.環境が
違う場合は適時読み替えてください.
導入
パッケージがあるので導入は簡単です.
$ sudo apt-get install nilfs2-tools
これだけです.
ディスクの初期化
以下の例では/dev/vdb1 というディスクを nilfs で初期化しています.
$ sudo mkfs.nilfs2 /dev/vdb1
mkfs.nilfs2 ver 2.0
Start writing file system initial data to the device
Blocksize:4096 Device:/dev/vdb1 Device Size:10736328704
File system initialization succeeded !!
マウント
早速マウントします.
$ sudo mount -t nilfs2 /dev/vdb1 /export/
mount.nilfs2: WARNING! - The NILFS on-disk format may change at any time.
mount.nilfs2: WARNING! - Do not place critical data on a NILFS filesystem.
怖いメッセージが出ますがうまくマウントできたようです.
恒久的なマウントの設定
このままでは再起動を行うとアンマウントされるので,/etc/fstab に設定します.まずはそのために
UUID を調べようとしましたが,UUID が見当たりませんでした.
$ sudo blkid /dev/vdb
$ ls -l /dev/disk/by-uuid/
合計 0
lrwxrwxrwx 1 root root 10 2011-06-16 03:26 a4ad2750-5207-4d1a-abdd-
9680b5469780 -> ../../vda1
以下のスレッドを見ると,nilfs には実装されているけど周りの実装が追いついていないんでしょう
か.
"Nilfs users (Log-Structured Snapshotting Filesystem)"
http://comments.gmane.org/gmane.comp.file-systems.nilfs.user/1400
仕方がないのでデバイス名で設定します./etc/fstab に以下を追記して念の為再起動して動作確
認を行います.
/dev/vdb1 /export nilfs2 noauto 0 0
再起動.
$ mount|grep /dev/vdb1
/dev/vdb1 on /export type nilfs2 (rw,gcpid=654)
チェックポイントの確認
lscp コマンドで,チェックポイント(cp)の確認が出来ます.
$ lscp
CNO DATE TIME MODE FLG NBLKINC ICNT
1 2011-06-10 01:52:47 cp - 11 3
2 2011-06-10 01:54:41 cp - 11 4
3 2011-06-10 02:00:11 cp - 1324 143
4 2011-06-10 02:00:17 cp - 4674 184
自動的に cp が作られているのが解ります.
スナップショットの作成
mkcp -s でコマンド実行時のスナップショット(ss)が取得できます.
$ sudo mkcp -s
$ lscp|grep ss
42 2011-06-10 02:02:59 ss - 2878 816
cp の場合は自動的に生成されますが,ガベージコレクションが自動的に削除します.削除タイミン
グは/etc/nilfs_cleanerd.conf の protection_period の秒数の間は保護されるのでそれ以降
になります. それに対して ss は GC では削除されません.
スナップショットからの復元
さて,スナップショットからの復元も試してみます. まずはテストファイルを作成してスナップショット
の作成を行います.
$ mkdir test
$ echo test > test/testdata
$ cat test/testdata
test
$ sudo mkcp -s
$ lscp | tail -2
9519 2011-06-17 00:59:57 ss - 25 585668
9520 2011-06-17 01:00:23 cp i 20 585668
今作ったファイルを削除してスナップショットをマウントして復元してみます. スナップショットのマウ
ントはマウントオプションに -o ro,cp=9519 の様にリードオンリーと,対象のスナップショットを指
定してマウントします.
$ rm test/testdata
$ sudo mkdir /media/nilfs-ss
$ sudo mount -t nilfs2 -o ro,cp=9519 /dev/sdc1 /media/nilfs-ss
$ ls -l /media/nilfs-ss/test/testdata
-rw-r--r-- 1 mk mk 5 2011-06-17 00:59 /media/nilfs-ss/test/testdata
$ cat /media/nilfs-ss/test/testdata
test
$ cp -p /media/nilfs-ss/test/testdata test/
$ cat test/testdata
test
$ sudo umount /media/nilfs-ss
うまく行きました!
スナップショットの削除
スナップショットは自動的に消えないのですが,ある程度のところで削除しないとディスクがいっぱ
いになってしまいます.スナップショットの削除を試してみます.
スナップショットを確認して rmcp コマンドで削除してみます.
$ lscp|grep ss
42 2011-06-10 02:02:59 ss - 2878 816
9519 2011-06-17 00:59:57 ss - 25 585668
$ sudo rmcp 42
rmcp: 42: cannot remove snapshot
To delete snapshot(s), change them into checkpoints with
chcp command before removal.
失敗しました.スナップショットのままでは削除できないようです.一旦 cp に変更して削除してみま
す.
$ sudo chcp cp 42
$ lscp |grep ss
9519 2011-06-17 00:59:57 ss - 25 585668
$ lscp |grep '42 2011-06-10 02:02:59'
42 2011-06-10 02:02:59 cp - 2878 816
cp になりました.放おっておいても GC されると思いますが明示的に削除してみます.
$ sudo rmcp 42
$ lscp |grep '42 2011-06-10 02:02:59'
消えたようです.
最古の ss を cp にするのは以下のような感じで行けそうです.
# lscp | grep ss | head -1 | awk '{print $1}' | xargs chcp cp
先ずは,1 日一回 crontab で mkcp -s してみようと思います. 消すのは容量と相談しながらです
が 1 月後くらいでいいかな…
Lessfs
このファイルシステムを知ったのは,2ch の Linux 板「ファイルシステム総合スレ その 12」の 990
でした.
990 名前:login:Penguin [sage]: 2011/07/27(水) 20:31:12.69 ID:8rO7Z0JW
>>987
うちはこんなの使ってる。
ttp://www.lessfs.com/wordpress/
重複排除、圧縮、暗号化と一通り対応してる。
恐くてバックアップ用途だけだけど、7 世代バックアップ取っても、オリジナルよりサイズが
小さくすんでるよ。
これは良さそうだ.ということで試してみました.
※以下の Lessfs の設定は UbuntuNatty の環境で確認しました.環境が違う場合は適時読み替
えてください.Lucid については ppa のパッケージが一緒に用意されていたので恐らく同じ手順で
動くでしょう.
“lessfs | Open source data de-duplication ”
http://www.lessfs.com/wordpress/
Lessfs は重複排除,圧縮と暗号化(lzo or QuickLZ)を行う fuse を利用したファイルシステムの
ようです.重複排除はブロックデバイス単位で行うようです.
パッケージはないようですが,PPA があったのでこれを利用させてもらうことにします.
“Lessfs : Brandon Snider ”
https://launchpad.net/~brandonsnider/+archive/lessfs
lessfs の原稿執筆時点での最新版のソースは 1.5.0,ppa は 1.4.8 ですが,1.4.9 ではログ書き
出し機能の追加,1.5.0 では db のパフォーマンス改善などが盛り込まれているようです.とりあえ
ず試すのには問題なさそうなので ppa の 1.4.8 で試します.
導入
ppa を登録して導入します.
$ sudo add-apt-repository ppa:brandonsnider/lessfs
$ sudo apt-get update
$ sudo apt-get install lessfs
これで lessfs が導入されたはずです.
起動スクリプトも設定されました.
ファイルシステムの作成
今回は試しに 4GB の USB メモリ上で試してみました. テスト用の領域は前もって初期化し
て/media/lessfs にマウントしておきます.
$ sudo mkfs.ext3 /dev/sdc1
$ sudo mount /dev/sdc1 /media/lessfs
$ sudo chown mk:mk /media/lessfs
設定ファイルを用意します.パッケージで用意された設定ファイルをベースに編集します.
$ cp /usr/share/doc/lessfs/examples/lessfs.cfg /media/lessfs
このベースファイルの/data/{dta,mta} にメタデータが作成されるようです.環境に合わせて/data
部分を書き換えます. 今回は/media/lessfs にしました. ほかの部分は既定値のままです.
メタデータのディレクトリを作成しておきます.
$ mkdir /media/lessfs/{dta,mta}
そしていよいよマウントです.マウントポイントは/media/lessfs/mnt にしました.
初回マウント時はメタデータを作ららしく 20 秒ほど時間がかかりました.
$ mkdir /media/lessfs/mnt
$ lessfs /media/lessfs/lessfs.cfg /media/lessfs/mnt
$ mount |grep lessfs
lessfs on /media/lessfs/lessfs type fuse.lessfs
(rw,nosuid,nodev,max_read=131072,default_permissions,allow_other)
無事マウントされたようです.
利用前の容量を確認しておきます.
$ df -k|grep lessfs
lessfs 3850292 137952 3516752 4% /media/lessfs/lessfs
重複排除の確認をしてみます.
先ずは適当なファイルを lessfs 以下に cp します.
$ ls -l ~/Downloads/squeeze-custom-amd64-0710.iso
-rw-r--r-- 1 mk mk 196120576 2011-07-10 21:35 /home/mk/Downloads/squeeze-
custom-amd64-0710.iso
$ cp /home/mk/Downloads/squeeze-custom-amd64-0710.iso /media/lessfs/lessfs/
$ df -k|grep lessfs
lessfs 3850292 517508 3137196 15% /media/lessfs/lessfs
$ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso
/media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-2
$ df -k|grep lessfs
lessfs 3850292 517628 3137076 15% /media/lessfs/lessfs
$ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso
/media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-3
$ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso
/media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-4
$ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso
/media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-5
$ df -k|grep lessfs
lessfs 3850292 517904 3136800 15% /media/lessfs/lessfs
$ ls -l /media/lessfs/lessfs/
合計 957620
-rw-r--r-- 1 mk mk 196120576 2011-08-10 02:42 squeeze-custom-amd64-0710.iso
-rw-r--r-- 1 mk mk 196120576 2011-08-10 02:46 squeeze-custom-amd64-0710.iso-
2
-rw-r--r-- 1 mk mk 196120576 2011-08-10 02:47 squeeze-custom-amd64-0710.iso-
3
-rw-r--r-- 1 mk mk 196120576 2011-08-10 02:47 squeeze-custom-amd64-0710.iso-
4
-rw-r--r-- 1 mk mk 196120576 2011-08-10 02:47 squeeze-custom-amd64-0710.iso-
5
中身な同じファイルが増えても利用量は殆ど増えません.次は圧縮の確認をしてみます.圧縮効率
が良くなるように中身が 0 だけの大きなファイルを作ります.
$ dd if=/dev/zero of=/media/lessfs/lessfs/zero bs=1M count=1000
1000+0 記録始め
1000+0 記録終わり
1048576000 バイト (1.0 GB) コピー終了, 4.35437 s, 241 MB/s
$ ls -l /media/lessfs/lessfs/zero
-rw-r--r-- 1 mk mk 1048576000 2011-08-10 02:50 /media/lessfs/lessfs/zero
$ df -k|grep lessfs
lessfs 3850292 518360 3136344 15% /media/lessfs/lessfs
1GB のファイルを追加しましたが容量は殆ど増えていません.素晴らしいですね.
終わりに
NILFS2 はスナップショットからの復元が簡単なので,バックアップだけでなくホームディレクトリな
どの通常作業時のディレクトリとして利用するのも便利そうです.Lessfs は fuse 経由ですし書き
込みも遅いようですが重複排除や圧縮などが便利なので頭で紹介した rsync バックアップなどと
組み合わせて使うと便利そうです.ブロックデバイス単位で重複排除も効きそうなので仮想マシン
イメージなどのバックアップにも良さそうです.問題はどちらも利用実績が少ないので不安が残る
ところでしょうか.私の環境では現在 NILFS2 はバックアップ領域から更に差分バックアップ取得
のために利用しています.Lessfs は未だ検証中といったところです.
後は,期待の Btrfs やライセンスの関係で Linux で利用するのは面倒ですが ppa への登録もあ
る ZFS なども近いうちに試してみようと思っています.
参考 URL
NILFS|技
http://www.waza.jp/nilfs/
NILFS - Continuous Snapshotting Filesystem for Linux
http://www.nilfs.org/ja/index.html
[NILFS] What is NILFS?
http://www.nilfs.org/ja/about_nilfs.html
第 70 回 東京エリア Debian 勉強会 2010 年 11 月 -特集 : 俺のファイルシステムは熱いぜ!-
http://tokyodebian.alioth.debian.org/pdf/debianmeetingresume201011.pdf
lessfs | Open source data de-duplication
http://www.lessfs.com/wordpress/
“Lessfs : Brandon Snider ”
https://launchpad.net/~brandonsnider/+archive/lessfs

Más contenido relacionado

La actualidad más candente

2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料Yasutaka Hamada
 
Quick Introduction to GlusterFS
Quick Introduction to GlusterFSQuick Introduction to GlusterFS
Quick Introduction to GlusterFSEtsuji Nakai
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~Kazuya Wada
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Kimiyuki Yamauchi
 
クックパッドのスケーリング
クックパッドのスケーリングクックパッドのスケーリング
クックパッドのスケーリングSatoshi Takada
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなしMasahiro NAKAYAMA
 
CMS時代のバックアップノウハウを身につけよう!
CMS時代のバックアップノウハウを身につけよう!CMS時代のバックアップノウハウを身につけよう!
CMS時代のバックアップノウハウを身につけよう!Takashi Uemura
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみたkoedoyoshida
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Kazuya Wada
 
NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入Takeru Nakazato
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutTaisuke Yamada
 

La actualidad más candente (20)

2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
 
Quick Introduction to GlusterFS
Quick Introduction to GlusterFSQuick Introduction to GlusterFS
Quick Introduction to GlusterFS
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
 
linux基礎_新卒エンジニア勉強会20130404
linux基礎_新卒エンジニア勉強会20130404linux基礎_新卒エンジニア勉強会20130404
linux基礎_新卒エンジニア勉強会20130404
 
Kernel fcache-bug
Kernel fcache-bugKernel fcache-bug
Kernel fcache-bug
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)
 
クックパッドのスケーリング
クックパッドのスケーリングクックパッドのスケーリング
クックパッドのスケーリング
 
Open VZ
Open VZOpen VZ
Open VZ
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
 
Linux Namespace
Linux NamespaceLinux Namespace
Linux Namespace
 
Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
CMS時代のバックアップノウハウを身につけよう!
CMS時代のバックアップノウハウを身につけよう!CMS時代のバックアップノウハウを身につけよう!
CMS時代のバックアップノウハウを身につけよう!
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみた
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
 

Similar a バックアップに一番いいファイルシステムを頼む

IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0Etsuji Nakai
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~Preferred Networks
 
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1VarnishCache入門Rev2.1
VarnishCache入門Rev2.1Iwana Chan
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座Masahito Zembutsu
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング純生 野田
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較真治 米田
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!Midori Oge
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-靖 小田島
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009Hiro Yoshioka
 
マイクラ自動化枠第2回資料
マイクラ自動化枠第2回資料マイクラ自動化枠第2回資料
マイクラ自動化枠第2回資料Ryo Fujita
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_BetaKohei KaiGai
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオンkunst1080
 

Similar a バックアップに一番いいファイルシステムを頼む (20)

IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
 
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1VarnishCache入門Rev2.1
VarnishCache入門Rev2.1
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
Mincs 日本語版
Mincs 日本語版Mincs 日本語版
Mincs 日本語版
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
マイクラ自動化枠第2回資料
マイクラ自動化枠第2回資料マイクラ自動化枠第2回資料
マイクラ自動化枠第2回資料
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
dm-thin-internal-ja
dm-thin-internal-jadm-thin-internal-ja
dm-thin-internal-ja
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
 

Más de Kenichiro MATOHARA

ゲーミングプラットホームのLutris
ゲーミングプラットホームのLutrisゲーミングプラットホームのLutris
ゲーミングプラットホームのLutrisKenichiro MATOHARA
 
Raspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すRaspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すKenichiro MATOHARA
 
Raspberry piのsdl等に対応したreal vncを試してみた
Raspberry piのsdl等に対応したreal vncを試してみたRaspberry piのsdl等に対応したreal vncを試してみた
Raspberry piのsdl等に対応したreal vncを試してみたKenichiro MATOHARA
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをKenichiro MATOHARA
 
鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04Kenichiro MATOHARA
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるKenichiro MATOHARA
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作るKenichiro MATOHARA
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるKenichiro MATOHARA
 
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)Kenichiro MATOHARA
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)Kenichiro MATOHARA
 
鹿児島らぐC87配布ペーパー
鹿児島らぐC87配布ペーパー鹿児島らぐC87配布ペーパー
鹿児島らぐC87配布ペーパーKenichiro MATOHARA
 
鹿児島に引っ越しました
鹿児島に引っ越しました鹿児島に引っ越しました
鹿児島に引っ越しましたKenichiro MATOHARA
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2Kenichiro MATOHARA
 
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘いKenichiro MATOHARA
 
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...Kenichiro MATOHARA
 

Más de Kenichiro MATOHARA (20)

PQI Air Pen Hack
PQI Air Pen HackPQI Air Pen Hack
PQI Air Pen Hack
 
ゲーミングプラットホームのLutris
ゲーミングプラットホームのLutrisゲーミングプラットホームのLutris
ゲーミングプラットホームのLutris
 
USBを保護するUSBGuard
USBを保護するUSBGuardUSBを保護するUSBGuard
USBを保護するUSBGuard
 
Raspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すRaspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試す
 
Let’s Encrypt更新話
Let’s Encrypt更新話Let’s Encrypt更新話
Let’s Encrypt更新話
 
Raspberry piのsdl等に対応したreal vncを試してみた
Raspberry piのsdl等に対応したreal vncを試してみたRaspberry piのsdl等に対応したreal vncを試してみた
Raspberry piのsdl等に対応したreal vncを試してみた
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみる
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
 
OSC15OT 配布ペーパー
OSC15OT 配布ペーパーOSC15OT 配布ペーパー
OSC15OT 配布ペーパー
 
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
鹿児島らぐC87配布ペーパー
鹿児島らぐC87配布ペーパー鹿児島らぐC87配布ペーパー
鹿児島らぐC87配布ペーパー
 
鹿児島に引っ越しました
鹿児島に引っ越しました鹿児島に引っ越しました
鹿児島に引っ越しました
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
 
鹿児島のOSM状況
鹿児島のOSM状況鹿児島のOSM状況
鹿児島のOSM状況
 
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い
 
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
 

バックアップに一番いいファイルシステムを頼む

  • 1. バックアップに一番いいファイルシステムを頼む KenichiroMATOHARA(matoken) http://hpv.cc/~maty/  現在バックアップに rsync で--link-dest オプションを利用して世代バックアップをしています. これはファイルシステムのハードリンクを利用してファイル単位で毎回差分バックアップをするので すが,バックアップされたファイルを見ると毎回フルバックアップを取得しているように見えます. Mac OS X の TimeMachine にイメージは近いです. 削除も古いものをディレクトリごと削除す るだけなので運用も楽です.編集ファイルが少なかったり,差分が少ない時には向いています.仮想 マシンイメージなどがあると仮想マシン実行毎に差分が発生するのであまり向かないでしょう. 以 下はバックアップの例です.crontab で毎日深夜に実行するようにしています. # 日時バックアップ 3 25 * * * /usr/bin/rsync -avv --delete --link-dest=/backup/`/bin/date -d '1 day ago' +%Y%m%d`/ /home/mk/ /backup/`date +%Y%m%d`/ > /dev/null 2>&1 # 14 日前のバックアップを削除 3 15 * * * /bin/rm -rf /backup/`/bin/date -d '14 day ago' +%Y%m%d` > /dev/null 2>&1  これで,/home/mk を毎日/backup/yyyymmdd 以下に 2 週間分バックアップします.差分 バックアップですが,見た目は毎日フルバックアップのように見えます. rsync の他のオプションも 勿論利用できるので,リモートバックアップや,特定のファイル・ディレクトリを除外といったことも可 能です.  これはこれで便利だしそこそこ満足しているんですが,欲を言えば圧縮が効けばいいなというこ とで,幾つかファイルシステムを試してみました. NILFS2  国産の Linux 用ファイルシステムで,オンラインでスナップショットをどんどん取っていけるログ 構造化ファイルシステムです.間違って削除してしまったり,上書き保存してしまっても過去のデー タを参照して復旧できます.  ということで前から興味はあったけど実際運用したことのない nilfs2 ですが,東京 Debian 勉 強会で取り上げられたのをきっかけに試してみました. ※以下の NILFS2 の設定は DebianSqueeze と UbuntuNatty の環境で確認しました.環境が 違う場合は適時読み替えてください. 導入 パッケージがあるので導入は簡単です. $ sudo apt-get install nilfs2-tools これだけです.
  • 2. ディスクの初期化 以下の例では/dev/vdb1 というディスクを nilfs で初期化しています. $ sudo mkfs.nilfs2 /dev/vdb1 mkfs.nilfs2 ver 2.0 Start writing file system initial data to the device Blocksize:4096 Device:/dev/vdb1 Device Size:10736328704 File system initialization succeeded !! マウント 早速マウントします. $ sudo mount -t nilfs2 /dev/vdb1 /export/ mount.nilfs2: WARNING! - The NILFS on-disk format may change at any time. mount.nilfs2: WARNING! - Do not place critical data on a NILFS filesystem. 怖いメッセージが出ますがうまくマウントできたようです. 恒久的なマウントの設定 このままでは再起動を行うとアンマウントされるので,/etc/fstab に設定します.まずはそのために UUID を調べようとしましたが,UUID が見当たりませんでした. $ sudo blkid /dev/vdb $ ls -l /dev/disk/by-uuid/ 合計 0 lrwxrwxrwx 1 root root 10 2011-06-16 03:26 a4ad2750-5207-4d1a-abdd- 9680b5469780 -> ../../vda1 以下のスレッドを見ると,nilfs には実装されているけど周りの実装が追いついていないんでしょう か. "Nilfs users (Log-Structured Snapshotting Filesystem)" http://comments.gmane.org/gmane.comp.file-systems.nilfs.user/1400 仕方がないのでデバイス名で設定します./etc/fstab に以下を追記して念の為再起動して動作確 認を行います. /dev/vdb1 /export nilfs2 noauto 0 0 再起動. $ mount|grep /dev/vdb1 /dev/vdb1 on /export type nilfs2 (rw,gcpid=654) チェックポイントの確認 lscp コマンドで,チェックポイント(cp)の確認が出来ます.
  • 3. $ lscp CNO DATE TIME MODE FLG NBLKINC ICNT 1 2011-06-10 01:52:47 cp - 11 3 2 2011-06-10 01:54:41 cp - 11 4 3 2011-06-10 02:00:11 cp - 1324 143 4 2011-06-10 02:00:17 cp - 4674 184 自動的に cp が作られているのが解ります. スナップショットの作成 mkcp -s でコマンド実行時のスナップショット(ss)が取得できます. $ sudo mkcp -s $ lscp|grep ss 42 2011-06-10 02:02:59 ss - 2878 816 cp の場合は自動的に生成されますが,ガベージコレクションが自動的に削除します.削除タイミン グは/etc/nilfs_cleanerd.conf の protection_period の秒数の間は保護されるのでそれ以降 になります. それに対して ss は GC では削除されません. スナップショットからの復元 さて,スナップショットからの復元も試してみます. まずはテストファイルを作成してスナップショット の作成を行います. $ mkdir test $ echo test > test/testdata $ cat test/testdata test $ sudo mkcp -s $ lscp | tail -2 9519 2011-06-17 00:59:57 ss - 25 585668 9520 2011-06-17 01:00:23 cp i 20 585668 今作ったファイルを削除してスナップショットをマウントして復元してみます. スナップショットのマウ ントはマウントオプションに -o ro,cp=9519 の様にリードオンリーと,対象のスナップショットを指 定してマウントします. $ rm test/testdata $ sudo mkdir /media/nilfs-ss $ sudo mount -t nilfs2 -o ro,cp=9519 /dev/sdc1 /media/nilfs-ss $ ls -l /media/nilfs-ss/test/testdata -rw-r--r-- 1 mk mk 5 2011-06-17 00:59 /media/nilfs-ss/test/testdata $ cat /media/nilfs-ss/test/testdata
  • 4. test $ cp -p /media/nilfs-ss/test/testdata test/ $ cat test/testdata test $ sudo umount /media/nilfs-ss うまく行きました! スナップショットの削除 スナップショットは自動的に消えないのですが,ある程度のところで削除しないとディスクがいっぱ いになってしまいます.スナップショットの削除を試してみます. スナップショットを確認して rmcp コマンドで削除してみます. $ lscp|grep ss 42 2011-06-10 02:02:59 ss - 2878 816 9519 2011-06-17 00:59:57 ss - 25 585668 $ sudo rmcp 42 rmcp: 42: cannot remove snapshot To delete snapshot(s), change them into checkpoints with chcp command before removal. 失敗しました.スナップショットのままでは削除できないようです.一旦 cp に変更して削除してみま す. $ sudo chcp cp 42 $ lscp |grep ss 9519 2011-06-17 00:59:57 ss - 25 585668 $ lscp |grep '42 2011-06-10 02:02:59' 42 2011-06-10 02:02:59 cp - 2878 816 cp になりました.放おっておいても GC されると思いますが明示的に削除してみます. $ sudo rmcp 42 $ lscp |grep '42 2011-06-10 02:02:59' 消えたようです. 最古の ss を cp にするのは以下のような感じで行けそうです. # lscp | grep ss | head -1 | awk '{print $1}' | xargs chcp cp 先ずは,1 日一回 crontab で mkcp -s してみようと思います. 消すのは容量と相談しながらです が 1 月後くらいでいいかな…
  • 5. Lessfs このファイルシステムを知ったのは,2ch の Linux 板「ファイルシステム総合スレ その 12」の 990 でした. 990 名前:login:Penguin [sage]: 2011/07/27(水) 20:31:12.69 ID:8rO7Z0JW >>987 うちはこんなの使ってる。 ttp://www.lessfs.com/wordpress/ 重複排除、圧縮、暗号化と一通り対応してる。 恐くてバックアップ用途だけだけど、7 世代バックアップ取っても、オリジナルよりサイズが 小さくすんでるよ。 これは良さそうだ.ということで試してみました. ※以下の Lessfs の設定は UbuntuNatty の環境で確認しました.環境が違う場合は適時読み替 えてください.Lucid については ppa のパッケージが一緒に用意されていたので恐らく同じ手順で 動くでしょう. “lessfs | Open source data de-duplication ” http://www.lessfs.com/wordpress/ Lessfs は重複排除,圧縮と暗号化(lzo or QuickLZ)を行う fuse を利用したファイルシステムの ようです.重複排除はブロックデバイス単位で行うようです. パッケージはないようですが,PPA があったのでこれを利用させてもらうことにします. “Lessfs : Brandon Snider ” https://launchpad.net/~brandonsnider/+archive/lessfs lessfs の原稿執筆時点での最新版のソースは 1.5.0,ppa は 1.4.8 ですが,1.4.9 ではログ書き 出し機能の追加,1.5.0 では db のパフォーマンス改善などが盛り込まれているようです.とりあえ ず試すのには問題なさそうなので ppa の 1.4.8 で試します. 導入 ppa を登録して導入します. $ sudo add-apt-repository ppa:brandonsnider/lessfs $ sudo apt-get update $ sudo apt-get install lessfs これで lessfs が導入されたはずです. 起動スクリプトも設定されました. ファイルシステムの作成 今回は試しに 4GB の USB メモリ上で試してみました. テスト用の領域は前もって初期化し
  • 6. て/media/lessfs にマウントしておきます. $ sudo mkfs.ext3 /dev/sdc1 $ sudo mount /dev/sdc1 /media/lessfs $ sudo chown mk:mk /media/lessfs 設定ファイルを用意します.パッケージで用意された設定ファイルをベースに編集します. $ cp /usr/share/doc/lessfs/examples/lessfs.cfg /media/lessfs このベースファイルの/data/{dta,mta} にメタデータが作成されるようです.環境に合わせて/data 部分を書き換えます. 今回は/media/lessfs にしました. ほかの部分は既定値のままです. メタデータのディレクトリを作成しておきます. $ mkdir /media/lessfs/{dta,mta} そしていよいよマウントです.マウントポイントは/media/lessfs/mnt にしました. 初回マウント時はメタデータを作ららしく 20 秒ほど時間がかかりました. $ mkdir /media/lessfs/mnt $ lessfs /media/lessfs/lessfs.cfg /media/lessfs/mnt $ mount |grep lessfs lessfs on /media/lessfs/lessfs type fuse.lessfs (rw,nosuid,nodev,max_read=131072,default_permissions,allow_other) 無事マウントされたようです. 利用前の容量を確認しておきます. $ df -k|grep lessfs lessfs 3850292 137952 3516752 4% /media/lessfs/lessfs 重複排除の確認をしてみます. 先ずは適当なファイルを lessfs 以下に cp します. $ ls -l ~/Downloads/squeeze-custom-amd64-0710.iso -rw-r--r-- 1 mk mk 196120576 2011-07-10 21:35 /home/mk/Downloads/squeeze- custom-amd64-0710.iso $ cp /home/mk/Downloads/squeeze-custom-amd64-0710.iso /media/lessfs/lessfs/ $ df -k|grep lessfs lessfs 3850292 517508 3137196 15% /media/lessfs/lessfs $ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-2 $ df -k|grep lessfs lessfs 3850292 517628 3137076 15% /media/lessfs/lessfs $ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-3 $ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso
  • 7. /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-4 $ cp /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso /media/lessfs/lessfs/squeeze-custom-amd64-0710.iso-5 $ df -k|grep lessfs lessfs 3850292 517904 3136800 15% /media/lessfs/lessfs $ ls -l /media/lessfs/lessfs/ 合計 957620 -rw-r--r-- 1 mk mk 196120576 2011-08-10 02:42 squeeze-custom-amd64-0710.iso -rw-r--r-- 1 mk mk 196120576 2011-08-10 02:46 squeeze-custom-amd64-0710.iso- 2 -rw-r--r-- 1 mk mk 196120576 2011-08-10 02:47 squeeze-custom-amd64-0710.iso- 3 -rw-r--r-- 1 mk mk 196120576 2011-08-10 02:47 squeeze-custom-amd64-0710.iso- 4 -rw-r--r-- 1 mk mk 196120576 2011-08-10 02:47 squeeze-custom-amd64-0710.iso- 5 中身な同じファイルが増えても利用量は殆ど増えません.次は圧縮の確認をしてみます.圧縮効率 が良くなるように中身が 0 だけの大きなファイルを作ります. $ dd if=/dev/zero of=/media/lessfs/lessfs/zero bs=1M count=1000 1000+0 記録始め 1000+0 記録終わり 1048576000 バイト (1.0 GB) コピー終了, 4.35437 s, 241 MB/s $ ls -l /media/lessfs/lessfs/zero -rw-r--r-- 1 mk mk 1048576000 2011-08-10 02:50 /media/lessfs/lessfs/zero $ df -k|grep lessfs lessfs 3850292 518360 3136344 15% /media/lessfs/lessfs 1GB のファイルを追加しましたが容量は殆ど増えていません.素晴らしいですね. 終わりに NILFS2 はスナップショットからの復元が簡単なので,バックアップだけでなくホームディレクトリな どの通常作業時のディレクトリとして利用するのも便利そうです.Lessfs は fuse 経由ですし書き 込みも遅いようですが重複排除や圧縮などが便利なので頭で紹介した rsync バックアップなどと 組み合わせて使うと便利そうです.ブロックデバイス単位で重複排除も効きそうなので仮想マシン イメージなどのバックアップにも良さそうです.問題はどちらも利用実績が少ないので不安が残る ところでしょうか.私の環境では現在 NILFS2 はバックアップ領域から更に差分バックアップ取得 のために利用しています.Lessfs は未だ検証中といったところです. 後は,期待の Btrfs やライセンスの関係で Linux で利用するのは面倒ですが ppa への登録もあ る ZFS なども近いうちに試してみようと思っています. 参考 URL NILFS|技 http://www.waza.jp/nilfs/ NILFS - Continuous Snapshotting Filesystem for Linux
  • 8. http://www.nilfs.org/ja/index.html [NILFS] What is NILFS? http://www.nilfs.org/ja/about_nilfs.html 第 70 回 東京エリア Debian 勉強会 2010 年 11 月 -特集 : 俺のファイルシステムは熱いぜ!- http://tokyodebian.alioth.debian.org/pdf/debianmeetingresume201011.pdf lessfs | Open source data de-duplication http://www.lessfs.com/wordpress/ “Lessfs : Brandon Snider ” https://launchpad.net/~brandonsnider/+archive/lessfs