Linux系统inode占满故障处理
众所周知,文件系统中inode编码是指向磁盘block的唯一编号,若服务器遭入侵或日志文件将磁盘inode资源编号耗尽,新数据无法获取inode编号导致无法存储。举例说明:在磁盘中/boot独立分区中查看现有inode资源并通过for循环创建大量文件占用耗尽inode编号,导致磁盘无法写入内容,最后进行处理故障。
[[email protected] ~]# df -i /boot/ #查看inode编号 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 1024064 38 1024026 1% /boot [[email protected] ~] for i in {358..1024500}; do touch file$i;done [[email protected] ~]# df -i /boot #发现inode占满 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 1024064 1024064 0 100% /boot [[email protected] ~]# cd /boot [[email protected] boot]# touch 123.txt #创建文件无法成功 touch: cannot touch ‘123.txt’: No space left on device 方法一:通过传统方式利用for循环删除文件,但是比较缓慢 [[email protected] ~] for i in {950000..1024500}; do rm -rf file$i;done #一点的删除 方法二:利用传参数的方法快速有效的删除文件 [[email protected] boot]# ls file{400000..500000}|xargs rm 最为有效的方法,传参数 [[email protected] boot]# ll file{600000..700000}|xargs rm ll列出的参数过多,传给rm ls: cannot access file600000: No such file or directory 时,rm不识别,因此通过 rm: invalid option -- ‘w‘ ls显示出独立的文件名进 Try ‘rm --help‘ for more information. 行传递。 rm: invalid option -- ‘w‘ |