κ°œλ°œλ…ΈνŠΈ/Linux

[Linux] du / df λͺ…λ Ήμ–΄ μ™„μ „ κ°€μ΄λ“œ πŸ’Ύ

둜둜뽜 2025. 11. 18. 07:30

du와 df λͺ…λ Ήμ–΄λŠ” λ¦¬λˆ…μŠ€ μ„œλ²„·κ°œλ°œν™˜κ²½μ—μ„œ μš©λŸ‰ 문제λ₯Ό μ§„λ‹¨ν•˜λŠ” 핡심 λ„κ΅¬μž…λ‹ˆλ‹€. 전체 λ””μŠ€ν¬ μƒνƒœ 확인(df), 폴더·νŒŒμΌλ³„ μš©λŸ‰ 뢄석(du), μ •λ ¬·ν•„터링·λ‘œκ·Έ 폭증 λŒ€μ‘κΉŒμ§€ 싀무 μ€‘μ‹¬μœΌλ‘œ μ •λ¦¬ν•©λ‹ˆλ‹€.

1. μ™œ du / df λͺ…λ Ήμ–΄κ°€ λ¦¬λˆ…μŠ€ κ΄€λ¦¬μ—μ„œ μ€‘μš”ν•œκ°€?

λ¦¬λˆ…μŠ€λ₯Ό 였래 μš΄μ˜ν•˜λ‹€ 보면 κ°‘μžκΈ° μ„œλ²„κ°€ λŠλ €μ§€κ±°λ‚˜, λΉŒλ“œκ°€ 이유 없이 μ‹€νŒ¨ν•˜κ±°λ‚˜, Docker μ»¨ν…Œμ΄λ„ˆκ°€ 더 이상 μ˜¬λΌμ˜€μ§€ μ•ŠλŠ” 상황을 λˆ„κ΅¬λ‚˜ ν•œ 번쯀 κ²ͺμŠ΅λ‹ˆλ‹€.
저도 μ‹€μ œλ‘œ μš΄μ˜ν–ˆλ˜ μ„œλ²„ 쀑 ν•˜λ‚˜μ—μ„œ μƒˆλ²½ μ‹œκ°„μ— 둜그 파일이 폭주해 /var νŒŒν‹°μ…˜μ΄ μˆœμ‹κ°„μ— 100%에 λ„λ‹¬ν•œ 적이 μžˆμŠ΅λ‹ˆλ‹€. κ·Έ μˆœκ°„λΆ€ν„° SSH 접속쑰차 λ˜μ§€ μ•Šμ•˜κ³ , μ„œλΉ„μŠ€ λ‹΄λ‹Ήμžλ“€μ΄ λͺ¨λ‘ κΉ¨μ–΄λ‚˜ 원인을 μ°Ύμ•„μ•Ό ν–ˆλ˜ 기얡이 아직도 μƒμƒν•©λ‹ˆλ‹€.

이럴 λ•Œ κ°€μž₯ λ¨Όμ € μ‹€ν–‰ν•˜λŠ” λͺ…령은 μ•„λž˜ 두 κ°€μ§€μž…λ‹ˆλ‹€.

  • df → νŒŒν‹°μ…˜ 전체 μš©λŸ‰ νŒŒμ•…
  • du → μ–΄λ–€ 폴더가 문제λ₯Ό λ§Œλ“œλŠ”μ§€ 좔적

이 두 λͺ…λ Ήμ–΄λ§Œ μ •ν™•νžˆ 닀뀄도 전체 μš©λŸ‰ 문제의 80% 이상은 μ¦‰μ‹œ 원인 νŒŒμ•…μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

여기에 ν•œ κ°€μ§€ 더, νšŒμ‚¬μ—μ„œ μ—¬λŸ¬ νŒ€μ›μ΄ ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 개발 μ„œλ²„λΌλ©΄ μŠ€ν† λ¦¬μ§€λŠ” 생각보닀 더 빨리 μ°¨μ˜€λ¦…λ‹ˆλ‹€.
특히 λΉŒλ“œ μ‚°μΆœλ¬Ό, 개인 μ‹€ν—˜μš© 파일, Docker 이미지, 둜그 등은 “λˆ„κ°€ λ§Œλ“€μ—ˆλŠ”μ§€” λͺ…ν™•ν•˜μ§€ μ•Šμ€ κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. 이런 ν™˜κ²½μ—μ„œ du λͺ…λ Ήμ–΄λŠ” 정말 κ°•λ ₯ν•©λ‹ˆλ‹€.

  • μ–΄λ–€ μ‚¬μš©μžκ°€ λ§Œλ“  폴더가 크게 λŠ˜μ—ˆλŠ”μ§€
  • μ‚­μ œν•˜μ§€ μ•Šκ³  계속 μŒ“μ•„λ‘” 파일이 λˆ„κ΅¬ μ˜μ—­μΈμ§€
  • νŠΉμ • ν΄λ”λ§Œ κ³Όλ„ν•˜κ²Œ μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ΄ μžˆλŠ”μ§€

