Landscape トップページ | < 前の日 2004-06-12 2004-06-13 次の日 2004-06-14 >

Landscape - エンジニアのメモ 2004-06-13

Linux 用の圧縮ファイルシステム


* Linux 用の圧縮ファイルシステム

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux]

Windows の NTFS には、ファイル単位・ディレクトリ単位に適用できるファイルシステムレベルの圧縮機能がある。元から圧縮されている音楽や画像・動画には全くと言っていいほど効果がなくて単に遅くなるだけだが、テキスト形式のログや html ファイル、XML ファイルには有効だ。元のファイルの60%から50%くらいまで容量を抑えることができる。Linux でも同じ様なことができないかなーと思い、Linux で使える圧縮ファイルシステムを探してみた。

- e2compr

http://e2compr.sourceforge.net/

後述する e2compress の "The Modern Age" バージョン。April 20, 2004 にリリースされたバージョンは linux-2.4.26-e2compr-0.4.44-1.diff.bz2 となっていることから、Linux カーネル 2.4.26 に対応している模様。カーネル 2.6 への移植も予定しているとのこと。ext3 のジャーナリングと同時には使えない。何ができて何ができないのかについては http://e2compr.sourceforge.net/faq.html の FAQ が参考になる。

- e2compress

ext2 用。上記 e2compr の前身。http://e2compr.sourceforge.net/ では "The Third Age" と呼ばれていた。カーネル 2.2 の頃は結構使われていたようで、ウェブにもドキュメントや導入事例がたくさんあった。ただ、最近ではあまり使われていない模様。カーネル 2.4.17 まで対応している。それ以降のカーネルには前述の e2compr を使う。

e2compress
http://www.alizt.com/
Transparent compression of ext2 filesystem for kernel 2.4

- cloop

knoppix でおなじみの圧縮ループバックファイルシステム。読み取り専用のようだ。

- AVFS

WindowsXP の圧縮フォルダみたいな機能らしい。

use-avfs
http://add10.hp.infoseek.co.jp/rox/avfs.html
AVFS は圧縮アーカイブ(例えば zip、gzip、bzip2)や tar、rpm などを仮想ファイルシステムに展開し、内部に降りていく機能を提供します。

- Cramfs

JF: Linux Kernel 2.4 Documentation: cramfs.txt
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/filesystems ...
読み取り専用の圧縮ファイルシステム。組み込み機器などで使うらしい。

- NEW Ext4 filesystem for linux (with on the fly transparent compression)

http://www.geocities.com/maxcompress/

タイトルの表記は Ext4 となっているが、本文中では Extended Z Filesystem For Linux と呼んでいる。
Extended Z filesystem = Extended 3 filesystem + on-the-fly transparent compression + automatic encryption.
(略)
It is compatible with all 2.4.x and later kernels.

Extended Z filesystem は ext3 に透過的な圧縮と暗号化を付加したもので、カーネル 2.4系列に対応と書かれている。本当だとしたら素晴らしい。

パッケージは www.geocities.com/maxcompress/ExtZ.zip からダウンロードできたようだが、今では 404 Not Found になってしまう。もしかして、このサイトってもうメンテナンスされていないんじゃないか? 試しに http://www.geocities.com/maxcompress/ に HTTP HEAD してみる。
Date: Thu, 10 Jun 2004 02:38:37 GMT
うーん、どう見ても放置状態だ。これじゃダメだ。

- zisofs

iso9660 用の圧縮ファイルシステム。 安定版の Last release が 06-Nov-2002 だから、結構古い。

The zisofs filesystem is an extension to the ISO9660 filesystem that allows files, on a file-by-file basis, to be stored compressed and decompressed in real time. The zisofs filesystem is supported by recent versions of Linux (2.4.14 or later).

- DMSDOS fs

http://www.noizumi.org/~noizumi/linux/dmsdos.html
Win95等で使われている圧縮ドライブをLinuxで使用可能にする。

