如何提高文件系统的使用效率

文件系统是整个Unix系统中与用户关系最密切 , 用户操作最频繁的部分 , 随着系统运行时间的延续 , 文件系统的使用效率也跟着下降 , 这主要表现为:硬盘空间的减少 , 垃圾信息的增加 , 寻址时间的增加等 。本文将介绍几种提高文件系统使用效率的方法 , 和大家共享 , 欢迎更正和补充:)
首先 , 我们应该对UNIX文件系统的结构有一个了解 。文件系统是UNIX系统中的文件 , 目录 , 以及对这些文件和目录进行管理的数据结构的总称 。UNIX文件系统包括引导块、超级块、i节点区、文件存储区、进程对换区等几部分 。引导块占用第0号物理块 , 不属于文件系统管辖 , 如果系统中有多个文件系统 , 只有根文件系统才有引导程序放在引导块中 , 其余文件系统都不使用引导块;超级块占用第1号物理块 , 是文件系统的控制块 , 超级块包括:文件系统的大小、空闲块数目、空闲块索引表、空闲i节点数目、空闲i节点索引表、封锁标记等 。超级块是系统为文件分配存储空间、回收存储空间的依据 。而i节点是对文件进行控制和管理的一种数据结构 。一个文件对应一个i节点 , 每个i节点都有一个唯一的i节点号 , i节点由64个字节组成 , 保存了文件的属性和类型、存放文件内容的物理块地址、最近一次的存取时间、最近一次的修改时间、创建此文件的时间 。要注意哦:i节点中并不包括文件名 , 文件名和文件占用的i节点的i节点号放在目录文件的目录项中 。文件存储区是存放文件内容的区域 , 文件存储区中各数据块的使用情况在超级块中由记录 , 系统利用超级块中的记录完成对数据块的分配和回收 。在文件系统的末尾还可能有进程对换区 , 这里保留了对换到内存中的进程的映象 , 它不属于文件系统管辖 。相信通过上面的这段文字 , 兄弟们应该对文件系统有一个大致的了解了 。
为提高UNIX系统的运行效率 , 文件系统应该保持一定的空闲空间 , 理论上 , 空闲空间至少应占文件系统总空间的15% , 当空闲空间小于总空间的15%时 , UNIX系统操作将明显变慢!因此系统管理员应该了解文件系统空闲时间和i节点的使用情况 , 保证系统的高效运行 。系统管理员可以使用df命令了解空闲空间和i节点的使用情况 。使用“df -v 文件系统”命令 , 可以显示文件系统的使用情况:该文件系统数据块的总数、已使用数据块的数量、空闲数据块的数量、使用的数据快占总数据块的百分比 。如果想显示文件系统的i节点总数、空闲i节点的数目、已使用i节点数目以及已使用i节点占总i节点的百分比 , 可使用-i选项 。比如在Solaris下 , 可执行:df -o i(注意哦:i前没有“-” , 呵呵)
当文件系统中的空闲空间减少 , 以至于使文件系统的效率降低时 , 可采用以下措施:
1.删除临时目录下的文件
临时目录下存放的都是临时文件 , 临时文件是在程序执行期间根据需要创建的 , 但没有被及时删除 。系统中的临时目录一般有/var/tmp、/tmp和/usr/tmp 。管理员可以手工删除他们 , 也可以建立一个作业调度 , 使清理工作自动进行 。比如在/usr/spool/cron/crontabs/root中加入以下代码:
30 2 * * * find /var/tmp –atime 7 –exec rm{}; >/dev/null
30 2 * * * find /usr/tmp –atime 7 –exec rm{}; >/dev/null
30 2 * * * find /tmp –atime 7 –exec rm{}; >/dev/null
2.删除core文件
当系统中一些进程由于收到一些信号而非正常结束时 , 系统便建立一个core文件 , 记录进程当时的一些信息 , 包括进程状态、数据以及硬件寄存器的值等 。在这些core文件没有用的时候 , 可以考虑删除它们 。core文件的删除 , 应该首先确认要删除的core文件是否还有使用价值 , 可通过file core命令查看是由哪些进程产生的 , 在确认对调试程序没用的时候再进行删除 , 也可以通过下面的命令来删除10天内未存取过的core文件:find / -name core –atime10 –exec rm –f {}

推荐阅读