光メディア上のファイルに対する透過的圧縮

 Linuxカーネルはバージョン2.4.14から、光メディア上のファイルの透過的展開をサポートしている。本記事ではこの透過的展開のサポートにより、mkzftreeツールとgenisoimageの-zオプションを用いて光メディアへの焼き付けを行う際に、どのような利点が得られるかを示す。これらのコマンドは、gzipと同じアルゴリズムを使用するzlibによってファイルを圧縮する。透過的圧縮エクステンションであるRock Ridgeを利用することにより、DVDにより多くのデータを格納することができる。

 焼き付けようとしているデータが既にしっかりと圧縮されているならば、透過的圧縮(展開)を用いても何の効果も得られない。たとえばJPEG画像、OGGオーディオ、bzip2で圧縮されたtarballなどを含むディスクを圧縮しても、透過的展開により得られるISOイメージは元のサイズよりもやや大きいものとなるだろう。

 HTMLやプレーンテキストファイルを含むディスクを焼く場合は、透過的展開による効果が得られる。UTF-8形式で保存されたテキストファイルならば効率よく圧縮され、LinuxカーネルはRock Ridgeエクステンションによる透過的展開を利用することにより、ディスクを読み出すアプリケーションにおいて圧縮が行われていることをユーザーに感じさせない。

 Fedora 9搭載システムにおいてgenisoimageとmkzftreeを使用するには、それぞれgenisoimageとzisofs-toolsをインストールする必要がある。openSUSE 11では、genisoimagezisofs-toolsの両パッケージが1クリックインストールとして提供されている。Ubuntu Hardyでは、必要なツールはすべてgenisoimageパッケージに含まれている。

 ここではHTMLのLinux HOWTOファイルを用いて、透過的圧縮エクステンションRock Ridgeの仕組みとその効果を示す。HTML HOWTOファイルのtar.bz2は16MBで、XFSファイルシステムに展開すると72MBとなる。K3bでFilesystemタイプを「Linux/Unix + Windows」として、HTML HOWTOディレクトリをISOイメージに変換すると、イメージファイルのサイズは66MBとなるはずだ。透過的展開を用いれば、サイズをそれよりも小さくすることができる。