プラスα空間

ブログ in お市 のーと

ZFSで既存ディスクをミラー化する

FreeBSD 9.1搭載のPCを、サーバ機として利用しています。

試験的に、ディスクドライブ1台で運用してきましたが、そろそろデータの安全性確保のために、ミラーリングする事にしました。

当初は、ディスク4台で、RAID-Zを組む事を考えていたのですが、運用が面倒そうです。ディスクの追加はできても、削除ができないのです(交換のみ)。

結局、ディスク2台でRAID-1のミラーにして、それをつなぎ合わせて一つのプールにする事にしました。容量的は損をしますが、運用性を重視しました。

最終的には、次の様な構成を考えています。

ZFSファイルシステム

まずは、既存ディスクをミラー化します。

次の手順となります。

  1. GPTにパーティションを切り直す
  2. ZFSとしてフォーマットし、ラベルを付ける
  3. 既存ディスクにattachして、ミラー化

事前に調べてはいましたが、こんなにあっさりミラー化できるとは驚きました。ZFS、最強です。

では、順を追って、説明していきます。

1. GPTにパーティションを切り直す

まずは、物理的にディスクを増設した状況です。ada1に、Linuxで使っていたディスクを接続しました。

# gpart show 
=>      34  62533229  ada0  GPT  (29G)
        34       128     1  freebsd-boot  (64k)
       162  16777216     2  freebsd-zfs  (8.0G)
  16777378  33554432     3  freebsd-zfs  (16G)
  50331810  12201453     4  freebsd-zfs  (5.8G)

=>         1  2930277167  ada1  MBR  (1.4T)
           1          39        - free -  (19k)
          40     1060250     1  linux-data  (517M)
     1060290           6        - free -  (3.0k)
     1060296     1060284     2  linux-data  (517M)
     2120580           4        - free -  (2.0k)
     2120584  2927139386     3  linux-data  (1.4T)
  2929259970           6        - free -  (3.0k)
  2929259976      996024     4  linux-data  (486M)
  2930256000       21168        - free -  (10M)

=>        34  2930277101  ada2  GPT  (1.4T)
          34  2930277101     1  freebsd-zfs  (1.4T)

ada1が、MBRになっているので、これを消去します。

# gpart destroy ada1
gpart: Device busy

怒られました。それならば、強制的に…。

# gpart destroy -F ada1
ada1 destroyed

うまく消せたようです。次に、GPTにします。

# gpart create -s gpt ada1
# gpart show
=>      34  62533229  ada0  GPT  (29G)
        34       128     1  freebsd-boot  (64k)
       162  16777216     2  freebsd-zfs  (8.0G)
  16777378  33554432     3  freebsd-zfs  (16G)
  50331810  12201453     4  freebsd-zfs  (5.8G)

=>        34  2930277101  ada2  GPT  (1.4T)
          34  2930277101     1  freebsd-zfs  (1.4T)

=>        34  2930277101  ada1  GPT  (1.4T)
          34  2930277101        - free -  (1.4T)

ada1が、”free”になりました。

2. ZFSとしてフォーマットし、ラベルを付ける

これを、zfs化します。ラベルに、”disk0″と付けます。

なぜ、元々あるディスクがdisk1で、新しく作る方がdisk0なのかは、気にしないでください。

# gpart add -t freebsd-zfs -l disk0 ada1
ada1p1 added
# gpart show
=>      34  62533229  ada0  GPT  (29G)
        34       128     1  freebsd-boot  (64k)
       162  16777216     2  freebsd-zfs  (8.0G)
  16777378  33554432     3  freebsd-zfs  (16G)
  50331810  12201453     4  freebsd-zfs  (5.8G)

=>        34  2930277101  ada2  GPT  (1.4T)
          34  2930277101     1  freebsd-zfs  (1.4T)

=>        34  2930277101  ada1  GPT  (1.4T)
          34  2930277101     1  freebsd-zfs  (1.4T)

3. 既存ディスクにattachして、ミラー化

今まで使っていた、disk1に、今作ったdisk0をattachして、ミラー化します。

# zpool attach upool gpt/disk1 gpt/disk0
# zpool status
pool: rpool
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
gpt/zroot ONLINE 0 0 0

errors: No known data errors

pool: upool
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Wed Sep 25 07:31:17 2013
13.9M scanned out of 1.06T at 710K/s, 445h27m to go
13.5M resilvered, 0.00% done
config:

NAME STATE READ WRITE CKSUM
upool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gpt/disk1 ONLINE 0 0 0
gpt/disk0 ONLINE 0 0 0 (resilvering)
logs
gpt/zil ONLINE 0 0 0
cache
gpt/l2arc ONLINE 0 0 0

errors: No known data errors

ミラー化が始まりました。

#	zpool status
  pool: rpool
 state: ONLINE
  scan: none requested
config:

	NAME         STATE     READ WRITE CKSUM
	rpool        ONLINE       0     0     0
	  gpt/zroot  ONLINE       0     0     0

errors: No known data errors

  pool: upool
 state: ONLINE
  scan: resilvered 1.06T in 4h36m with 0 errors on Wed Sep 25 12:07:17 2013
config:

	NAME           STATE     READ WRITE CKSUM
	upool          ONLINE       0     0     0
	  mirror-0     ONLINE       0     0     0
	    gpt/disk1  ONLINE       0     0     0
	    gpt/disk0  ONLINE       0     0     0
	logs
	  gpt/zil      ONLINE       0     0     0
	cache
	  gpt/l2arc    ONLINE       0     0     0

errors: No known data errors

無事完成です。

いろいろなサイトを参考にさせていただきました。ありがとうございます。

コメントを残す