kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 16.04 その16 - コンテナー向けにデフォルトでZFSが利用できるようになる

ZFS

  「Ubuntu 16.04」では、コンテナー向けに「ZFS」がデフォルトで利用できるようになる予定です。(Native ZFS、ZFS on Linux)


  ZFSとは

    「ZFS」は、Ubuntuデスクトップでよく利用される「ext4」ファイルシステムと、「LVM(Logical Volume Manager)」を組み合わせたような特徴を持つファイルシステムです。

    「ext4」ファイルシステムはファイル(データ)を管理する仕組みを提供しています。

    「LVM」では、例えば以前紹介した「MD(mdadm)」のような複数の物理ボリュームを1つの論理ボリュームで扱うような仕組みを提供しています。
    その最たる例はRAIDです。

    「ZFS」はファイルシステムでありながら「LVM」のような機能も提供します。
    さらにデータの圧縮やスナップショットの作成など、ファイルシステムと他のソフトウェアを組み合わせて実現するような機能も提供します。

  ZFSを利用するにはドライバーが必要

    「ZFS」を利用するには「ZFS」の機能を実現するカーネルモジュール(ドライバー)が必要です。
    「Ubuntu 16.04」では、「ZFS」のカーネルモジュールがデフォルトで提供される予定です。

    あくまで「ZFS」のカーネルモジュールがデフォルトで提供されるというだけで、使用するかどうかはユーザー次第です。

  デスクトップユーザーが使用するファイルシステムではない

    上記の通り「ZFS」は多機能なファイルシステムですが、一般的なデスクトップユーザーが使用するファイルシステムではありません。

    少なくとも「Ubuntu 16.04」のインストーラーが「ZFS」を標準のファイルシステムとして採用することはありません。
    標準のファイルシステムは従来通り「ext4」でしょう。

    ですので、デスクトップ用途でUbuntuを利用しているなら「ZFS」のことは気にしなくて良いです。

  Canonicalによりサポートされる

    「ZFS」のカーネルモジュールは「Canonical」によりサポートされます。

    「Ubuntu 16.04」は2年に一度のLTSリリースになるため、「Ubuntu 16.04」で提供される「ZFS」のカーネルモジュールのサポート期間は「Ubuntu 16.04」がリリースされてから5年間になります。

    すなわち、2021年4月まで「ZFS」のカーネルモジュールのサポートが行われます。
   

Ubuntu 15.10でのZFS

  「Ubuntu 15.10」では、64bit版に限りテクニカルプレビュー版として「ZFS」が利用可能です。

  インストールは簡単

    Ubuntuの公式リポジトリーから簡単に「ZFS」カーネルモジュールをインストールすることができます。
    「zfsutils-linux」パッケージをインストールすれば、「ZFS」が利用できるようになります。


    しかしビルド済みの「ZFS」のカーネルモジュールは含まれていません。
    「ZFS」のカーネルモジュールがなければ、「ZFS」は利用できません。

  DKMSでビルドを行う

    ではどうしているのかというと、「DKMS」という仕組みを用いて「ZFS」のソースコードから「ZFS」のカーネルモジュールのビルドを行っています。

    上記のパッケージをインストールすると依存関係の指定により「zfs-dkms」パッケージもインストールされます。

    この「zfs-dkms」パッケージに、「DKMS」によるビルドに必要なファイルが含まれています。
    上記のパッケージをインストールした後や「Linux Kernel」がアップデートされた後、自動的に「ZFS」のカーネルモジュールのビルドが行われ、「Linux Kernel」に読み込まれます。

  ZFSのソースコード

    「ZFS」のソースコードも「zfs-dkms」パッケージに含まれています。
    「zfs-dkms」パッケージの中身を覗くと、以下のように「ZFS」のソースコードが含まれています。


  Ubuntu 16.04ではビルド済みのZFSのカーネルモジュールを提供

    Ubuntu 16.04ではビルド済みのZFSのカーネルモジュールを提供する予定であるため、クライアントでのビルド作業が必要無くなります。

Linux KernelとZFSのライセンス

  上記でも記述した通り、「Linux Kernel」のライセンスは「GPLv2」です。
  一方「ZFS」のライセンスは「CDDL」です。

  この2つのライセンス間には相容れない条項が存在します。

  ソースコードは混ぜられない

    「GPLv2」でライセンスされたソースコードと「CDDL」でライセンスされたソースコードを混ぜて同じバイナリーを生成することはできません。

  Canonicalは問題ないと判断している 

    この件について「Canonical」は、お互いのライセンスに抵触せずビルド済みの「ZFS」カーネルモジュールを同梱し配布できるという解釈を主張しています。

    「ZFS on Linux」の「2.2 What is the licensing concern?」によると、ソースコードを混ぜて同じバイナリーを生成し配布することはできないけど、ソースコードを混ぜない形でバイナリーモジュールあるいはソースコードを配布するのは問題ない、と記述されています。

    「Canonical」の主張は、以下のようになります。

