转载自华为服务支持的IO部分落盘,文件数据损坏 和避免文件系统损坏的关键参数。
问题描述
存储断链后,部分文件数据错误。
原因分析
更新一个文件,按照落盘顺序分为: 数据、JBD2日志、元数据。
需要说明的是,日志和元数据下发会等数据IO流程结束, 但是并没有要求数据IO一定下发成功。
IO闪断情况下,可能存在以下场景:
数据下发失败, 日志和元数据下发成功,从而表现出文件内容损坏的现象。
解决办法
mount磁盘时,指定data_err=abort, 保证在数据IO下发失败时,不再进行后续日志和元数据更新。
其它避免文件系统损坏的关键参数
为避免文件系统损坏,有两个挂载参数需要特别关注:mount -o
元数据异常后的处理策略
errors=panic 文件系统错误发生后,直接复位系统,复位后修复
errors=remount-ro 文件系统错误发生后,对应挂载点变为只读模式,用户可以通过卸载、修复、重新挂载恢复使用
errors=continue 文件系统错误发生后,系统继续运行,需要注意这个模式有问题扩散风险。这种模式,不推荐,也达不到预期效果。
数据下发异常后的处理策略
data_err=ignore 文件数据发生错误后,仅仅打印告警日志,系统继续运行(原生默认模式)
data_err=abort 文件数据发生错误后,abort掉jbd2日志,当触发新的元数据变更时会根据前面errors=***的配置流程处理。
网友评论