我正在运行带有 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 问题后,我偶然发现了-X
flag 命令(可以解决用户面临的类似问题)。
我继续运行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
在另一个终端中运行似乎也挂起了。
我不知道现在该做什么——我应该继续等待(自从我开始导入命令已经快 14 个小时了),还是应该再做一次硬重置/重启?
另外,我读到我实际上可以将池以只读形式导入(
zpool import -o readonly=on -f POOLNAME
)并挽救数据 - 有人可以对此提供建议吗?我猜测我的两个数据盘都可能被损坏了(不知何故同时损坏)——这种情况有多大可能,或者可能是由于 ZFS 问题造成的?
答案1
这是一个迟来的答案,但希望对其他人有用:当磁盘被错误地报告为时,请尝试通过或UNAVAIL
导入 ZFS 。例如:path
id
zpool import tank -d /dev/disk/by-path
zpool import tank -d /dev/disk/by-id