Windows の圧縮ドライブって、信頼性に問題があったような気がする。あまり魅力的じゃないなあ。

- gzexe

圧縮ファイルシステムとはちょっと違う。実行ファイルを gzip で圧縮して、それを呼び出すためのシェルスクリプトを生成する。シェルスクリプトには、圧縮された元の実行ファイルのデータが付加される。

Manpage of GZEXE
http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzexe.1.html
gzexe - 実行ファイルを実行できる形で圧縮する

cygwin にも gzexe が入っていたので、試しに /bin/cat を gzexe してみた。
$ gzexe /bin/cat
sed: can't read /bin/cat: No such file or directory
cp: `/bin/cat' and `gz720' are the same file
gzip: /bin/cat: No such file or directory
gzexe: compression not possible for /bin/cat, file unchanged.

あれ? そんなファイルは無いって? おかしいな。/bin/ca までタイプして tab キーでファイル名を補完させてみる。
$ gzexe /bin/ca
cal.exe        captoinfo.exe  cat.exe
あ、なるほど。windows 上のファイル名で指定しないとダメなのか。

gzexe が置き換えた実行ファイルの中身。ちなみにサイズは圧縮前が 17KB で、圧縮後が 9KB だった。なかなかいい。
#!/bin/sh
skip=22
set -C
umask=`umask`
umask 77
if /usr/bin/tail -n +$skip "$0" | "/usr/bin"/gzip -cd > /tmp/gztmp$$; then
  umask $umask
  /bin/chmod 700 /tmp/gztmp$$
  prog="`echo $0 | /bin/sed 's|^.*/||'`"
  if /bin/ln /tmp/gztmp$$ "/tmp/$prog" 2>/dev/null; then
    trap '/bin/rm -f /tmp/gztmp$$ "/tmp/$prog"; exit $res' 0
    (/bin/sleep 5; /bin/rm -f /tmp/gztmp$$ "/tmp/$prog") 2>/dev/null &
    /tmp/"$prog" ${1+"$@"}; res=$?
  else
    trap '/bin/rm -f /tmp/gztmp$$; exit $res' 0
    (/bin/sleep 5; /bin/rm -f /tmp/gztmp$$) 2>/dev/null &
    /tmp/gztmp$$ ${1+"$@"}; res=$?
  fi
else
  echo Cannot decompress $0; exit 1
fi; exit $res
(以下、バイナリが続く)

- 今時の圧縮ファイルシステムは特殊用途向け

今回調べて見た限りでは、Linux 向けの圧縮ファイルシステムは、特殊用途向けにしか存在しないようだ。デスクトップマシンやサーバなどでよく使われる ext3 や xfs などのファイルシステムに圧縮機能を追加したものはみつけられず、あったとしても ext2 などにしか対応していない。

やっぱりディスク容量がこれだけ大きくなってくると、需要がないんだろうな。圧縮すればディスク I/O も減るけど、CPU 資源を消費してしまう。CPU は余ってるけど I/O がいっぱいいっぱいで、かつ圧縮が効くテキストデータを主にサービスするサーバって・・・2ちゃんねるの過去ログ倉庫サーバとか? あ、でもあれは gzip した dat を収めてるんだっけ?

過去ログといえば、みみずん検索 http://www1.odn.ne.jp/mimizun/ のみみずん氏は Namazu + Windows2000 で2ちゃんねるの過去ログ検索をサービスしてて、NTFS 圧縮は便利って言ってたっけ。でもこれもある意味特殊用途だなあ。

- 参考

[linux-users:100451] ファイルシステムの圧縮(Kernl2.4)
http://search.luky.org/linux-users.a/msg00400.html

いわわメモ 圧縮ファイルシステム
http://www.si-linux.co.jp/iww/diary/?200301c&to=20030129 ...
e2compr(ext2) dmsdos cloop cramfs jffs2 AVFS fuse どれか


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。