实战:解决磁盘有空间但创建不了文件

实战场景:在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了80%,还有1.9G的剩余空间,但是无法创建新的文件。当时使用的是root用户。服务器没有被黑。

[root@xuegod63 ~]# df -h

文件系统          容量    已用  可用   已用%  挂载点

/dev/sda3        10G   8.0G  1.9G   80%    /

常识: 只要权限够,磁盘上有空间一定可以创建文件。 这个是错的。

排查:

[root@xuegod63 ~]# df -i 

文件系统         Inode     已用(I)     可用(I)         已用(I)%   挂载点

/dev/sda3      5242880   5242880    0              100%        /

#后来用df -i查看了一下/data所在的分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。

查找原因:

  /data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

解决方案1:删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。

解决方案2 : 在/data备份好一些文件,然后删除这些文件,释放一些inode,然后创建一个文件夹/data/cache2。在cache2下挂载一个新分区: sda4  ,下次写数据需要写到新分区cache2目录下。

inode分区完后,可以增加吗? 不可以。  inode总数是在格式化时定下来。

[root@xuegod63 ~]# mkfs.ext4 -I   500000000000  /dev/sda1  #可以指定大小

参数:

[-i bytes-per-inode] [-I inode-size]

版权声明:
作者:WaterBear
链接:https://l-t.top/1439.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>