ZFS raidzのHDD交換(ホットプラグ)

ZFS raidz/raidz3で使用しているHDDは、TeraStation時代に購入して長年使ってきたSeagate ST8000DM004。安価になったので、使っている人も多いかも。使い始めて3年くらいだろうか。scrubしてみるとエラーが発生している。amazonで1台14,000円程度で新しく購入し、入れ替えてみた。

エラーを確認して交換するには次による。

  1. 「$ ls -l /dev/disk/by-id」でデバイスのIDとデバイス名の対を確認しておく。
  2. 「# zpool scrub プール名」でスキャンを開始する。
  3. 「# zpool status」でスキャンが終わっていることを確認し、エラー(READ、WRITE、CKSUMの値)を確認。
  4. 「# smartctl /dev/sdX -i -A」でreallocated sector countを確認。
  5. 手順3もしくは4の数値が0でなければエラーが発生しているものと判断し、HDD交換を開始。エラーがなければここで終了。
  6. 「# zpool offline プール名 デバイスID」でHDDをプールから取り外す。
  7. 「# echo 1 > /sys/block/sdX/device/delete」で当該HDDを取り外す。
  8. シリアルケーブルとHDDを取り外し、新たなHDDと入れ替える。
  9. 「# parted /dev/sdX」でパーティションを設定する。
  10. 「$ ls -l /dev/disk/by-id」で新たなデバイスのIDとデバイス名の対を確認しておく。
  11. 「# zpool replace プール名 offlineにした旧デバイスID 新たに入れ替える新デバイスID」でHDDの入れ替え設定を行う。
  12. 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も早く完了している。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です