系统是 ubuntu 22.04,磁盘空间只使用了 52%,但 IUse(Inode Usage) 已经 100%,请问如何解决这个问题?
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda3 6.9M 6.9M 0 100% /
这台服务器上安装的是 gitlab,会进行频繁的 git commit
存放 gitlab 仓库的文件夹 /var/opt/gitlab/git-data/repositories/@hashed
中有 6996322
个文件
最终采用的解决方法:增加一块数据盘,使用 XFS 文件系统格式化
mkfs.xfs /dev/vdb1
inode 资源耗尽的原因可能有以下几种:
您的系统中存在大量的小文件,导致 inode 表被占满。这些小文件可能是由于某些程序或定时任务产生的临时文件、日志文件、邮件文件等。
您的系统中存在一些 0 字节的文件,这些文件也会占用 inode,但不占用磁盘空间。
您的系统中存在一些非常大的文件,导致 inode 表中的空闲项不足以分配给新的文件。
针对这些可能的原因,您可以尝试以下几种解决方法:
查看并删除无用的临时文件、日志文件、邮件文件等。您可以使用 find 命令来查找这些文件,并使用 rm 命令来删除它们。例如,您可以使用以下命令来查找并删除 /tmp 目录下的所有文件1:
find /tmp -type f -exec rm {} ;
查找并删除 0 字节的文件。您可以使用 find 命令来查找这些文件,并使用 rm 命令来删除它们。例如,您可以使用以下命令来查找并删除 /home 目录下的所有 0 字节的文件1:
find /home -type f -size 0 -exec rm {} ;
查找并删除或移动非常大的文件。您可以使用 find 命令来查找这些文件,并使用 rm 命令来删除它们,或者使用 mv 命令来移动它们到其他分区。例如,您可以使用以下命令来查找 /var 目录下大于 1 GB 的文件1:
find /var -type f -size +1G
如果以上方法都不能解决您的问题,您可能需要重新格式化您的分区,并在格式化时指定更大的 inode 数量。您可以使用 mkfs 命令来格式化分区,并使用 -i 选项来指定每个 inode 所占用的字节数。例如,您可以使用以下命令来格式化 /dev/sda1 分区,并指定每个 inode 占用 4096 字节2:
mkfs -t ext4 -i 4096 /dev/sda1
注意:在格式化分区之前,请务必备份您的重要数据,因为格式化操作会清除分区上的所有数据。
参考:inodes, consumed space comparison for many small files (xfs, btrfs,ext4)
– dudu 1年前