我的服务器有磁盘空间但是显示磁盘空间已满。
这是裸机服务器,删除了许多文件,但仍然显示磁盘已满
请检查以下输出:
[root@host1 tmp]# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 24M 1.6G 2% /run
/dev/nbd0 46G 19G 25G 43% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0
tmpfs 1.6G 0 1.6G 0% /run/user/10001
第二个输出:
[root@host1 tmp]# df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/nbd0 3055616 3055614 2 100% /
答案1
如果您有很多非常小的文件(从概念上讲,inode 是文件系统可以拥有的文件和目录的总数),则 inode 可能会达到 100%。尝试找到这样的文件。您可以使用 来举例for i in /*; do echo $i; find $i |wc -l; done
,然后在层次结构中深入挖掘,例如for i in /usr/*; do echo $i; find $i |wc -l; done
。如果您长时间没有获得某个目录的文件数量,则很有可能存在问题。
答案2
文件系统上的每个文件和每个目录都有一个 inode,它描述文件或目录(所有者数据、权限数据、文件系统块等)
每个 inode 都会占用文件系统上的 256 字节数据,并且在某些文件系统(例如 ext3 和 ext4)上,inode 的数量在文件系统创建时是固定的。
这意味着如果您有许多小文件,小文件和 inode 所占用的总空间量可能低于磁盘空间的总量,但您的磁盘仍可能被视为“已满”,因为没有更多的 inode 来描述新文件。
xfs 文件系统(顺便说一下,它是 RHEL7(以及衍生版本,我认为)的默认文件系统)没有指定 inode 数量的上限,但指定了所有 inode 可以一起占用的最大磁盘空间量。默认值为 25%,至少在我的 Fedora 机器上是这样的,它允许大量的 inode。
这意味着在 xfs 上,您可能不会遇到 inode 耗尽的问题。
按照 vladmihaisima 的建议操作,找到所有这些 inode 的去向。我猜它们可能位于 /tmp、/home 或 /var 目录中,因为这些目录在某种程度上是用户可写的,而且你似乎没有将它们放在单独的分区上。
然后,在你的下一个盒子上,使用 xfs :)