ZFS in Open Source
ZFSというファイルシステムがある。 元々Sun時代にSolarisに載せるためのファイルシステムとして開発されていて、
- 柔軟にボリュームが切れる
- 固定サイズにも可変サイズにもできる
- ボリュームごとに好きなだけ簡単にスナップショットがとれる
- Copy-on-writeだから軽量
- 専用のスナップショット出力吐きコマンドがある
- たとえばSSH経由で(差分のみの)コピーも…!
- 重複排除、暗号化が使える(後のバージョン)
- さらに、ボリュームマネージャも含んでいる
- ミラーリング、ストライピング、RAID(RAID-Z)などがコマンド一発で(!)できる
- 特殊なハードウェア不要
という、非常に先進的なファイルシステム(+論理ボリュームマネージャ)。
多くの人がSolaris以外でも使いたい!と思ったようで、様々にポートがされているのだけれど、以前と大きく状況が変わっているようなのでまとめる。
そのまえに:ZFSのバージョン
ZFS自体は今も活発に開発されており、機能追加がされている。そのため、ZFSにはバージョンがある(!)。
(他のファイルシステムはないよね。EXT2, EXT3, EXT4は別物のようなものだし。)
(他のファイルシステムはないよね。EXT2, EXT3, EXT4は別物のようなものだし。)
既に述べたとおり、ZFSは、論理ボリュームマネージャとファイルシステムの両方を含んでおり、
- ZFS Pool (zpool) -- 論理ボリュームマネージャ
- ZFS Filesystem (zfs) -- ファイルシステム
のそれぞれにバージョンがついている。
英語版ウィキペディアの記載を見るとはやいのだけれど、
ZFS Poolのバージョンが重要で、
ZFS Poolのバージョンが重要で、
- 5 -- 圧縮に対応
- 21 -- 重複排除に対応
- 28 -- Multiple virtual device replacements (?)
- 30 -- 暗号化に対応
ここらへんが、外から見た機能面で重要なところか。
各OSへのポート状況
- ZFS-FUSE
- 一番昔からあるやつ。
ライセンス上の都合でLinuxのカーネルに取り込めなかったので、FUSEとして開発。
(FUSEなので)動作が遅い。あと、古いzpool(バージョン23)まで対応していない。
- KQ Infotech's ZFS on Linux
- Linuxへの移植その1。死んだ。
-
- Linuxへの移植その2。LLNL(米国の国立研究所)で開発が進む。
カーネルモジュールとして動作するので、高速に動作。Linuxで使うならこれが標準。
-
-
- Macへの移植その2。いち企業により管理されていたが、Oracleに買収され開発中止。死んだ。
-
- Macへの移植その3。Macで使うにはこれが標準?
- FreeBSDネイティブ
- FreeBSDにはカーネルに取り込まれている。
経緯を交えてもう少し詳しく言うと、
- Sun により ZFS の開発が始まる
- OpenSolaris としてZFSのソースも公開される
- Linux への移植版(ZFS on Linux)が開発開始
- Sun が Oracle により買収される
- OpenSolaris の開発中止
- OpenSolaris の後継開発プロジェクト Illumos が開始
- さまざまなZFS移植プロジェクトを統合して OpenZFS が発足
という感じ。
ぱっと見た感じでは、すでに開発が進んでた ZFS on Linux の存在が大きい感じかな?
あと、移植一覧にみられる5000という奇妙なバージョン番号について補足すると、
- ZFSでは機能追加のたびにバージョン番号が増えている(あたりまえ)
- オープンソース的な開発では、様々な開発者が独立に機能を追加していくので、このバージョニングが不便
- そこで、
- 絶対に使われないであろう、1000(ないし5000)というバージョンを割り当て、
- 対応機能一覧をフラグ付けする(feature flag)
という話らしい。
ただし、バージョン5000とつけられたZFSボリュームは、他のOSで開けないので、
開けるようにするためには、ZFSプール作成時にバージョン28を指定するべきとのこと。
開けるようにするためには、ZFSプール作成時にバージョン28を指定するべきとのこと。
基本的には、OpenZFS では ZFS pool version 28 までの機能に対応と認識しておけばよいもよう。
(これ以降は、Oracleで閉じた開発をされているので。)
(これ以降は、Oracleで閉じた開発をされているので。)
結論
- Linux では、ZFS on Linux を使うべき。(それ以外の選択肢はほぼない…FUSE版を除いて。)
- Ubuntuでは、PPAが使える。とても便利。
- Mac では、OpenZFS on Mac を使うべき。
- 追伸: OpenZFS on Mac 1.2.7 以降で作成したZFSボリュームは、他のOSと互換性があるようになったらしい。
- FreeBSD では、ネイティブで利用できる(!)