一、问题
最近在遇到这个报错:
Free inodes is less than 20% on volume /
二、问题原因
其实是服务器上的文件数过多。
三、解决办法
查找每个目录下面的文件数 for i in /*; do echo $i; find $i |wc-l ;done
然后看看哪个目录下面的文件比较多,然后删除一些没有作用的文件。
查看磁盘总的 inodes 数。
使用命令:df -i
四、扩展
什么是 inodes
是一个数据结构在unix 系统里面,类似一个文件系统对象,像一个文件或者是一个目录。
每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有inode和Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。
inodes 里面存储了什么?
每个索引节点都存储对象数据的属性和对应的磁盘块位置。对象数据的属性包含元数据(上次更改的时间、访问、修改的时间)和所有者等。
inodes 的大小取决于什么,一个磁盘的 inodes 是多大?
每个文件都有一个 inode,一个inodes至少需要占用1kb,当一个磁盘为100G 时,可以设置的最大 indoes 数是:104,857,600。 可以在 初始化磁盘的时候进行指定。
如何查看df -i
centos6 查看inodes信息 dumpe2fs
(软连接和硬链接)
1、symbolic links(软链接)
[root@20191021XB7ILNP test]# ls -i djx
131089 djx
[root@20191021XB7ILNP test]# ln -s /opt/test/djx symbolic_djx
[root@20191021XB7ILNP test]# ls -i symbolic_djx
131087 symbolic_djx
软链接就是一个普通文件,只是数据块内容有点特殊(指向源文件)。软链接有着自己的 inode 号以及用户数据块。
2、hard link(硬链接)
[root@20191021XB7ILNP test]# ls -i djx
131089 djx
[root@20191021XB7ILNP test]# ln /opt/test/djx hard_djx
[root@20191021XB7ILNP test]# ls -i hard_djx
131089 hard_djx
创建好一个文件里面对应硬链接文件。使用 hard link 链接文件时,磁盘空间的 inode 数目不会改变! hard link 是在某个目录下的 block 多写入一个关连数据而已,既不会增加 inode 也不会耗用 block 数量。