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