2007年7月12日木曜日

ZFSでミラーデバイスを作ってみる

ZFSでミラーデバイスを作成する方法。

1.単独ディスク・スライスからZFSを作成する


 ---- zfsという名前のファイルシステムを作成(-fは強制)
 # zpool create -f zfs c0t0d0s0
 ---- 状況を確認
 # zpool list
 NAME SIZE USED AVAIL CAP HEALTH ALTROOT
 zfs 4.97G 51.5K 4.97G 0% ONLINE -


単独のディスク・スライスからZFSを作成するのはコマンド1つで終わりである。
/zfs をファイルシステムをしてOSから使用することができる。


2.2つのディスク・スライスからZFSを作成する


 ---- mirror属性のzmirrorというファイルシステムを作成
 # zpool create zmirror mirror c0t0d0s0 c0t0d0s1
 ---- 状況確認
 # zpool list
 NAME SIZE USED AVAIL CAP HEALTH ALTROOT
 zfs 4.97G 51.5K 4.97G 0% ONLINE -

 # sudo zpool status
  pool: zmirror
  state: ONLINE
  scrub: none requested
 config:
 
  NAME STATE READ WRITE CKSUM
  zmirror ONLINE 0 0 0
  mirror ONLINE 0 0 0
  c0t0d0s0 ONLINE 0 0 0
  c0t0d0s1 ONLINE 0 0 0
 
 errors: No known data errors

→c0t0d0s0 とc0t0d0s1 のミラーが作成されている



 ---- とりあえず1GB ファイルを作って見た
 # timex mkfile 1g hogehoge
 
 real 1:52.57
 user 0.35
 sys 17.02


→約2分、CPUは17秒しか働いていないです。


 ====ミラーじゃないデバイスにattachしてミラーディスクにしてみる
 ---- zfsという名前のファイルシステム
 # zpool create -f zfs c0t0d0s0
 # zpool list
 NAME SIZE USED AVAIL CAP HEALTH ALTROOT
 zfs 4.97G 51.5K 4.97G 0% ONLINE -
 ---- zfsにc0t0d0s4をattachしてミラーデバイスを作成
 # zpool attach zfs c0t0d0s0 c0t0d0s4
 ---- 確認
 # zpool list
 NAME SIZE USED AVAIL CAP HEALTH ALTROOT
 zfs 4.97G 156K 4.97G 0% ONLINE -
 # zpool status
  pool: zfs
  state: ONLINE
  scrub: resilver completed with 0 errors on Thu Jul 12 10:09:08 2007
 config:
 
  NAME STATE READ WRITE CKSUM
  zfs ONLINE 0 0 0
  mirror ONLINE 0 0 0
  c0t0d0s0 ONLINE 0 0 0
  c0t0d0s4 ONLINE 0 0 0
 
 errors: No known data errors

→ミラーになっている。。。ディスク容量も増えていないし。やったね。


3.上の状況からディスクを追加してみる
 ミラーになったZFSにデバイスを追加する。
 イメージとしてはRAID0にディスクを追加する感じ。コンカチでは無くてストライピングになっているようです。


 ----zfsにc0t0d0s1デバイスを追加する
 # zpool add -f zfs c0t0d0s1
 # zpool list
 NAME SIZE USED AVAIL CAP HEALTH ALTROOT
 zfs 9.94G 260K 9.94G 0% ONLINE -

  →お、倍になった。追加されたようだ。

 # zpool status
  pool: zfs
  state: ONLINE
  scrub: resilver completed with 0 errors on Thu Jul 12 10:09:08 2007
 config:
 
  NAME STATE READ WRITE CKSUM
  zfs ONLINE 0 0 0
  mirror ONLINE 0 0 0
  c0t0d0s0 ONLINE 0 0 0
  c0t0d0s4 ONLINE 0 0 0
  c0t0d0s1 ONLINE 0 0 0
 
 errors: No known data errors

→ミラーデバイス(5GB)に1つディスク(5GB)が追加されたような感じです。


 ---- もう1つ追加
 # zpool add zfs c0t0d0s3
 # zpool list
 NAME SIZE USED AVAIL CAP HEALTH ALTROOT
 zfs 14.9G 370K 14.9G 0% ONLINE -


→おー、3倍だー


 # zpool status
  pool: zfs
  state: ONLINE
  scrub: resilver completed with 0 errors on Thu Jul 12 10:09:08 2007
 config:
 
  NAME STATE READ WRITE CKSUM
  zfs ONLINE 0 0 0
   mirror ONLINE 0 0 0
  c0t0d0s0 ONLINE 0 0 0
  c0t0d0s4 ONLINE 0 0 0
  c0t0d0s1 ONLINE 0 0 0
  c0t0d0s3 ONLINE 0 0 0
 
 errors: No known data errors



 ---- 今追加したデバイスをミラー化する
 c0t0d0s1にc0t0d0s5をattach、c0t0d0s3にc0t0d0s6をattachする

 # zpool attach zfs c0t0d0s1 c0t0d0s5
 # zpool attach zfs c0t0d0s3 c0t0d0s6
 ---- 確認
 # zpool list
 NAME SIZE USED AVAIL CAP HEALTH ALTROOT
 zfs 14.9G 492K 14.9G 0% ONLINE -

→容量は変わっていない


 # zpool status
  pool: zfs
  state: ONLINE
  scrub: resilver completed with 0 errors on Thu Jul 12 10:18:02 2007
 config:
 
  NAME STATE READ WRITE CKSUM
  zfs ONLINE 0 0 0
  mirror ONLINE 0 0 0
  c0t0d0s0 ONLINE 0 0 0
  c0t0d0s4 ONLINE 0 0 0
  mirror ONLINE 0 0 0
  c0t0d0s1 ONLINE 0 0 0
  c0t0d0s5 ONLINE 0 0 0
  mirror ONLINE 0 0 0
  c0t0d0s3 ONLINE 0 0 0
  c0t0d0s6 ONLINE 0 0 0
 
 errors: No known data errors

→おー、、、ミラーになっているぜー。


 ---- ファイル作成してみる
 # timex mkfile 1g hogehoge
 
 real 2:00.66
 user 0.34
 sys 16.37

→約2分、あんまり変わらない


 # timex mkfile 2g hogehoge
 
 real 3:55.56
 user 0.69
 sys 32.71

→約4分、1GB書き込みに約2分程度


 ==== 実験終了に付き廃棄
 # zpool destroy -f zfs

0 件のコメント: