ディスク2基を使ってZFSのミラー環境を作ってみました。
# zpool add -f mypool mirror c6d0s2 c6d1s2
3秒ぐらいで何も言わずに終了。続いてファイルシステムを作ります。
# zfs create mypool/nfs
# zfs crrate mypool/iscsi
各ファイルシステムは /mypool/nfs/ /mypool/iscsiにマウントされていますが、これを/export以下に移動させます。
# mkdir -p /export/nfs /export/iscsi
# zfs set mountpoint=/export/nfs mypool/nfs
# zfs set mountpoint=/export/iscsi mypool/iscsi
確認するには zfs list コマンドを使用します。
-bash-3.2# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 705M 228G 18K /mypool
mypool/iscsi 18K 228G 18K /export/iscsi
mypool/nfs 704M 228G 704M /export/nfs
各ストレージに対するI/Oの状況をチェックするにはzpool iostatコマンドを使用します。
-bash-3.2# zpool iostat -v
capacity operations bandwidth
pool used avail read write read write
---------- ----- ----- ----- ----- ----- -----
mypool 804M 231G 0 18 51 1.12M
mirror 804M 231G 0 18 51 1.12M
c6d0s2 - - 0 15 176 1.13M
c6d1s2 - - 0 15 0 1.13M
---------- ----- ----- ----- ----- ----- -----
rpool 2.29G 27.5G 2 1 156K 26.7K
c5d1s0 2.29G 27.5G 2 1 156K 26.7K
---------- ----- ----- ----- ----- ----- -----
とりあえず試しにほかのホストからホームディレクトリを tar でコピーしてみました。この時点ではbandwidthの値がうまく分散していないようです(readがミラーのうち片方に偏っている)。試しにmypoolの中でファイルをcpしてみました。これでread, writeの操作がファイルシステムにたいし行われるはずです。
-bash-3.2# zpool iostat -v
capacity operations bandwidth
pool used avail read write read write
---------- ----- ----- ----- ----- ----- -----
mypool 1.11G 231G 2 21 348K 1.43M
mirror 1.11G 231G 2 21 348K 1.43M
c6d0s2 - - 1 18 174K 1.43M
c6d1s2 - - 1 18 174K 1.43M
---------- ----- ----- ----- ----- ----- -----
rpool 2.29G 27.5G 2 1 147K 25.1K
c5d1s0 2.29G 27.5G 2 1 147K 25.1K
---------- ----- ----- ----- ----- ----- -----
c6d0, c6d1のbandwidthが一緒になったので、どうやらリード操作がストライピングされたようだ。
ついでなので、ディスク c6d1 の電源を落としてみました。
May 11 10:53:06 opensolaris genunix: [ID 698548 kern.notice] ata_disk_start: select failed
I/O操作でブロックされ、ターミナルが反応しなくなってしまった...
mb:~ hasegaw$ ping 192.168.44.42
PING 192.168.44.42 (192.168.44.42): 56 data bytes
64 bytes from 192.168.44.42: icmp_seq=0 ttl=255 time=10081.327 ms
64 bytes from 192.168.44.42: icmp_seq=1 ttl=255 time=9081.151 ms
64 bytes from 192.168.44.42: icmp_seq=2 ttl=255 time=8081.209 ms
64 bytes from 192.168.44.42: icmp_seq=3 ttl=255 time=7081.229 ms
64 bytes from 192.168.44.42: icmp_seq=4 ttl=255 time=6081.241 ms
64 bytes from 192.168.44.42: icmp_seq=5 ttl=255 time=5075.657 ms
64 bytes from 192.168.44.42: icmp_seq=6 ttl=255 time=4075.728 ms
64 bytes from 192.168.44.42: icmp_seq=7 ttl=255 time=3075.743 ms
64 bytes from 192.168.44.42: icmp_seq=8 ttl=255 time=2075.837 ms
64 bytes from 192.168.44.42: icmp_seq=9 ttl=255 time=1075.855 ms
64 bytes from 192.168.44.42: icmp_seq=10 ttl=255 time=75.989 ms
64 bytes from 192.168.44.42: icmp_seq=11 ttl=255 time=0.896 ms
64 bytes from 192.168.44.42: icmp_seq=12 ttl=255 time=0.936 ms
64 bytes from 192.168.44.42: icmp_seq=13 ttl=255 time=0.949 ms
しばらくするとpingに応答しなくなったり、突然復活したり、という状況。これではmirrorの意味があまりないなぁ.... デバイスドライバ側の問題なのかしら。ちなみにインターフェイスはICH5です。