Linux

💽📊 리눅스 df 명령어 완벽 가이드: 디스크 사용량을 한눈에 파악하기

kerasi 2025. 6. 14. 10:57
728x90
반응형

df
df -h

💽📊 리눅스 df 명령어 완벽 가이드: 디스크 사용량을 한눈에 파악하기

리눅스 시스템을 관리하다 보면 "디스크 공간이 얼마나 남았을까?"라는 질문을 자주 하게 됩니다. 바로 이때 필요한 것이 df 명령어입니다. df는 "disk free"의 줄임말로, 파일 시스템의 디스크 사용량과 여유 공간을 확인할 수 있는 강력한 도구입니다.

df 명령어란?

df 명령어는 마운트된 파일 시스템의 디스크 사용량 정보를 보여주는 유틸리티입니다. 전체 용량, 사용된 용량, 남은 용량, 사용률 등을 한눈에 확인할 수 있어 시스템 관리자와 개발자들이 가장 자주 사용하는 명령어 중 하나입니다.

기본 사용법

가장 기본적인 사용법은 매우 간단합니다:

df

이 명령을 실행하면 다음과 같은 출력을 볼 수 있습니다:

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       20511312 3923112  15528364  21% /
tmpfs            1048576       0   1048576   0% /dev/shm
/dev/sda2       10485760 2097152   8388608  20% /home

각 컬럼의 의미는 다음과 같습니다:

  • Filesystem: 파일 시스템 장치명
  • 1K-blocks: 전체 용량 (1KB 블록 단위)
  • Used: 사용된 용량
  • Available: 사용 가능한 용량
  • Use%: 사용률 (퍼센트)
  • Mounted on: 마운트 포인트

df 명령어 옵션 완전 가이드

기본 출력 형태 옵션

1. 인간이 읽기 쉬운 형태 (-h, --human-readable)

기본 출력의 숫자들이 읽기 어렵다면 -h 옵션을 사용하세요:

df -h

출력 결과:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G  3.8G   15G  21% /
tmpfs           1.0G     0  1.0G   0% /dev/shm
/dev/sda2        10G  2.0G  8.0G  20% /home

이제 GB, MB 단위로 표시되어 훨씬 이해하기 쉽습니다.

2. SI 단위 사용 (-H, --si)

1000을 기준으로 한 SI 단위 (KB, MB, GB)를 사용합니다:

df -H

-h vs -H 차이점:

  • -h: 1024 기준 (1K = 1024bytes, 1M = 1024K)
  • -H: 1000 기준 (1K = 1000bytes, 1M = 1000K)

3. 특정 블록 크기 지정 (-B, --block-size)

원하는 블록 크기로 출력할 수 있습니다:

df -B 1M        # 1MB 단위
df -B 1G        # 1GB 단위
df -B 512       # 512바이트 단위
df --block-size=1K  # 1KB 단위

4. 기존 단위 옵션들

df -k          # 1KB 블록 단위 (기본값)
df -m          # 1MB 블록 단위

파일 시스템 필터링 옵션

1. 특정 파일 시스템만 확인

특정 디렉토리나 파일 시스템만 확인하고 싶다면:

df -h /home
df -h /var/log

2. 파일 시스템 타입도 함께 출력 (-T, --print-type)

df -hT

출력 결과:

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4       20G  3.8G   15G  21% /
tmpfs          tmpfs     1.0G     0  1.0G   0% /dev/shm
/dev/sda2      ext4       10G  2.0G  8.0G  20% /home

3. 특정 파일 시스템 타입만 표시 (-t, --type)

예를 들어 ext4 파일 시스템만 보고 싶다면:

df -t ext4                    # ext4만
df -t tmpfs                   # tmpfs만
df -t ext4 -t xfs            # ext4와 xfs만

4. 특정 파일 시스템 타입 제외 (-x, --exclude-type)

tmpfs, proc 같은 가상 파일 시스템을 제외하고 싶다면:

df -x tmpfs -x proc           # tmpfs, proc 제외
df -x tmpfs -x devtmpfs      # 가상 파일 시스템들 제외

5. 로컬 파일 시스템만 표시 (-l, --local)

네트워크 파일 시스템(NFS, CIFS 등)을 제외하고 로컬 파일 시스템만:

df -l
df -hl                       # 인간이 읽기 쉬운 형태 + 로컬만

