[Linux]리눅스 디렉토리 용량 확인
카테고리: Linux
df 명령어
df 명령어는 리눅스 시스템 전체의 디스크 사용량을 확인할 수 있는 명령어이다. 이는 파일 시스템별로 마운트된(mounting) 디스크의 전체 크기, 사용 중인 공간, 사용 가능한 공간, 사용률, 마운트된 위치 등의 정보를 볼 수 있게 해준다. 
df는 파일 시스템의 디스크 블록을 조회하여 전체 값과 자유 블록의 수를 계산한다.
df -h
df 명령어의 옵션
- -a: 모든 파일시스템을 출력
- -B: 지정용량을 블록단위로 정하여 출력- ex: df -B 1M
 
- ex: 
- --total: 총합 total 라인을 추가하여 출력
- -h: 사람이 보기 편한 용량 크기로 출력(1K, 20M, 1.0G)
- -H: 1024가 아닌 1000단위로 용량을 계산하여 출력
- -i: i-node의 남은 공간, 사용 공간, 사용량을 출력
- -k: 블럭단위로 1k로 설정하여 출력
du 명령어
du 명령어는 특정 디렉토리를 기준으로 디스크 사용량을 확인하는 명령어이다. 이 명령어는 입력받은 경로(디렉토리 혹은 파일)의 디스크 사용량을 보여준다. du는 파일 트리를 따라 이동하면서 stat()라는 시스템 호출을 이용하여 각각의 디렉토리, 심볼릭 링크 및 파일에 할당된 블록의 수를 더하여 계산한다.
이런 계산 방식의 차이 때문에 때때로 df와 du의 출력 결과가 일치하지 않을 수 있다.
특히 서버 재부팅한지 오래지났을 때, Process 실행을 많이했었을 경우 df와 du 사이의 메모리 갭이 생길 수 있다. 이 때 해결할 수 있는 방법은 여러가지가 있다.
- 파일 디스크립터가 열린 상태에서 파일이 삭제된 경우에 발생할 수 있다.
    - 이 때는 해당 프로세스(데몬)를 재시작 하거나 시스템을 재부팅하여 문제를 해결할 수 있다.
 
- df는 dirty buffer에 있는 용량을 계산에 포함하지만 du는 계산하지 않는 경우 발생 할 수 있다.
    - sync명령어를 실행하여 dirty buffer를 비워 문제를 해결할 수 있다.
 
- 특정 조건 하에서는 두 명령어의 출력값이 크게 다를 수 있다. 예를 들어, 삭제 되지 않고 반환되지 않은 파일이 많다면 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/
참고로 home 디렉토리에서 하위 디렉토리별 사용량을 알고싶으면 sudo du -h --max-depth=1 /home을 사용하면 된다.
 
      
    
댓글 남기기