下のような RAID1 相当のミラー。

# camcontrol devlist
<TOSHIBA MD05ACA800 GX0B>          at scbus0 target 0 lun 0 (pass0,ada0)
<ST8000DM004-2CX188 0001>          at scbus1 target 0 lun 0 (pass1,ada1)

# zpool status
  pool: zpool1
 state: ONLINE
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 Sep 21 13:23:42 2019
        447G scanned at 0/s, 41.9M issued at 0/s, 6.94T total
        26.4M resilvered, 0.00% done, no estimated completion time
config:

        NAME                            STATE     READ WRITE CKSUM
        zpool1                          ONLINE       0     0     0
          mirror-0                      ONLINE       0     0     0
            diskid/DISK-A               ONLINE       0     0     0
            diskid/DISK-B               ONLINE       0     0    11

片肺になったので DISK-B のHDDを新調して換装して zpool online zpool1 diskid/DISK-B した。

resilver 前は smartctl -a /dev/ada0(DISK-A) したのだけれど、異常は無かった。
その後 resilver 中に何度もリブートしてしまう。
今一度 smartctl してみると DISK-A のほうにもエラーが記録されていました。。。
定期的な scrub はしていませんでした。

これではいつまでたっても復旧できないので ddrescue してみることに。

$ zfs export zpool1
$ time ddrescue --force /dev/ada0 /dev/ada1
GNU ddrescue 1.24
Press Ctrl-C to interrupt
    ipos:    5453 GB, non-trimmed:    65536 B,  current rate:    141 MB/s
    opos:    5453 GB, non-scraped:        0 B,  average rate:    169 MB/s
non-tried:    2547 GB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:    5453 GB,   bad areas:        0,        run time:  8h 57m 49s
pct rescued:   68.15%, read errors:        1,  remaining time:      5h 15m
                              time since last successful read:          0s
Copying non-tried blocks... Pass 1 (forwards)
    ipos:    5284 GB, non-trimmed:        0 B,  current rate:       0 B/s
    opos:    5284 GB, non-scraped:        0 B,  average rate:    145 MB/s
non-tried:        0 B,  bad-sector:     4096 B,    error rate:      32 B/s
  rescued:    8001 GB,   bad areas:        1,        run time: 15h 18m 32s
pct rescued:   99.99%, read errors:        9,  remaining time:         n/a
                              time since last successful read:      1m 37s
Finished
ddrescue --force /dev/ada0 /dev/ada1  140.37s user 811.88s system 1% cpu 15:18:33.03 total
$ reboot # 念のため /dev/ada0 を外す
$ zpool import
  pool: zpool1
    id: 111111111111111111
  state: DEGRADED
status: One or more devices were being resilvered.
action: The pool can be imported despite missing or damaged devices.  The
        fault tolerance of the pool may be compromised if imported.
config:

        zpool1                      DEGRADED
          mirror-0                  DEGRADED
            diskid/DISK-B           ONLINE
            12312312312312312312    OFFLINE
$ zpool import zpool1

僅かに read errors は出てますが、無事に新しいHDDに移せました。
まだ片肺ではありますが。

いつも思うのですが シーケンシャルリード 偉大です。

p.s. 2年前の同時期に購入した MD05ACA800 6台中3台が同時期に壊れました。。。
2台は上、もう1台は全く別環境なのですが。。。

追記 2019-10-08T16:41:39+09
ST8000DM004 はヘビーロード中の片肺から、mirror(RAID1相当)に戻すのに、何度も失敗しました。
数日間連続の負荷に耐えられないようです。。。複数台確認。
WD Red と Gold は問題なく動作しました。

コメントする

perl adv
perl adv