XFS:rm 不会终止,xfs_repair 不可能

XFS:rm 不会终止,xfs_repair 不可能

我有一个 500 GB 的磁盘,上面有一个 XFS 文件系统(编辑:操作系统位于另一个磁盘上)。在这个磁盘上,我有原始数据的多个硬链接副本形式的备份数据。每次新备份后,我都会删除包含最旧备份数据的目录。相应的rm进程有时不会终止(并且消耗大量CPU)。杀死它(-9)没有帮助,只有重新启动系统才有帮助。

我尝试xfs_repair在该卷上运行。然而,我似乎没有足够的 RAM(机器有 4 GB RAM 并且仅支持 32 位)。

机器的位置使我很难实际接触硬盘。

如何修复我的文件系统和/或终止rm

编辑:我xfs_repair -v -t 1 /dev/disk/xxx和 一起跑xfs_repair version 3.1.7。编辑:输出:

Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - agno = 0
failed to create prefetch thread: Resource temporarily unavailable
        - agno = 1
failed to create prefetch thread: Resource temporarily unavailable
        - agno = 2
failed to create prefetch thread: Resource temporarily unavailable
        - agno = 3
failed to create prefetch thread: Resource temporarily unavailable
        - agno = 4
failed to create prefetch thread: Resource temporarily unavailable
        - agno = 5
failed to create prefetch thread: Resource temporarily unavailable
        - agno = 6
failed to create prefetch thread: Resource temporarily unavailable
        - agno = 7

fatal error -- calloc failed in dir_hash_init

答案1

您是否尝试过stracerm过程以便了解它的作用?当删除大量文件时,XFS 的速度可能会非常慢。我曾经愚蠢地使用过ccacheXFS,移动所有其他文件、格式​​化文件以及将文件移回原处,比尝试移动rm -r数百万个ccache文件要快得多。如果我让它顺其自然的话,它最终还是会终止。

至于xfs_repair,我从来没有注意到它使用了大量内存,但我所有的机器都有足够的内存,所以......

您可以添加交换(如果有帮助的话)。或者,您可以将块设备(通过 OpenVPN 或 SSH 隧道使用 NBD)导出到具有更多可用 RAM 的计算机,尽管我不确定这是否比传输整个文件系统的映像(可能使用xfsdump)更快或更慢。取决于xfs_repair在此过程中需要读取/写入多少数据。

答案2

从 256Mb SGI Indigo 2 开始,我记得 XFS 检查可能是内存堵塞。我们必须对 2Gb 以上的文件使用 XFS。如果出现问题,我们将数据备份到外部驱动器 (scsi) 并在重新格式化出现问题的数据文件系统后进行恢复。

当然,只有在您有足够的驱动器容量(500Gb USB 3.0 驱动器不到 50 欧元)并且您的系统不在同一分区上(您的问题并不能 100% 清楚地说明这一点)时才有效。

相关内容