我有一个文件系统错误影响一些非关键的文件的XFS文件系统。 我想修理它; 企业希望继续与这些错误一起运行。 不修复具有“结构需要清理”错误的XFS文件系统的已知风险是什么?
企业希望避免将需要的可能冗长的维护窗口。 我始终认为文件系统的腐败是不能容忍的。 该业务会问我除了我自己的FUD之外的理由来解决它。
我已经有意见了; 我需要的不仅仅是这些。
答案应该有证据支持(轶事是可以的,但是只有当他们有第一手资料的时候,我们不需要“有人告诉我”的答案)。 专家的意见是可以的,比如来自XFS FAQ的回答,或者来自熟悉XFS内部的开发者的回答。
请不要有庸俗的意见。 我正在寻找证据,可靠的轶事和XFS专家的意见。
否定的答案(例如“在类似的情况下,我跑了一年,没有遇到严重的问题)是可以的。
文件系统是5.4T,使用3.9T(72%)。
有46.6M文件。
有55个损坏的目录导致应用程序(如ls和find报告“结构需要清理”,如本XFS FAQ条目中所述 :
问:我看到应用程序返回错误990或“结构需要清理”,出了什么问题?
错误990代表EFSCORRUPTED,这通常意味着XFS检测到文件系统元数据问题,并closures文件系统以防止进一步损坏。 另外,从2006年6月份起,我们从EFSCORRUPTED / 990转换到使用EUCLEAN,“结构需要清洁”。 原因可能是几乎所有的东西,不幸的是 – 文件系统,虚拟内存pipe理器,卷pipe理器,设备驱动程序或硬件。 最初发生时应该有一个详细的控制台消息。 这些消息提供了一些重要的信息给开发人员提供了一个问题被发现的最早的点。 它在那里保护你的数据。 您可以使用xfs_repair来解决问题(在卸载文件系统的情况下)。
logging到syslog XFS错误如下所示:
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 Ws'#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.
这些错误重复多次,但只有两个块。
文件系统应该真正离线和检查/修复,至less有两个很好的理由:
ls他们,或创build/删除他们的文件。 一些build议:
xfs_repair ,可以使用xfs_metadump转储所有文件系统元数据,并在其上运行“虚拟” xfs_repair 。 这将使您有可能观察xfs_repair将在您的文件系统中执行哪些操作 您应该修复文件系统,因为这可能表示存储arrays或硬件存在底层问题。
腾出时间进行停机或维护…或者提出更好的冗余措施。
我现在要检查硬件的健康状况。
假设您使用的是企业Linux操作系统(而不是Arch Linux) ,那么可以使用一个创造性的解决scheme。 您可以使用Linux HotCopy实用程序/驱动程序的当前版本,并采取文件系统的块级快照。 用这样的东西来挂载这个文件系统:
mount -t xfs -o nouuid,norecovery /dev/hcp1 /some-mountpoint
从那里,你可以在快照上运行xfsrepair来感受问题的严重性,问题列表和时间testing。
一旦完成,卸载并销毁快照。