Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

FUSE経由でZFSを使う

2008年06月23日 11:38 Ben-Martin(2008年6月19日(木)) 1 2 3
 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-devscons)、openSUSE 10.3 1-Clickインストール(libaio-develscons)、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の入門ページや、より本格的な文書を読むと良いかもしれない。

最終更新:2008年08月23日 17:07