6. 모든 파일 시스템 표시 (-a, --all)

기본적으로 숨겨지는 파일 시스템들도 모두 표시:

df -a

특수 정보 표시 옵션

1. inode 정보 확인 (-i, --inodes)

때로는 디스크 공간은 충분하지만 inode가 부족해서 파일을 만들 수 없는 경우가 있습니다. inode(index node)는 리눅스 파일 시스템에서 파일의 메타데이터를 저장하는 데이터 구조입니다:

df -i

더 읽기 쉬운 형태로 확인하려면:

df -ih

출력 결과:

Filesystem      Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1         1.3M    168K    1.1M   13% /
tmpfs             224K       3    224K    1% /dev/shm
/dev/sda2         655K     310    655K    1% /home

2. 전체 디스크 사용량 합계 확인 (--total)

모든 마운트된 파일 시스템의 총합을 확인하고 싶다면:

df -h --total

출력 결과:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G  3.8G   15G  21% /
tmpfs           1.0G     0  1.0G   0% /dev/shm
/dev/sda2        10G  2.0G  8.0G  20% /home
total            31G  5.8G   24G  20% -

총합만 보고 싶다면 grep과 조합할 수 있습니다:

df -h --total | grep ^total

3. 출력 필드 커스터마이징 (--output)

필요한 정보만 골라서 출력할 수 있습니다. 예를 들어 파일 시스템, 사용 가능 공간, 사용률, 마운트 포인트만 보고 싶다면:

df -h --output=source,avail,pcent,target

출력 결과:

Filesystem      Avail Use% Mounted on
/dev/sda1        15G  21% /
tmpfs           1.0G   0% /dev/shm
/dev/sda2       8.0G  20% /home

사용 가능한 필드 옵션:

  • source: 파일 시스템
  • fstype: 파일 시스템 타입
  • itotal: 전체 inode 수
  • iused: 사용된 inode 수
  • iavail: 사용 가능한 inode 수
  • ipcent: inode 사용률
  • size: 전체 크기
  • used: 사용된 공간
  • avail: 사용 가능한 공간
  • pcent: 사용률
  • file: 파일명 (지정한 경우)
  • target: 마운트 포인트

필드 조합 예제:

# 파일 시스템 타입과 기본 정보
df --output=source,fstype,size,used,avail,pcent

# inode 정보만
df --output=source,itotal,iused,iavail,ipcent

# 최소한의 정보
df --output=source,avail,target

동작 제어 옵션

1. sync 후 실행 (--sync)

디스크 캐시를 플러시한 후 실제 디스크 사용량을 확인:

df --sync

이 옵션은 캐시되지 않은 정확한 사용량을 보고 싶을 때 유용합니다.

2. 0 크기 파일 시스템 표시 (--portability)

POSIX 호환 출력 형식을 사용합니다:

df -P

도움말 및 버전 옵션

df --help           # 도움말 표시
df --version        # 버전 정보 표시

옵션 조합 마스터 가이드

자주 사용하는 옵션 조합

1. 기본 추천 조합

df -hT                       # 인간이 읽기 쉬운 형태 + 파일시스템 타입
df -hlT                      # 위 + 로컬 파일시스템만
df -hT --total              # 위 + 총계 표시

2. 실제 디스크만 보기

# 가상 파일시스템 제외
df -hT -x tmpfs -x devtmpfs -x proc

# 로컬 파일시스템만 + 타입 표시
df -hlT

# 실제 디스크만 + 총계
df -hlT --total

3. 문제 진단용 조합

# 디스크 + inode 동시 확인
df -hT && echo "=== inode 정보 ===" && df -ih

# 사용률 높은 것만 + 상세 정보
df -hT | awk 'NR==1 || $6+0 > 80'

# 특정 파일시스템 집중 분석
df -hT -t ext4 --total

4. 모니터링용 조합

# 최소한의 핵심 정보
df -h --output=source,avail,pcent,target

# 전체 현황 한 줄로
df -h --total | tail -1

# JSON 스타일 출력
df -h --output=source,size,used,avail,pcent | \
awk 'NR>1 {printf "filesystem=%s size=%s used=%s avail=%s usage=%s\n", $1,$2,$3,$4,$5}'

블록 크기별 출력 비교

# 기본 (1K 블록)
df /home
# 출력: /dev/sda2    10485760  2097152   8388608  20% /home

