squashfs

squashfs という圧縮ファイルシステムが気になったので試してみる。
Linux 2.6.22 で SLAB_CTOR_VERIFY マクロが削除された関係で Ubuntu Gutsy のレポジトリから得られるものではモジュールがビルドできなくなっている。ので、適当に新しめのものをもってくる。

% wget http://archive.ubuntu.com/ubuntu/pool/main/s/squashfs/squashfs_3.2r2-9.diff.gz
% wget http://archive.ubuntu.com/ubuntu/pool/main/s/squashfs/squashfs_3.2r2-9.dsc
% wget http://archive.ubuntu.com/ubuntu/pool/main/s/squashfs/squashfs_3.2r2.orig.tar.gz

% dpkg-source -x squashfs_3.2r2-9.dsc
% cd squashfs-3.2r2
% debuild -i
% cd ..
% sudo dpkg -i squashfs-tools_3.2r2-9_amd64.deb squashfs-source_3.2r2-9_all.deb
% sudo m-a prepare
% sudo m-a build squashfs
% sudo m-a install squashfs

Wikipedia 日本語版を1記事を1ファイルに分割したデータでテスト。
ファイルシステムの作成とマウント

% mksquashfs orig wikipedia.sfs
% mkdir sfs
% sudo mount -t squashfs -o loop wikipedia.sfs sfs

XFS の場合。

% time find orig -type f > /dev/null
find orig -type f > /dev/null  0.34s user 3.29s system 71% cpu 5.099 total

% time (find orig -type f -print0 | xargs -0 cat) > /dev/null
(; find orig -type f -print0 | xargs -0 cat; ) > /dev/null  1.03s user 32.54s system 22% cpu 2:26.87 total

squashfs の場合。

% time find sfs -type f > /dev/null
find sfs -type f > /dev/null  0.26s user 2.79s system 94% cpu 3.215 total

% time (find sfs -type f -print0 | xargs -0 cat) > /dev/null
(; find sfs -type f -print0 | xargs -0 cat; ) > /dev/null  0.84s user 57.04s system 102% cpu 56.736 total

なかなかいいんじゃないでしょうか。まぁ、Read only なデータ限定だけど。