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 なデータ限定だけど。