我有一台运行 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
当然,驱动器需要在该行之前安装=)