이런 것듀을 눈으둜 확인할 수 있기 λ•Œλ¬Έμ— νŒ€ λ‹¨μœ„ μ„œλ²„ μš΄μ˜μ—λ„ 큰 도움이 λ©λ‹ˆλ‹€.
μ‹€μ œλ‘œ 저희도 du둜 μ‚¬μš©μž ν™ˆ 디렉터리λ₯Ό 정렬해보면 μ–΄λŠ λ™λ£Œκ°€ μš©λŸ‰μ„ 제일 많이 μ“°κ³  μžˆλŠ”μ§€ 금방 νŒŒμ•…ν•  수 μžˆμ—ˆκ³ , 덕뢄에 “λˆ„κ°€ μ²­μ†Œλ₯Ό μ•ˆ ν–ˆλŠ”μ§€” 금방 μ•Œμ•„λ‚Ό 수 μžˆμ—ˆμ£ ^^.


2. df λͺ…λ Ήμ–΄(전체 λ””μŠ€ν¬ μƒνƒœ 확인)

df(disk free)은 μž₯치 전체 μš©λŸ‰μ„ ν™•μΈν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.

df -h
 
  • -h : MB / GB λ‹¨μœ„ ν‘œμ‹œ (μ‚¬λžŒμ΄ 읽기 μ‰¬μš΄ ν˜•νƒœ)

μ˜ˆμ‹œ 좜λ ₯:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   28G   20G  58% /
/dev/sdb1       200G  150G   50G  75% /data
 
μ‹€λ¬΄μ—μ„œ κ°€μž₯ μ€‘μš”ν•˜κ²Œ λ³΄λŠ” ν•­λͺ©

ν•­λͺ© μ„€λͺ…
/ (루트 νŒŒν‹°μ…˜) μš©λŸ‰ 꽉 μ°¨λ©΄ 전체 μ‹œμŠ€ν…œ 영ν–₯
/var/log 둜그 폭주 μ‹œ κ°€μž₯ λ¨Όμ € 터짐
/data, /home μ‚¬μš©μž 파일 μ¦κ°€λ‘œ μš©λŸ‰ μœ„ν—˜
Use% 90% 이상이면 κΈ΄κΈ‰ 점검 ν•„μš”

SSH 접속 λΆˆκ°€, μ„œλΉ„μŠ€ μž¬μ‹œμž‘ μ‹€νŒ¨ λ“±μ˜ 증상은 λŒ€λΆ€λΆ„ /var λ˜λŠ” / νŒŒν‹°μ…˜ λ¬Έμ œμ—μ„œ μ‹œμž‘λ©λ‹ˆλ‹€.

λ¦¬λˆ…μŠ€ df -h λͺ…λ Ήμ–΄ 좜λ ₯ ν™”λ©΄ μ˜ˆμ‹œ. 각 νŒŒν‹°μ…˜μ˜ Size·Used·Avail·Use%와 마운트 지점을 λ³΄μ—¬μ£ΌλŠ” μ‹€μ œ μ„œλ²„ λ””μŠ€ν¬ μš©λŸ‰ μƒνƒœ.
df -h λͺ…λ Ήμ–΄λ‘œ ν™•μΈν•œ λ¦¬λˆ…μŠ€ μ„œλ²„ λ””μŠ€ν¬ μš©λŸ‰ ν˜„ν™© μ˜ˆμ‹œ ν™”λ©΄


3. du λͺ…λ Ήμ–΄(폴더·νŒŒμΌ λ‹¨μœ„ 원인 좔적 )

