Xfs_repair修复步骤及注意事项
文档地址:
https://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/xfs-repair.html
1.可能造成损坏的原因:
1)硬件错误:常见的硬件设备错误或者磁盘越来越大
2)较小程度上可能是文件系统的bug
3)父目录损坏的inode节点无法修复
2.Xfs_check 运行xfs_db脚本进行文件系统检查,扫描所有元数据,检查是否存在不一致。
3.Xfs_repair分成七个阶段进行扫描和修复,每个阶段会根据上一个阶段的结果判断可能的错误。
-
阶段一:
a.寻找、验证和修复超级块。
b.如果没找到超级块,修复会停止。 -
阶段二:
a.检查AG头部结构(AGI、AGF和AGFL),并扫描AGF和AGI btree
3)阶段三:
a. 利用阶段二中扫描出来的AGI btree,扫描索引节点树,处理未链接列表以查找已经删除的索引节点,并查找可能丢失的索引节点集。
b. 遍历所有找到的索引节点,记录使用的文件系统块(或扩展区)。
c.对于目录类型的inode,扫描目录结构,试图查找更多丢失的inode
d.所有坏的inode都会被丢弃,包括不可恢复的目录。 -
阶段四:
a.再次扫描inode扩展区,覆盖已用数据块的inode都会被丢弃。
Scan inode extents again. Any inode with an extent covering used data is trashed. -
阶段五:
a. 不管发现什么错误,都会重建AG头部结构,包括AGI btree, AGF btree和AGFL -
阶段六:
a. 到了阶段六,文件系统基本修复,至少可以挂载
b. 扫描分析所有数据
a) 重建所有可恢复的目录。
b)重建丢失的根目录。
c) 所有目录中的inode都标记为reached(到达)
d) 最后,所有未到达的inode都会呗放到lost+found里 -
阶段七:
a.对阶段六中收集到的所有nlink 节点进行校正
这一条需要注意:
https://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/ch11s14.html