みなさん、こんにちは。今日は、UbuntuをネイティブZFSルートファイルにセットアップします。これは、SunMicrosystemsによって設計された以前の設計で見つかった主要な問題の多くを克服するように設計された高度なファイルシステムおよび論理ボリュームマネージャーです。 ZFSの主な機能には、破損に対する保護を提供するためのデータのチェックサムを含むデータ整合性を備えたパフォーマンスが含まれます。データの冗長性が利用可能な場合、ZFSは自動的にエラーの修正を試みます。 ZFSは、プールに追加された物理プールストレージデバイスを使用して、大容量のストレージと効率的なデータ圧縮をサポートし、ストレージスペースはその共有プールから割り当てられます。
基本システムの前提条件
このセットアップでは、インストールされているUbuntu 14.04 64ビット環境でZFSをベースとして使用し、次の仕様とバージョンを使用します。
- オペレーティングシステム:Ubuntu 14.04.1 LTS x86_64
- grub-install(GRUB)2.02〜beta2-9ubuntu1.3
- spl-dkms 0.6.4-2〜utopic
- zfs-dkms 0.6.4-3〜utopic
- zfs-initramfs 0.6.4-3〜utopic
- 空きディスク/パーティションサイズ10GB
- 推奨メモリは4GBを使用しました
- 使用されたコアの数2GHz
ZFSインストールセットアップ
10GBの空き容量があるすでにインストールされているUbuntu14.04オペレーティングシステムでZFSインストールセットアップを開始します。これらすべての手順を実行するには、rootユーザーでログインする必要があります。
ZFSリポジトリの追加
ZFSの使用を開始する前に、ZFSをインストールする必要があります。次のコマンドを使用して、リポジトリをapt-getに追加するだけです。
root@ubuntu-14:~# apt-add-repository --yes ppa:zfs-native/stable

ZFSインストールによるシステムアップデート
ここでは、OSを新しいリポジトリで更新する必要があります。その後、apt-getでインストールを開始します。
root@ubuntu-14:~#apt-get update
root@ubuntu-14:~#apt-get install debootstrap ubuntu-zfs
カーネルモジュールのコンパイル中に、パッケージのインストールに時間がかかります。

zfs-initramfsは、ZFSファイルシステムを管理するためのZFSユーティリティをinitramfsブートイメージに配置するために必要です。
root@ubuntu-14:~#apt-get install zfs-initramfs

ZFSモジュールのチェック
最初に次のコマンドを使用して、zfsモジュールをロードし、次にそれらが存在するかどうかを確認します。

ZFSのディスクパーティション分割
単一のvdevプールレイアウトの場合、パーティションテーブルは次のようになります。ここで、sda2はzfsルートに使用されます。

ルートプールの作成
次に、/ dev / sda *を使用してルートプールを作成します。別の方法として、/ dev / disk/by-idリンクを使用してルートプールを作成してプールを作成することもできます。
root@ubuntu-14:~# mke2fs -m 0 -L /boot/grub -j /dev/sda2
root@ubuntu-14:~# zpool create -o ashift=9 rpool /dev/sda2

zpoollistコマンドで確認できるrpoolを作成しました。

ルートデータセットの作成とベースシステムのインストール
ここでは、ルートデータセットを作成してからエクスポートし、-d / dev / sda2
を使用して再度インポートします。root@ubuntu-14:~# zfs create rpool/ROOT
root@ubuntu-14:~# zfs create rpool/ROOT/ubuntu-1
root@ubuntu-14:~# zfs umount -a
root@ubuntu-14:~# zfs set mountpoint=/ rpool/ROOT/ubuntu-1
root@ubuntu-14:~# zpool export rpool
root@ubuntu-14:~# zpool import -d /dev/sda2 -R /mnt rpool
次に、前の手順で作成したGRUBのブートファイルシステムをマウントします。
root@ubuntu-14:~# mkdir -p /mnt/boot/grub
root@ubuntu-14:~# mount /dev/sda2 /mnt/boot/grub
root@ubuntu-14:~# debootstrap trusty /mnt
debootstrapコマンドは、新しいシステムを未構成の状態のままにします。これは、次の最小構成で行います。

