FreeNAS
FreeNASはNAS構築に特化したUNIXのディストリビューションです。FreeBSDベースで作られており、派生として、NAs4FreeやLinuxベースのOpen media vaultが存在しています。
RAID-Z
RAID0,1,5...という区分の中ではRAID5に相当する。自宅のNASはHDDが3台のRAID-Zで運用されている。そのため、HDD1本が壊れても動作し続けるくらいの耐障害性がある。
今回このRAID-Zを構成しているHDDのうち1本がおかしいということで、入れ替え作業をメモメモ
FreeNAS上での確認
最初はアラートに気づいていなかったけれど、2回目のアラートでHDDのトラブルを確認
FreeNAS上のUIからは下記のように見える。とりあえず警告が出てる。
まだエラーになっていないから大丈夫。きっとまだいける。
本当にダメになるとFreeNASが自動的にHDDを切り離すはず。
zpool statusで確認
まだ切り離しがされていないこともあり、基本的にステータスは問題ないっぽい
[root@freenas] ~# zpool status
pool: RaidZStorage
state: ONLINE
scan: scrub repaired 0 in 14h25m with 0 errors on Sun May 7 14:25:35 2017
config:
NAME STATE READ WRITE CKSUM
RaidZStorage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
smartctlで確認
今回対象となっているDiskは/dev/ada2mなので、ada2の情報をsmartctlで確認する。
197,198の最後の値がじゃないと、基本的に動いてはいるけど、いつ壊れてもおかしくないよって感じ。書き込みできない不良セクタってやつ。
smartctl -a /dev/ada2
~略~
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 120
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 120
~略~
ちなみに正常だと思われる/dev/ada0についてはこんな感じ。
smartctl -a /dev/ada2
~略~
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
~略~
交換するHDDの確認
NASに使ってるHP microserver(N54L)はHDDランプがないので、どのDiskが交換対象かはパット見わからない。そこでsmartctlの結果をメモした上で交換対象のDiskを特定する。とりあえずこれっぽい。
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.14 (AF)
Device Model: ST2000DM001-1CH164
Serial Number: Z1E4BQRA
LU WWN Device Id: 5 000c50 050aef61b
Firmware Version: CC44
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 7200 rpm
Form Factor: 3.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is: Thu Jun 8 21:33:41 2017 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
念のために正常なDiskのシリアルも確認
Serial Number: WD-WMC4N0F119Z5 (ada0)
Serial Number: WD-WMC4N0F05M3S (ada1)
パーティション情報の取得
念のためパーティション情報も取得しておく
[root@freenas] ~# gpart show ada2
=> 34 3907029101 ada2 GPT (1.8T)
34 94 - free - (47K)
128 4194304 1 freebsd-swap (2.0G)
4194432 3902834696 2 freebsd-zfs (1.8T)
3907029128 7 - free - (3.5K)
FreeNASのシャットダウン
各種クライアントからのマウントをやめた上で
[root@freenas] ~# shutdown -p now
Shutdown NOW!
shutdown: [pid 96234]
HDD交換後
zool statusで確認
自動でRAIDの再構築は始まらないので、下記のような表示でDEGRADEDになっているはず。
[root@freenas] ~# zpool status
pool: RaidZStorage
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://illumos.org/msg/ZFS-8000-2Q
scan: scrub repaired 0 in 14h25m with 0 errors on Sun May 7 14:25:35 2017
config:
NAME STATE READ WRITE CKSUM
RaidZStorage DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
12153346589594475547 UNAVAIL 0 0 0 was /dev/gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732
gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
パーティションの作成
今回はDiskを3TBに変更しました。1TB無駄になるけど、将来的に3TB構成にするには徐々に入れ替えるしかない
[root@freenas] ~# gpart show ada2
gpart: No such geom: ada2.
[root@freenas] ~# gpart create -s gpt ada2
ada2 created
[root@freenas] ~# gpart show ada2
=> 34 5860533101 ada2 GPT (2.7T)
34 5860533101 - free - (2.7T)
先程のパーティション情報をもとにパーティションを作成していく
[root@freenas] ~# gpart add -i 1 -t freebsd-swap -b 128 -s 4194304 ada2
ada2p1 added
[root@freenas] ~# gpart show ada2
=> 34 5860533101 ada2 GPT (2.7T)
34 94 - free - (47K)
128 4194304 1 freebsd-swap (2.0G)
4194432 5856338703 - free - (2.7T)
[root@freenas] ~# gpart add -i 2 -t freebsd-zfs ada2
ada2p2 added
[root@freenas] ~# gpart show ada2
=> 34 5860533101 ada2 GPT (2.7T)
34 94 - free - (47K)
128 4194304 1 freebsd-swap (2.0G)
4194432 5856338696 2 freebsd-zfs (2.7T)
5860533128 7 - free - (3.5K)
ZFS(zpool)にDiskを組み込む
freebsd-zfs の rawuuid を確認する。
2. Name: ada2p2
Mediasize: 2998445412352 (2.7T)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r0w0e0
rawuuid: bd86d5e8-4c4b-11e7-83b1-38eaa7a93732
rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
label: (null)
length: 2998445412352
offset: 2147549184
type: freebsd-zfs
index: 2
end: 5860533127
start: 4194432
zpool statsuでOFFLINEのDISK IDを確認する
[root@freenas] ~# zpool status
pool: RaidZStorage
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://illumos.org/msg/ZFS-8000-2Q
scan: scrub repaired 0 in 14h25m with 0 errors on Sun May 7 14:25:35 2017
config:
NAME STATE READ WRITE CKSUM
RaidZStorage DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
12153346589594475547 ←これ UNAVAIL 0 0 0 was /dev/gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732
gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
replaceする
[root@freenas] ~# zpool replace RaidZStorage 12153346589594475547 gptid/bd86d5e8-4c4b-11e7-83b1-38eaa7a93732
確認
replace後はRAIDの再構築が始まる。
[root@freenas] ~# zpool status
pool: RaidZStorage
state: DEGRADED
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 Thu Jun 8 22:15:56 2017
4.00G scanned out of 3.49T at 15.5M/s, 65h42m to go
1.33G resilvered, 0.11% done
config:
NAME STATE READ WRITE CKSUM
RaidZStorage DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
replacing-0 UNAVAIL 0 0 0
12153346589594475547 UNAVAIL 0 0 0 was /dev/gptid/86502484-7ef4-11e4-ad6c-38eaa7a93732
gptid/bd86d5e8-4c4b-11e7-83b1-38eaa7a93732 ONLINE 0 0 0 (resilvering)
gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
結構かかりそう...
その後...
どれくらいかかるか不明でしたが、数時間後にはRAIDの再構築も終わって、3本のDiskがONLINE状態になりました。
[root@freenas] ~# zpool status
pool: RaidZStorage
state: ONLINE
scan: resilvered 1.16T in 11h50m with 0 errors on Fri Jun 9 10:06:53 2017
config:
NAME STATE READ WRITE CKSUM
RaidZStorage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
gptid/bd86d5e8-4c4b-11e7-83b1-38eaa7a93732 ONLINE 0 0 0
gptid/8738b5da-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
gptid/880cafb4-7ef4-11e4-ad6c-38eaa7a93732 ONLINE 0 0 0
errors: No known data errors
これでまたしばらく安心なNAS生活が送れそうです。