ZFS 修复不正确的驱动器更换

ZFS 修复不正确的驱动器更换

我最近检测到我的 ZFS raid-5 阵列中的硬盘出现故障。所以我买了一个硬盘,关闭并更换了故障硬盘。恐怕我应该先从池中移除故障的驱动器。它现在正在造成大麻烦……

      pool: maxtorage
     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: http://zfsonlinux.org/msg/ZFS-8000-4J
      scan: scrub repaired 0B in 7h10m with 0 errors on Sun Jul 11 07:34:21 2021
    config:
    
    NAME                     STATE     READ WRITE CKSUM
    maxtorage                DEGRADED     0     0     0
      raidz1-0               DEGRADED     0     0     0
        sdd                  ONLINE       0     0     0
        sdf                  ONLINE       0     0     0
        3022016455510322769  UNAVAIL      0     0     0  was /dev/sda1
        sde                  ONLINE       0     0     0
    cache
      sdg                    ONLINE       0     0     0
    
    errors: No known data errors

如果我尝试替换:

$ sudo zpool replace maxtorage 3022016455510322769 /dev/sdc
invalid vdev specification
use '-f' to override the following errors:
/dev/sdc1 is part of active pool 'maxtorage'

zpool labelclear -f /dev/sdc1 对我的情况没有任何作用

尝试删除 sdc(1)

$ sudo zpool remove maxtorage /dev/sdc1
cannot remove /dev/sdc1: no such device in pool
$ sudo zpool remove maxtorage /dev/sdc
cannot remove /dev/sdc: no such device in pool
$ 

我现在很为难,不知道如何修理我的游泳池。有人能给我一些建议吗?

ZFS 文档说明(zfsonlinux.org/msg/ZFS-8000-4J):

如果该设备已被同一物理插槽中的另一个磁盘替换,则可以使用“zpool replace”命令的单个参数来替换该设备:

zpool 替换测试 c0t0d1

一旦发出替换命令,ZFS 就会开始将数据迁移到新设备。重新同步完成后,原始设备(如果与替换设备不同)将被移除,池将恢复为 ONLINE 状态。

$ sudo zpool replace maxtorage /dev/sda
cannot open '/dev/sda': Médium nebylo nalezeno
internal error: Médium nebylo nalezeno
Neúspěšně ukončen (SIGABRT)

(未找到驱动器,执行失败)

答案1

所以我最终想通了。主要问题是在我的池中使用驱动器号(sda、sdb……)。只要你插入另一个驱动器,这些(可以)随时更改。这对我帮助很大https://serverfault.com/a/953026

#zpool export maxtorage

#zpool import -d /dev/disk/by-id maxtorage

编辑/etc/default/zfs以使用 /dev/disk/by-id

ls -la /dev/disk/by-id/

找到新驱动器的 IDwwn-0x5000c500c8599b96

#zpool export maxtorage

必须强制(-f)标签清除,因为它表示新驱动器可能是池的一部分

相关内容