[재 인쇄] 리눅스 일반적인 시스템 오류 : 파일 공간, 삭제의 원인을 해제하지 않습니다

일반적인 리눅스 시스템 오류 : 파일 공간, 삭제의 원인을 해제하지 않습니다

HTTPS : // os.51cto.com/art/201912/608713.htm

 

일반적으로 릴리스가 표시되지 않는 파일 공간을 삭제 한 후 상황에 있지만, 이러한 파일과 예외, 프로세스가 잠겨, 또는이 문제를 이해하는 등, 파일에 데이터를 작성하는 과정에 있었다, 우리는 리눅스에서 파일을 알아야 할 필요가 저장 장치 및 저장 구조.

저자 : 익명 출처 : 컴퓨터 및 네트워크 보안 | 2019년 12월 31일 15시 52분

 

1. 증상

작동 및 모니터링 시스템의 유지 보수에 나타낸 바와 같이, 로그인 서버보기, 루트 파티션은 공간이없는 서버 공간이 가득보고, 통지를 보냈다.

그림 1보기 서버의 디스크 공간

모든 파일을 삭제하려면 온라인 서버가 / tmp 디렉토리 전에 시스템으로 이동할 수 있도록 리눅스, 휴지통 기능이 아니기 때문에 여기에서 먼저 삭제 된 정책 서버의 일부를 설명하고 주기적으로 데이터 / TMP 디렉토리를 취소합니다. 전략 자체는 아무 문제 없지만, 검사를 통해 이렇게 / tmp를하는 것은 혼자 실제로 공간 루트 파티션을 차지, 해당 서버의 시스템 파티션과 / tmp를 파티션없이 파티션의 데이터를 발견했다. 이제 문제를 발견 한 후 삭제 / 일부 대형 데이터 파일의 공간에서의 tmp 디렉토리에 나타낸 바와 같이, 아래에 / tmp를 검토 세 개의 데이터 파일의 최대 수 있습니다.

도를 참조하십시오. 2를 / tmp 디렉토리에서 처음 세 개의 큰 데이터 파일을

명령 출력 파일 ACCESS_LOG이 / tmp 디렉토리의 66기가바이트 크기를 발견,이 파일보기의 로그 크기 지점에서 아파치 액세스 로그 파일이 생성되어야하는 것은, 그것은 아파치 로그 파일을 정리하는 데 시간이 오래 안,이 파일은 기본 원인의 결정이다 루트 공간의 전체 파일이 삭제 될 수 있음을 확인한 후, 다음 삭제를 수행합니다

  1. [루트 @ localhost를 ~] # RM / tmp를 / ACCESS_LOG 

이 시스템은 다음에 도시 된 바와 같이, 해제 루트 파티션 공간을 보인다.

3 확인 여부 릴리스 디스크 공간

당신이 볼 수있는 출력 루트 파티션 공간이 아직 해제되지 않습니다에서 어떻게 가고 있는가?

이 개 솔루션

일반적으로 릴리스가 표시되지 않는 파일 공간을 삭제 한 후 상황에 있지만, 이러한 파일과 예외, 프로세스가 잠겨, 또는이 문제를 이해하는 등, 파일에 데이터를 작성하는 과정에 있었다, 우리는 리눅스에서 파일을 알아야 할 필요가 저장 장치 및 저장 구조.

一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中。在将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以在出现删除access_log文件后,空间还没释放,就是因为httpd进程还在一直向这个文件写入内容,导致虽然删除了access_log文件,但是由于进程锁定,文件对应的指针部分并未从meta-data中清除,而由于指针并未删除,系统内核就认为文件并未删除,因此通过df命令查询空间并未释放也就不足为奇了。

3、问题排查

既然有了解决问题的思路,那么接下来看看是否有进程一直在向access_log文件中写数据,这里需要用到Linux下的lsof命令,通过这个命令可以获取一个仍然被应用程序占用的已删除文件列表,命令执行如图4所示。

图4 查看被应用程序锁定的已删除文件列表

从输出结果可以看到,/tmp/access_log文件被进程httpd锁定,而httpd进程还一直向这个文件写入日志数据。从第7列可知,这个日志文件大小约70GB,而系统根分区总大小才100GB,由此可知,这个文件就是导致系统根分区空间耗尽的罪魁祸首。最后一列的“deleted”状态说明这个日志文件已经被删除,但由于进程还在一直向此文件写入数据,因此空间并未释放。

4、解决问题

到这里问题就基本排查清楚了,解决这一类问题的方法有很多种,最简单的方法是关闭或重启httpd进程,当然也可以重启操作系统,不过这些并不是最好的方法。对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件,具体可以通过如下命令完成:

  1. [root@localhost ~]# echo " " >/tmp/acess.log 

또한 로그 파일에 쓰기를 계속하는 과정을 보호하고,이 방법은 종종 온라인 로그를 정리하는 데 사용되는이 방법뿐만 아니라 디스크 공간이 바로 아파치, 톰캣, Nginx에 다른 웹 서비스가 생성 된 파일을 해제 할 수 있습니다.

추천

출처www.cnblogs.com/jinanxiaolaohu/p/12127500.html