[linux/Debian] Debian/kFreeBSDでZFS お試し編 その2

ZFSをVirtualBoxに入れたDEbian/kFreeBSDで試してみるのその2です。
Diskが壊れた時の交換方法と、大きいDiskに交換していって、領域を確認する方法を確認します。

1GBのアレイが順番に壊れたり、交換していく想定で、交換するのは3GBのDiskです。

まずは1台交換してみる

いきなり抜くのでは無く、offlineにしてDiskを交換してみます。
これは、大きいHDDに交換するときの手順を想定しています。

# zpool offline vol1 ada1

# zpool status
pool: vol1
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using ‘zpool online’ or replace the device with
‘zpool replace’.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
vol1 DEGRADED 0 0 0
-0 DEGRADED 0 0 0
13334899667277329527 OFFLINE 0 0 0 was /dev/ada1
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
-1 ONLINE 0 0 0
ada4 ONLINE 0 0 0
ada5 ONLINE 0 0 0
ada6 ONLINE 0 0 0

errors: No known data errors

ada1がofflineになって、プールがDegradedになっているのが確認出来ます。

HDD付け替え

電源を落としてDiskを同じ所に付け替えます。
Diskのサイズは3GBです。

電源ONにしたあと、

# zpool online vol1 ada1
warning: device ‘ada1’ onlined, but remains in faulted state
use ‘zpool replace’ to replace devices that are no longer present
# zpool status
pool: vol1
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using ‘zpool replace’.
see: http://www.sun.com/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h0m with 0 errors on Sun Aug 3 01:36:22 2014
config:

NAME STATE READ WRITE CKSUM
vol1 DEGRADED 0 0 0
-0 DEGRADED 0 0 0
13334899667277329527 UNAVAIL 0 0 0 was /dev/ada1
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
-1 ONLINE 0 0 0
ada4 ONLINE 0 0 0
ada5 ONLINE 0 0 0
ada6 ONLINE 0 0 0

errors: No known data errors

onleineにしただけでは、まだDegradedのままです。

# zpool replace vol1 ada1
# zpool status
pool: vol1
state: ONLINE
scan: resilvered 64.5K in 0h0m with 0 errors on Sun Aug 3 01:37:33 2014
config:

NAME STATE READ WRITE CKSUM
vol1 ONLINE 0 0 0
-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
-1 ONLINE 0 0 0
ada4 ONLINE 0 0 0
ada5 ONLINE 0 0 0
ada6 ONLINE 0 0 0

errors: No known data errors

# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
vol1 8.95G 290K 8.95G 0% 1.00x ONLINE –

zpool replaceをしてはじめてプールが回復します。
1GBのRAID-Zアレイのうち、1台を3GBにしたままでは、まだサイズは増えていません。

2台目はいきなりHDDを交換してみる

今度は、Diskが壊れたことを想定して、いきなりHDDを交換します。
これも3GBのDiskに交換しました。

# zpool status
pool: vol1
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using ‘zpool online’.
see: http://www.sun.com/msg/ZFS-8000-2Q
scan: resilvered 64.5K in 0h0m with 0 errors on Sun Aug 3 01:37:33 2014
config:

NAME STATE READ WRITE CKSUM
vol1 DEGRADED 0 0 0
-0 DEGRADED 0 0 0
ada1 ONLINE 0 0 0
18306556529790232082 UNAVAIL 0 0 0 was /dev/ada2
ada3 ONLINE 0 0 0
-1 ONLINE 0 0 0
ada4 ONLINE 0 0 0
ada5 ONLINE 0 0 0
ada6 ONLINE 0 0 0

errors: No known data errors

# zpool replace vol1 ada2
root@debian:/home/bayashi# zpool status
pool: vol1
state: ONLINE
scan: resilvered 59.5K in 0h0m with 0 errors on Sun Aug 3 01:42:43 2014
config:

NAME STATE READ WRITE CKSUM
vol1 ONLINE 0 0 0
-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
-1 ONLINE 0 0 0
ada4 ONLINE 0 0 0
ada5 ONLINE 0 0 0
ada6 ONLINE 0 0 0

errors: No known data errors

特に問題は無いですね。

ファイルが無い状態でDisk交換していても実感が無いので、ファイルを作っておきます。

# dd if=/dev/zero of=/vol1/work.img bs=1M count=800
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
vol1 8.95G 1.17G 7.78G 13% 1.00x ONLINE –

800MBのファイルを作ったけれども、実際に使われているのは1.17GB。パリティ分もあわせたサイズになっています。

3台目も交換して、プールサイズを拡張する

3台目も交換します。

# zpool replace vol1 ada3
root@debian:/home/bayashi# zpool status
pool: vol1
state: ONLINE
scan: resilvered 182M in 0h0m with 0 errors on Sun Aug 3 01:50:23 2014
config:

NAME STATE READ WRITE CKSUM
vol1 ONLINE 0 0 0
-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
-1 ONLINE 0 0 0
ada4 ONLINE 0 0 0
ada5 ONLINE 0 0 0
ada6 ONLINE 0 0 0

errors: No known data errors

# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
vol1 8.95G 1.17G 7.78G 13% 1.00x ONLINE –

1GBのDiskがすべて3GBになったのに、プールのサイズが増えていません。

# zpool online -e vol1 ada1
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
vol1 15.0G 1.17G 13.8G 7% 1.00x ONLINE –
# zpool status
pool: vol1
state: ONLINE
scan: resilvered 182M in 0h0m with 0 errors on Sun Aug 3 01:50:23 2014
config:

NAME STATE READ WRITE CKSUM
vol1 ONLINE 0 0 0
-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
-1 ONLINE 0 0 0
ada4 ONLINE 0 0 0
ada5 ONLINE 0 0 0
ada6 ONLINE 0 0 0

errors: No known data errors

zpool online -eを実行してはじめてサイズが拡張されます。
指定するDiskは、拡張するアレイに属しているならどれでも良いみたいです。

あらかじめ、autoexpandを有効にしておくと、3台目が置き換わった時点で自動的にサイズ拡張されるようです(未確認)。

# zpool set autoexpand=on vol1

あるいは、プール作成時に

zpool create -o autoexpand=on vol1 raidz ada1 ada2 ada3

としておけば良いみたいです(未確認)。

この状態でdfコマンドを打ってみると、

# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/ada0s1 7.4G 853M 6.0G 13% /
devfs 1.0K 1.0K 0 100% /dev
linprocfs 4.0K 4.0K 0 100% /proc
/sys 4.0K 4.0K 0 100% /sys
fdescfs 1.0K 1.0K 0 100% /dev/fd
tmpfs 8.0G 212K 8.0G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.6M 4.0K 1.6M 1% /run/shm
vol1 9.9G 800M 9.1G 8% /vol1
vol1/visual 9.1G 40K 9.1G 1% /vol1/visual

このような感じに。
vol1とvol1/visualのサイズと残りサイズをみると、ちょっと混乱しますな。

まとめ

これで、NAS運用に必要最低限な事は一通り確認出来ました。
しっかり運用するためには、snapshotの設定と、必要最低限なファイルのバックアップ戦略を立てることですね
ほかに、ZFSが利用するメモリ容量を制限したいのですが、Debian/kFreeBSDだとどこで設定するのかが解らない。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です