ZFS on Linux 0.6.1 入れる

これ入れました。 http://zfsonlinux.org/
Cent6 系準備して http://zfsonlinux.org/epel.html のとおりに叩くだけ。
zpool status したらこんなエラー。

# zpool status
Failed to load ZFS module stack.
Load the module manually by running 'insmod <location>/zfs.ko' as root.
Failed to load ZFS module stack.
Load the module manually by running 'insmod <location>/zfs.ko' as root.

このへん https://github.com/zfsonlinux/zfs/issues/1155 みる。dkms status で様子を見る。

# dkms status
spl, 0.6.1: added
zfs, 0.6.1: added

installされてないっぽいので、installしてみる。

# dkms install -m spl -v 0.6.1
Error! echo
Your kernel headers for kernel 2.6.32-358.2.1.el6.x86_64 cannot be found at
/lib/modules/2.6.32-358.2.1.el6.x86_64/build or /lib/modules/2.6.32-358.2.1.el6.x86_64/source.

build,source 付近が必要そうなので、kernel-devel.x86_64 入れる。で、入れて再トライ。

# dkms install -m spl -v 0.6.1

Kernel preparation unnecessary for this kernel.  Skipping...

Running the pre_build script:
(中略)
depmod....

DKMS: install completed.

# dkms install -m zfs -v 0.6.1

Kernel preparation unnecessary for this kernel.  Skipping...

Running the pre_build script:
(中略)
WARNING: /lib/modules/2.6.32-220.el6.x86_64/weak-updates/zpios.ko needs unknown symbol kmem_free_debug ※古いところ見て警告かな?

Running the post_install script:

depmod....

DKMS: install completed.

dkmsはこうなった。

# dkms status
spl, 0.6.1, 2.6.32-358.2.1.el6.x86_64, x86_64: installed
zfs, 0.6.1, 2.6.32-358.2.1.el6.x86_64, x86_64: installed
zfs, 0.6.1, 2.6.32-220.23.1.el6.x86_64, x86_64: installed-weak from 2.6.32-358.2.1.el6.x86_64
zfs, 0.6.1, 2.6.32-220.el6.x86_64, x86_64: installed-weak from 2.6.32-358.2.1.el6.x86_64

lsmodはこんな感じ。

# lsmod | grep zfs
zfs                  1141518  2
zcommon                44698  1 zfs
znvpair                80033  2 zfs,zcommon
zavl                    6925  1 zfs
zunicode              323159  1 zfs
spl                   261216  5 zfs,zcommon,znvpair,zavl,zunicode

プロパティ。compressratio 使えるか?使えると助かる。VMマシンだとCPUのほうがきつくなってしまうかもだけど。

# zfs get all
NAME       PROPERTY              VALUE                  SOURCE
rpool      type                  filesystem             -
rpool      creation              Tue Apr  9 18:20 2013  -
rpool      used                  146K                   -
rpool      available             3.91G                  -
rpool      referenced            31K                    -
rpool      compressratio         1.00x                  -
rpool      mounted               yes                    -
rpool      quota                 none                   default
rpool      reservation           none                   default
rpool      recordsize            128K                   default
rpool      mountpoint            /rpool                 default
rpool      sharenfs              off                    default
rpool      checksum              on                     default
rpool      compression           off                    default
rpool      atime                 on                     default
rpool      devices               on                     default
rpool      exec                  on                     default
rpool      setuid                on                     default
rpool      readonly              off                    default
rpool      zoned                 off                    default
rpool      snapdir               hidden                 default
rpool      aclinherit            restricted             default
rpool      canmount              on                     default
rpool      xattr                 on                     default
rpool      copies                1                      default
rpool      version               5                      -
rpool      utf8only              off                    -
rpool      normalization         none                   -
rpool      casesensitivity       sensitive              -
rpool      vscan                 off                    default
rpool      nbmand                off                    default
rpool      sharesmb              off                    default
rpool      refquota              none                   default
rpool      refreservation        none                   default
rpool      primarycache          all                    default
rpool      secondarycache        all                    default
rpool      usedbysnapshots       0                      -
rpool      usedbydataset         31K                    -
rpool      usedbychildren        114K                   -
rpool      usedbyrefreservation  0                      -
rpool      logbias               latency                default
rpool      dedup                 off                    default
rpool      mlslabel              none                   default
rpool      sync                  standard               default
rpool      refcompressratio      1.00x                  -
rpool      written               31K                    -
rpool      snapdev               hidden                 default

