2016年6月7日火曜日

CentOS 向けに ZFS on Linux の kmod-zfs がリリースされていました

ZFS on Linux のコミュニティメーリングリストをパラ見していて、CentOS 6 および 7 向けに、kmod-zfs がリリースされていることを知りました。これは朗報です。
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

■関連記事
CentOS 6 の root ファイルシステムに ZFS を使う

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