ZFS それって美味しいの🤔
兼ねてから HDD が不穏は動きをしていたが、気が付いたら小人さんの手による detached されていたので、google 先生に聞きながら再構築をした記録である。
対象
FreeBSD のデーモン使いで、MBR も GPT も GEOM でエイヤッって出来る人🤫
ざっくり状況説明を
当該 HDD は何時の世代のか判らんぐらいご老体の
SEAGATE ST3250310NS
コイツが /dev/ada1 /dev/pass1 で OS 上からは認識されていたのだが、如何せん寄せ集めででっち上げたテスト環境じゃけ、費用は最小限に留めたい思いで、廃 PC からの寄せ集めって事。
価格.com じゃとこの HDD 初回登録日が 2008 年 7 且 7 日と凡そ 24 年前の七夕なんと💦
hostname は NEC 製の N8100-2488Y
ZFS のプール名は ZFS
構成は HDD 4 台で raidz1
HDD は取替前は以下の通り
ada0: <Maxtor 6B250S0 BANC1BM0> ATA-7 SATA 1.x device
ada1: <ST3250310NS SN06> ATA-7 SATA 1.x device
ada2: <Hitachi HDP725025GLA380 GM2OA52A> ATA8-ACS SATA 2.x device
ada3: <Hitachi HDT725025VLA380 V5DOA52A> ATA-7 SATA 2.x device
では幕開け
余談はこのぐらいにして、構築して程なく次のメッセージが syslog に現れてきだした。
Jul 2 00:29:13 N8100-2488Y smartd[1352]: Device: /dev/ada1, 9 Currently unreadable (pending) sectors
Jul 2 00:29:13 N8100-2488Y smartd[1352]: Device: /dev/ada1, 9 Offline uncorrectable sectors
コイツの出力とほぼ同時期から HDD 躯体からも異音がし始める。→この時点で交換しろよって突っ込みは右から左に受け流す✌
程なく 3 日後には「イイ」感じのメッセージが出始めた💦
Jul 5 07:52:13 N8100-2488Y kernel: (ada1:ahcich1:0:0:0): READ_FPDMA_QUEUED. ACB: 60 01 db 03 10 40 00 00 00 00 00 00
Jul 5 07:52:13 N8100-2488Y kernel: (ada1:ahcich1:0:0:0): CAM status: Auto-Sense Retrieval Failed
Jul 5 07:52:13 N8100-2488Y kernel: (ada1:ahcich1:0:0:0): Error 5, Unretryable error
Jul 5 07:52:13 N8100-2488Y kernel: (ada1:ahcich1:0:0:0): WRITE_FPDMA_QUEUED. ACB: 61 06 e0 56 88 40 06 00 00 00 00 00
Jul 5 07:52:13 N8100-2488Y kernel: (ada1:ahcich1:0:0:0): CAM status: Auto-Sense Retrieval Failed
Jul 5 07:52:13 N8100-2488Y kernel: (ada1:ahcich1:0:0:0): Error 5, Unretryable error
♪ガッツだぜ!!/ウルフルズの歌詞で替え歌を思いつく状況w
「読めない書けない、出来そうもない」ガッツだぜぇ~
ZFS も饒舌に語りだす始末✌
Jul 5 07:52:13 N8100-2488Y devd[782]: Processing event '!system=ZFS subsystem=ZFS type=ereport.fs.zfs.io class=ereport.fs.zfs.io ena=7775126908043264001 pool=ZFS pool_guid=6277837498995304236 pool_state=0 pool_context=0 pool_failmode=wait vdev_guid=5217777784400537384 vdev_type=disk vdev_path=/dev/ada1p4 vdev_ashift=9 vdev_complete_ts=1274052334028321 vdev_delta_ts=256078 vdev_read_errors=0 vdev_write_errors=0 vdev_cksum_errors=0 vdev_delays=0 parent_guid=656513824515157060 parent_type=raidz vdev_spare_guids= zio_err=5 zio_flags=721089 zio_stage=33554432 zio_pipeline=34603008 zio_delay=255405 zio_timestamp=1274052333772243 zio_delta=256078 zio_priority=0 zio_offset=270336 zio_size=8192 time=00000017201335330000000087057673 eid=2'
この時点でも、まだ HDD を交換しようとせず、なにやら小人さんがデタッチ操作した模様。
Jul 5 08:21:28 N8100-2488Y kernel: ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
Jul 5 08:21:28 N8100-2488Y kernel: ada1: <ST3250310NS SN06> s/n 9SF02GMB detached
Jul 5 08:21:28 N8100-2488Y kernel: (ada1:ahcich1:0:0:0): Periph destroyed
本格的なプロの仕上がり(大嘘)
detach と切り離されているので仕方なく、数日後に母艦を強制停止(電源ブチィ~)を断腸の思いで決行(大袈裟)
当該 HDD を抜き出す→御代わりと差替える。
復電→どきどき、わくわく
Jul 8 22:41:35 N8100-2488Y smartd[1625]: Device: /dev/ada1, opened
Jul 8 22:41:35 N8100-2488Y smartd[1625]: Device: /dev/ada1, WDC WD2500AAKX-75U6AA0, S/N:WD-WCC2F00*****, WWN:5-0014ee-**1d**d*7, FW:19.01H19, 250 GB
Jul 8 22:41:35 N8100-2488Y smartd[1625]: Device: /dev/ada1, found in smartd database 7.3/5528: Western Digital Blue
Jul 8 22:41:35 N8100-2488Y smartd[1625]: Device: /dev/ada1, no Attribute 231, ignoring -R 231
Jul 8 22:41:35 N8100-2488Y smartd[1625]: Device: /dev/ada1, is SMART capable. Adding to "monitor" list.
おー👏
差替えた HDD は、この時点ではチャンと OS 上で認識してくれていたので、ZFS のリビルドを施工する。
<ぼそ>-R 231 が無効って言われてるのは後回しでおねしゃすm(__)mぼそ>
作業は全て wheel グループに所属してるアカウントで root 権限で操作の事
# zpool status -v
pool: ZFS
state: DEGRADED
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
scan: resilvered 2.65M in 00:00:04 with 0 errors on Thu Jan 1 00:00:21 1970
config:
NAME STATE READ WRITE CKSUM
ZFS DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ada0p4 ONLINE 0 0 0
ada1p4 UNAVAIL 0 0 0 cannot open
ada2p4 ONLINE 0 0 0
ada3p4 ONLINE 0 0 0
既に差替えた側の HDD は zero で GPT エリアとか綺麗サッパリと消されていたので、他の生きている HDD から GPT テーブルを見ながら構築してみる。
# gpart show ada3
=> 40 488397088 ada3 GPT (233G)
40 532480 1 efi (260M)
532520 1024 2 freebsd-boot (512K)
533544 4194304 3 freebsd-swap (2.0G)
4727848 483669280 4 freebsd-zfs (231G)
何故 ada0 じゃないかってのは、野暮な事は聴くんじゃないよw
# gpart create -s gpt ada1
ada1 created
# gpart add -i 1 -t efi -b 40 -s 260M ada1
ada1p1 added
# gpart add -i 2 -t freebsd-boot -s 512k ada1
ada1p2 added
# gpart add -i 3 -t freebsd-swap -s 2g ada1
ada1p3 added
# gpart add -i 4 -t freebsd-zfs ada1
ada1p4 added
完成したか一応確認を💦
# gpart show ada1
=> 40 488397088 ada1 GPT (233G)
40 532480 1 efi (260M)
532520 1024 2 freebsd-boot (512K)
533544 4194304 3 freebsd-swap (2.0G)
4727848 483669280 4 freebsd-zfs (231G)
テーブルが整ったのでリプレイス開始!
# zpool replace ZFS ada1p4
ここは ZFS のプール名 パーティション ってな具合で記述する事。
リプレイスが頑張っとるか偵察してみるw
# zpool status -v ZFS
pool: ZFS
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 Mon Jul 8 23:42:42 2024
47.8G / 65.4G scanned at 388M/s, 11.1G / 65.0G issued at 90.1M/s
2.69G resilvered, 17.04% done, 00:10:13 to go
config:
NAME STATE READ WRITE CKSUM
ZFS DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ada0p4 ONLINE 0 0 0
replacing-1 DEGRADED 0 0 0
ada1p4/old UNAVAIL 0 0 0 cannot open
ada1p4 ONLINE 0 0 0 (resilvering)
ada2p4 ONLINE 0 0 0
ada3p4 ONLINE 0 0 0
二回目の偵察
# zpool status -v ZFS
pool: ZFS
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 Mon Jul 8 23:42:42 2024
47.8G / 65.4G scanned at 312M/s, 13.4G / 65.0G issued at 87.6M/s
3.26G resilvered, 20.64% done, 00:10:03 to go
config:
NAME STATE READ WRITE CKSUM
ZFS DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ada0p4 ONLINE 0 0 0
replacing-1 DEGRADED 0 0 0
ada1p4/old UNAVAIL 0 0 0 cannot open
ada1p4 ONLINE 0 0 0 (resilvering)
ada2p4 ONLINE 0 0 0
ada3p4 ONLINE 0 0 0
三回目の偵察(間隔遅っ)
# zpool status -v ZFS
pool: ZFS
state: ONLINE
scan: resilvered 16.1G in 00:13:12 with 0 errors on Mon Jul 8 23:55:54 2024
config:
NAME STATE READ WRITE CKSUM
ZFS ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ada0p4 ONLINE 0 0 0
ada1p4 ONLINE 0 0 0
ada2p4 ONLINE 0 0 0
ada3p4 ONLINE 0 0 0
errors: No known data errors
ざっくり完了🎊🎉👏
ada1 を置き換えた例となったが、不具合発生時は冷静に対応しんちゃいよ。
さもなきゃ、治るもんも治らんくなりよるけん✌
swap パーティションの処理
boot 時、HDD 差替え直後に swap のパーティションが無いって文句言われていたのだが、この作業完了後に母体を通常再起動(計画外w)を行ったら、出なくなったけんそういうもんなんじゃろな💦
ってか、/etc/fstab に記述有ったよのぉ🤪
Jul 8 22:41:31 N8100-2488Y kernel: swapon: /dev/ada1p3: No such file or directory
ミッションコンプリート(か)
これで ZFS で HDD がめげた時の対処法を、忘備録的に書いてみたが、いくつか課題は残ってる(と思う)。
心残り
efi のブートイメージは区画を作ったダケで一切、手を入れてれないトコ。
多分、mount_msdosfs で他の HDD をマウントして cp -a 位でだいじょうばない?
おまけ🥰
ada0: <Maxtor 6B250S0 BANC1BM0> ATA-7 SATA 1.x device
ada1: <WDC WD2500AAKX-75U6AA0 19.01H19> ATA8-ACS SATA 3.x device
ada2: <Hitachi HDP725025GLA380 GM2OA52A> ATA8-ACS SATA 2.x device
ada3: <Hitachi HDT725025VLA380 V5DOA52A> ATA-7 SATA 2.x device
お粗末様でしたm(__)m