리눅스 파일 삭제, 디스크 공간은 df라고하지만, 리눅스 파일 삭제, 디스크 공간의 릴리스 이후가 아니라 DF 이후에 출시되지

리눅스 파일 삭제, 디스크 공간이 있지만, DF 이후에 출시되지

 

 리눅스 디스크 공간, 다음 삭제 큰 파일에서 찾을 수 해제되지 않습니다 디스크 공간을 참조 df라고 항상 경고입니다.

리눅스는 휴지통을 삭제하는 메커니즘 없기 때문에 / tmp 디렉토리 이동 파일을 삭제, 사용자 정의로, RM 작업을 발견에서 시스템이 RM 별칭되었습니다 찾기.

그리고 / 임시 삭제 디스크 충격에 있지만은 자료를 찾을 수 없습니다 

OK, GREP 그냥 삭제 된 파일의 큰 숫자가 처리 찾을 삭제 프로세스를 죽일 (또는 프로세스를 다시 시작) | lsof를 실행

 

참고 자료

운영 및 실제 사건 파일의 유지 보수 삭제 된,하지만 공간이 릴리스의 문제가 해결되지 않습니다

 

1. 증상

아래 그림과 같이 작동 및 모니터링 시스템의 유지 보수, 서버보기로 로그인, 루트 파티션은 공간이없는 서버 공간이 가득보고, 통지를 보내 :

 wKioL1O7cFfxA4-BAAB6s9F7xWE508.jpg

 

리눅스는 휴지통 기능이 아니기 때문에 여기서 첫째, 먼저 시스템 / tmp 디렉토리로 이동합니다 모든 파일을 삭제하려면 온라인 서버를 삭제 정책 서버의 일부를 설명하고 정기적으로 / tmp를 디렉토리에 데이터를 취소합니다. 전략 자체는 아무 문제 없지만, 검사를 통해 이렇게 / tmp를 실제로 공간이 루트 파티션에 의해 점령, 해당 서버의 시스템 파티션과 / tmp를 파티션에 별도의 파티션 데이터를 발견했다. 이제 문제를 발견 한 후 다음 명령을 실행, 일부 빅 데이터에 / tmp를 디렉토리를 삭제, 세 개의 큰 데이터 파일 검사 / tmp를, 아래와 같이 :


[루트 @ localhost를 ~] # 뒤 -s / tmp를 / * | 종류의 -nr | 머리 -3
69206016 / tmp를 / ACCESS_LOG
36 / tmp를 / hsperfdata_root
36 / tmp를 / hsperfdata_mapred

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

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

이 시스템은 다음과 같이 해제 루트 파티션 공간을 본다 :

 wKioL1O7cHXhiY_EAAB6s9F7xWE440.jpg

 

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

 

이 개 솔루션

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

파일 시스템에 저장된 파일을 두 부분으로 나누어진다 : 포인터 부와, 파일 포인터는 메타 데이터 시스템에 위치하는 데이터 부분, 데이터가 삭제되고, 포인터가있는 메타 데이터로부터 클리어 데이터 기억 부 디스크에서, 메타 데이터에서 제거 포인터에 대응하는 데이터는, 공간의 데이터 부분이 파일에 의해 점령을 덮어 쓸 수 있습니다 및 새로운 콘텐츠 인 이유를 공개하지 삭제 ACCESS_LOG 파일 공간을 작성하는 httpd 프로세스 때문에 또한 ACCESS_LOG 파일을 삭제하는 동안의 결과로, 파일 내용에 기록하지만, 파일 포인터 프로세스로 인해 부분을 잠금 해당 있으며, 포인터가 삭제되지 않고 있기 때문에, 시스템 커널 파일 고려, 메타 데이터에서 삭제되지 않습니다 쿼리가 공간이 df 명령에 의해 그렇게 놀라운 일이 아니다 공개하지 않도록 제거되지 않았습니다.

 

3, 문제 해결

이제, 그 다음 문제를 해결하고 여기에 리눅스에서 lsof 명령 사용할 필요가 acess.log에서 파일에 쓰기 데이터에 대한 처리가 된 경우는 삭제 된 명령을 통해 얻을 수 있지만 여전히 적용되고보고 아이디어를 가지고 아래 그림과 같이 프로그램 파일, 명령 실행의 목록을 취합니다

 wKiom1O7cLfB1_vUAAGEQwwNhWI351.jpg

 

당신은 출력에서 ​​볼 수있는, / tmp를 / acess.log 아파치 프로세스 파일이 잠겨 및 httpd 프로세스는이 파일에 대한 로그 데이터에 기록 된, 당신은 일곱 번째 행 만 70G의 로그 파일 크기 및 전체 시스템의 루트 파티션에서 볼 수 크기는 100G, 볼 수있는, 범인의 고갈을 주도하는 파일 시스템 루트 파티션 공간은 로그 파일이 삭제되었지만, 프로세스가 아직이 파일에 쓸 수있는 것을 나타내는, 마지막의 상태를 "삭제" 데이터 공간이 해제되지 않습니다.

 

(4) 상기 문제를 해결

여기에 문제를 해결하는 기본은 분명하다, 여러 가지 방법이 있습니다 이런 종류의 문제를 해결하기 위해, 가장 쉬운 방법은 종료하거나 물론, 운영 체제를 재부팅 할 수는 아파치 프로세스를 다시 시작하는 것입니다, 그러나 이것은이를 치료하는 가장 좋은 방법이 아니다 디스크 여유 공간에 파일 쓰기 프로세스 로그 파일에 보관하는 가장 좋은 방법은 온라인으로 다음과 같은 명령을 통해 수행 할 수 있습니다 파일을 비우는 것입니다 :

[루트 @ localhost를 ~] # 에코 ""> /tmp/acess.log

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

추천

출처www.cnblogs.com/youjianjiangnan/p/12065804.html