debootstrapが正常に完了すると、Baseシステムのインストールが成功したというメッセージが表示されます。次のコマンドを実行した後、次のようにロケールを生成した後、システムを更新します。
root@ubuntu-14:~# cp /etc/hostname /mnt/etc/
root@ubuntu-14:~# cp /etc/hosts /mnt/etc/
root@ubuntu-14:~# mount --bind /dev /mnt/dev
root@ubuntu-14:~# mount --bind /proc /mnt/proc
root@ubuntu-14:~# mount --bind /sys /mnt/sys
root@ubuntu-14:~# chroot /mnt /bin/bash --login
root@ubuntu-14:/# locale-gen en_US.UTF-8
そのため、新しいシステムから見える環境で仮想ファイルシステムを作成し、chrootコマンドを使用してchroot環境にPPAサポートをインストールしました。

Ubuntuおよびネイティブパッケージのインストール
pPAにパッケージ化されているLinuxでZFSを使用するには、ubuntu-minimalパッケージが必要です。次のコマンドを実行して、新しいシステムのchroot環境にZFSをインストールしましょう。
root@ubuntu-14:/# apt-get install ubuntu-minimal software-properties-common
root@ubuntu-14:/# apt-add-repository --yes ppa:zfs-native/stable
root@ubuntu-14:/# apt-add-repository --yes ppa:zfs-native/grub < - See below note on this command
root@ubuntu-14:/# apt-get update
root@ubuntu-14:/# apt-get install --no-install-recommends linux-image-generic linux-headers-generic

root@ubuntu-14:/# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
新しいgrub構成の生成
root@ubuntu-14:/# grub-probe /
zfs
root@ubuntu-14:~# ls /boot/grub/i386-pc/zfs*
/boot/grub/i386-pc/zfs.mod /boot/grub/i386-pc/zfscrypt.mod /boot/grub/i386-pc/zfsinfo.mod
root@ubuntu-14:~#
root@ubuntu-14:~# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-3.13.0-24-generic
正しいルートエントリを確認する
root@ubuntu-14:~# grep "boot=zfs" /boot/grub/grub.cfg
linux /ROOT/ubuntu-1@/boot/vmlinuz-3.13.0-24-generic root=ZFS=rpool/ROOT/ubuntu-1 ro boot=zfs
linux /ROOT/ubuntu-1@/boot/vmlinuz-3.13.0-24-generic root=ZFS=rpool/ROOT/ubuntu-1 ro boot=zfs
root@ubuntu-14:~# grep zfs /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="boot=zfs"
グラブを更新
grubを更新して、update-grubコマンドで自動生成されたzfsブートメニューを許可します。

root@ubuntu-14:~# update-grub
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
done
以下のコマンドを使用してブートローダーをMBRにインストールし、インストールの完了メッセージが表示されることを確認します。最近のGRUBリリースではシンボリックリンクが参照されていないため、リードリンクが必要です。
root@ubuntu-14:~# grub-install $(readlink -f /dev/sda)
Installing for i386-pc platform.
Installation finished. No error reported.
ここで、chroot環境を終了して基本環境に戻り、接続されている場合はすべてのファイルシステムからマウント解除します。
ZFSの確認
すべてのセットアップが完了したので、dfコマンドでrpoolの確認を確認します。

いくつかの既知の問題
このセットアップ中に、次の手順を使用して回避できるZFSの起動に関するいくつかの問題に直面する可能性があります。
スナップショットを作成
最初の起動後にレスキュー環境として使用できるZFSスナップショットを作成する必要があります。次のコマンドを使用して、ZFSスナップショットを次のように取得できます。
root@ubuntu-14:~# apt-get clean
root@ubuntu-14:~# zfs snapshot rpool/ROOT/ubuntu1
Grubの問題
Grubがブートメニューを表示しない場合や、「不明なファイルシステム」というエラーが表示される場合があります。これは、grubがzfsプールを読み取れないか、以前に一部のvdevをオフラインにしたことが原因である可能性があります。これから回復するには、次の2つのことを行う必要があります。
- オフラインディスクを削除/切断します
- Live CD方式を使用すると、ext4インストールから起動できます
- または、ディスクをオンラインにするか、オフラインディスクを削除して、再度追加します
結論
ZFSは、データのセキュリティと整合性、事実上無制限のスケーラビリティ、および簡単で自動化された管理性を提供することにより、データの管理方法を変更します。したがって、ZFSはOSの機能であり、その機能の豊富な機能を知っている一部の管理者にとって非常に人気のある選択肢であると結論付けることができます。