ZFS raidz/raidz3で使用しているHDDは、TeraStation時代に購入して長年使ってきたSeagate ST8000DM004。安価になったので、使っている人も多いかも。使い始めて3年くらいだろうか。scrubしてみるとエラーが発生している。amazonで1台14,000円程度で新しく購入し、入れ替えてみた。
エラーを確認して交換するには次による。
- 「$ ls -l /dev/disk/by-id」でデバイスのIDとデバイス名の対を確認しておく。
- 「# zpool scrub プール名」でスキャンを開始する。
- 「# zpool status」でスキャンが終わっていることを確認し、エラー(READ、WRITE、CKSUMの値)を確認。
- 「# smartctl /dev/sdX -i -A」でreallocated sector countを確認。
- 手順3もしくは4の数値が0でなければエラーが発生しているものと判断し、HDD交換を開始。エラーがなければここで終了。
- 「# zpool offline プール名 デバイスID」でHDDをプールから取り外す。
- 「# echo 1 > /sys/block/sdX/device/delete」で当該HDDを取り外す。
- シリアルケーブルとHDDを取り外し、新たなHDDと入れ替える。
- 「# parted /dev/sdX」でパーティションを設定する。
- 「$ ls -l /dev/disk/by-id」で新たなデバイスのIDとデバイス名の対を確認しておく。
- 「# zpool replace プール名 offlineにした旧デバイスID 新たに入れ替える新デバイスID」でHDDの入れ替え設定を行う。
- resilver(同期)が自動的に始まる。この時点で縮退運転であるが通常使用可能。
root@fileserver:~# zpool scrub
・・・数日後・・・
root@fileserver:~# zpool offline raid5 ata-ST8000DM004-2CX188_********-part2
root@fileserver:~# zpool offline raid7 ata-ST8000DM004-2CX188_********-part1
root@fileserver:~# echo 1 > /sys/block/sdb/device/delete
root@fileserver:~# dmesg
~中略~
[258365.416465] sd 1:0:0:0: [sdb] Synchronizing SCSI cache
[258365.417368] sd 1:0:0:0: [sdb] Stopping disk
[258365.984653] ata2.00: disabled
この間にHDDを入れ替える(ホットプラグ)
root@fileserver:~# dmesg
~中略~
[258550.712863] ata2: SATA link down (SStatus 0 SControl 300)
[258669.129534] ata2: softreset failed (1st FIS failed)
[258675.040871] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[258675.079935] ata2.00: ATA-10: ST8000DM004-2U9188, 0001, max UDMA/133
[258675.079939] ata2.00: 15628053168 sectors, multi 16: LBA48 NCQ (depth 32), AA
[258675.141446] ata2.00: configured for UDMA/133
[258675.141595] scsi 1:0:0:0: Direct-Access ATA ST8000DM004-2U91 0001 PQ: 0 ANSI: 5
[258675.141790] sd 1:0:0:0: Attached scsi generic sg1 type 0
[258675.141870] sd 1:0:0:0: [sdb] 15628053168 512-byte logical blocks: (8.00 TB/7.28 TiB)
[258675.141874] sd 1:0:0:0: [sdb] 4096-byte physical blocks
[258675.141881] sd 1:0:0:0: [sdb] Write Protect is off
[258675.141883] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[258675.141893] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[258675.212045] sd 1:0:0:0: [sdb] Attached SCSI disk
勝手にsdbに認識された
root@fileserver:~# parted /dev/sdb
GNU Parted 3.4
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart raidz3 1049k 1tb
(parted) mkpart raidz 1tb 7990g
(parted) p
Model: ATA ST8000DM004 (scsi)
Disk /dev/sdd: 8002GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1000GB 1000GB raidz3
2 1000GB 7990GB 6990GB raidz
今後違うHDDと入れ替えた際に容量が合わないと困るので、7990GBまでの使用に抑えている。
root@fileserver:~# zpool replace raid7 ata-ST8000DM004-2CX188_********-part1 ata-ST8000DM004-2U9188_********-part1
root@fileserver:~# zpool replace raid5 ata-ST8000DM004-2CX188_********-part2 ata-ST8000DM004-2U9188_********-part2
root@fileserver:~# zpool status
pool: raid5
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 Fri Oct 29 11:59:11 2021
159G scanned at 17.7G/s, 3.92M issued at 446K/s, 12.0T total
0B resilvered, 0.00% done, no estimated completion time
config:
NAME STATE READ WRITE CKSUM
raid5 DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ata-ST8000DM004-2CX188_********-part2 ONLINE 0 0 0
replacing-1 DEGRADED 0 0 0
ata-ST8000DM004-2CX188_********-part2 OFFLINE 0 0 1
ata-ST8000DM004-2U9188_********-part2 ONLINE 0 0 0 (resilvering)
ata-ST8000DM004-2U9188_********-part2 ONLINE 0 0 0
ata-ST8000DM005-2EH112_********-part2 ONLINE 0 0 0
errors: No known data errors
pool: raid7
state: ONLINE
scan: resilvered 5.44M in 00:00:04 with 0 errors on Fri Oct 29 11:58:57 2021
config:
NAME STATE READ WRITE CKSUM
raid7 ONLINE 0 0 0
raidz3-0 ONLINE 0 0 0
ata-ST4000VN008-2DR166_********-part1 ONLINE 0 0 0
ata-ST8000DM004-2CX188_********-part1 ONLINE 0 0 0
ata-ST8000DM004-2U9188_********-part1 ONLINE 0 0 0
ata-ST8000DM004-2U9188_********-part1 ONLINE 0 0 0
ata-ST8000DM005-2EH112_********-part1 ONLINE 0 0 0
errors: No known data errors
プールraid7は何もデータを入れていないので、resilverも早く完了している。