我无法从 zfs 池中删除“坏”磁盘

我无法从 zfs 池中删除“坏”磁盘
  1. 池中有 2 个磁盘 /dev/sde /dev/sdf

  2. 磁盘 /dev/sde 已损坏,我将其从池中排除并用新磁盘替换。 raid 已降级。

  3. 将新的 /dev/sde 磁盘添加到池后,我得到了以下配置:

 zpool status
  pool: rpool
 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 0h25m with 0 errors on Wed Sep  2 18:32:39 2020
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            old     UNAVAIL      0     0     0
            sdf2    ONLINE       0     0     0
          sde2      ONLINE       0     0     0

替换、离线、删除“旧”总是会出现错误:

zpool replace rpool old

cannot open 'old': no such device in /dev

must be a full path or shorthand device name

在文件 /etc/zfs/zpool.cache 中,我看到驱动器 /dev/sde2/old

如何在不重新启动服务器和删除阵列(阵列为/)的情况下移除旧磁盘?


root@v05:/# zpool replace rpool old sde2
invalid vdev specification
use '-f' to override the following errors:
/dev/sde2 is part of active pool 'rpool'

root@v05:/# zpool replace -f rpool old sde2
invalid vdev specification
the following errors must be manually repaired:
/dev/sde2 is part of active pool 'rpool'

sde 已经是 rpool 成员。

需要从池中删除旧(/dev/sde/old)磁盘。

添加新磁盘时没有错误,一切都按照您所写的进行。

答案1

问题解决了。

韓財

找到 /dev/sde/old 设备的标识 15497986214547762579 并删除:

zpool 离线 -f rpool 15497986214547762579

zpool 分离 rpool 15497986214547762579

答案2

您可能在添加新磁盘时犯了一个错误:您发出了zpool add rpool <newdisk>,但您必须代替故障磁盘。换句话说,您必须:

  • zpool replace rpool <olddisk> <newdisk>
  • zpool detach rpool <olddisk>; zpool attach rpool sdfsdf是另一条镜子腿)。

请注意我如何编写的attach,而您可能add在 zpool 命令中使用了。

如何修复此问题?使用 ZFS 0.7.x 时,您运气不佳,因为添加后无法删除任何数据 vdev。使用ZFS 0.8.x 你可以删除它因此,如果您正在运行 ZFS 0.7.x,则需要首先更新到 0.8.x。然后,您必须发出上述命令来替换故障磁盘。

答案3

我按照 Oracle 文档进行了磁盘替换。现在我有以下命令输出:

root@v05:/# zpool 替换 rpool 旧 sde2 无效的 vdev 规范使用“-f”覆盖以下错误:/dev/sde2 是活动池“rpool”的一部分

root@v05:/# zpool replace -f rpool old sde2 无效的 vdev 规范必须手动修复以下错误:/dev/sde2 是活动池“rpool”的一部分

相关内容