ZFSで既存ディスクをミラー化する
FreeBSD 9.1搭載のPCを、サーバ機として利用しています。
- FreeBSDにサーバ用ソフトをインストールしまくり: プラスα空間 (2013年8月13日)
試験的に、ディスクドライブ1台で運用してきましたが、そろそろデータの安全性確保のために、ミラーリングする事にしました。
当初は、ディスク4台で、RAID-Zを組む事を考えていたのですが、運用が面倒そうです。ディスクの追加はできても、削除ができないのです(交換のみ)。
結局、ディスク2台でRAID-1のミラーにして、それをつなぎ合わせて一つのプールにする事にしました。容量的は損をしますが、運用性を重視しました。
最終的には、次の様な構成を考えています。
まずは、既存ディスクをミラー化します。
次の手順となります。
- GPTにパーティションを切り直す
- ZFSとしてフォーマットし、ラベルを付ける
- 既存ディスクに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
無事完成です。
いろいろなサイトを参考にさせていただきました。ありがとうございます。
ディスカッション
コメント一覧
まだ、コメントがありません