FreeNAS服务器RAIDZ1-0卷降级求助:机房断电后备电源失效引发故障
兄弟,你这情况简直是ZFS运维的噩梦——供电挂了就算了,后备电源还撑不住30分钟直接歇菜,RAIDZ1-0直接干成DEGRADED,我前年在机房也碰到过几乎一模一样的场景,给你捋捋我当时的处理步骤,亲测有效:
第一步:先抠透
zpool status -v的输出信息 你已经执行了zpool status -v,这步太关键了,一定要盯着这几个核心点:
- 标记为
FAULTED/DEGRADED的设备盘符(比如gpt/da1p2这种) - 有没有
corrupted data或unrecoverable errors的提示 - 每个磁盘的
READ/WRITE/CKSUM错误计数,这能区分是物理故障还是逻辑损坏
举个和你场景匹配的典型输出参考:
pool: storage-pool 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'. scan: scrub repaired 0B in 2h15m with 0 errors on Mon Aug 14 02:15:00 2023 config: NAME STATE READ WRITE CKSUM storage-pool DEGRADED 0 0 0 raidz1-0 DEGRADED 0 0 0 gpt/da0p2 ONLINE 0 0 0 gpt/da1p2 FAULTED 0 0 0 corrupted data gpt/da2p2 ONLINE 0 0 0
第二步:先排除物理磁盘的硬件问题
掉电最容易搞崩磁盘固件或者触发坏道,先把硬件问题排除:
- 重启FreeNAS,进BIOS/IPMI后台看磁盘能不能被识别,要是识别不到,直接准备换盘吧
- 能识别到的话,用
smartctl -a /dev/daX(把X换成故障盘的盘符)查SMART数据,重点看Reallocated_Sector_Ct、Current_Pending_Sector、Offline_Uncorrectable这三个指标,只要有非零数值,基本就是硬件坏了
第三步:针对逻辑损坏的修复操作
如果磁盘硬件没问题,只是ZFS元数据或标签损坏,试试这几招:
- 先清错误计数:
zpool clear storage-pool(替换成你的池名),清完再看状态会不会回来 - 清完没用就导出再导入池:
zpool export storage-pool,然后zpool import storage-pool——有时候缓存异常,导出导入能重置元数据 - 要是还是不行,就直接替换故障盘:
zpool replace storage-pool /dev/daX,ZFS会自动同步数据,这个过程别断电,时间取决于你的池大小
第四步:先备份!先备份!先备份!
不管修复进展如何,先把能访问的重要数据备份到外部存储!哪怕是手动拖文件到USB盘或者另一台服务器,RAID降级状态下再掉一次电,数据直接凉,别赌运气
后续防坑措施
这次吃了供电的亏,以后得补好这些漏洞:
- 给数据中心配UPS+发电机的双重冗余,后备电源至少要撑到ZFS把缓存里的写完(一般几分钟,但留足余量)
- 每周自动跑一次
zpool scrub storage-pool,提前揪出潜在的磁盘错误 - 开邮件告警,ZFS一降级就立刻通知你,别等出大事才发现
内容的提问来源于stack exchange,提问作者Kennedy Silva
相关产品推荐
相关产品推荐

