防止 e2fsck 内存耗尽?

防止 e2fsck 内存耗尽?

我有一台运行 Ubuntu 11.10 的机器,内存为 512MB,没有交换区。它有一个 1TB 的 USB 硬盘,附带 ext3 文件系统。闲置时,它只使用了大约 60MB。当我运行 e2fsck 时,它耗尽了内存,OOM 终止程序启动,e2fsck 死机。

运行 e2fsck 有没有什么技巧可以使其使用更少的内存?

我跑了:

sudo e2fsck -n /dev/sdb1

[请不要告诉我启用交换或添加内存——我无法启用交换,而添加内存显然是长期解决方案。我现在想要一种运行 fsck 的方法。]

答案1

我不确定 Ubuntu 11.10 有哪个版本的 e2utils,但是如果它比较新,您可以/etc/e2fsck.conf使用以下命令创建文件:

[临时文件]
目录 = /tmp/e2fs_scratch

首先创建该目录,然后运行 ​​e2fsck。使用临时文件将大大减少内存使用,但是 e2fsck 的运行速度会非常非常慢。

当然,如果您需要检查您的根文件系统,您将需要启动到另一个根文件系统,因为临时目录需要是可写的。

答案2

我意识到这是一个非常古老的话题,但由于我自己遇到了问题..并且临时文件不起作用..我想我会提供如何解决这个问题。

我管理一个 12 TB 的文件服务器,解决这个问题的方法是在外部驱动器上创建一个 12GB 的交换文件。虽然速度较慢,但​​还是设法完成了。

# dd if=/dev/zero of=/mnt/external/swapfile1 bs=1024 count=12582912
# mkswap /mnt/external/swapfile1
# swapon /mnt/external/swapfile1

我将其命名为 swapfile1,如果仍然不够,我可以使用相同的步骤创建第二个 swapfile2。

要让交换文件自动挂载,您可以将此行添加到 /etc/fstab

/mnt/external/swapfile1 swap swap defaults 0 0

当然,驱动器需要在该行之前安装=)

相关内容