外观
ZFS 池降级
适用范围
zpool status 显示某个池是 DEGRADED(或更严重的 FAULTED/UNAVAIL),通常伴随 PVE 的邮件通知,或者 Web UI 存储视图上出现感叹号。
开始排查前
先弄清楚两件事,决定了接下来操作的紧迫程度:
- 还剩多少冗余余量:mirror 坏了一块(还剩一块能用)和 raidz2 坏了两块(只剩最后一块容错空间)是完全不同的紧急程度,后者再坏一块就是全损。
- 现在的备份状态:最近一次成功备份是什么时候,覆盖了这个池上的哪些客户机。
冗余用尽期间,不要用这个池做额外的高风险操作
池处于 DEGRADED 状态,意味着容错余量已经用掉了一部分。这段时间应该:暂停非必要的大规模写入或迁移任务,优先确保现有备份可用,而不是想着"反正还能跑,先用它做点别的"。
排查步骤
1. 拿到完整的状态输出并保存下来
sh
zpool status -v <pool名>先把这段输出完整保存一份,后面无论是自己排查还是求助都会用到。重点看三处:
- 哪个 vdev、哪块具体的盘(设备名或 GUID)处于异常状态。
- 状态是
FAULTED、UNAVAIL、OFFLINE还是REMOVED——含义不完全一样。 errors:那一行是不是No known data errors——如果不是,说明已经出现了数据层面的错误,不只是设备层面的问题。
2. 区分「盘真的坏了」还是「暂时性问题」
线材松动、供电不稳、背板问题都可能让 ZFS 把一块好盘误判成故障,尤其是伴随 SATA/SAS 链路重置的情况。先做只读检查,不要急着动手换盘:
sh
dmesg | grep -i -E "ata|scsi|nvme" | tail -30
smartctl -a /dev/sdXSMART 显示明显异常(重分配扇区数持续增长、Pending Sector 不为零、自检失败):基本可以确认盘确实有问题,进入步骤 4 准备换盘。
SMART 正常,但 ZFS 依然判定它故障:先检查物理连接——重新插拔 SATA/电源线(如果是热插拔背板则更方便)、换一个背板槽位或数据线。确认物理连接没问题后进入步骤 3。
3. 暂时性问题的验证方式
物理连接确认无误后,可以清除错误计数并观察是否复现:
sh
zpool clear <pool名>
zpool scrub <pool名>zpool clear 只是清空错误计数,不会改变盘本身的好坏。跑一次 scrub,如果同样的错误再次出现,说明这块盘确实有问题,应该当作硬件故障处理,而不是反复 clear 敷衍过去。
4. 确认物理盘对应关系,准备更换
换盘前必须精确核对物理盘,插错或拔错会让降级变成全损
在 mirror 只剩最后一块健康盘、或者 raidz 容错余量已经用尽的窗口期,拔错一块正常的盘,会直接导致数据彻底丢失,而不是可以恢复的降级状态。
动手之前:
- 用
lsblk、smartctl -a /dev/sdX里的序列号,和物理盘标签逐一核对,不要只凭设备名(/dev/sdX会因为重启或热插拔漂移)。 - 如果机箱有硬盘指示灯或定位功能,先确认点亮的是要换的那一块。
- 不确定的话,先在一台测试机或者用备用盘演练一遍完整的换盘流程,熟悉步骤后再对生产池动手。
完整的物理换盘、zpool replace、等待 resilver 完成的详细步骤,参考磁盘健康:SMART、ZFS scrub 与换盘流程,这里不重复。
5. 跟踪 resilver 进度
替换开始后:
sh
zpool status <pool名>会显示 resilver in progress,附带已完成的百分比和预计剩余时间。resilver 期间同样处于冗余不足或刚恢复的脆弱状态,继续避免不必要的高负载操作。
6. 没有多余盘位的情况
如果是只有两个盘位的 mirror,没有地方先插入新盘再移除旧盘,需要先 offline 故障盘、物理取出、装上新盘,再执行替换,顺序和有额外盘位时不同,同样在磁盘健康里有具体说明。
确认恢复
zpool status <pool名>显示所有 vdev 都是ONLINE。errors:一行是No known data errors。- resilver/scrub 已经完成,且完成后没有新增错误。
- 受影响的虚拟机/容器能正常开机,内部做一次基本的完整性检查(比如文件系统检查或者应用自身的校验)。
- 观察几天,确认没有新的异常状态邮件通知。
仍未解决
如果 resilver 反复失败、卡住不动,或者同一个 vdev 反复出问题,带上以下信息求助:
sh
zpool status -v <pool名>
zpool history <pool名> | tail -50
smartctl -a /dev/sdX参考如何有效求助。反复出现同类故障也可能提示背板、供电或控制器层面的系统性问题,而不是单块盘的偶发故障,值得一并排查硬件环境。