df 显示磁盘已满,但事实并非如此

df 显示磁盘已满,但事实并非如此

在运行 Ubuntu 10.04 的虚拟化服务器上​​,df 报告以下内容:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.4G  7.0G     0 100% /
none                  498M  160K  498M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   92K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
/dev/sda3             917G  305G  566G  36% /home

这让我很困惑,原因有二:1.) df 说 /dev/sda1 安装在 / 上,有 7.4 GB 的容量,其中只有 7.0 GB 被使用,但它报告 / 已 100% 满;2.) 我可以在 / 上创建文件,所以显然还有剩余空间。

可能相关的是,目录 /www 是 /home/www 的符号链接,而 /home/www 位于不同的分区(/dev/sda3,安装在 /home)。

有人能提供一些建议,说明这里可能发生了什么吗?服务器似乎运行正常,但我想确保分区表、文件系统或其他东西没有问题,否则以后可能会导致内爆(或爆炸)。

答案1

进程可能打开了一个大文件,但该文件后来被删除了。您必须终止该进程才能释放空间。您可以使用 lsof 来识别该进程。在 Linux 上,lsof 可以识别已删除但打开的文件,并在 lsof 的输出中将其标记为(已删除)。

你可以使用以下方法检查sudo lsof +L1

答案2

5%(默认情况下)的文件系统空间是为文件系统填满的情况保留的,以防止出现严重问题。您的文件系统已满。由于有 5% 的缓冲区,不会发生任何灾难性事件 - root 被允许使用该安全缓冲区,并且在您的设置中,非 root 用户没有理由写入该文件系统。

如果您有以非 root 用户身份运行的守护进程,但需要管理文件系统中的文件,则会出现问题。 一个常见的此类守护进程是named。 另一个是ntpd

答案3

您的 inode 可能不足。使用以下命令检查 inode 使用情况:

df -i

答案4

除了已经提出的原因外,在某些情况下还可能是以下原因:

  • 在现有文件夹“上方”安装了另一个磁盘,该文件夹已充满数据
  • du 将计算已安装磁盘的大小,df 将显示实际花费
  • 解决方案:(如果可能)卸载所有非根磁盘并再次检查大小du -md 1。通过移动来解决问题文件夹移到其他地方或安装在不同的地方。

相关内容