tmpfs のファイルを zfs の log device に入れられる件 #zfs #solaris

ちょっとしたメンテナンスで 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 で表示してるので、これを信じるので良いのだと思う。