[solaris][zfs][memo] compression と recordsize

Solaris 11 11/11 (5.11 11.0) での話。

中身は MySQL の MYD と MYI と frm です。やっぱ InnoDB とか忘れて、基本は bs=128k で生きてたほうが良いような気がする。

send/receive と rsync を状況に合わせて使い分ける場合、 recordsize を設定してたのを忘れてメンテナンス後に変わっちゃう危険があるので、ちまちま分けたくはない。なので公約数的な値を取りたいわけですが、 16k にするかどうかくらいは意識して分けておいたほうがいいかな。

% for i in 2 3 4; do time rsync -av --progress test1/* test$i >/dev/null; done
rsync -av --progress test1/* test$i  83.51s user 57.11s system 103% cpu 2:16.36 total
rsync -av --progress test1/* test$i  87.93s user 58.11s system 100% cpu 2:25.67 total
rsync -av --progress test1/* test$i  79.15s user 49.77s system 99% cpu 2:09.13 total
% zfs list -o space,recordsize,compression,compressratio -r tank
NAME        AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD  RECSIZE  COMPRESS  RATIO
tank        20.8T  26.5G         0    123K              0      26.5G     128K       off  1.28x
tank/test1  20.8T  8.09G         0   8.09G              0          0     128K       off  1.00x
tank/test2  20.8T  4.45G         0   4.45G              0          0     128K        on  1.82x
tank/test3  20.8T  8.77G         0   8.77G              0          0      16K       off  1.00x
tank/test4  20.8T  5.15G         0   5.15G              0          0      16K        on  1.76x
tank/test5  20.8T  8.05G         0   8.05G              0          0       1M       off  1.00x [追記]
tank/test6  20.8T  4.37G         0   4.37G              0          0       1M        on  1.84x [追記]

cf. http://www.c0t0d0s0.org/archives/5865-SSD,-ZFS,-L2ARC-and-mysql.html

du

余談ですが、 /usr/bin/du のオプション無しって何を表示してるんだろ?

それ以外については、ファイルサイズの合計ではなく、そのディレクトリ以下に含まれるファイルたちの disk usage を出してくれてるみたい。

% /usr/bin/du test*   
16957022        test1
9331071         test2
18395314        test3
10803173        test4
% /usr/bin/du -h test*
 8.1G   test1
 4.4G   test2
 8.8G   test3
 5.2G   test4
% /usr/gnu/bin/du test*
8478511 test1
4665536 test2
9197657 test3
5401587 test4
% /usr/gnu/bin/du -h test*
8.1G    test1
4.5G    test2
8.8G    test3
5.2G    test4