업무를 하다 보면 OS 디스크 사용량이 90% 초과하고 있다는 알림 또는 전화를 받습니다. // 보통 Log파일 용량이 매우 큼
리눅스에서 현재 서버의 용량을 알아보는 명령어로는 du와 df 가 있습니다.
참고) 로그 파일을 주기적으로 삭제하고 싶다면? 로그 파일의 용량을 줄이고 싶다면?
1. 디렉토리 용량 확인(du 명령어)
특정 디렉토리의 사용량을 확인하고 싶을 때는 du 명령어를 이용하면 됩니다.
du [옵션] [디렉토리경로]
옵션
-a : 디렉토리 내 파일의 모든 정보 포함하여 출력
-m : 결과를 MB 단위로 출력
-h : 사용자가 이해하기 쉬운 용량의 단위로 표시 (KB, MB, GB 등) // 가장 많이 사용
-l : 하드 링크의 용량도 포함하여 출력
-s : 사용량 총합계만 출력 // 가장 많이 사용
※ 특정 디렉토리에서 용량이 큰 파일 10개 추출
ex) # du -h /var | sort -n | tail -10 or # du -h /var | sort -nr | head -10
2. 디스크 용량 확인(df 명령어)
모든 디스크의 용량, 사용량 등을 확인할 때는 df 명령어를 이용하면 됩니다.
df [옵션] [디렉토리경로]
옵션
-m : 결과 값을 MB 단위로 출력
-h : 사용자가 이해하기 쉬운 용량의 단위로 표시 (KB, MB, GB 등) // 가장 많이 사용
-l : 하드 링크의 용량도 포함하여 출력
-T : 마운트 된 볼륨의 포맷 타입을 출력
3. du, df 명령어의 용량이 서로 다르다면?
df 명령어로 확인했을 때는 용량이 컸는데 du 명령어로 확인하니까 용량이 작았다면,
특정 파일이 삭제됐는데 df에 반영되지 않은 상태로 볼 수 있습니다.
예를 들어 /var에 패키지 설치 중 용량을 확인해 봤을 때 df 명령어에선 사용 중인 공간이 27G,
du 명령어에선 사용 중인 공간이 12G로 차이가 날 수 있습니다.
※ 보통 시스템을 오래 켜 두면 발생한다고 한다.
그 이유는 특정 프로세스가 file descriptor를 연 후에 file descriptor가 가리키는 파일을 지웠는데
그 프로세스가 여전히 파일을 읽고 쓰는 상태입니다.
명령어 | 설명 |
du | commit 된 size를 계산하여 출력 |
df | 프로세스가 사용중인 size도 포함하여 출력 |
lsof 명령어를 통해 문제가 있는 프로세스를 찾을 수 있습니다.
# lsof | grep deleted
lsof 명령어를 통해 확인해 보면 NAME 마지막에 (deleted)라고 되어있는 프로세스가 있습니다.
이 경우는 파일이 지워졌지만 프로세스가 용량을 차지하고 있는 상태입니다.
# kill -9 [PID]
프로세스를 죽이고 df를 확인해보면 용량이 변하는 것을 확인 할 수 있습니다.
※ 위의 내용이 어렵다면 OS 재부팅을 하시면 됩니다.
[요약]
du는 파일시스템을 읽어서 계산하기 때문에 정확하지만 읽어야 할 정보가 많을 경우 응답이 느림
df는 응답이 빠르지만, 특정 상황에서 실제 용량을 반영해 주지 못하는 경우가 발생할 수 있음
'OS > Linux' 카테고리의 다른 글
Linux - 리눅스 설치 시 RAID 인식 안될 때 (CentOS 7) / HP DL360, DL380 (0) | 2023.04.06 |
---|---|
Linux - 서버 정보 확인 명령어 모음 (0) | 2023.03.28 |
Linux - 네트워크설정(IP / DNS 설정) (0) | 2023.03.14 |
Linux - 서버 간 파일 복사 명령어(scp) / 원격 파일 복사 (0) | 2023.03.10 |
Linux - 파일 출력 명령어 (cat) (0) | 2023.03.08 |