公開日
更新日
開発コスト問題に悩む企業や団体の解決策のひとつとして、LinuxをはじめとしたOSSの採用が増えてきました。
ビジネスへの適合率が高いすぐれたOSSベースのパッケージ製品などが増えてきたことでスクラッチ開発の大変さが薄れ、自社の専門性を持った技術者不足やサポートに対する不安がそれほど気にならない状況に変わってきたためと言えます。
今回は、これらに携わる技術者のひとりである、富田慎吾から届いた「ZFS on Linux」に関する寄稿をご紹介します。
2016年4月22日にUbuntu 16.04 長期サポート(LTS)版 "Xenial Xerus"がリリースされました。
本バージョンから新たに、「ZFS on Linux」が標準で利用できるようになった点が議論を引き起こしています。
今回の議論の争点は「ライセンスの問題」です。
日本国内における商用Linuxディストリビューションの観点では、有償サポートのRed Hat Enterprise Linuxが大きなシェアを持っていますが、Ubuntu Linuxに対しても近年有償サポートの選択肢が増えて来ていることもあり、Ubuntu Linuxが対抗馬として台頭してくるのではないかと思います。
ビジネスシーンでの利用を考えた際に、ライセンス面の透明性が確保されていることは極めて重要な問題です。
最終的な判断は、フリーソフトウェア財団(FSF)とZFSそのものの権利保持者であるOracle社やUbuntuディストリービューターとの協議や、司法判断等の中で明らかになっていくものと予想しますが、まずは現状把握として本記事にて情報を整理していきます。
ZFSとは2004年にサン・マイクロシステムズ(現Oracle社)が発表したファイルシステムで、以下のような特長があります。
- RAID機能をファイルシステムそのものが持つ。
- ホットスペアをサポートし、稼働中にディスクの交換が可能。
- コピーオンライトの実装によるデータの完全性と安全性の確保。
- 重複排除機能とファイルシステム圧縮機能によるディスク使用の効率化。
- ストレージプールによる物理ディスクの差異吸収(容量、種類)。
他にもさまざまな機能や特長がありますが、これらの特長を生かすことで、今まで高価な商用ストレージ製品のみに実装されていたような機能を、より低いコストで実装することが可能となりました。
ZFSはもともとOracle社のSolaris OS上での実装からスタートしましたが、オープンソースで開発されたという背景もあり、
- FreeBSD
- NetBSD
- Mac OS X
といった様々なUnix系OSへの移植が進み、さらにはLinuxへの移植も進められました。
しかし、LinuxへのZFS実装において「ある問題」に直面します。
ZFSをLinuxへ移植するに当たって直面した問題こそが、今回の争点である「ライセンス問題」です。
LinuxではOSの核であるLinuxカーネルにおいてGPL(General Public License)というライセンスを採用しています。
GPLはコピーレフトの概念を採用しており、Linuxカーネルに改変を加える場合にはGPLライセンスに則る必用があります。
このGPLライセンスにより、「ソフトウェアがクローズドな商用ソフトへと勝手に転用されてしまう」といった事態を防げ、ソフトウェアが「オープン」で「自由」である状態が確保されます。
ZFSはカーネルモジュールとして動作するファイルシステムです。
一般的に、ファイルシステムの役割はディスクやストレージをつかさどることですので、ハードウェアに近いレベルの操作が必要とされます。このことからも「ZFSがカーネルモジュールとして動作する」ということはイメージしやすいかと思います。
ZFSはCDDL(Common Development and Distribution License)というOracle社独自のライセンスを採用しています。
詳細を話せばとても長くなってしまうため割愛しますが、CDDLはGPLと相性が悪いと言われています。このため、「GPLライセンスに抵触するため、LinuxカーネルにZFSを統合して配布することはできない」とされてきました。
このライセンス問題を解消するため、従来はFUSEと呼ばれる技術を経由する方法(zfs-fuse)をとっていました。
FUSEとはユーザーランド(※)でファイルシステムを実現するための技術です。
「解決策があるなら、なんの問題もないじゃないか」とお考えになる方もいらっしゃるかと思いますが、FUSEを経由したユーザーランドでのZFS実装には、以下のような問題がありました。
- FUSEを経由するとパフォーマンスが発揮できない。
- 提供できる機能に限りがある。
(※) Linux OS上で動くアプリケーションプログラムが使用するメモリ領域
FUSEでのパフォーマンス劣化や機能制限の問題を回避するために、ZFSをLinuxカーネルモジュールとして動作させるための実装として「ZFS on Linux」が登場しました。
機能的な観点では、ZFS on Linuxはzfs-fuseで生じる多くの問題を解決しましたが、ライセンスの観点では(考慮・善処はしているものの)完全に解消されたとは言えない状態にあります。
そのため多くの場合において、以下の解釈がなされてきました。
- 利用者が自己責任で利用することは問題ない。
- Linuxの一部として配布することは問題あり。
ソフトウェアライセンスはある種、法の解釈と似たところがあり、「解釈による見解の相違」が発生し得ます。
まず、ZFS on Linuxプロジェクト自身がどのように解釈しているかから整理します。
解釈により自身を正当化しているかと思いきや、部分的にではありますが意外にもZFS on Linuxプロジェクト自身は「ライセンス上の問題があること」をFAQの中で示唆しています。
しかし最終的には、「モジュールやソースコードの形で配布することは問題ない」という立場をとっています。
出典:http://insights.ubuntu.com/2016/02/18/zfs-licensing-and-linux/
Ubuntuは以下の理由を掲げ「問題なし」と主張しています。
- ZFS on LinuxのカーネルモジュールはLinuxカーネルとは独立したものである。
- Linuxカーネルの派生物でもない。
- ZFS on Linuxのカーネルモジュールを利用した際にLinuxカーネルがZFSの派生物になるわけでもない。
- よってライセンス上の問題は無い。
出典:http://insights.ubuntu.com/2016/02/18/zfs-licensing-and-linux/
詳細は割愛しますが、FSFのリチャード・ストールマンは「私的に使用することには問題がないが、配布にはライセンス上の問題がある」という解釈を示しており、解決する手段は以下のいずれかであるとしています。
- UbuntuがZFSカーネルモジュールの同梱をやめること。
- OracleがZFSをGPLv2と互換性のあるライセンスに再ライセンスすること。
出典:https://www.fsf.org/licensing/zfs-and-linux
筆者がこの記事を書いている時点では、Oracle社としての正式な見解を見つけることはできませんでした。
ZFSの権利者であるOracle社がどのような動きを見せるかが、今回の問題の帰結を左右することになるのではないかと思います。
今後の動向や展開は「神のみぞ知る」ものではありますが、「Javaと同じ道を辿り、Oracle社がZFSに対してGPLv2互換のデュアルライセンスを適用する」のではと思います。
Javaと同様に、LinuxディストリビューションにZFSがバンドルされることでより市場へと拡大していくことがOracle社にとって重要という判断を下すのではないかという考えに基づいています。
出典:https://osdn.jp/magazine/06/11/13/113203
サン・マイクロシステムズがOracleに買収されたり、Google社に対してAndroidにおけるJava API著作権をめぐってOracle社が訴訟を起こしたりと、JavaがGPL公開された時代とは組織構造や企業としての考え方が変化しているかもしれないことは理解しています。
オープンソース支持者のSEである筆者としては、
ライセンスの問題や解釈の相違がクリアになって、
筆者紹介
株式会社アイネス
富田 慎吾(とみた しんご)
金融系顧客を担当する部門に所属する入社10年目の社員です。
ネットワーク・サーバー構築業務を経て、現在は商用UNIXサーバー群を使用した業務システムの運用管理を担当しています。
※ OSS ERPに興味がある方はこちらの記事もご覧ください。
※ 本文に掲載されている会社名・団体名および製品名は各社または団体等の商標または登録商標です。