리눅스 환경에서 파일 시스템의 디스크 사용량을 파악할 때 df(disk free) 명령어는 필수 도구입니다. 마운트된 전체 파일 시스템의 여유 공간과 사용 현황을 한눈에 확인할 수 있습니다.
기본 문법
df [옵션] [파일...]
특정 파일이나 디렉터리를 인자로 전달하면 해당 항목이 위치한 파일 시스템의 정보를 출력합니다. 인자를 생략하면 현재 마운트된 모든 파일 시스템의 정보를 보여줍니다.
주요 옵션
| 옵션 | 설명 |
|---|---|
-a, --all | 가상 파일 시스템을 포함한 모든 파일 시스템 표시 |
-h, --human-readable | KB, MB, GB 등 읽기 쉬운 단위로 표시 (1024 기준) |
-H | -h와 유사하나 1000 단위로 계산 (SI 접두어) |
-i, --inodes | 블록 사용량 대신 inode 사용 현황 출력 |
-k | 블록 크기를 1024바이트로 고정 |
-l, --local | 로컬 파일 시스템만 표시 (NFS 등 원격 마운트 제외) |
-m | 블록 크기를 1MB로 고정 |
-T, --print-type | 파일 시스템 유형 함께 출력 |
-t <유형> | 지정한 파일 시스템 유형만 필터링 |
-x <유형> | 지정한 파일 시스템 유형은 제외 |
-P, --portability | POSIX 표준 형식으로 출력 |
--sync | 정보 수집 전 sync 실행 |
--no-sync | sync 생략 (기본값) |
실전 예제
예제 1: 기본 디스크 사용량 확인
$ df
파일 시스템 1K-블록 사용 가용 사용% 마운트 위치
/dev/nvme0n1p2 49057860 15234020 31823840 33% /
/dev/nvme0n1p1 523248 6184 517064 2% /boot/efi
/dev/sda1 480588860 210452300 245138560 47% /data
tmpfs 8163264 1200 8162064 1% /run/user/1000
출력의 각 열은 다음을 의미합니다:
- 파일 시스템: 디바이스 경로
- 1K-블록: 파일 시스템 전체 크기 (1KB 블록 단위)
- 사용: 이미 사용 중인 블록 수
- 가용: 사용 가능한 블록 수
- 사용%: 일반 사용자 공간 기준 사용률 (100%여도 root용 예약 공간 존재)
- 마운트 위치: 파일 시스템이 연결된 디렉터리
참고:
사용 + 가용 ≠ 1K-블록인 이유는 각 파일 시스템에 root 전용 예약 공간이 할당되기 때문입니다. 사용자 공간이 가득 차도 관리자는 이 영역을 이용해 시스템 복구가 가능합니다.
예제 2: 사람 친화적 단위 표시
$ df -h
파일 시스템 크기 사용 가용 사용% 마운트 위치
/dev/nvme0n1p2 47G 15G 31G 33% /
/dev/nvme0n1p1 511M 6.1M 505M 2% /boot/efi
/dev/sda1 459G 201G 234G 47% /data
tmpfs 7.8G 1.2M 7.8G 1% /run/user/1000
예제 3: inode 사용량 점검
$ df -i
파일 시스텼 Inode 사용 가용 사용% 마운트 위치
/dev/nvme0n1p2 3129344 482300 2647044 16% /
/dev/nvme0n1p1 131072 40 131032 1% /boot/efi
/dev/sda1 30517248 120500 30396748 1% /data
소형 파일이 매우 많은 경우 실제 디스크 공간은 남아있어 inode가 부족해 파일 생성이 불가능한 상황이 발생합니다. 이 경우 df -i로 진단합니다.
예제 4: 특정 파일 시스템 유형 필터링
$ df -t ext4 -h
파일 시스템 크기 사용 가용 사용% 마운트 위치
/dev/nvme0n1p2 47G 15G 31G 33% /
/dev/sda1 459G 201G 234G 47% /data
예제 5: 파일 시스템 유형 정보 포함
$ df -Th
파일 시스텼 유형 크기 사용 가용 사용% 마운트 위치
/dev/nvme0n1p2 ext4 47G 15G 31G 33% /
/dev/nvme0n1p1 vfat 511M 6.1M 505M 2% /boot/efi
/dev/sda1 ext4 459G 201G 234G 47% /data
tmpfs tmpfs 7.8G 1.2M 7.8G 1% /run/user/1000
예제 6: 파이프라인으로 정렬 및 필터링
사용률 기준 오름차순 정렬:
$ df -h | sort -k5 -n
파일 시스텸 크기 사용 가용 사용% 마운트 위치
/dev/nvme0n1p1 511M 6.1M 505M 2% /boot/efi
tmpfs 7.8G 1.2M 7.8G 1% /run/user/1000
/dev/nvme0n1p2 47G 15G 31G 33% /
/dev/sda1 459G 201G 234G 47% /data
특정 임계값(예: 50%) 이상인 파일 시스템만 추출:
$ df -h | awk 'NR==1 || $5+0 >= 50 {print}'
파일 시스텸 크기 사용 가용 사용% 마운트 위치
/dev/sdb1 200G 180G 20G 91% /archive
예제 7: -h vs -H 차이
$ df -h / | tail -1
/dev/nvme0n1p2 47G 15G 31G 33% /
$ df -H / | tail -1
/dev/nvme0n1p2 50G 16G 33G 33% /
-h는 이진 접두어(1024 기준, GiB, MiB), -H는 십진 접두어(1000 기준, GB, MB)를 사용합니다. 저장 장치 제조사의 용량 표기와 비교할 때는 -H가 더 직관적일 수 있습니다.
예제 8: 스크립트에서 활용
특정 마운트포인트의 사용률을 변수로 추출:
#!/bin/bash
MOUNT_POINT="/data"
THRESHOLD=80
usage=$(df "$MOUNT_POINT" | awk 'NR==2 {gsub(/%/,""); print $5}')
if [ "$usage" -ge "$THRESHOLD" ]; then
echo "경고: ${MOUNT_POINT} 사용률 ${usage}% 임계치 초과" >&2
# 알림 발송 로직
fi
자주 활용하는 조합
| 명령어 | 용도 |
|---|---|
df -h | 일상적인 디스크 사용량 확인 |
df -hi | inode 사용량 확인 (특히 메일 서버, 캐시 서버) |
df -Th | 파일 시스템 유형과 함께 확인 |
df -lh | 로컬 파일 시스템만 확인 (NFS 숨김) |
df -h . | 현재 디렉터리가 속한 파일 시스템 확인 |
df는 파일 시스템 수준의 정보를 제공하므로, 특정 디렉터리의 실제 사용량을 파하려면 du 명령어와 함께 사용하는 것이 좋습니다.