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/;