前几天我的磁盘空间用完了(这台电脑上很常见)。像往常一样,我开始删除文件和目录来恢复一点空间。
然而这次文件系统仍然报告我没有任何可用的磁盘空间。
以下是 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 文件可能占用了所有空间。