现象
jenkins
执行脚本的时候发现cp
命令无法创建文件No space left on device
.
第一反应是磁盘满了;
df -h
发现磁盘还有一半
那么接下来看文件索引使用情况
df -i
果然是索引满了
这里只是展示df -i命令的一个demo图片
解决方案
先查看根路径下的目录里文件数量
for i in /*; do echo $i; find $i |wc -l|sort -nr; done
找到最多的那个目录后进入目录再执行上面的命令,寻找最多文件的子目录(当前执行上面的命令的时候要把路径替换成当前的)
定位到要删除的目标文件,正则批量删除
ps:删之前单独执行下find
命令,以免删错东西
find . -name "*" | xargs rm -rf
索引节点含义
索引节点(inode)是用于跟踪文件和目录的元数据的数据结构。每个文件和目录都有一个关联的索引节点,其中包含有关文件的信息,如文件大小、所有者、权限等。在Linux文件系统中,索引节点的数量是由文件系统的配置参数和大小决定的。
磁盘索引上限是由文件系统类型和文件系统的配置参数决定的,而不是Linux内核的限制。常见的文件系统类型如ext4、XFS、Btrfs等,它们的索引上限可能会有所不同。
对于ext4文件系统,索引节点(inode)是用于跟踪文件和目录的元数据的数据结构。在ext4中,索引节点的数量是通过文件系统的配置参数之一来确定的,该参数称为inode_ratio或者-i选项。
默认情况下,ext4文件系统的inode_ratio值通常设置为每16KB的数据块分配一个索引节点。这意味着,在一个1TB(或更小)大小的ext4文件系统中,可以分配大约60,000,000个索引节点。对于更大的文件系统,它可以超过这个限制。
当然,可以通过手动调整inode_ratio值来增加或减少分配的索引节点数量,但需要注意保持合理的比例,以避免索引节点过多或过少。