[Linux]리눅스 디렉토리 용량 확인

Date:     Updated:

카테고리:

df 명령어

df 명령어는 리눅스 시스템 전체의 디스크 사용량을 확인할 수 있는 명령어이다. 이는 파일 시스템별로 마운트된(mounting) 디스크의 전체 크기, 사용 중인 공간, 사용 가능한 공간, 사용률, 마운트된 위치 등의 정보를 볼 수 있게 해준다. df는 파일 시스템의 디스크 블록을 조회하여 전체 값과 자유 블록의 수를 계산한다.

df -h

1

df 명령어의 옵션

  • -a: 모든 파일시스템을 출력
  • -B: 지정용량을 블록단위로 정하여 출력
    • ex: df -B 1M
  • --total: 총합 total 라인을 추가하여 출력
  • -h: 사람이 보기 편한 용량 크기로 출력(1K, 20M, 1.0G)

1

  • -H: 1024가 아닌 1000단위로 용량을 계산하여 출력
  • -i: i-node의 남은 공간, 사용 공간, 사용량을 출력
  • -k: 블럭단위로 1k로 설정하여 출력

1

du 명령어

du 명령어는 특정 디렉토리를 기준으로 디스크 사용량을 확인하는 명령어이다. 이 명령어는 입력받은 경로(디렉토리 혹은 파일)의 디스크 사용량을 보여준다. du는 파일 트리를 따라 이동하면서 stat()라는 시스템 호출을 이용하여 각각의 디렉토리, 심볼릭 링크 및 파일에 할당된 블록의 수를 더하여 계산한다. 이런 계산 방식의 차이 때문에 때때로 df와 du의 출력 결과가 일치하지 않을 수 있다.

특히 서버 재부팅한지 오래지났을 때, Process 실행을 많이했었을 경우 df와 du 사이의 메모리 갭이 생길 수 있다. 이 때 해결할 수 있는 방법은 여러가지가 있다.

  1. 파일 디스크립터가 열린 상태에서 파일이 삭제된 경우에 발생할 수 있다.
    • 이 때는 해당 프로세스(데몬)를 재시작 하거나 시스템을 재부팅하여 문제를 해결할 수 있다.
  2. df는 dirty buffer에 있는 용량을 계산에 포함하지만 du는 계산하지 않는 경우 발생 할 수 있다.
    • sync 명령어를 실행하여 dirty buffer를 비워 문제를 해결할 수 있다.
  3. 특정 조건 하에서는 두 명령어의 출력값이 크게 다를 수 있다. 예를 들어, 삭제 되지 않고 반환되지 않은 파일이 많다면 df가 더 큰 값을 보여주게 되고, sparse 파일이 많다면 du가 더 큰 값을 보여주게 된다.
    • lsof -n | grep deleted 명령어를 이용하면, 디렉토리 상에서 삭제되었지만 프로세스에서 참조 카운트가 존재하는 파일을 찾을 수 있다. 해당 프로세스를 재시작하면 문제를 해결할 수 있다.

du 명령어 옵션

  • -a: 전체 파일 크기 출력 (–all)
  • -h: 디렉토리/파일 크기 KB/MB/GB 단위로 표시 (–human-readable)
  • -s: 디렉토리의 전체 사용량만 표시 --max-depth=N: 최대 N번째 하위 디렉토리까지 표시 ---apparent-size: 실제 파일의 용량 표시 -b: 바이트 단위 실제 파일의 용량 표시
du -h --max-depth=1 /home/youminkk/

1

참고로 home 디렉토리에서 하위 디렉토리별 사용량을 알고싶으면 sudo du -h --max-depth=1 /home을 사용하면 된다.

Reference

df, du 명령어 차이점 & 차이날 때 해결 방법

Linux 카테고리 내 다른 글 보러가기

댓글 남기기