본문 바로가기
카테고리 없음

Linux df 와 du의 차이가 있을때는

by 휘핑없는자바칩프라푸치노 2023. 12. 22.

업무중에 리눅스 서버의 "/" 파일시스템이 임계치 이상 올라갔다는 알림이 발생했고,

해당 파일시스템 정리를 하기 위해, 서버에 접속해서 df -h , 명령어와 du -shx / 명령어로 확인을 해보았다.

근데 이게 웬걸.. df 로 나오는 용량과 du 명령어로 나오는 용량이 거의 100G 넘게 차이가 나는게 아닌가??

 

그래서 조치를 하기 위해 나름의 분석 및 조사 결과

파일을 삭제했지만, df에 반영이 되지 않은것으로 확인 되었다.

 

보통 시스템을 오래 켜두면 발생하는 현상이라고 하는데, (uptime을 쳐보니 1000일이 훌쩍 넘어가있었음)

그 이유는 특정 프로세스가 file descriptor 를 연 후에 file descriptor 가 가리키는 파일을 지웠는데 그 프로세스가 여전히 파일을 읽고 쓰고 있는 것이라고 한다.

 

따라서 해당 문제가 되는 프로세스를 lsof 명령어로 찾을 수 있다.

 

# yum install lsof -y

 

# lsof | grep deleted

 

예시를 보여주기 위해 용량이 크지 잡지 않은 것들로 캡쳐를 했지만, 저렇게 deleted로 잡히는 것들은 아직 존재하는 프로세스이기 때문에, 왼쪽에 있는 PID로 kill 해주면 된다.

 

# kill -9 205242     (예시입니다.)

 

* 가장 좋은 방법은 서버 리부팅이 제일 좋겠죠??