1、错误现象

顾客的一台Oracle数据库在死机重启后,Oracle窃听未能启动,提示错误如图1所示。

硬盘删除文件重启后又恢复_inode 硬盘 删除两个文件 -linux_硬盘删除文件后容量未减少

图1inode用尽故障现象

从输出信息判定,应当是c盘空间用尽造成Oracle窃听未能启动,由于Oracle在启动窃听时须要创建窃听日志文件,而前面三个TNS错误形成的缘由都是由最后一行错误造成的,于是首先检测c盘空间,如图2所示。

inode 硬盘 删除两个文件 -linux_硬盘删除文件后容量未减少_硬盘删除文件重启后又恢复

图2查看故障服务器c盘空间信息

从c盘输出信息可知,所有分区c盘空间都还有不少剩余,而Oracle窃听写日志的路径在/var分区下,即使/var分区仅存下3.2GB可用c盘空间,并且这对于写一个窃听日志文件来说足够了,为何还提示空间不足呢?

2、解决思路

硬盘删除文件重启后又恢复_inode 硬盘 删除两个文件 -linux_硬盘删除文件后容量未减少

既然错误提示与c盘空间有关,那就深入研究下关于c盘空间的问题,在系统中对c盘空间的占用分为三个部份:第一个是化学c盘空间,第二个是inode节点所占用的c盘空间,第三个是拿来储存讯号量的空间,而平常接触较多的是化学c盘空间,对第二个和第三个空间的问题接触较少。既然不是化学c盘空间的问题,接着检测是否是inode节点用尽的问题,通过执行“df-i”查看系统可用的inode节点,如图3所示。

图3查看c盘分区的inode使用信息

由输出可知,果然是inode节点用尽造成难以写日志文件。因为inode被全部用完了,尽管还有可用c盘空间,并且文件系统早已未能再记录那些空余空间了,因而也就不能再创建新文件或文件夹了。因为涉及了inode知识,接出来就简单介绍下Linux中inode的概念。

Linux系统中,文件由数据块和元数据组成,数据块就是多个连续性的磁道,是文件存取的最小单位。块(block)的大小,最常见的是4KB,即连续8个sector组成一个block。而元数据拿来记录文件的创建者、文件的创建日期、文件的大小等,这些储存文件元数据信息的区域就称作inode,或则称为“索引节点”。

inode 硬盘 删除两个文件 -linux_硬盘删除文件重启后又恢复_硬盘删除文件后容量未减少

因为inode也是拿来储存文件相关属性信息的,因而inode也会消耗硬碟空间,在硬碟低格的时侯,操作系统会手动将硬碟分成两个区域。一个是数据区,储存文件数据;另一个是inode区(inodetable),储存inode所包含的信息。

每位inode节点的大小通常是128B或256B。inode节点的总量在低格文件系统的时侯,就早已确定,可以通过如下查看某个c盘分区inode的总量:

[root@localhost~]#dumpe2fs-h/dev/sda3|grep‘inodecount’

dumpe2fs1.39(29-May-2006)

硬盘删除文件重启后又恢复_inode 硬盘 删除两个文件 -linux_硬盘删除文件后容量未减少

举个形象的反例,假如将文件系统称作一本书,这么,inode就是这本书的目录。在低格文件系统的时侯,这本书的最大目录数早已确定了。在写书(保存文件到c盘)的过程中,可能发生这样的情况:纸用完了(c盘空间不足),此时肯定没法保存新的文件;并且还存在另外一种情况,就是目录写完了(inode节点全部分配完了),在这些情况下,即使还有纸(c盘空间),并且目录(inode)早已没有了,在文件系统上其实不能新建文件了,由于没有了目录,就难以通过索引找到文件。

另外inode 硬盘 删除两个文件 -linux,每位inode都有一个号码,操作系统用inode号码来分辨不同的文件。通过“ls-i”,可以查看文件名对应的inode号,比如:

[root@localhost~]#ls-iinstall.log

假如要查看这个文件更详尽的inode信息,可以通过stat实现,如图4所示。

图4查看某文件inode的详尽信息

3、解决问题

晓得这个故障是由inode造成的后,接出来就要查看/var目录下为什么用尽了inode,通过检测发觉/var/spool/clientmqueue/这个目录上面的文件仅500多万个,至于形成的缘由,剖析后确定应当是系统的crontab造成的,由于系统开了多个crontab任务,而假如crontab任务没有重定向,默认都会在这个目录下创建一个文件,日积月累linux命令大全,此目录下的小文件才会超级多。解决的方式很简单,删掉那些没用的文件即可。删掉的方式是直接使用rm命令,这时肯定会提示“Argumentlisttoolong”的错误,解决这个问题通过如下命令即可完成:

[root@localhost~]#find/var/spool/clientmqueue/-name"*"-execrm-rf{};

删掉日志文件后,再度启动Oracle窃听,可以顺利实现启动,查看发觉新的窃听日志文件早已生成linux命令详解词典,至此inode 硬盘 删除两个文件 -linux,问题得到完满解决。

本文原创地址://q13zd.cn/ojtwfqdtscwt.html编辑:刘遄,审核员:暂无