root目录占用大量空间

今天看了一下测试服务器,突然发现根目录已使用100%了,赶紧检查了一下。

 

 

 

 

 

 查看了隐藏文件,找到了。

 

进入.vnc目录是一个日志文件占用了空间,将其删除,另外将/home中的一个安装文件也删除了。奇怪的是空间却没有释放,

 

 

以前看到过用文件句柄恢复误删的oracle数据文件的案例, 还是要理解Linux下文件系统的原理。文件系统中分为两个部分:数据和指针,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,如果进程仍然一直在读写这个文件,就可能由于进程锁定导致指针未从metadata中清除,系统就认为此文件未被删除。

接下来执行  lsof | grep deleted 有进程在使用刚才删除的文件

 

现在有两种方式处理,1、kill 进程释放文件句柄;2、将/root/.vnc/racdb1:1.log 拷贝回去,然后将其清空 echo ‘’>/root/.vnc/racdb1:1.log。

最开始处理的太简单,不应该删除,发现是VNC的日志文件就应该用清空的方式处理的,在实际的这种方式可保障进程继续向文件写入日志,不会对应用产生影响。

现在用第二种方式处理

 

 

 

 

 空间还是没有释放。将当前文件句柄清空,应该会释放空间。

 

 

lsof
command PID USER FD type DEVICE SIZE NODE NAME

lsof输出各列信息的意义如下:

COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。

posted @ 2020-05-30 13:31  尘世间一个迷途小书童  阅读(956)  评论(0编辑  收藏  举报