ZFS I/O 错误,导入期间出现内核崩溃

ZFS I/O 错误,导入期间出现内核崩溃

我正在运行带有 4 个数据 2TB SSD 的 raidz1-0(RAID5)设置。

午夜时分,我的 2 个数据盘不知为何出现了一些 I/O 错误(来自 /var/log/messages)。

当我早上调查时,zpool 状态显示以下内容:

 state: SUSPENDED
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://zfsonlinux.org/msg/ZFS-8000-HC
  scan: resilvered 1.36T in 0 days 04:23:23 with 0 errors on Thu Apr 20 21:40:48 2023
config:

        NAME        STATE     READ WRITE CKSUM
        zfs51       UNAVAIL      0     0     0  insufficient replicas
          raidz1-0  UNAVAIL     36     0     0  insufficient replicas
            sdc     FAULTED     57     0     0  too many errors
            sdd     ONLINE       0     0     0
            sde     UNAVAIL      0     0     0
            sdf     ONLINE       0     0     0

errors: List of errors unavailable: pool I/O is currently suspended 

我尝试这样做zpool clear,但一直收到错误消息cannot clear errors for zfs51: I/O error

随后,我尝试重新启动以查看问题是否能解决 - 但存在关机问题。

结果,我不得不进行硬重置。系统重新启动时,池没有被导入。

现在执行的操作zpool import zfs51会返回给我:

        Destroy and re-create the pool from
        a backup source.

即使输入-f-F,我也收到相同的错误。奇怪的是,当我输入 时zpool import -F,它显示池和所有磁盘都在线:

   pool: zfs51
     id: 12204763083768531851
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        zfs51       ONLINE
          raidz1-0  ONLINE
            sdc     ONLINE
            sdd     ONLINE
            sde     ONLINE
            sdf     ONLINE

然而,当通过池名称导入时,会出现同样的错误。

即使尝试使用-fF,也不起作用。

在 Google 上搜索并阅读了各种不同的 ZFS 问题后,我偶然发现了-Xflag 命令(可以解决用户面临的类似问题)。

我继续运行zpool import -fFX zfs51,命令似乎花费了很长时间。但是,我注意到 4 个数据磁盘具有很高的读取活动,我认为这是由于 ZFS 读取整个数据池造成的。但 7 小时后,磁盘上的所有读取活动都停止了。

我还注意到 ZFS 内核恐慌消息:

 kernel:PANIC: zfs: allocating allocated segment(offset=6859281825792 size=49152) of (offset=6859281825792 size=49152)

目前,该命令zpool import -fFX zfs51似乎仍在运行(终端没有将输入返回给我)。但是,磁盘中似乎没有任何活动。zpool status在另一个终端中运行似乎也挂起了。

  1. 我不知道现在该做什么——我应该继续等待(自从我开始导入命令已经快 14 个小时了),还是应该再做一次硬重置/重启?

  2. 另外,我读到我实际上可以将池以只读形式导入(zpool import -o readonly=on -f POOLNAME)并挽救数据 - 有人可以对此提供建议吗?

  3. 我猜测我的两个数据盘都可能被损坏了(不知何故同时损坏)——这种情况有多大可能,或者可能是由于 ZFS 问题造成的?

答案1

这是一个迟来的答案,但希望对其他人有用:当磁盘被错误地报告为时,请尝试通过或UNAVAIL导入 ZFS 。例如:pathid

zpool import tank -d /dev/disk/by-path

zpool import tank -d /dev/disk/by-id

相关内容