리눅스에서 디스크 용량을 확인할 때 df 명령어로 확인했을 때 용량이 컸는데 du 명령어로 확인하니까 용량이 작았다.
파일을 삭제했는데 df에 반영이 되지 않은 것이다.
예를 들어, /var 용량의 경우
df 명령어로 확인했을 때 사용중인 공간이 31G 였다고 하면
du 명령어로 확인해보니 사용중인 공간이 10G 밖에 되지 않는다.
이 문제가 발생하는 이유는
보통 시스템을 오래 켜 둔 상태에서 발생한다고 한다.
그 이유는 특정 프로세스가 file descriptor 를 연 후에 file descriptor 가 가리키는 파일을 지웠는데
그 프로세스가 여전히 파일을 읽고 쓰고 있는 것이다.
따라서 lsof 명령어를 통해 문제가 있는 프로세스를 찾을 수 있다.
우선, 문제가 있는 디렉토리의 열린 파일 목록을 검색한다.
# lsof
또는 해당 디렉토리 검색
# lsof [DIRECTORY]
grep 명령어로 deleted 만 검색
# lsof | grep deleted
lsof 명령어를 통해 확인해보면 NAME 마지막에 (deleted) 라고 되어있는 프로세스를 확인할 수 있다.
이 경우에는 파일을 지웠지만 아직까지 남아있어 용량을 차지하고 있는 프로세스다.
따라서 해당 프로세스의 PID를 kill 명령어를 통해 죽이면 된다.
# kill -9 [PID]
그리고 다시 확인해보면 정상으로 돌아와있는 것을 확인할 수 있다.
df 명령어의 경우 특정 상황에서 정확한 실제 용량을 반영해주지 못하는 경우가 발생한다.
따라서 lsof 명령어를 통해 문제 있는 프로세스를 찾아 죽이는 방법을 통해 정상적으로 돌아오게 할 수 있지만
시스템 재시작이 가능하다면 재시작하는 것도 하나의 방법이 될 수 있다.
[참고 사이트]
'Works > CentOS & RockyLinux' 카테고리의 다른 글
국내 주요 미러(Mirror) 사이트 목록 (0) | 2022.06.22 |
---|---|
imap 설치 (0) | 2022.04.08 |
Centos7 브릿지 방화벽(iptables forward) 작동안할시 (0) | 2021.12.15 |
gcc) pkg-config 사용법 / 인식이 안되는 경우 (0) | 2021.08.17 |
ssh 접속시 no matching key 문제 해결 (0) | 2021.04.08 |