2012年10月27日土曜日

dkms 対応の ZFS on Linux を CentOS 6.3 に導入する

ZFS on Linux 0.6.0-rc10 (Aug 14 2012 リリース) から dkms (dynamic kernel module support) 対応が行われたようで、少々乗り遅れていますが、CentOS 6.3 に dkms 対応版を導入しました。その手順メモです。

これまでは、非dkms対応の 0.6.0-rc8 をビルドして使っていましたので、まずは、こちらを一旦削除してリブートします。
# zfs umount -a
# yum remove zfs
# rpm -e zfs-modules
# yum remove spl
# yum remove spl-modules
# shutdown -r now

次に、基盤となる dkms をインストールします。こちらは、EPEL に収録されているものを利用しました。
# yum install dkms --enablerepo=epel
...
# rpm -qi dkms
Name        : dkms                         Relocations: (not relocatable)
Version     : 2.2.0.3                           Vendor: Fedora Project
Release     : 2.el6                         Build Date: Mon 11 Jun 2012 11:39:12 PM JST
Install Date: Sun 21 Oct 2012 04:56:02 PM JST      Build Host: x86-02.phx2.fedoraproject.org
Group       : System Environment/Base       Source RPM: dkms-2.2.0.3-2.el6.src.rpm
Size        : 215347                           License: GPLv2+
Signature   : RSA/8, Fri 15 Jun 2012 08:47:09 AM JST, Key ID 3b49df2a0608b895
Packager    : Fedora Project
URL         : http://linux.dell.com/dkms
Summary     : Dynamic Kernel Module Support Framework
Description :
This package contains the framework for the Dynamic
Kernel Module Support (DKMS) method for installing
module RPMS as originally developed by Dell.

そして、ZFS 本体をインストールします。途中、zfs をリビルドする際に、e2fsprogs-devel と libblkid-devel が依存エラーになったので、追加インストールしました。
# rpm -ivh spl-modules-dkms-0.6.0-rc11.noarch.rpm
# rpmbuild --rebuild spl-0.6.0-rc11.src.rpm
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/spl-0.6.0-rc11.el6.x86_64.rpm
# rpm -Uvh zfs-modules-dkms-0.6.0-rc11.noarch.rpm
# yum install e2fsprogs-devel
# yum install libblkid-devel
# rpmbuild --rebuild zfs-0.6.0-rc11.src.rpm
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/zfs-0.6.0-rc11.el6.x86_64.rpm
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/zfs-devel-0.6.0-rc11.el6.x86_64.rpm
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/zfs-dracut-0.6.0-rc11.el6.x86_64.rpm
# rpm -Uvh /root/rpmbuild/RPMS/x86_64/zfs-test-0.6.0-rc11.el6.x86_64.rpm
# shutdown -r now

各種モジュールがロードされていること、zfs 領域が見えることを確認して完了です。
# lsmod | grep zfs
zfs                  1104868  0 
zcommon                43286  1 zfs
znvpair                47487  2 zfs,zcommon
zavl                    6925  1 zfs
zunicode              323120  1 zfs
spl                   253420  5 zfs,zcommon,znvpair,zavl,zunicode
# zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank1  59.5G  1.02M  59.5G     0%  1.00x  ONLINE  -
# zfs list
NAME    USED  AVAIL  REFER  MOUNTPOINT
tank1   920K  58.6G   104K  /tank1

これで、新しいカーネルにアップデートする際、今までよりも手間が減ることになります。現在の dkms の状態を見ると、次のようになっています。
# dkms status
spl, 0.6.0, 2.6.32-279.11.1.el6.x86_64, x86_64: installed
zfs, 0.6.0, 2.6.32-279.11.1.el6.x86_64, x86_64: installed
spl, 0.6.0, 2.6.32-279.5.1.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
zfs, 0.6.0, 2.6.32-279.5.1.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
spl, 0.6.0, 2.6.32-279.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
zfs, 0.6.0, 2.6.32-279.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
現時点で最新の 2.6.32-279.11.1.el6 を使っていますが、残してある古いカーネルでも zfs が動く状態になっていることが確認できます。
そのうち、新しいカーネルが出てきたらアップデートして、追加レポートしたいと思います。

2012-11-07追記
本日、新しいカーネル 2.6.32-279.14.1.el6 が出てきましたので、早速インストールしました。
# uname -a
Linux xxxx 2.6.32-279.14.1.el6.x86_64 #1 SMP Tue Nov 6 23:43:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
# dkms status
spl, 0.6.0, 2.6.32-279.11.1.el6.x86_64, x86_64: installed
zfs, 0.6.0, 2.6.32-279.11.1.el6.x86_64, x86_64: installed
spl, 0.6.0, 2.6.32-279.14.1.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
zfs, 0.6.0, 2.6.32-279.14.1.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
spl, 0.6.0, 2.6.32-279.5.1.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
zfs, 0.6.0, 2.6.32-279.5.1.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
spl, 0.6.0, 2.6.32-279.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
zfs, 0.6.0, 2.6.32-279.el6.x86_64, x86_64: installed-weak from 2.6.32-279.11.1.el6.x86_64
# lsmod | grep zfs
zfs                  1104868  1 
zcommon                43286  1 zfs
znvpair                47487  2 zfs,zcommon
zavl                    6925  1 zfs
zunicode              323120  1 zfs
spl                   253420  5 zfs,zcommon,znvpair,zavl,zunicode
# zfs list
NAME    USED  AVAIL  REFER  MOUNTPOINT
tank1   932K  58.6G   104K  /tank1
このとおり、以前のように再ビルドすることなく、ZFS 領域が使えました。大変便利になったと思います。

2013-04-02追記
0.6.1 がリリースされ、CentOS 6 向けのバイナリの yum リポジトリが提供されたので、こちらを参照してください。

2013-06-29追記
モジュールをコンパイルした際の古いカーネル(上記の例なら 2.6.32-279.11.1.el6)を削除してしまうと、モジュールも削除されてしまい、新カーネル(2.6.32-279.14.1.el6)で ZFS が使えなくなってしまいます。
その場合、次のコマンドで再コンパイルすれば良いです。
# dkms install -m spl -v 0.6.1
# dkms install -m zfs -v 0.6.1

0 件のコメント:

コメントを投稿

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