LinuxカーネルではサポートされていないZFSだが、ZFS_on_FUSEを使えばLinuxでも用いることができる。読み取りを多く行う用途であれば、FUSE経由でZFSを使用することによる速度的なマイナスはない。
ZFSはSun Microsystemsによって作成された先進的なファイルシステムだが、Linuxカーネルではサポートされていない。しかしZFS_on_FUSEを利用すれば、Linuxカーネル上でもZFSをFUSEファイルシステムとして使用できる。つまりLinuxカーネル上で利用可能なほかのファイルシステムとまったく同様にZFSファイルシステムにアクセスできるようになる。
LinuxカーネルにZFSのサポートが統合されていない主な理由には、技術的/資金的な問題以外にも、SunがZFSをリリースしているCommon Development and Distribution LicenseがLinuxカーネルのGPLとは非互換だということがある。また特許の問題もある。とはいえZFSのソースコードは公開されており、またCDDLコードとGPLコードとをリンクするわけではないので、FUSE経由でZFSを実行することはどのライセンスにも違反しない。ただし特許に関しては自己責任として利用することになる。
カーネル内ファイルシステムの開発者の中には、通常であればカーネル内に含まれているファイルシステムをFUSE経由で実行することについて効率的な観点から不満を感じる人もいる。アプリケーションがカーネルを呼び出す際にはコンテキストスイッチを行う必要があるが、x86アーキテクチャでのコンテキストスイッチはとりわけ高速というわけではない。そしてFUSEファイルシステムはカーネル外で実行されるため、カーネルはFUSEファイルシステムのために折りに触れてコンテキストスイッチを行う必要がある。従ってFUSE経由でのファイルシステムの利用に必要なコンテキストスイッチの総回数は、カーネル内ファイルシステムを利用する場合よりも多くなってしまう。とは言っても1度のコンテキストスイッチの代わりに2度のコンテキストスイッチを行うために必要となる時間よりも、ディスク上に保存されている情報にアクセスする時間の方が大幅に長いため、ベンチマークの結果を見ても分かるように、影響があったとしてもたいしたことはないと考えてよいだろう。FUSE経由で実行したNTFSは、ネイティブのLinuxファイルシステムと互角だという結果もある。
Ubuntu、openSUSE、Fedoraの各ディストリビューション用のzfs-fuseのパッケージは存在しない。執筆時点でのzfs-fuseの最新版は2007年3月にリリースされた0.4.0 betaだ。zfs-fuseの0.4.xバージョンのソースリポジトリを見る限り、最新版のリリース以来数多くの改善が施されているようだ――例えば2007年3月の時点以降、gccの新しいバージョンを使ってコンパイルできるようになった点などがある。そこで最新版としてリリースされているtarファイルではなく、ソースリポジトリからの0.4.xバージョンを使用して、Fedora 8をインストールしてある64ビットマシン上でベンチマークを行ってみた。
ソースコードリポジトリはリビジョン管理システムにMercurialを利用しているが、Mercurial自体はHardyやFedora 9のメインのリポジトリから入手可能だ。またzfs-fuseをコンパイルするにはSConsとlibaioの開発用パッケージが必要となるが、どちらのパッケージもUbuntu Hardy(libaio-devとscons)、openSUSE 10.3 1-Clickインストール(libaio-develとscons)、Fedora 9のリポジトリから入手できる。インストール作業を行うと、/usr/local/sbin内に5つの実行ファイルが作成される。
$ hg clone http://www.wizy.org/mercurial/zfs-fuse/0.4.x
$ cd 0.4.x/src
$ scons
$ sudo scons install
$ sudo zfs-fuse
zfs-fuseデーモンの起動後は、zpoolコマンドとzfsコマンドを使ってzfsファイルシステムをセットアップする。ZFSを使うのがはじめての場合にはOpenSolarisの入門ページや、より本格的な文書を読むとよいかもしれない。
Copyright © 2010 OSDN Corporation, All Rights Reserved.