パラメータはこんな感じ。

kernel.spl.version = SPL v0.6.1-1
kernel.spl.hostid = 0
kernel.spl.hw_serial = 0
kernel.spl.kallsyms_lookup_name = ffffffff810b9590
kernel.spl.debug.subsystem = undefined atomic kobj vnode time rwlock thread condvar mutex rng taskq kmem debug generic proc module cred kstat xdr tsd zlib user1 user2 user3 user4 user5 user6 user7 user8
kernel.spl.debug.mask = warning error emerg console dprintf
kernel.spl.debug.printk = warning error emerg console
kernel.spl.debug.mb = 11
kernel.spl.debug.binary = 1
kernel.spl.debug.catastrophe = 0
kernel.spl.debug.panic_on_bug = 0
kernel.spl.debug.path = /tmp/spl-log
kernel.spl.debug.console_ratelimit = 1
kernel.spl.debug.console_max_delay_centisecs = 60000
kernel.spl.debug.console_min_delay_centisecs = 50
kernel.spl.debug.console_backoff = 2
kernel.spl.debug.stack_max = 0
kernel.spl.vm.minfree = 11263
kernel.spl.vm.desfree = 14078
kernel.spl.vm.lotsfree = 16894
kernel.spl.vm.needfree = 0
kernel.spl.vm.swapfs_minfree = 65536
kernel.spl.vm.swapfs_reserve = 1024
kernel.spl.vm.availrmem = 136780
kernel.spl.vm.freemem = 126125
kernel.spl.vm.physmem = 524288
kernel.spl.kmem.kmem_used = 4350364
kernel.spl.kmem.kmem_max = 9690970
kernel.spl.kmem.vmem_used = 4457440
kernel.spl.kmem.vmem_max = 4473824
kernel.spl.kmem.slab_kmem_total = 14577664
kernel.spl.kmem.slab_kmem_alloc = 3274440
kernel.spl.kmem.slab_kmem_max = 12171464
kernel.spl.kmem.slab_vmem_total = 1176010752
kernel.spl.kmem.slab_vmem_alloc = 38461920
kernel.spl.kmem.slab_vmem_max = 1102897632

SELinuxがenforceだと zfs create したときに mount エラーになるので Permissive にしとく方が無難ぽい。
性能軽く測って、テスト用DBのデータ置き場とかパッチ適用テストに使うつもり。
zdbがあるのがすばらしい、、が、そういえば性能ってどーはかったものか。昔みた arcstat.pl ってkstatベースだからLinuxじゃ使えないじゃんか。
・・・と思ったら https://github.com/zfsonlinux/zfs/issues/179 に書いてあった。後、/proc/spl/kstat/zfs/arcstats に出ているので、こっちから値をとるように書き換えてしまってもいいかもしれない。というか、そうするか。。

※追加その1:arcサイズの調整はこの辺 https://github.com/zfsonlinux/zfs/issues/676 みて、設定できるらしいのがなんとなく分かった。1.5G設定。

options zfs zfs_arc_max=1572864000

※追加その2:arcstat.pl のやっつけ修正も一応できた。

# diff arcstat.pl arcstat.pl.org
1c1
< #!/usr/bin/perl -w
---
> #!/usr/perl5/bin/perl -w
46a47
> use Sun::Solaris::Kstat;
104a106
> my $kstat = Sun::Solaris::Kstat->new();
207,211c209,210
<       my %kstatdata = ();
<       open(IN, "/proc/spl/kstat/zfs/arcstats");
<       while ( my $line = <IN>) {
<               my @items = split /\s+/, $line;
<               $kstatdata{$items[0]} = $items[2];
---
>       if ($kstat->update()) {
>               printf("<State Changed>\n");
213,215c212
<       close(IN);
<
<       my $hashref_cur = \%kstatdata;
---
>       my $hashref_cur = $kstat->{"zfs"}{0}{"arcstats"};
218,219c215
<                 next if $key =~ /^[0-9]/;
<                 next if $key =~ /^name/;
---
>               next if $key =~ /class/;