Quick Reference
df -h
df -h /
df -i /
du -sh .
du -h --max-depth=1 /var
free -h
lsblk| 목적 | 명령 |
|---|---|
| 파일시스템 여유 공간 | df -h |
| 특정 mount 확인 | df -h /path |
| inode 고갈 확인 | df -i /path |
| 현재 디렉터리 총 사용량 | du -sh . |
| 하위 디렉터리별 사용량 | du -h --max-depth=1 <dir> |
| 메모리와 swap 확인 | free -h |
| block device 확인 | lsblk |
자원 확인
df는 파일시스템 단위의 사용량을 보여 줍니다. "서버 디스크가 꽉 찼는가"를 볼 때 먼저 씁니다. du는 디렉터리나 파일 단위의 사용량을 계산합니다. "어떤 디렉터리가 공간을 많이 쓰는가"를 찾을 때 씁니다.
df -h
du -h --max-depth=1 /var | sort -hdf와 du의 숫자가 다르게 보일 수 있습니다. 삭제된 파일을 어떤 프로세스가 계속 열고 있거나, mount point가 겹치거나, 권한 때문에 일부 파일을 읽지 못하는 상황에서는 차이가 납니다. 큰 차이가 나면 실행 중인 프로세스가 삭제된 로그 파일을 잡고 있는지 확인해야 할 수 있습니다.
공간 부족은 block, inode, 열린 삭제 파일을 나눠 본다
df -h는 block 사용량이고 df -i는 inode 사용량입니다. 작은 파일이 아주 많이 쌓이면 block 여유가 남아도 inode가 먼저 고갈되어 새 파일을 만들 수 없습니다.
df -h /var
df -i /var
sudo lsof +L1 # 삭제됐지만 아직 열린 파일, lsof가 설치된 경우du는 현재 경로에서 보이는 파일을 더하므로 열린 삭제 파일은 세지 못합니다. mount namespace가 다른 컨테이너·프로세스는 host의 df/du와 다른 mount를 볼 수도 있습니다. 차이가 계속되면 해당 프로세스의 /proc/<pid>/mountinfo와 서비스 실행 환경을 확인합니다.
du -x는 다른 파일시스템으로 내려가지 않아 특정 mount 안의 원인을 찾을 때 유용합니다. GNU du --apparent-size는 파일이 논리적으로 차지하는 크기를, 기본 du는 실제 할당 block을 기준으로 보므로 sparse file이나 압축 파일에서는 둘의 수치가 다를 수 있습니다.
free는 available을 같이 봐야 한다
Linux는 남는 메모리를 cache와 buffer로 적극 사용합니다. 그래서 free 출력에서 free 값만 작다고 바로 메모리 부족이라고 판단하면 안 됩니다. 일반적으로는 available을 함께 보고, swap 사용량과 OOM 로그를 같이 확인합니다.
free -h
journalctl -k | grep -i "out of memory"체크포인트
| 상황 | 선택 |
|---|---|
| 디스크 전체가 꽉 찼는지 확인 | df -h |
| 특정 경로가 어느 파일시스템인지 확인 | df -h <path> |
| 공간은 남았는데 파일을 만들 수 없음 | df -i <path> |
| 큰 디렉터리 찾기 | du -h --max-depth=1 |
| 메모리 부족 의심 | free -h, OOM 로그 |
| 디스크 장치와 mount 구조 확인 | lsblk |
| 로그가 공간을 많이 씀 | /var/log, journal 설정 확인 |
주의할 점
공간 부족을 해결한다고 바로 큰 디렉터리를 삭제하지 마십시오. 먼저 block과 inode 중 무엇이 부족한지, 삭제 대상이 서비스 데이터인지 로그인지 확인해야 합니다.
df -h
du -h --max-depth=1 /var | sort -h참고 링크
3 sources