我々Canonicalは、自由なソフトウェア界をリードする人達と議論を重ねつつ、「Linux Kernel」と「ZFS」に適用されるライセンスの法的な見直しを行った。
結果、両方のライセンスを順守しつつ「ZFS」カーネルモジュールを同梱できるという結論に至った。

「CDDL」と「GPLv2」はいずれもコピーレフトライセンスだが、適用対象が異なる。
「CDDL」は「CDDL」下にあるファイル全てに適用する。
一方「GPLv2」は、派生物に適用する。

「CDDL」は「Linux kernel」に適用することはできない。
何故ならば「zfs.ko(ZFSカーネルモジュール)」は自己完結型のファイルシステムモジュールである。

「Linux kernel」自身、「ZFS」ファイルシステムの派生物ではないことは明白である。
そして「zfs.ko」も「Linux kernel」の派生物ではないことは明白であり、「zfs.ko」は「OpenZFS」及び「OpenSolaris」の派生物であることも明白である。

様々な他の自己完結型のモジュールにおいて、同等の例外は何年にも渡って存在している。
GPLではない「nvidia.ko」プロプライエタリーカーネルモジュールがその例である。

我々が出した結論は、Ubuntuのユーザーにとっても、Linuxにとっても、そしてすべての自由なソフトウェアとオープソースソフトウェアにとっても価値のある結論である。

参考

  • ZFS is *the* FS for Containers in Ubuntu 16.04! 
  • ZFS Licensing and Linux(ubuntu insights)
  • ZFS Licensing and Linux(Dustin Kirkland)
  • ZFS 
  • 2.2 What is the licensing concern?
  • Ubuntu Kernel Team ZFS Reference Guide
  • ZFS Will Be Baked Directly into Ubuntu 16.04 LTS and Supported by Canonical
  • Canonical announced that support for the ZFS (Z File System) will be available in Ubuntu 16.04 LTS, but a lot of users have been asking about a possible license conflict. Canonical’s Dustin Kirkland explained why that’s not a problem.


Ubuntu 16.04
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu CPUfreq その1 - CPUfreqについて・ CPUfreqドライバーについて・ CPUfreqガバナーについて
    CPUfreq   CPUfreqは、CPUのクロック数を動的に変更する機能です。   CPUfreqを利用することで、OSの負荷に応じて動的にCPUのクロック数を調整することができます。  これにより、省電力効果を得ることができます。   CPUfreqを利用する場合...
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Ubuntu 24.04 その93 - Linux kernel 7.0 が利用可能に・Linux kernel 7.0 にアップグレードするには
    Linux kernel 7.0 が利用可能に 現在 Ubuntu 24.04 LTS を利用しているユーザーは、Linux kernel 7.0 へアップグレードできるようになりました。
  • Ubuntu 26.04 その59 - amdgpu ドライバーでパフォーマンス低下のお知らせ
    amdgpu ドライバーでパフォーマンス低下のお知らせ 次期 Linux kernel のアップデートで、amdgpu ドライバーのパフォーマンスが低下するお知らせが出ています。
  • Linux その407 - COSMIC DE 開発7ヶ月の歩み・COSMIC DE に搭載された新機能のまとめ
    COSMIC DE 開発7ヶ月の歩み COSMIC デスクトップ環境の開発者が、ここ7ヶ月の開発の歩みと、今までに COSMIC デスクトップ環境に搭載された新機能を紹介しています。
  • Linux その402 - KDE Plasma で実装予定の新機能や改善・録音オプションの追加や VRAM の使用量表示など
    KDE Plasma で実装予定の新機能や改善 2026年7月11日、KDE Plasma で実装予定の新機能や改善が以下で紹介されました。
  • Linux その404 - COSMIC Epoch 1.3.0 リリース・ウィンドウのすりガラス効果に対応
    COSMIC Epoch 1.3.0 リリース 2026年7月15日、COSMIC Epoch 1.3.0 がリリースされました。
  • Ubuntu 22.04 その79 - 画面ロックの有効・無効を設定するには・画面ロック時の設定をカスタマイズするには
    画面ロックの有効・無効を設定するには 一定時間ユーザーによる操作がない時に、自動的に画面をロックしパスワードで保護したり、画面をブランク状態にできます。
  • Ubuntu 26.04 その64 - AMD 環境で PC をシャットダウンできない現象
    AMD 環境で PC をシャットダウンできない現象 AMD 環境で PC をシャットダウンできない現象が報告されています。
  • Ubuntu 26.10 その18 - GRUB の機能削減とセキュリティー強化
    GRUB の機能削減とセキュリティー強化 GRUB の機能削減とセキュリティー強化が予定されています。
記事のピックアップ
オプション