[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
을 사용하면 된다.
댓글 남기기