ちょっとしたメンテナンスで InnoDB のテーブル圧縮を並列でやっていたんだけど、 random i/o が多すぎて全然すすまない。悪いことにこのサーバは iSCSI ディスクしか無くて、どうしようかなと思っていたときにふと気づいたこと。
% dd if=/dev/zero of=/tmp/zero.dat bs=1048576 count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 1.10092 s, 975 MB/s
% sudo zpool add tank cache /tmp/zero.dat cannot add to 'tank': cache device must be a disk or disk slice
これはダメなんだけど、
% sudo zpool add tank log /tmp/zero.dat % zpool status -v tank pool: tank state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c0t600144F0A3B974070000529E2FEB0001d0 ONLINE 0 0 0 logs /tmp/zero.dat ONLINE 0 0 0 errors: No known data errors
こっちは通るんですね。
DTT の iopattern で見た結果。中央のスパイクがあるところで add log した。 KW (kbytes of write) がちゃんと増えてくれてるようです。
iostat(1M) で iSCSI ディスクを調べてしまうと write iops は逆に減るのかも。 iopattern は io:genunix::done で調べて tick-1sec で表示してるので、これを信じるので良いのだと思う。