分类: 系统运维
2014-11-24 17:16:39
原文地址:大量小文件消耗文件系统资源处理一例 作者:wanglp2000
一、 概述
由于某种原因,系统或者应用程序可能会产生大量的日志文件,应用程序在这方面尤其突出,这些小日志文件典型的特征就是每个文件大小都只有几k或者十k左右。这些大量的小文件的生成带来的现象就是:该文件系统无法创建新的文件,每次创建文件时候都报告文件系统空间不足,而用df –k等命令查看文件系统使用情况却发现该文件仍然有大量的存储空间存在。
可以参考我的豆丁文档:
二、 原因分析和处理方法介绍
文件系统存储空间还剩余很多,但是创建新文件或者新目录时候报告没有有效空间,这是个矛盾的命题。创建文件第一个步骤应该是为文件安排一个索引点,通常该所引点叫做inode号,那么查询inode使用情况是怎样的,df命令有一个option可以用来查看inode使用情况,df –o i命令可以完整的查询出一个文件系统的inode号的使用情况。
存在大量的小文件的文件系统一般来说,它的索引分配几乎耗尽了文件系统indoe号资源,当inode号用光的时候,将不能新创建文件或者目录,因为在此时的文件系统中,文件系统已经无法为新的文件或者目录分配索引号,没有inode分配,文件或者目录将无处存放,或者说即使有物理扇区可以用来存放文件和目录,存放以后用户使用也无法找到该文件和目录。
处理的方法比较简单,直接进入该文件系统,将这些小文件删除即可,但是,使用普通的rm *来删除是无法删除这些小文件的,rm命令会报告说,输入的参数太长,如果一个文件一个文件来删除的话有非常麻烦,另外用匹配符号来删除的话也比较麻烦,因为一般不知道这些小文件的命名规则。
此时可以用find命令和rm命令的组合来删除这些小文件,具体方法如下:
1.cd 到存在大量小文件的目录
2.find . –name “*” –exec rm {} \;