2014年4月29日火曜日

RHEL7.0 RC で、最新の ZFS on Linux を試してみた

Red Hat Network 上に RHEL7.0 RC が公開されたので、早速 ZFS を試してみました。
以下、メモです。

まず、dkms が必要ですが、これは EPEL の RHEL6/CentOS6 向けリポジトリから、.src.rpm を取ってきて再ビルドしてインストールしました。
# rpmbuild --rebuild dkms-2.2.0.3-20.el6.src.rpm
# ls /root/rpmbuild/RPMS/noarch
dkms-2.2.0.3-20.el7.noarch.rpm
# rpm -ivh /root/rpmbuild/RPMS/noarch/dkms-2.2.0.3-20.el7.noarch.rpm
つぎに、ZFS をインストールします。もちろん、RHEL7/CentOS7 向けのリポジトリは、まだありませんので、GitHub から最新のソースを取り出してビルドしました。
手順は以下のような感じです。
# mkdir zfs_on_linux
# cd zfs_on_linux
# git clone https://github.com/zfsonlinux/spl.git
# git clone https://github.com/zfsonlinux/zfs.git

# cd spl
# autoreconf -i  ※configureを生成するため、この操作が必要
# ./configure --with-config=user
# make rpm-utils rpm-dkms

# cd ../zfs
# autoreconf -i
# ./configure --with-config=user
# make rpm-utils rpm-dkms

# cd ..
# ls -1 spl/*.rpm
spl/spl-0.6.2-33_g89aa970.el7.src.rpm
spl/spl-0.6.2-33_g89aa970.el7.x86_64.rpm
spl/spl-debuginfo-0.6.2-33_g89aa970.el7.x86_64.rpm
spl/spl-dkms-0.6.2-33_g89aa970.el7.noarch.rpm
spl/spl-dkms-0.6.2-33_g89aa970.el7.src.rpm
# ls -1 zfs/*.rpm
zfs/zfs-0.6.2-259_gde39ec1.el7.src.rpm
zfs/zfs-0.6.2-259_gde39ec1.el7.x86_64.rpm
zfs/zfs-debuginfo-0.6.2-259_gde39ec1.el7.x86_64.rpm
zfs/zfs-devel-0.6.2-259_gde39ec1.el7.x86_64.rpm
zfs/zfs-dkms-0.6.2-259_gde39ec1.el7.noarch.rpm
zfs/zfs-dkms-0.6.2-259_gde39ec1.el7.src.rpm
zfs/zfs-dracut-0.6.2-259_gde39ec1.el7.x86_64.rpm
zfs/zfs-test-0.6.2-259_gde39ec1.el7.x86_64.rpm

# yum localinstall spl/spl-0.6.2-33_g89aa970.el7.x86_64.rpm \
spl/spl-dkms-0.6.2-33_g89aa970.el7.noarch.rpm \
zfs/zfs-0.6.2-259_gde39ec1.el7.x86_64.rpm \
zfs/zfs-dkms-0.6.2-259_gde39ec1.el7.noarch.rpm \
zfs/zfs-dracut-0.6.2-259_gde39ec1.el7.x86_64.rpm \
zfs/zfs-test-0.6.2-259_gde39ec1.el7.x86_64.rpm 
で、試運転結果です。
# uname -a
Linux hoge 3.10.0-121.el7.x86_64 #1 SMP Tue Apr 8 10:48:19 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
# zpool import tank4
# zpool list tank4
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank4   368G   283G  84.5G    77%  1.00x  ONLINE  -
# zpool get all tank4
NAME   PROPERTY               VALUE                  SOURCE
tank4  size                   368G                   -
tank4  capacity               77%                    -
tank4  altroot                -                      default
tank4  health                 ONLINE                 -
tank4  guid                   1893700132493715388    default
tank4  version                -                      default
tank4  bootfs                 -                      default
tank4  delegation             on                     default
tank4  autoreplace            off                    default
tank4  cachefile              -                      default
tank4  failmode               wait                   default
tank4  listsnapshots          off                    default
tank4  autoexpand             off                    default
tank4  dedupditto             0                      default
tank4  dedupratio             1.00x                  -
tank4  free                   84.5G                  -
tank4  allocated              283G                   -
tank4  readonly               off                    -
tank4  ashift                 12                     local
tank4  comment                -                      default
tank4  expandsize             0                      -
tank4  freeing                0                      default
tank4  feature@async_destroy  enabled                local
tank4  feature@empty_bpobj    active                 local
tank4  feature@lz4_compress   active                 local
# zpool status tank4
  pool: tank4
 state: ONLINE
  scan: scrub repaired 12.1G in 1h34m with 0 errors on Sat Apr 26 12:37:25 2014
config:

 NAME                                                        STATE     READ WRITE CKSUM
 tank4                                                       ONLINE       0     0     0
   mirror-0                                                  ONLINE       0     0     0
     ata-HITACHI_HTS725050A9A364_xxxxxxxxxxxxxxxxxxxx-part1  ONLINE       0     0     0
     ata-HGST_HTS721010A9E630_yyyyyyyyyyyyyy-part1           ONLINE       0     0     0

errors: No known data errors
気になる性能は、どうかというと。
# uname -a
Linux hoge 3.10.0-121.el7.x86_64 #1 SMP Tue Apr 8 10:48:19 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
# zfs set compression=off tank4/backup
# cd /tank4/backup
# ls -l sda6.tar 
-rw-r--r-- 1 root root 10927441920 10月 20  2013 sda6.tar
# time tar xf sda6.tar 

real 3m23.413s
user 0m3.932s
sys 0m57.623s
# time rm -rf test.restore

real 0m9.153s
user 0m0.167s
sys 0m8.924s
にわかには信じ難いほど速くなってました!\(^0^)/
ピンと来ない方は、こちら を参照。同じマシン上に、RHEL7.0 RC のマルチブート環境を用意して、実験しています。
ちなみに、RHEL7 のデフォルトのファイルシステムは XFS ですが、マルチブートと相性が悪いのと、SSD 節約のため、Btrfs (compress-force=lzo) を使いました。Btrfs にインストールする手順は、こちら を参照。

2014-05-05追記
el7 向けの EPEL beta が既に公開されているので、dkms はそちらからインストールすれば済みます。

2014-06-17追記
別途用意した RHEL7 + ZOL 0.6.3 環境にて、SELinux をデフォルトの Enforcing にしたまま、tar の展開/削除を試したら、zfs_iput_taskq が大量に CPU 消費して、焦りました。
https://github.com/zfsonlinux/zfs/issues/1953 こちらの現象のようでした。RoadMap 上 0.6.5 で修正目標のようです。
もし、どうしても SELinux が必要なマシンで ZFS 使う方は、お気をつけて。
人気ブログランキングへ にほんブログ村 IT技術ブログへ