df둜 “λ¬Έμ œκ°€ μžˆλ‹€”λŠ” 사싀을 ν™•μΈν–ˆλ‹€λ©΄, duλŠ” “λˆ„κ°€ μš©λŸ‰μ„ μž‘μ•„λ¨Ήκ³  μžˆλŠ”μ§€” μ°ΎλŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

1) ν˜„μž¬ 디렉터리 전체 μš©λŸ‰ 계산

du -sh .
 

좜λ ₯ 예:

3.2G    .
 

2) ν•˜μœ„ 폴더 μš©λŸ‰ ν•œλˆˆμ— 보기

du -sh *
 

좜λ ₯:

500M logs
1.2G build
3.0K README.md
 

μš©λŸ‰μ΄ μ–΄λ””μ—μ„œ 많이 μ°¨μ§€ν•˜λŠ”μ§€ λ°”λ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

3) νŠΉμ • 경둜 μš©λŸ‰ 확인

du -sh /var/log
 

4) 폴더 전체 트리 뢄석

du -sh /home/user/*
 

5) μˆ¨κΉ€ 파일 포함 전체 확인

du -sh .[!.]* *
 

.git, .cache λ“± μˆ¨κΉ€ 폴더 μš©λŸ‰ 확인할 λ•Œ ν•„μˆ˜.

6) μš©λŸ‰ 큰 순으둜 μ •λ ¬ (κ°€μž₯ 많이 μ“°λŠ” νŒ¨ν„΄)

du -sh * | sort -hr
 
  • sort -h : human-readable μ •λ ¬
  • -r : μ—­μˆœ (큰 μš©λŸ‰λΆ€ν„°)

μ„œλ²„ μš©λŸ‰μ΄ ν„°μ§ˆ λ•Œ κ°€μž₯ λ¨Όμ € μ“°λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
이 λͺ…λ Ή ν•˜λ‚˜λ‘œ ‘범인’을 λ°”λ‘œ 찾을 λ•Œκ°€ λ§ŽμŠ΅λ‹ˆλ‹€.


4. 둜그 폭주둜 μš©λŸ‰ ν„°μ§ˆ λ•Œ 해결법

μ œκ°€ κ²½ν—˜ν•œ μ‹€μ œ μž₯μ•  처리 흐름도 거의 λ™μΌν•œ νŒ¨ν„΄μž…λ‹ˆλ‹€.

(1) /var ν•˜μœ„ 폴더 μš©λŸ‰ 확인

du -sh /var/*
 

(2) log 쀑 κ°€μž₯ 큰 파일 μ°ΎκΈ°

du -sh /var/log/* | sort -hr
 

(3) 둜그 파일 λΉ„μš°κΈ° (νŒŒμΌμ€ μœ μ§€)

truncate -s 0 /var/log/syslog
 

λ˜λŠ”:

cat /dev/null > /var/log/syslog
 
⚠ 주의: μ‚­μ œ(rm)κ°€ μ•„λ‹Œ truncateλ₯Ό μ‚¬μš©ν•΄μ•Ό μ„œλΉ„μŠ€κ°€ 파일 핸듀을 μžƒμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
둜그 λ°±μ—… ν•„μš” μ‹œ λ¨Όμ € cp syslog syslog.bak ν˜•νƒœλ‘œ λ³΄κ΄€ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

5. df와 duλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 싀무 νŒ¨ν„΄

단계 λͺ©μ  λͺ…λ Ή
1 전체 μƒνƒœ 확인 df -h
2 루트 κΈ°μ€€ 문제 폴더 μ°ΎκΈ° du -sh /*
3 상세 뢄석 du -sh /var/log/*
4 λŒ€μš©λŸ‰ 파일 처리 gzip big.log λ˜λŠ” rm big.log(주의 ν•„μš”)

6. 파일 λ‹¨μœ„ μš©λŸ‰ 뢄석(du + find μ‘°ν•©)

duλŠ” 기본적으둜 폴더 기쀀이라, νŒŒμΌμ„ 직접 μ°Ύκ³  μ‹Άλ‹€λ©΄ μ•„λž˜ 쑰합을 μ‚¬μš©ν•©λ‹ˆλ‹€.

(1) 100MB 이상 λŒ€ν˜• 파일 μ°ΎκΈ°

find . -type f -size +100M -exec ls -lh {} \;
 

(2) κ°€μž₯ 큰 파일 10개 보기

find . -type f -exec du -h {} + | sort -hr | head
 
du와 find λͺ…λ Ήμ–΄ μ‘°ν•© ꡬ쑰
λŒ€μš©λŸ‰ 파일 탐색 흐름도

7. du / df μ‚¬μš© μ‹œ μ£Όμ˜ν•΄μ•Ό ν•  점

문제 상황원인해결 방법
문제 상황 및 원인 ν•΄κ²° 방법
du와 df 값이 닀름 dfλŠ” 전체 νŒŒν‹°μ…˜, duλŠ” νŠΉμ • 폴더 정상 λ™μž‘
duκ°€ λ„ˆλ¬΄ 느림 파일 κ°œμˆ˜κ°€ 많음 --max-depth=1 μ‚¬μš©
dfμ—μ„œλŠ” μš©λŸ‰μ΄ 쀄지 μ•ŠμŒ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚­μ œλœ νŒŒμΌμ„ 계속 μ‚¬μš© `lsof
/var/log μ‚­μ œν–ˆλŠ”λ° μš©λŸ‰ μ•ˆ 쀄어듦 μ„œλΉ„μŠ€κ°€ ν•Έλ“€ μœ μ§€ μ„œλΉ„μŠ€ μž¬μ‹œμž‘ ν•„μš”

8. κ΄€λ ¨ 자주 λ¬»λŠ” 질문(FAQ)

Q1. du와 df μš©λŸ‰μ΄ λ‹€λ₯΄κ²Œ λ‚˜μ˜€λŠ”λ° λ¬Έμ œκ°€ μžˆλ‚˜μš”?

A. 문제 μ•„λ‹™λ‹ˆλ‹€.
dfλŠ” 전체 νŒŒν‹°μ…˜ λ‹¨μœ„, duλŠ” νŠΉμ • 디렉터리 λ‹¨μœ„μ΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

Q2. μ‚­μ œν•œ 파일이 dfμ—μ„œ λ°”λ‘œ λ°˜μ˜λ˜μ§€ μ•ŠλŠ” μ΄μœ λŠ”?

A. ν”„λ‘œμ„ΈμŠ€κ°€ μ‚­μ œλœ 파일 핸듀을 μœ μ§€ν•˜κ³  있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.
lsof | grep deleted 둜 확인 ν›„ ν”„λ‘œμ„ΈμŠ€ μž¬μ‹œμž‘.

Q3. duκ°€ λ„ˆλ¬΄ 느린데 ν•΄κ²° 방법은?

A. --max-depth=1 λ˜λŠ” νŠΉμ • λ””λ ‰ν„°λ¦¬λ§Œ λ²”μœ„ μ§€μ •.

Q4. μ–΄λ–€ 폴더뢀터 확인해야 ν•˜λ‚˜μš”?

A. /var/log → /home → /data 순으둜 ν™•μΈν•˜λ©΄ λŒ€λΆ€λΆ„ 문제 ν•΄κ²°.

Q5. Docker ν™˜κ²½μ—μ„œ μš©λŸ‰μ΄ 폭주할 λ•ŒλŠ”?

A. /var/lib/docker ν΄λ”μ˜ 이미지·μ»¨ν…Œμ΄λ„ˆ λˆ„μ μ΄ μ›μΈμž…λ‹ˆλ‹€.


9. du / df λͺ…λ Ήμ–΄κ°€ μš©λŸ‰ 문제 해결에 결정적인 이유

du와 dfλŠ” λ‹¨μˆœν•œ λͺ…λ Ήμ–΄κ°€ μ•„λ‹ˆλΌ μž₯μ• λ₯Ό μ˜ˆλ°©ν•˜λŠ” 진단 λ„κ΅¬μž…λ‹ˆλ‹€.
μ„œλ²„κ°€ κ°‘μžκΈ° λŠλ €μ§€κΈ° 전에, μ •κΈ°μ μœΌλ‘œ df -h와 du -shλ₯Ό ν™•μΈν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„
μ„œλΉ„μŠ€ μ•ˆμ •μ„±μ„ 크게 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

du / df만 μ •ν™•νžˆ μ•Œκ³  μžˆμ–΄λ„
μ„œλ²„ μž₯μ• λ₯Ό 미리 μ˜ˆλ°©ν•˜κ³ , μ„±λŠ₯ μ €ν•˜ 문제λ₯Ό λΉ λ₯΄κ²Œ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.