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

Jas*_*son 7 linux partition memory fsck

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

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

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

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

经过一些在线搜索和研究,我在下面看到了这篇文章:

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

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

[scratch_files]
directory = /var/cache/e2fsck
Run Code Online (Sandbox Code Playgroud)

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

所以我尝试e2fsck.conf使用文件的添加标志:

dirinfo = false 
Run Code Online (Sandbox Code Playgroud)

或者

dirinfo = true
Run Code Online (Sandbox Code Playgroud)

icount = false
Run Code Online (Sandbox Code Playgroud)

或者

icount = true
Run Code Online (Sandbox Code Playgroud)

两者似乎都没有太大影响,因为不久后就会发生同样的错误。

我错过了什么吗?我对 fsck 需要很长时间没意见...但我需要它实际完成而不是出错。

wom*_*ble 2

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