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
無事完成です。
いろいろなサイトを参考にさせていただきました。ありがとうございます。




![GATAG [フリー写真] パソコンの前で頭を抱えるシニア男性](https://oichinote.com/plus/files/2012/04/20160216gatag-00006665-480x480-150x100.jpg)






ディスカッション
コメント一覧
まだ、コメントがありません