2008年5月11日日曜日

ZFSでミラーリング

ディスク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です。

0 件のコメント:

コメントを投稿