ext3 磁盘空间问题

ext3 磁盘空间问题

前几天我的磁盘空间用完了(这台电脑上很常见)。像往常一样,我开始删除文件和目录来恢复一点空间。

然而这次文件系统仍然报告我没有任何可用的磁盘空间。

以下是 df 报告的内容:

replicant:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md1              687G  672G     0 100% /
tmpfs                 250M     0  250M   0% /lib/init/rw
udev                   10M  716K  9.4M   7% /dev
tmpfs                 250M     0  250M   0% /dev/shm
overflow              1.0M  1.0M     0 100% /tmp

如果我计算正确的话,我应该有大约 15GB 可用空间/。有人能给我解释一下吗?这不仅仅是df计算错误,因为我无法在文件系统上创建文件或任何东西。

我在 Debian 5.0 上运行 ext3。

答案1

您的文件系统保留了仅供用户使用的空间root。这在 Unix / Linux 系统中相当标准,其中日志文件和系统运行所需的其他文件归用户所有root

您可以使用该tune2fs工具来查询或调整保留的空间量root

跑步:

tune2fs -l /dev/md1

要查看当前参数,请查找如下行:

Reserved block count: XXXX

这将告诉您保留了多少块。取此值并乘以行上的值,Block size: YYYY即可得到以字节为单位的保留空间量。

您可以使用以下方式调整保留空间量:

tune2fs -m 2 /dev/md1

要将保留空间设置为2%。默认值为5%。必须以 身份执行这些命令root,或者通过root进行登录sudo

笔记:使用此命令时要小心,因为不当使用可能会损坏您的文件系统!

答案2

没有释放空间的另外两个可能原因是:

  • 您删除的文件仍被某些程序打开。只要程序有打开的文件(描述符),文件实际上并没有被删除(尽管新程序不再可以使用它)。
  • 由于某个进程生成了大量消息(如调试输出或错误),该空间会立即被其他文件(如 /var/log 中的日志文件)填满。

答案3

您必须查看根分区上占用了什么空间。第一步是:

cd /
du -sk * |sort -n

这可以帮助您确定最大的目录(可能是 /home 或 /var)。然后对最大的目录重复上述操作。如果您删除了某些内容,则应比较前后的磁盘使用情况,因为某些程序可能打开了文件。如果有疑问,您可以使用 lsof 进行检查。如果您的空间被日志文件占用,则应修改 /etc/logrotate.conf 并运行“/usr/sbin/logrotate /etc/logrotate.conf”。这将处理可能打开了日志文件的程序。

如果上述方法无效,请启动到单用户模式并运行 fsck,也可能存在文件系统损坏。

答案4

这听起来很愚蠢,但是你确定已经清空了垃圾桶吗?

有时当您删除文件时,操作系统会将其存储在垃圾箱中,以防您意外删除了该文件,并且只有在您告诉它清空垃圾箱后才会真正删除它们。

尝试运行 fsck 以确保驱动器未损坏。损坏的 lost+found 文件可能占用了所有空间。

相关内容