ZFSのディスク入れ替え

また別のディスクが死ぬ。もう全体的にディスクが寿命なのかもしれない。
1回はSATAケーブルをクニュクニュして指し直したら直ったのでまあ気のせいかなとなったのだけど、怪しいなあとzpool scrubをかけたら、すぐに同じディスクが今度はCKSUMエラーを吐いてDEGRADEDになってたので、もうだめだとなる。

zpool scrub直後でまた死んだ時のエラー画面

  pool: tank
 state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
	Sufficient replicas exist for the pool to continue functioning in a
	degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
	repaired.
  scan: scrub repaired 2.22M in 14:41:53 with 0 errors on Sat Apr 15 02:00:55 2023
config:

	NAME                                         STATE     READ WRITE CKSUM
	tank                                         DEGRADED     0     0     0
	  raidz1-0                                   DEGRADED     0     0     0
	    ata-ST8000VN0022-2EL112_ZA196HJA         ONLINE       0     0     0
	    ata-ST8000VN0022-2EL112_ZA17B2GK         ONLINE       0     0     0
	    ata-ST8000VN004-2M2101_WKD06BMA          ONLINE       0     0     0
	    ata-ST8000VN0022-2EL112_ZA196HT7         ONLINE       0     0     0
	    ata-ST8000VN0022-2EL112_ZA1960WD         FAULTED     84     0     4  too many errors
	    ata-ST8000VN004-2M2101_WKD04ZFV          ONLINE       0     0     0
	cache
	  nvme-INTEL_SSDPEKKW256G8_BTHH81951F1W256B  ONLINE       0     0     0

新しいディスクに入れ替えた直後の画面。by-idのlabelで認識させているので当然再認識は自動ではされない。

  pool: tank
 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: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub repaired 2.22M in 14:41:53 with 0 errors on Sat Apr 15 02:00:55 2023
config:

	NAME                                         STATE     READ WRITE CKSUM
	tank                                         DEGRADED     0     0     0
	  raidz1-0                                   DEGRADED     0     0     0
	    ata-ST8000VN0022-2EL112_ZA196HJA         ONLINE       0     0     0
	    ata-ST8000VN0022-2EL112_ZA17B2GK         ONLINE       0     0     0
	    ata-ST8000VN004-2M2101_WKD06BMA          ONLINE       0     0     0
	    ata-ST8000VN0022-2EL112_ZA196HT7         ONLINE       0     0     0
	    12282997723599972799                     UNAVAIL      0     0     0  was /dev/disk/by-id/ata-ST8000VN0022-2EL112_ZA1960WD
	    ata-ST8000VN004-2M2101_WKD04ZFV          ONLINE       0     0     0
	cache
	  nvme-INTEL_SSDPEKKW256G8_BTHH81951F1W256B  ONLINE       0     0     0

これから、以下のコマンドを実行してZFS poolに認識させる。一つ前のディスク交換のときにうっかり変なパーティションを残したまま接続させてしまって痛い目を見たので厳重に消しておく。(一度zpoolに取り込まれると、消そうがなんだろうがもとのパーティションを再生してしまうので絶対に直せなくなる)

dd if=/dev/zero of=/dev/disk/by-id/{new_disk_id} bs=1G count=1
fdisk /dev/disk/by-id/{new_disk_id}
# 中でg→wを押してgpt partation tableだけを作成する
sudo zpool replace tank 12282997723599972799 {new_disk_id}

認識させた直後の画面。resliverが自動で走る。だいたい完了までに1.5日くらいかかる(Seagate IronWolf 8TB)

  pool: tank
 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 Sat Apr 15 08:59:53 2023
	977M scanned at 140M/s, 17.7M issued at 2.53M/s, 39.7T total
	0B resilvered, 0.00% done, no estimated completion time
config:

	NAME                                         STATE     READ WRITE CKSUM
	tank                                         DEGRADED     0     0     0
	  raidz1-0                                   DEGRADED     0     0     0
	    ata-ST8000VN0022-2EL112_ZA196HJA         ONLINE       0     0     0
	    ata-ST8000VN0022-2EL112_ZA17B2GK         ONLINE       0     0     0
	    ata-ST8000VN004-2M2101_WKD06BMA          ONLINE       0     0     0
	    ata-ST8000VN0022-2EL112_ZA196HT7         ONLINE       0     0     0
	    replacing-4                              DEGRADED     0     0     0
	      12282997723599972799                   UNAVAIL      0     0     0  was /dev/disk/by-id/ata-ST8000VN0022-2EL112_ZA1960WD
	      ata-ST8000VN004-2M2101_WSD9LC9T        ONLINE       0     0     0
	    ata-ST8000VN004-2M2101_WKD04ZFV          ONLINE       0     0     0
	cache
	  nvme-INTEL_SSDPEKKW256G8_BTHH81951F1W256B  ONLINE       0     0     0

errors: No known data errors