ZFSで既存プールにミラーディスクを追加する
FreeBSD 9.1をサーバにして使っています。
- FreeBSDにサーバ用ソフトをインストールしまくり: プラスα空間 (2013年8月13日)
ディスクは1.5TBのHDDを2台ミラーリングした状態で終わっていました。
- ZFSで既存ディスクをミラー化する: プラスα空間 (2013年9月26日)
他に、1.5TBのHDDを2台用意してあったのですが、データの一時バックアップ用に使っていて、なかなか中身を消せない状態でした。
やっと、HDDの中身をバックアップした事、先日のデータ消失未遂事件が発生して恐怖を覚えた事から、残りの2台もサーバ用に使う決意をしました。
- Macの外付けディスクがマウントできなくなって心底焦った[追記あり]: プラスα空間 (2013年11月14日)
最終的には次の形とします。今回は、破線枠内のHDDの追加をしました。
次の手順となります。
- GPT作成
- ZFS化とラベル付け
- ミラーリングディスクとして既存プールに追加
それでは、順を追って、説明して行きます。
なお、次のウェブサイトを参考にしています。ありがとうございます。
1. GPT作成
まずは、現状を確認します。
# gpart show => 34 2930277101 ada0 GPT (1.4T) 34 6 - free - (3.0k) 40 409600 1 efi (200M) 409640 585937504 2 apple-hfs (279G) 586347144 263544 - free - (128M) 586610688 87889920 3 linux-data (41G) 674500608 39062504 4 linux-data (18G) 713563112 262144 5 apple-boot (128M) 713825256 1048 - free - (524k) 713826304 2206767104 6 apple-hfs (1.0T) 2920593408 262144 - free - (128M) 2920855552 9420800 7 linux-data (4.5G) 2930276352 783 - free - (391k) => 34 2930277101 ada1 GPT (1.4T) 34 6 - free - (3.0k) 40 409600 1 efi (200M) 409640 1953125000 2 apple-hfs (931G) 1953534640 262144 - free - (128M) 1953796784 976218200 3 apple-hfs (465G) 2930014984 262151 - free - (128M) => 34 62533229 ada2 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 ada3 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada4 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T)
ada0とada1が、今回再利用するHDDです。
まずは、ada0のパーティションを消して、新規に作成します。再利用なので、"-F"オプションで、強制消去しています。
# gpart destroy ada0 gpart: Device busy # gpart destroy -F ada0 ada0 destroyed # gpart create -s gpt ada0 ada0 created # gpart show => 34 2930277101 ada1 GPT (1.4T) 34 6 - free - (3.0k) 40 409600 1 efi (200M) 409640 1953125000 2 apple-hfs (931G) 1953534640 262144 - free - (128M) 1953796784 976218200 3 apple-hfs (465G) 2930014984 262151 - free - (128M) => 34 62533229 ada2 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 ada3 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada4 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada0 GPT (1.4T) 34 2930277101 - free - (1.4T)
残りのディスク(ada1)も消去して、GPTパーティションを作成します。
# gpart destroy ada1 gpart: Device busy # gpart destroy -F ada1 ada1 destroyed # gpart create -s gpt ada1 ada1 created # gpart show => 34 62533229 ada2 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 ada3 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada4 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada0 GPT (1.4T) 34 2930277101 - free - (1.4T) => 34 2930277101 ada1 GPT (1.4T) 34 2930277101 - free - (1.4T)
2. ZFS化とラベル付け
先ほど作ったGPTパーティションを二つともZFS化して、それぞれラベルをつけます。
# gpart add -t freebsd-zfs -l disk2 ada0 ada0p1 added # gpart add -t freebsd-zfs -l disk3 ada1 ada1p1 added # gpart show => 34 62533229 ada2 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 ada3 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada4 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada0 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T) => 34 2930277101 ada1 GPT (1.4T) 34 2930277101 1 freebsd-zfs (1.4T)
ラベル名を見るには、"-l"オプションを使います。
# gpart show -l => 34 62533229 ada2 GPT (29G) 34 128 1 (null) (64k) 162 16777216 2 zil (8.0G) 16777378 33554432 3 l2arc (16G) 50331810 12201453 4 zroot (5.8G) => 34 2930277101 ada3 GPT (1.4T) 34 2930277101 1 disk0 (1.4T) => 34 2930277101 ada4 GPT (1.4T) 34 2930277101 1 disk1 (1.4T) => 34 2930277101 ada0 GPT (1.4T) 34 2930277101 1 disk2 (1.4T) => 34 2930277101 ada1 GPT (1.4T) 34 2930277101 1 disk3 (1.4T)
3. ミラーリングディスクとして既存プールに追加
現在の、zpoolの状況を確認します。
# 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 206K in 0h0m with 0 errors on Sat Jan 1 00:21:15 2011 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
実際にディスクを追加する前に、まずはドライランをして、状況を確認します。「ドライラン」とは、実際の変更はせずに、コマンドの動きを確かめます。"-n"オプションを使います。
# zpool add -n upool mirror gpt/disk2 gpt/disk3 would update 'upool' to the following configuration: upool mirror gpt/disk1 gpt/disk0 mirror gpt/disk2 gpt/disk3 logs gpt/zil
大丈夫そうですので、正式実行します。
# zpool add upool mirror gpt/disk2 gpt/disk3 # 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 206K in 0h0m with 0 errors on Sat Jan 1 00:21:15 2011 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 mirror-2 ONLINE 0 0 0 gpt/disk2 ONLINE 0 0 0 gpt/disk3 ONLINE 0 0 0 logs gpt/zil ONLINE 0 0 0 cache gpt/l2arc ONLINE 0 0 0 errors: No known data errors
予定していた通りに、ディスクが追加されました。
ディスカッション
コメント一覧
まだ、コメントがありません