LoginSignup
1
0

More than 3 years have passed since last update.

CentOS 8.1のインストール用ISOイメージ上でzfsを使えるようにする

Last updated at Posted at 2020-02-05

ZFS on LinuxのGetting Startedを見ていくと、なぜかrpm系のディストリビューションだけRoot on ZFSに関する情報が無いわけですが、まあLive DVDとZFSへの愛(笑)さえあれば手動インストールはそれほど難しくはありません。
しかし、なぜかCentOS 8は8.1がリリースされたにも関わらずLive DVDのISOイメージが公開される気配がありません。まあ、5以前の状態に戻っただけといえばそれまでですが。

ZFS on LinuxもEL8.1用リポジトリが公開されたし、いつまでも指をくわえて待っていても仕方が無いので、インストール用ISOイメージを使用してRoot on ZFSを構築できるか試してみたところ、結構アッサリ出来ました。
という訳で、以下はVirtualBoxを使ってCentOS 8.1でRoot on ZFSを構築するためにzfsを使えるようにするまでの手順になります。あくまでもzfsを使えるようにするまでなので、実際のインストール作業については別の機会に。

zfsを使えるようにするのが主眼なので、それ以外の細かい設定やらエラーやらは華麗にスルーしてます。そこら辺は必要に応じて各自で対処してください(手抜き)。

VirtualBoxの設定

特別な設定はほとんど必要ないので割愛しますが、メインメモリーに3072 MB位は割り当てないと、各種パッケージのインストールでメモリが枯渇して謎のInput/Output errorが発生して詰みます。
それ以外はお好みで。今回はDHCP環境でネットワークアダプタとしてブリッジアダプターを使用します。

起動パラメータの変更

CentOS-8.1.1911-x86_64-boot.isoを使用して起動します。
grubのメニューが表示されたら、Install CentOS Linux 8を選んでTABキーを押下します。
GUIインストーラー(anaconda)は不要なので、起動パラメータの末尾に、"selinux=0 3"を追加してカーネルを起動します。
ちなみに、selinux=0を追加しないと、コンソールからrootでログイン出来ません(パスワード要求されます)。
selinux=0を追加すると、パスワード無しでrootログイン出来ます。……謎です。まあ、rootログイン出来なくても、Alt+F2でコンソール切り替えるとrootログイン済の状態なので困らないのですが(笑)。

キーボード設定

日本語キーボードを使用している場合は、以下のコマンドを実行します。

[anaconda root@localhost /]# loadkeys jp106

sshdの有効化

全部コンソールで作業するのであれば不要ですが、いちいちコマンド叩くのメンドいコピペしたいので、sshでログイン出来るようにします。

sshdのサービスは有効化されていますが、設定ファイル(/etc/ssh/sshd_config)が無いので、再起動を繰り返しています。
なぜか設定ファイルは/etc/ssh/sshd_config.anacondaという名前で置いてあるので、リネームします。

[anaconda root@localhost /]# mv -v /etc/ssh/sshd_config{.anaconda,}

sshdサービスは42秒間隔で再起動を繰り返していますので、その間にIPアドレスの設定をします。

IPアドレスの設定

DHCPでIPアドレスを設定します。

[anaconda root@localhost /]# dhclient enp0s3

grep: /etc/sysconfig/network-scripts/ifcfg-*: No such file or directoryというエラーメッセージが複数出力されますが、気にしたら負けです。IPアドレスが正しく設定されていればOKです。

sshログイン

ここまで作業してるうちに、きっとsshdが起動しているでしょうから、確認します。

[anaconda root@localhost /]# systemctl is-active sshd
active

もしactiveではなくactivatingと出力されたら、少し待ってから再度確認してください。
無事sshdが起動していたら、sshクライアントからrootでログインします。パスワードは不要です。

弱い依存関係の無効化

必要なのはzfsパッケージだけなので、余計なパッケージをインストールして時間とネットワーク帯域を無駄遣いしないように、以下の設定を行います。

[anaconda root@localhost ~]# echo install_weak_deps=0 >> /etc/dnf/dnf.conf

CentOS用リポジトリの追加

Live DVDと違い、インストール用ISOはdnfのリポジトリ情報が/etc/yum.repos.d/にありません。anacondaはインストール用リポジトリを指定しない時、どこからリポジトリ情報を取得してるのでしょう。……謎です。

無いものは仕方がないので、rpmパッケージを直接指定してインストールします。
今回は、日本最強の看板を下ろしたミラーサーバを使わせてもらいます。

[anaconda root@localhost ~]# dnf -y install http://ftp.jaist.ac.jp/pub/Linux/CentOS/8.1.1911/BaseOS/x86_64/os/Packages/centos-{gpg-keys-8.1-1.1911.0.8.el8.noarch,{release,repos}-8.1-1.1911.0.8.el8.x86_64}.rpm

zfs用リポジトリの追加

zfsのリポジトリを登録します。
langpackとして何も指定しないとglibc-all-langpacks(25MB)がインストールされてしまうので、時間とネ(以下略)、glibc-langpack-ja(323kB)を明に指定します。

[anaconda root@localhost ~]# dnf -y install glibc-langpack-ja http://download.zfsonlinux.org/epel/zfs-release.el8_1.noarch.rpm

zfs-release-1-8.1.noarchのインストールで/etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinuxのインポートに失敗したというメッセージが出力されますが、気にしたら負けです。
#後でzfsパッケージをインストールするときにインポートされます。

dkmsからkmodへの切り替え

dkmsを使ってzfsをソースからコンパイルするのは時間と電気代の無駄なので、kmod-zfsをインストールするようにリポジトリを切り替えます。

[anaconda root@localhost ~]# sed -e '0,/enabled=0/s/\(enabled=\)0/\11/' -e '0,/enabled=1/s/\(enabled=\)1/\10/' -i /etc/yum.repos.d/zfs.repo

zfsパッケージのインストール

dnf install zfsと叩いてインストールすると、依存関係でkernel-coreパッケージもインストールされるのですが、最新のパッケージがインストールされてしまいます。
今起動しているインストール用ISOイメージのカーネル版数のkernel-coreをインストールしないとzfsモジュールがロードできないので、版数を指定してkernel-coreパッケージをインストールします。

[anaconda root@localhost ~]# dnf -y install kernel-core-$(uname -r) zfs

インストール中にdepmodが大量にWARNINGを吐きますが、気にしたら負けです。
#どのモジュールもVirtualBoxでは使わなそうだし。

zfsモジュールのロード

インストールが完了したら、zfsモジュールをロードします。

[anaconda root@localhost ~]# modprobe zfs
[anaconda root@localhost ~]# dmesg | tail -5
[ 697.454758] spl: loading out-of-tree module taints kernel.
[ 697.454928] spl: module verification failed: signature and/or required key missing - tainting kernel
[ 697.492743] icp: module license 'CDDL' taints kernel.
[ 697.492745] Disabling lock debugging due to kernel taint
[ 699.817926] ZFS: Loaded module v0.8.2-1, ZFS pool version 5000, ZFS filesystem version 5

これでzfsが使えるようになりました。

あとは、zpool createするなり、既存のpoolにzfs createするなりしてから、手動でインストールすればRoot on ZFSの出来上がりです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0