大型文件系统上的 e2fsck 失败,错误:内存分配失败

大型文件系统上的 e2fsck 失败,错误:内存分配失败

我正在尝试在 2TB 大的大型 raid 阵列上使用 e2fsck,并使用 GPT 进行分区(因为大小)。

系统上仅安装了 1GB 的 RAM,目前我无法添加更多内存。

问题是,在设备上启动 fsck 后不久,我收到一条错误,提示:

Error storing directory block information (inode=115343515, block=0, num=108120142): Memory allocation failed
e2fsck: aborted

经过一些在线搜索和研究后,我偶然发现了以下帖子:

在大型文件系统上运行 fsck 时内存不足

我查阅了 MAN 页面后遵循了建议e2fsck.conf,基本上创建了一个如下所示的 /etc/e2fsck.conf 文件:

[scratch_files]
directory = /var/cache/e2fsck

确保创建/var/cache/e2fsck目录后,再次尝试 fsck。再次启动 fsck 并观察可用内存、CPU 使用率和目录大小后/var/cashe/e2fsck...我可以说它确实有很大帮助...但最终还是失败了,并给出了相同的错误。基本上它有助于减缓内存消耗,但并没有完全消除它。

因此我尝试使用以下文件添加标志e2fsck.conf

dirinfo = false 

或者

dirinfo = true

icount = false

或者

icount = true

这两种情况似乎都没有太大的影响,因为过了一会儿又会发生同样的错误。

我是不是漏掉了什么?我同意 fsck 需要很长时间...但我需要它真正完成,而不是出错。

答案1

如果可以,请为系统添加一些交换空间。 fsck 将花费很长时间,但最终会完成。下次,将文件系统分成更小的部分。

答案2

  1. 您是否已将这些标志添加到 [scratch_files] 部分?另外,尝试使用“numdirs_threshold”来控制何时开始使用暂存文件。
  2. 有时,已安装的系统上的 e2fs 实用程序太旧(如 Centos4)。您可以使用较新版本的内核和文件系统实用程序启动救援映像。设置 e2fsck.conf 并让 e2fsck 使用它。

嗨嗨。

答案3

阵列是内部存储还是外部存储?如果是外部/附加存储,请尝试将其插入具有更多 RAM 的其他盒子中fsck。或者,重新分区您的设置并将其分成更小的块。您可以在单个“备份”文件系统层次结构下安装多个分区。您的客户端和备份软件不需要知道他们正在接触多个或单独的文件系统。

如果直到启动过程的后期才使用此存储fsck,请确保关闭所有可能占用宝贵内存的应用程序,直到完成为止fsck

相关内容