# 메가바이트 단위
df -m /home  
# 출력: /dev/sda2    10240     2048      8192  20% /home

# 인간이 읽기 쉬운 형태 (1024 기준)
df -h /home
# 출력: /dev/sda2     10G      2.0G      8.0G  20% /home

# SI 단위 (1000 기준)  
df -H /home
# 출력: /dev/sda2     11G      2.1G      8.6G  20% /home

# 커스텀 블록 크기
df -B 1M /home
# 출력: /dev/sda2    10240M    2048M     8192M  20% /home

고급 필터링 예제

1. 특정 사용률 이상만 표시

# 80% 이상 사용률
df -h | awk '$5+0 > 80 || NR==1 {print}'

# 50% 이상이면서 ext4만
df -hT -t ext4 | awk '$6+0 > 50 || NR==1 {print}'

2. 용량별 필터링

# 10GB 이상 파티션만
df -h | awk '$2~/G/ && $2+0 >= 10 || NR==1 {print}'

# 1GB 미만 여유공간인 파티션
df -h | awk '$4~/[0-9]+M/ || ($4~/G/ && $4+0 < 1) || NR==1 {print}'

3. inode 위험 감지

# inode 사용률 90% 이상
df -ih | awk '$5+0 > 90 || NR==1 {print}'

# 디스크 공간은 충분하지만 inode 부족한 경우
df -h | awk '$5+0 < 50 {print $6}' | while read mount; do
    inode_usage=$(df -i "$mount" | awk 'NR==2 {print $5}' | sed 's/%//')
    if [ "$inode_usage" -gt 80 ]; then
        echo "경고: $mount - 디스크 여유 있지만 inode 부족 ($inode_usage%)"
    fi
done

옵션별 성능 고려사항

빠른 확인용 (성능 우선)

df -h                        # 기본, 빠름
df -h /specific/path        # 특정 경로만, 매우 빠름

정확한 정보용 (정확성 우선)

df --sync -h                # 캐시 플러시 후 확인, 느림
df -h --total               # 전체 계산 포함, 약간 느림

네트워크 파일시스템 고려

df -hl                      # 로컬만, NFS 등 제외로 빠름
df -h                       # NFS 포함, 네트워크 상태에 따라 느릴 수 있음

스크립트에서 자주 사용하는 패턴

1. 사용률만 추출

# 특정 경로의 사용률만
USAGE=$(df /home | awk 'NR==2 {print $5}' | sed 's/%//')

# 여러 경로의 사용률
for path in / /home /var; do
    usage=$(df "$path" | awk 'NR==2 {print $5}' | sed 's/%//')
    echo "$path: ${usage}%"
done

2. 여유공간만 추출

# 바이트 단위로 여유공간
AVAIL_KB=$(df /backup | awk 'NR==2 {print $4}')
AVAIL_GB=$((AVAIL_KB / 1024 / 1024))

# 인간이 읽기 쉬운 형태로
AVAIL_HUMAN=$(df -h /backup | awk 'NR==2 {print $4}')

3. 조건부 처리

# 사용률에 따른 분기 처리
USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$USAGE" -gt 90 ]; then
    echo "위험: 사용률 $USAGE%"
    # 정리 작업 수행
elif [ "$USAGE" -gt 80 ]; then
    echo "경고: 사용률 $USAGE%"
    # 모니터링 강화
else
    echo "정상: 사용률 $USAGE%"
fi

1. 가장 실용적인 조합

df -hT

인간이 읽기 쉬운 형태로 파일 시스템 타입과 함께 출력합니다.

2. 전체 디스크 사용량 요약

df -h --total | grep ^total

모든 디스크의 총 사용량만 간단히 확인할 수 있습니다.

3. 핵심 정보만 간결하게

df -h --output=source,avail,pcent,target

파일 시스템, 여유 공간, 사용률, 마운트 포인트만 표시합니다.

4. 디스크 사용량 모니터링

df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5 " " $1}'

실제 디스크의 사용률만 간단히 확인할 수 있습니다.

5. 사용률 높은 파일 시스템 찾기

df -h | awk 'NR>1 && $5+0 > 80 {print $0}'

사용률이 80% 이상인 파일 시스템만 표시합니다.

6. inode 부족 상황 체크

df -ih | awk 'NR>1 && $5+0 > 90 {print "inode 부족 위험: " $0}'

