http://list.zfsonlinux.org/pipermail/zfs-discuss/2016-June/025692.html
https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS
今まで、DKMS にお世話になってましたが、DKMS の場合は、カーネルをアップデートするたびに、ソースからコンパイルするという方式なので、それなりに時間がかかる仕掛けでした。それと、kernel-devel (サイズが大きくてディスク消費量大です) を入れる必要がありました。
kmod 方式の場合は、提供されるパッケージ (kmod-zfs) の中に、コンパイル済みのモジュールが入っていて、そのまま利用出来るため、カーネルアップデートが楽になります。
DKMS からの切り替え方法は、前述の URL に書かれてますが、次のような手順です。
# zpool export tankX ※まずは、いったん使用中のプールを export します # yum remove spl-dkms libnvpair1 libuutil1 libzfs2 libzpool2 ※DKMS 方式のパッケージを削除 # yum clean all ※ここから3行はゴミ掃除です # rm /lib/modules/*/extra/* ※ # rm /lib/modules/*/weak-updates/* ※特に、kmod モジュールは、このディレクトリを使うので注意 # shutdown -r now ※ここでいったんリブート/etc/yum.repos.d/zfs.repo を次のように修正します。
[zfs] name=ZFS on Linux for EL7 #baseurl=http://archive.zfsonlinux.org/epel/7/$basearch/ baseurl=http://download.zfsonlinux.org/epel/7/kmod/$basearch/ ...あとは、kmod-zfs をインストールすれば良いです。次は、わたしのマシンの実際のログです。
[root@hoge ~]# yum install kmod-zfs --enablerepo=zfs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* elrepo: ftp.ne.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package kmod-zfs.x86_64 0:0.6.5.7-1.el7.centos will be installed
--> Processing Dependency: zfs = 0.6.5.7 for package: kmod-zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: spl-kmod for package: kmod-zfs-0.6.5.7-1.el7.centos.x86_64
--> Running transaction check
---> Package kmod-spl.x86_64 0:0.6.5.7-1.el7.centos will be installed
--> Processing Dependency: spl = 0.6.5.7 for package: kmod-spl-0.6.5.7-1.el7.centos.x86_64
---> Package zfs.x86_64 0:0.6.5.7-1.el7.centos will be installed
--> Processing Dependency: libzpool2 = 0.6.5.7 for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libzfs2 = 0.6.5.7 for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libuutil1 = 0.6.5.7 for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libnvpair1 = 0.6.5.7 for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libzpool.so.2()(64bit) for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libzfs_core.so.1()(64bit) for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libzfs.so.2()(64bit) for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libuutil.so.1()(64bit) for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Processing Dependency: libnvpair.so.1()(64bit) for package: zfs-0.6.5.7-1.el7.centos.x86_64
--> Running transaction check
---> Package libnvpair1.x86_64 0:0.6.5.7-1.el7.centos will be installed
---> Package libuutil1.x86_64 0:0.6.5.7-1.el7.centos will be installed
---> Package libzfs2.x86_64 0:0.6.5.7-1.el7.centos will be installed
---> Package libzpool2.x86_64 0:0.6.5.7-1.el7.centos will be installed
---> Package spl.x86_64 0:0.6.5.7-1.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kmod-zfs x86_64 0.6.5.7-1.el7.centos zfs 672 k
Installing for dependencies:
kmod-spl x86_64 0.6.5.7-1.el7.centos zfs 112 k
libnvpair1 x86_64 0.6.5.7-1.el7.centos zfs 32 k
libuutil1 x86_64 0.6.5.7-1.el7.centos zfs 38 k
libzfs2 x86_64 0.6.5.7-1.el7.centos zfs 119 k
libzpool2 x86_64 0.6.5.7-1.el7.centos zfs 419 k
spl x86_64 0.6.5.7-1.el7.centos zfs 28 k
zfs x86_64 0.6.5.7-1.el7.centos zfs 330 k
Transaction Summary
================================================================================
Install 1 Package (+7 Dependent packages)
Total download size: 1.7 M
Installed size: 5.7 M
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available for zfs
(1/8): kmod-spl-0.6.5.7-1.el7.centos.x86_64.rpm | 112 kB 00:01
(2/8): libnvpair1-0.6.5.7-1.el7.centos.x86_64.rpm | 32 kB 00:00
(3/8): kmod-zfs-0.6.5.7-1.el7.centos.x86_64.rpm | 672 kB 00:01
(4/8): libuutil1-0.6.5.7-1.el7.centos.x86_64.rpm | 38 kB 00:00
(5/8): libzfs2-0.6.5.7-1.el7.centos.x86_64.rpm | 119 kB 00:00
(6/8): spl-0.6.5.7-1.el7.centos.x86_64.rpm | 28 kB 00:00
(7/8): libzpool2-0.6.5.7-1.el7.centos.x86_64.rpm | 419 kB 00:01
(8/8): zfs-0.6.5.7-1.el7.centos.x86_64.rpm | 330 kB 00:02
--------------------------------------------------------------------------------
Total 332 kB/s | 1.7 MB 00:05
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libuutil1-0.6.5.7-1.el7.centos.x86_64 1/8
Installing : libnvpair1-0.6.5.7-1.el7.centos.x86_64 2/8
Installing : libzpool2-0.6.5.7-1.el7.centos.x86_64 3/8
Installing : kmod-spl-0.6.5.7-1.el7.centos.x86_64 4/8
Installing : spl-0.6.5.7-1.el7.centos.x86_64 5/8
Installing : libzfs2-0.6.5.7-1.el7.centos.x86_64 6/8
Installing : zfs-0.6.5.7-1.el7.centos.x86_64 7/8
Installing : kmod-zfs-0.6.5.7-1.el7.centos.x86_64 8/8
Verifying : kmod-zfs-0.6.5.7-1.el7.centos.x86_64 1/8
Verifying : spl-0.6.5.7-1.el7.centos.x86_64 2/8
Verifying : zfs-0.6.5.7-1.el7.centos.x86_64 3/8
Verifying : libzfs2-0.6.5.7-1.el7.centos.x86_64 4/8
Verifying : libnvpair1-0.6.5.7-1.el7.centos.x86_64 5/8
Verifying : kmod-spl-0.6.5.7-1.el7.centos.x86_64 6/8
Verifying : libuutil1-0.6.5.7-1.el7.centos.x86_64 7/8
Verifying : libzpool2-0.6.5.7-1.el7.centos.x86_64 8/8
Installed:
kmod-zfs.x86_64 0:0.6.5.7-1.el7.centos
Dependency Installed:
kmod-spl.x86_64 0:0.6.5.7-1.el7.centos
libnvpair1.x86_64 0:0.6.5.7-1.el7.centos
libuutil1.x86_64 0:0.6.5.7-1.el7.centos
libzfs2.x86_64 0:0.6.5.7-1.el7.centos
libzpool2.x86_64 0:0.6.5.7-1.el7.centos
spl.x86_64 0:0.6.5.7-1.el7.centos
zfs.x86_64 0:0.6.5.7-1.el7.centos
Complete!
[root@hoge ~]# zpool import
The ZFS modules are not loaded.
Try running '/sbin/modprobe zfs' as root to load them.
[root@hoge ~]# modprobe zfs
[root@hoge ~]# zpool import
pool: tankM
id: 17978947249853082376
state: ONLINE
status: Some supported features are not enabled on the pool.
action: The pool can be imported using its name or numeric identifier, though
some features will not be available without an explicit 'zpool upgrade'.
config:
tankM ONLINE
ata-SAMSUNG_MCCOE64G8MPP-0VA_SE809N0057-part1 ONLINE
[root@hoge ~]# zpool import tankM
[root@hoge ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb5 20480000 14936304 5303232 74% /
devtmpfs 8182796 0 8182796 0% /dev
tmpfs 8192824 256 8192568 1% /dev/shm
tmpfs 8192824 9292 8183532 1% /run
tmpfs 8192824 0 8192824 0% /sys/fs/cgroup
tmpfs 1638568 8 1638560 1% /run/user/0
tankM 60436352 38044288 22392064 63% /tankM
このあと、最新カーネルにアップデートしてみました。
[root@hoge ~]# uname -a Linux hoge 3.10.0-327.13.1.el7.x86_64 #1 SMP Thu Mar 31 16:04:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [root@hoge ~]# yum update kernel Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00 elrepo | 2.9 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * elrepo: ftp.ne.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Resolving Dependencies --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-327.18.2.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: kernel x86_64 3.10.0-327.18.2.el7 updates 33 M Transaction Summary ================================================================================ Install 1 Package Total download size: 33 M Installed size: 136 M Is this ok [y/d/N]: y Downloading packages: updates/7/x86_64/prestodelta | 502 kB 00:00 kernel-3.10.0-327.18.2.el7.x86_64.rpm | 33 MB 00:03 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : kernel-3.10.0-327.18.2.el7.x86_64 1/1 Verifying : kernel-3.10.0-327.18.2.el7.x86_64 1/1 Installed: kernel.x86_64 0:3.10.0-327.18.2.el7 Complete!DKMS 方式と違い、あっという間に完了します。まさに Great job! ですね。kmod 化してくれた人たちに感謝です。
2016-06-09追記
別のマシンで CentOS 6.8 でも同様にインストールできることを確認しました。
なお、kmod は、kABI の互換性が維持されていることが前提になっているので、自分でカーネルに手を加えて再構築している環境 (オラクル UEK なども) では使えません (そのような環境では、旧来通り DKMS を使えば OK) 。
2016-09-19追記
v0.6.5.8 がリリースされたものの、yum に来ないなと思っていたら、リポジトリの指定が間違っていたようなので、修正しました。
http://download.zfsonlinux.org/epel/7/kmod/$basearch/ こちらが正解。
2016-12-05追記
CentOS 7 の cr リポジトリで kernel-3.10.0-514.el7.x86_64 へアップデートできるようになりましたが、残念ながら kmod-zfs の kABI 互換が保たれないようで、514.el7 にアップデートすると ZFS 領域にアクセスできなくなります。そのうち対応されると思うので、しばらく待っておいたほうがいいかもしれません。または、dkms を使うか。。
https://github.com/zfsonlinux/zfs/issues/5377
2016-12-18追記
7.3 対応 (カーネル 514.el7 系への対応) されてました。よかった。
http://list.zfsonlinux.org/pipermail/zfs-discuss/2016-December/026845.html
2017-08-30追記
CentOS 7.4 cr (カーネル 693.1.1.el7) が来たので、アップデートしたのですが、今回も 7.4 向けの kmod-zfs に切り替える必要がありました。コミュニティ ML の投稿 (下記) を参照して、zfs-release.el7_4.noarch.rpm を入れてから 7.4 向けの kmod-zfs に入れ替えればよいです。
http://list.zfsonlinux.org/pipermail/zfs-discuss/2017-August/029089.html
余談ですが、なんだか Red Hat の開発方針が少し変化してきている気がします。リベースし杉な感じ (自分の環境では、GNOME ターミナルのデフォルト色が変わったり、アイコンが巨大化しました、、、そういうのはやめて欲しいのだが) 。
■関連記事
CentOS 6 の root ファイルシステムに ZFS を使う

0 件のコメント:
コメントを投稿