先日Linusが盛大にZFSを非難したことがインターネット・カーネル界隈の噂を駆け巡った。これをタイトルだけみたり本文をちょっと読んだら「ああ、LinusはZFSが嫌いなんだ」とか「LinuxでZFSを使うべきではない」といった理解をする人が非常に多いだろうと思う。Linusは当然Linuxユーザーにとって大きな影響力を持つ人物であり、多くのLinuxユーザーがこの理解のままでいることになりかねない。公私ともにZFSに頼りっきりになっている私は特にそういう状況は非常に困るし、Canonicalは19.10からUbuntu LinuxでのZFS rootを標準にしようとしているくらいだからもっと困るだろう。複雑な状況になっていると思うので、このニュースの深層を探ってみよう。
まず元スレ
元になったLinusのレスによると、そもそも最近カーネルにドライバのインターフェース変更があってZFSがこれで大きな影響を受けたとのこと。カーネルのFPUのインターフェースがGPL-onlyと宣言されたことでZFS on Linuxは非常に困っている。これについてLinusに「どう思う?」と質問があったという流れだ。
- 「ユーザーに影響を与えない」ポリシーはユーザー空間のアプリと、私が見ている範囲のカーネルについての話だ
- 外部のカーネルモジュールは対象外で、その面倒までは見きれない
- Oracleの法務かLarryがサインした書類がなければZFSに関するコードは一切マージしない
- それどころか、shimみたいなのも一切入れる気はない、Oracleのインターフェース著作権(Javaのアレとか)のことを考えればライセンスに関して落とし所はないだろう
- ZFS使うなよ。バズワードでしょ。ライセンスの問題がある限りは一考に値しない
- ベンチマークもそんなにいいと思わないしそもそもメンテされてないんじゃね
という要旨で、まあZFSのことそんなによく知らないのかな?と思ったら、これに対する反応はだいたい次のような感じ。
- カーネルモジュールのことは仕方がない、サードパーティだしね
- マージされるとかshimがあり得ないとか、それも当然そうだと思う(より安全だしね
- VM動かす系のユースケースだと使いやすい類似のファイルシステムはBtrfsしかないんだけどちょっとね…
- VDO+thinp+XFSみたいなので頑張れなくはないけどそれでも機能がたりない
- わたしのワークロードだとARC?が効いてページキャッシュがめちゃヒットして性能出る
- いやOpenZFSむっちゃアクティブだよ!!!
これに対して、OpenZFSについてLinusから返事が(わたしの超訳です)。
- ZFSといったらOracleのやつに決まってんじゃん!メンテされてないでしょそっちは
- OpenZFSがアクティブなのは知ってる。でも著作権リスクについては同じことだよね
ここでスレは終わっている。つまりOpenZFSについては法的リスクだけを懸念しているわけで、他のことについては何もいってない。まとめると、ZoLユーザーは法的リスクを理解した上でZoLを使っているということになる。OracleのオリジナルのZFSについては、ZoLユーザーは関心はないだろう。
ZoLの法的リスクについて
これについては、Canonicalが一応の結論を出している。今年の8月にUbuntuがこれからZFSやっていくぜと宣言したときに、2年前に大丈夫だという結論を出したとかいている。ここは簡単に結論を引用しておこう。
While the CDDL and GPLv2 are both “copyleft” licenses, they have different scope. The CDDL applies to all files under the CDDL, while the GPLv2 applies to derivative works.
The CDDL cannot apply to the Linux kernel because zfs.ko is a self-contained file system module — the kernel itself is quite obviously not a derivative work of this new file system.
And zfs.ko, as a self-contained file system module, is clearly not a derivative work of the Linux kernel but rather quite obviously a derivative work of OpenZFS and OpenSolaris. Equivalent exceptions have existed for many years, for various other stand alone, self-contained, non-GPL kernel modules.
私もこれで大丈夫だと思うんだが、まあOracleが何をやってくるのか分からないということに関しては同意しておこう。ただまあOracleが訴えたのはクラウド事業で競合関係にあるどころか数歩先を行く先行者のGoogleで、かつGoogleは基幹の事業ではめちゃくちゃ儲かっているとか、いろいろ条件が揃ってこうなったんじゃないかというのが私の推測だ。Javaのアレはこちらの解説が詳しいので深くは踏み込まないが、あのときはDalvikがすでに標準化が進んでいるJVMの仕様について、それの実装を作って利益を得たという状況だった。ZoLだと少し違って、LinuxがOpenZFSをライブラリ(VFSのひとつ)として利用している形態になる(しかも配布は別々で、ユーザーは自分でくっつける)。
まとめると
- Linusが非難したのはOracle ZFSであってOpenZFSではない
- とはいえLinuxにZFSがマージされることはないだろう
- Ubuntuはライセンスは問題ないと3年以上前に宣言している
あたりが事実。
ちなみに、Oracleが公開しているZFSのドキュメントはLinuxの他のどのファイルシステムよりもよく書かれている。個人的には、ZFSはLinuxが標準で用意しているどのファイルシステムよりも必要な機能が揃っていて安定していて使いやすい(それゆえにシステム管理者から絶大な人気がある)ので、このまま使い続けられる状態であってほしい。FreeBSDみたいに標準でROOTにできるようにしてほしい。ZFSは割と無茶なオペレーションもやり遂げられるので安心感が違う。
(追記)見返したらタイトルが煽りっぽかったので変えました
(追記2)より詳しい解説が出ていた:
Linus Torvalds says “Don’t use ZFS”—but doesn’t seem to understand it