inode 사용률이 90% 이상인 파일 시스템을 경고와 함께 표시합니다.

주의사항과 팁

1. 루트 파일 시스템 모니터링

루트 파일 시스템(/)의 사용률이 95% 이상이 되면 시스템에 문제가 발생할 수 있습니다. 정기적으로 확인하는 습관을 가져야 합니다.

2. du와의 차이점

df는 파일 시스템 레벨에서 사용량을 보여주고, du는 디렉토리별 사용량을 보여줍니다. 때로는 두 명령어의 결과가 다를 수 있는데, 이는 삭제된 파일이 아직 프로세스에 의해 사용되고 있을 때 발생할 수 있습니다.

3. inode 고갈 문제

디스크 공간이 충분함에도 "No space left on device" 오류가 발생한다면 inode가 부족할 수 있습니다. df -i로 확인해보세요.

4. 네트워크 파일 시스템

NFS나 CIFS 같은 네트워크 파일 시스템의 경우 네트워크 상태에 따라 응답이 느릴 수 있습니다.

5. 정기적인 모니터링의 중요성

시스템 관리자라면 df 명령어를 정기적으로 실행하여 중요한 마운트 포인트의 사용량을 모니터링하는 것이 좋습니다. 특히 로그 파일이 저장되는 /var이나 사용자 데이터가 있는 /home 등을 주의 깊게 살펴보세요.

실제 사용 시나리오

시나리오 1: 로그 파일로 인한 디스크 가득함

df -h
# /var 파티션이 95% 사용 중임을 발견
df -h /var
# 구체적인 사용량 확인 후 로그 정리 작업 진행

시나리오 2: 새 애플리케이션 설치 전 공간 확인

df -h /opt
# 설치할 디렉토리의 여유 공간 확인

시나리오 3: 전체 시스템 디스크 사용량 리포트

echo "=== 시스템 디스크 사용량 리포트 ==="
df -h --total | grep ^total
echo ""
echo "=== 위험 수준 파티션 (80% 이상) ==="
df -h | awk 'NR>1 && $5+0 > 80 {print $0}'

시나리오 4: inode 부족 문제 진단

# "No space left on device" 오류 발생 시
df -h /tmp    # 디스크 공간 확인
df -ih /tmp   # inode 사용량 확인
# inode가 100%라면 작은 파일들이 너무 많다는 의미

시나리오 5: 백업 스크립트에서 활용

#!/bin/bash
USAGE=$(df /backup | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $USAGE -gt 90 ]; then
    echo "백업 디스크 사용량이 90% 초과: ${USAGE}%"
    # 알림 발송 또는 정리 작업 수행
fi

시나리오 6: 시스템 모니터링 대시보드용 데이터

# JSON 형태로 디스크 정보 출력
df -h --output=source,size,used,avail,pcent,target | \
awk 'NR>1 {printf "{\"filesystem\":\"%s\",\"size\":\"%s\",\"used\":\"%s\",\"avail\":\"%s\",\"usage\":\"%s\",\"mount\":\"%s\"}\n", $1,$2,$3,$4,$5,$6}'

마치며

df 명령어는 간단해 보이지만 시스템 관리에 꼭 필요한 도구입니다. 정기적인 디스크 사용량 모니터링을 통해 시스템 문제를 예방하고, 필요할 때 적절한 조치를 취할 수 있습니다.

특히 -h 옵션은 거의 필수로 사용하게 될 것이고, 상황에 따라 --total, --output, -i 같은 옵션들을 조합해서 사용하면 더욱 효과적인 시스템 관리가 가능합니다.

핵심 포인트:

  • 일상적인 모니터링에는 df -hT 사용
  • 전체 현황 파악에는 df -h --total 활용
  • inode 문제 진단시에는 df -ih 확인
  • 커스텀 출력이 필요하면 --output 옵션 활용
  • 스크립트에서는 awk와 조합하여 자동화

다음번에는 du 명령어와 함께 사용하여 디스크 사용량을 더 자세히 분석하는 방법에 대해 알아보는 것도 좋겠습니다!


태그: #Linux #df명령어 #시스템관리 #디스크관리 #리눅스명령어 #서버관리 #모니터링 #파일시스템 #디스크사용량 #시스템모니터링 #bash #셸스크립트 #DevOps #인프라 #시스템운영 #터미널 #CLI #리눅스기초 #시스템진단 #디스크공간

728x90