インストーラーからZFS on rootの構築が可能に
「Ubuntu 19.10」では、「Ubuntu Desktop 19.10」のインストーラーから「ZFS on root」の構築が可能になりました。つまり「Ubuntu Desktop」を「ZFS」上に簡単にインストールできるということです。
ZFS on rootが意味するもの
「ZFS on root」により、「Ubuntu(システム)」の大部分が「ZFS」上にインストールされるようになります。ZFS On Linux 0.8.1 + バックポート
「ZFS On Linux」は「ZFS」の構築やメンテナンスなど「Linux」上で「ZFS」を利用するために必要なソフトウェアです。「Ubuntu 19.10」では「ZFS On Linux 0.8.1」を採用しており、ネイティブ暗号化やトリミング、チェックポイント、Raw encrypted zfs transmissionと言った機能を利用でき、またパフォーマンスが改善されています。
アップストリームの「ZFS On Linux 0.8.1」は、2019年6月15日にリリースされました。
アップストリームでは現時点で最新版の「ZFS On Linux 0.8.2」を2019年9月27日にリリースしていますが、残念ながら「ZFS On Linux 0.8.2」は「Ubuntu 19.10」のリリースに間に合いませんでした。
しかし「Ubuntu」の開発チームは、「ZFS On Linux 0.8.1」以降のリリースで行われた新しい「Linux kernel」との互換性向上などの修正を、ユーザーに最善のUXそして安定性を提供するためバックポートし、「Ubuntu」で提供する「ZFS On Linux」に反映しています。
と同時にアップストリームに対し、問題の修正などフィードバックも行っています。
既存のZFS on rootユーザーにもメリットがある
「Ubuntu」開発チームの「ZFS」に対する様々な取り組みは、すでに「Ubuntu 19.04」等で「ZFS on root」を利用しているユーザーに対してもメリットをもたらすものであり、しかも「Ubuntu 19.10」へアップグレードするだけで取り組みの中で得られた利点を既存のユーザーにも提供できます。インストーラーにZFS on rootのオプションを追加
「Ubiquity」に「ZFS on root」を構築するためのオプションが追加されました。「Ubiquity」は「Ubuntu」のインストーラーですね。
まだ試験的・実験的な提供
このオプション及び実装は、まだ試験的・実験的な提供に留まります。いわゆるアルファ版の機能になります。
「ZFS」自体は長い年月を経て成熟したプロダクトですが、インストーラーの本オプションはまだ成熟した機能ではなく、本オプションを利用するユーザーはその点に留意する必要があります。
つまり本番環境での利用はおすすめしませんし、そうでなくても重要なデータは事前及び定期的にバックアップしておきましょう。
また本機能が安定版として提供されるまで、仕様(実装仕様)が変わる可能性があります。
ZFS on rootを試してみよう
「ZFS on root」を試してみましょう。1.ZFS on rootオプションの選択
普段と同じようにライブメディアから「Ubuntu」を起動し、デスクトップから「Ubuntu」のインストーラーを起動します。「インストールの種類」画面で、以下のように「実験的機能:ディスクを消去してZFSを使用する」オプションが表示されます。
「ZFS on root」で「Ubuntu」をインストールする場合、このオプションを選択し「インストール」ボタンをクリックします。
2.インストール先ディスクの選択
PCに複数のディスクが接続されている場合、インストール先ディスクを選択する画面が表示されます。その後以下のように、インストール先ディスクの確認画面が表示されます。
「続ける」ボタンをクリックすれば、「ZFS on root」で「Ubuntu」がインストールされます。
ちなみに上記画面で「ext4」にフォーマットする内容が表示されていますが、実際には「ZFS」が構築されるため気にしなくて良いです。
これは「partman」が「ESP」を扱えるようにするため、インストーラーが複数のパーティションを作成し、その後「ext4」パーティションを「ZFS」で上書きしているためです。
この問題の修正は「Ubuntu 19.10」のリリースに間に合いません。
このように本機能は実験的な機能でありいくつか既知の課題がありますが、安定版として本機能を提供する前に、可能であれば次の開発サイクル時に、不具合の修正が行われる予定です。
補足
「Ubuntu Desktop 19.10」のインストール時、インストール方法を選択する前の画面で、以下のようにメモリーの消費量が大きく上昇する現象が発生しました。下図では2.8GiBになっていますね。
インストールに使用したディスクイメージは昨日のものであり最終リリース版ではありませんが、もし仮想マシン等に「Ubuntu Desktop 19.10」をインストールする場合は、環境にも寄りますが割り当てるメモリー量を3.5GiB〜4GiB以上に変更しておいたほうが良いかも知れません。
下図は「ZFS on root」でインストール中の画面です。
パーティション構成
インストーラーから「ZFS on root」で「Ubuntu」をインストールした場合、どのようなパーティション構成になるのでしょうか。1.rpool
1つ目のZFSパーティションは、「rpool(root pool/ルートプール)」です。ここに「Ubuntu」本体のデータの多くやユーザーのデータが配置されます。
ユーザーがメインで利用するパーティションになります。
データセットレイアウトの詳細は内容が長くなるため、後日別途紹介される予定です。
pool: rpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
sda4 ONLINE 0 0 0
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
sda4 ONLINE 0 0 0
2.bpool
もうひとつのZFSパーティションは、「boot pool」と呼ばれる「bpool」です。ここには「Linux kernel」や「initramfs」が配置されます。
「bpool」は「/boot」ですが、ここにはEFIのOSローダーやブートローダーは含まれていません。
pool: bpool
state: ONLINE
status: The pool is formatted using a legacy on-disk format. The pool can
still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'. Once this is done, the
pool will no longer be accessible on software that does not support
feature flags.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
bpool ONLINE 0 0 0
sda3 ONLINE 0 0 0
state: ONLINE
status: The pool is formatted using a legacy on-disk format. The pool can
still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'. Once this is done, the
pool will no longer be accessible on software that does not support
feature flags.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
bpool ONLINE 0 0 0
sda3 ONLINE 0 0 0
「grub」が「root pool」上で有効にしたいすべてのZFS機能をサポートしていないため、メインプールとは別に「bpool」が作成されています。
こうしないとブートローダーからプールにアクセスできなくなり、システムを起動できなくなります。
このプールは異なるプールバージョン(28)で動作していますが、次の開発サイクルにてバージョン5000へのアップグレードが検討されています。
注意事項
「zpool status」コマンドを実行すると、上記のように「bpool」のアップグレード案内が表示されますが、決してアップグレードしないでください。アップグレードしてしまうと、システムを起動できなくなります。
本件に関しては、このアップグレード案内を抑制するパッチの作成作業が行われる予定です。
3.ESP(EFIシステムパーティション)
今のところ「UEFI」システムでのみ「ESP」が作成されます。「ESP」は「/boot/efi」にマウントされます。
セキュアブートを無効にしたユーザーが後でセキュアブートを有効にしたい時にスムーズに移行できるよう、将来的にインストーラーで機械的に「ESP」を作成する方針が検討されています。
4.grubパーティション
grubパーティションは「ext4」でフォーマットされ、「/boot/grub」にマウントされます。grubパーティションは、そのPCにインストールされている各Linux OS間で共有する領域であるため「ZFS」にはなりません。
ただし将来的に上記で紹介した常に「ESP」を作成する実装が実現したら、「grub」自身を「ESP」に移動できるようになります。