MartinシェアLinuxカーネルはバージョン2.4.14から、光メディア上のファイルの透過的展開をサポートしている。本記事ではこの透過的展開のサポートにより、mkzftreeツールとgenisoimageの-zオプションを用いて光メディアへの焼き付けを行う際に、どのような利点が得られるかを示す。これらのコマンドは、gzipと同じアルゴリズムを使用するzlibによってファイルを圧縮する。Ridgeを利用することにより、DVDにより多くのデータを格納することができる。焼き付けようとしているデータが既にしっかりと圧縮されているならば、透過的圧縮(展開)を用いても何の効果も得られない。JPEG画像、OGGオーディオ、bzip2で圧縮されたtarballなどを含むディスクを圧縮しても、透過的展開により得られるISOイメージは元のサイズよりもやや大きいものとなるだろう。HTMLやプレーンテキストファイルを含むディスクを焼く場合は、透過的展開による効果が得られる。Ridgeエクステンションによる透過的展開を利用することにより、ディスクを読み出すアプリケーションにおいて圧縮が行われていることをユーザーに感じさせない。9搭載システムにおいてgenisoimageとmkzftreeを使用するには、それぞれgenisoimageとzisofs-toolsをインストールする必要がある。11では、genisoimageとzisofs-toolsの両パッケージが1クリックインストールとして提供されている。Hardyでは、必要なツールはすべてgenisoimageパッケージに含まれている。Ridgeの仕組みとその効果を示す。HOWTOファイルのtar.bz2は16MBで、XFSファイルシステムに展開すると72MBとなる。HOWTOディレクトリをISOイメージに変換すると、イメージファイルのサイズは66MBとなるはずだ。透過的展開を用いれば、サイズをそれよりも小さくすることができる。HOWTOのファイルツリーを入力として、2つの通常のISOイメージを作成した。HTMLgenisoimageツールは実は圧縮を行わない。圧縮にはmkzftreeツールを用いる必要がある。Ridgeを有効化する。これによりディスクを読み出すOSは、ディスク上のファイルの一部を展開しなければならないことを認識する。Ridgeを有効化しておく必要がある。files.mkzftreeには他にも引数がある。--parallelism(-p)オプションは、同時に実行する圧縮処理の数を指定するためのものである。ファイルシステムの境界に対処するための--one-filesystemのようなオプション群もある。mkzftreeが圧縮した出力を保存するためのディレクトリを作成する、入出力ディレクトリを指定することもできる。上記のコマンド列により生成されるISOファイルのサイズは、興味深いものである。HTML-rockridge.iso最初に圧縮せずに作成した2つのISOイメージのサイズは、ソースファイルとほぼ同じとなっているのに対し、圧縮ファイルを含むISOイメージのサイズは、標準のISOイメージの約半分となっている。それでも元の圧縮されたtarballと比べると、サイズはその2倍もある。ISOイメージの方が大きいのは、tarballが単一のアーカイブファイルとして圧縮されているのに対し、ISO内の各ファイルは32KBのブロックに分割され、その個々のブロックが圧縮されるからである。一般的に圧縮するデータのブロックサイズが大きいほど、圧縮率は高くなる。Linuxカーネルが、圧縮ファイルの任意の部分にランダムアクセスできるようにするために、mkzftreeではファイルを多数のブロックに分けて圧縮しなければならないのだ。既存の圧縮ツリーに数ファイルを追加したい場合には、mkzftreeに--crib-treeオプションを指定する。mkzftreeのmanページには、--crib-treeではなく--crib-pathと記載されているものもあるが、--crib-pathでは動作しない。ファイルの追加は高速に処理される。上記のHTML圧縮ディレクトリは、約2.5秒で作成できた。このツリーに簡単なファイルを1つ追加し、--crib-treeを指定して新しいツリーを作成する、以下のコマンド列の実行には、わずか0.4秒しかかからなかった。Ridgeエクステンションである。ほとんどすべてのLinuxシステム上でメディアの読み出しは広くサポートされているが、他のプラットフォームで圧縮ファイルを読み出すには、mkzftreeツールの-uオプションによってファイルを展開しなければならないかもしれない。その前に、そのプラットフォームでmkzftreeをコンパイルしておく必要がある。10年以上にわたってファイルシステムを研究。博士課程を修了し、現在、libferris、ファイルシステム、検索ソリューションを中心にコンサルティングをしている。