리눅스 환경에서 파일을 삭제해도 용량이 늘어나지 않는 문제 해결

 · 1 min read

어느 날 서버를 점검하던 중 특정 로그 파일이 디스크를 꽤 잡아먹고 있는 것을 발견하고 용량 확보를 위해 rm 명령어로 파일을 삭제했다. 파일 삭제 후 df -h 명령어로 확인해보았는데 파일 크기만큼 용량이 늘어나지 않았고, 삭제 전과 동일한 용량을 나타내고 있었다.

파일이 제대로 삭제되지 않은 것인가 해서 루트 디렉토리로 이동한 뒤 sudo du -sh *를 실행해보니 정상적으로 삭제된 것처럼 보였다. 구글링을 좀 해보니 실행 중인 프로세스에서 해당 파일을 열어놓은 상태에서 삭제하게 되면 파일은 삭제된 것 처럼 보이지만 해당 프로세스와의 연결 남아 있는 상태가 된다고 한다.

아직 완전히 삭제되지 않은 파일을 확인하기 위해 lsof 1 명령어를 사용한다. 만약 lsof가 없다면 설치하도록 하자.

sudo lsof | grep deleted
또는
sudo lsof +L1

출력된 결과에서 아까 삭제했던 파일을 찾아서 어떤 프로세스에서 아직 파일을 사용 중인지 확인할 수 있다. PID를 확인한 뒤 어떤 프로세스인지 확인해보자.

ps aux | grep PID

해당 프로세스가 삭제한 파일을 아직 잡아놓고 있으므로 프로세스를 종료/재시작하는 등의 처리를 해주면 더 이상 파일에 대한 참조가 남아있지 않게 되면서 정상적으로 삭제가 완료되어 디스크 용량이 늘어나게 된다.

참고 링크: https://unix.stackexchange.com/questions/34140/tell-fs-to-free-space-from-deleted-files-now

  1. lsof : list open files