我试图在一个2TB大的raidarrays上使用e2fsck,并使用GPT进行分区(因为大小)。
系统上只安装了1GB的内存,目前我无法添加更多内存。
问题是,在设备上启动fsck后不久,出现一个错误消息:
Error storing directory block information (inode=115343515, block=0, num=108120142): Memory allocation failed e2fsck: aborted
经过一些在线search和研究之后,我在下面find了这个post:
在大文件系统上运行fsck的内存不足
在查看e2fsck.conf
的MAN页面之后,我遵循了这个build议,基本上创build了一个/etc/e2fsck.conf文件,如下所示:
[scratch_files] directory = /var/cache/e2fsck
并在确定创build了/var/cache/e2fsck
directry之后再次尝试了fsck。 再次启动fsck并观察可用内存,cpu使用情况和/var/cashe/e2fsck
目录大小…我可以说它确实帮助了很多…但它最终仍然失败,给出了同样的错误。 基本上它有助于减缓内存消耗,但并没有一起否定。
所以我试着玩e2fsck.conf
文件的添加标志使用:
dirinfo = false
要么
dirinfo = true
和
icount = false
要么
icount = true
这两者似乎都没有太大的影响,因为在短时间内发生同样的错误。
我错过了什么? 我可以用fsck花很长时间…但是我需要它来完成而不是错误的。
如果可以的话,给系统添加一些交换空间。 fsck将花费很长时间,但最终会完成。 下一次,把你的文件系统切成小块。
arrays是内部存储还是外部存储? 如果是外部/附加存储,请尝试将其插入另一个包含fsck
更多内存的盒子中。 或者,重新分区您的设置,并将其分成更小的块。 您可以在单个“备份”文件系统层次结构下安装多个分区。 您的客户端和备份软件不需要知道他们正在接触多个或独立的文件系统。
如果这个存储直到引导过程的后期才得到fsck
,那么请确保closures了所有可能正在耗尽宝贵内存的应用程序,直到fsck
完成。
HTH。