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 件のコメント:
コメントを投稿