磁盘空间问题

磁盘空间问题

我的服务器有磁盘空间但是显示磁盘空间已满。

这是裸机服务器,删除了许多文件,但仍然显示磁盘已满

请检查以下输出:

[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 :)

相关内容