我有一个 XFS 文件系统,其中的文件系统错误影响了一些非关键文件。我想修理它;企业希望继续运行这些错误。 不修复出现“结构需要清理”错误的 XFS 文件系统的已知风险是什么?
企业希望避免可能需要的冗长维护窗口。我一直坚信不能容忍文件系统损坏。除了我自己的 FUD 之外,企业会问我修复它的原因。
需要什么样的答案
我已经有意见了;我需要的不止这些。
答案应该有证据支持(轶事是可以的,但前提是它们是第一手记录的。我们不需要“有人告诉我”的答案)。 专家意见是可以的,例如来自 XFS FAQ 的回答,或者来自熟悉 XFS 内部的开发人员的回答)。
请不要外行意见。我正在寻找证据、可靠的轶事和XFS 专家意见。
否定答案(例如“在类似情况下,我跑了一年,没有遇到严重问题)是可以的。
文件系统详细信息。
文件系统为 5.4T,使用了 3.9T (72%)。
有 46.6M 文件。
错误详情
有 55 个损坏的目录会导致应用程序报告“结构需要清理”,ls
如此XFS 常见问题条目中所述:find
问:我看到应用程序返回错误 990 或“结构需要清理”,这是怎么回事?
错误 990 代表 EFSCORRUPTED,这通常意味着 XFS 检测到文件系统元数据问题并已关闭文件系统以防止进一步损坏。此外,大约从 2006 年 6 月开始,我们从 EFSCORRUPTED/990 转换为使用 EUCLEAN,“结构需要清洁”。不幸的是,原因几乎可以是任何东西——文件系统、虚拟内存管理器、卷管理器、设备驱动程序或硬件。最初发生这种情况时应该有详细的控制台消息。这些消息包含重要信息,向开发人员提供有关最早检测到问题的提示。它可以保护您的数据。您可以使用 xfs_repair 来解决问题(卸载文件系统)。
记录到所有的 XFS 错误syslog
如下所示:
XFS (sdb): Metadata corruption detected at xfs_inode_buf_verify+0x6d/0xe0 [xfs], block 0x50
XFS (sdb): Unmount and run xfs_repair
XFS (sdb): First 64 bytes of corrupted metadata buffer:
ffff88073fa79000: 49 4e 41 ff 02 01 00 00 00 00 01 f6 00 00 01 f7 INA.............
ffff88073fa79010: 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 ed ................
ffff88073fa79020: 59 1b af d2 09 62 5c 17 4f e8 f8 73 00 00 00 00 Y....b\.O..s....
ffff88073fa79030: 57 e0 73 b2 27 23 63 cd 00 00 00 00 00 00 00 2f W.s.'#c......../
XFS (sdb): metadata I/O error: block 0x50 ("xfs_trans_read_buf_map") error 117 numblks 16
XFS (sdb): xfs_imap_to_bp: xfs_trans_read_buf() returned error 117.
这些错误重复多次,但仅针对两个块。
文件系统应该真正脱机并检查/修复,至少有两个很好的理由:
ls
使用它们,也不能在其中创建/删除文件。一些建议:
xfs_repair
,您可以使用转储所有文件系统元数据xfs_metadump
并在它们上运行“虚拟”xfs_repair
。这将使您有可能观察xfs_repair
将在您的文件系统上做什么您应该修复您的文件系统,因为它可能表明存储阵列或硬件存在潜在问题。
为停机或维护腾出时间……或为更好的冗余做准备。
此时我将检查硬件的运行状况。
假设您使用的是企业 Linux 操作系统(而不是 Arch Linux),则有一个创造性的解决方案可用。您可以使用Linux HotCopy 实用程序/驱动程序的当前版本,并为您的文件系统拍摄块级快照。使用以下内容挂载该文件系统:
从那里,您可以
xfsrepair
在快照上运行并了解问题的严重性、问题列表和时间测试。完成后卸载并销毁快照。