이전 글목록 보기다음 글
Linux2026-02-21T07:42:47.042Z

Linux 서버 : 디스크 관리

peanut2026 profilepeanut2026
cleanup.png

Ubuntu 24.04 서버를 오래 운영하다 보면 로그 폭증, 패키지 캐시 누적, Docker 이미지 쓰레기, 임시파일 방치 때문에 디스크가 계속 차게 됩니다.
아래는 실무에서 실제로 사용하는 “정리 + 예방” 전체 관리 방법입니다.


1️⃣ 현재 디스크 사용 원인부터 정확히 찾기 (무조건 먼저 해야 함)

✔ 전체 사용량 확인

df -h

✔ 어떤 디렉토리가 많이 먹는지 확인 (가장 중요)

sudo du -h --max-depth=1 / | sort -hr

예시로 /var 가 크면:

sudo du -h --max-depth=1 /var | sort -hr

👉 대부분 문제는 여기 중 하나입니다:

  • /var/log ← 로그 폭증 (90% 원인)

  • /var/lib/docker ← Docker

  • /var/cache/apt ← 패키지 캐시

  • /tmp ← 임시파일

  • /home ← 사용자 파일


2️⃣ 로그 파일 정리 (가장 효과 큼)

Ubuntu는 로그가 자동으로 쌓입니다.

✔ 현재 로그 크기 확인

sudo du -sh /var/log

🔥 systemd journal 로그 정리

Ubuntu 24.04는 journal 로그가 자동으로 계속 쌓임

현재 사용량 확인

journalctl --disk-usage

✔ 오래된 로그 직접 삭제

sudo find /var/log -type f -name "*.gz" -delete
sudo find /var/log -type f -name "*.[0-9]" -delete

👉 과거 로그파일들(*.gz와 *[]0-9]) 삭제

✔ 초기화 수준으로 삭제

sudo journalctl --rotate
sudo journalctl --vacuum-time=1s

👉 문제 분석 필요 없을 때:

✔ 오래된 로그 삭제 (추천)

로그 기록 기간 또는 크기 제한:

sudo journalctl --vacuum-time=7d
sudo journalctl --vacuum-size=200M

🔥 로그 자동 제한 설정 (반드시 해야 함 — 예방 핵심)

설정 파일 수정:

sudo nano /etc/systemd/journald.conf

아래 값 설정:

SystemMaxUse=200M
SystemKeepFree=1G
MaxRetentionSec=7day

옵션

의미

SystemMaxUse

journal 최대 크기 제한

SystemKeepFree

로그 기록을 위한 디스크 여유 공간 확보

(전체 디스크가 가득 차는 것을 막기 위한 안전장치입니다. 로그 파일이 200MB보다 작더라도, 전체 디스크 여유 공간이 1GB 미만으로 떨어지면 기존 로그를 삭제하여 여유 공간을 확보)

MaxRetentionSec

오래된 로그 자동 삭제

적용:

sudo systemctl restart systemd-journald

👉 이제 로그가 절대 폭증하지 않음.


3️⃣ APT 패키지 캐시 제거

패키지 설치할 때 .deb 파일이 계속 남습니다.

현재 캐시 확인

sudo du -sh /var/cache/apt

✔ 전부 삭제 (안전)

sudo apt clean

자동 제거:

sudo apt autoremove -y

4️⃣ 오래된 커널 제거 (서버에서 매우 흔한 문제)

커널 업데이트 되면 이전 커널 계속 남아있습니다.

현재 커널 확인

uname -r

설치된 커널 목록 확인

dpkg --list | grep linux-image

자동 정리 (추천)

sudo apt autoremove --purge -y

5️⃣ /tmp 임시파일 정리

sudo rm -rf /tmp/*

또는 systemd tmp 자동 삭제 설정 확인:

cat /usr/lib/tmpfiles.d/tmp.conf

Ubuntu는 기본 10일 보관입니다.


6️⃣ Docker 사용 중이면 (디스크 먹는 1순위)

Docker는 정리 안 하면 무조건 터집니다.

현재 사용량 확인

docker system df

✔ 안 쓰는 것 전체 삭제 (실무 필수)

docker system prune -a -f

볼륨까지 삭제하려면:

docker volume prune -f

✔ 자동 정리 cron 등록 (추천)

sudo crontab -e

추가:

0 3 * * 0 docker system prune -a -f

👉 매주 일요일 자동 청소


7️⃣ Snap 패키지 (Ubuntu 서버에서 몰래 용량 먹는 존재)

Snap은 이전 버전을 자동 보관합니다.

현재 확인:

snap list --all

이전 버전 삭제:

sudo snap set system refresh.retain=2

기존 구버전 제거:

sudo snap remove <패키지명> --revision=<번호>

8️⃣ 로그 파일 강제 압축 설정 (logrotate)

Ubuntu는 logrotate가 있지만 설정이 약합니다.

설정 확인:

cat /etc/logrotate.conf

✔ 커스텀 설정 추가 (추천)

sudo nano /etc/logrotate.d/custom

내용:

/var/log/*.log {
    weekly
    rotate 4
    compress
    missingok
    notifempty
}

👉 로그 4주만 유지 + 자동 압축


9️⃣ 디스크 많이 쓰는 파일 TOP 찾기 (문제 추적용)

sudo find / -type f -size +500M 2>/dev/null

👉 갑자기 생긴 대형 파일 찾을 때 매우 중요.


🔟 디스크 사용 모니터링 자동화 (예방 핵심)

디스크 80% 넘으면 알림 받는 스크립트 만들기.

sudo nano /usr/local/bin/disk-check.sh

내용:

#!/bin/bash
usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')

if [ "$usage" -gt 80 ]; then
    echo "Disk usage is ${usage}%" | mail -s "Disk Alert" root
fi

권한:

chmod +x /usr/local/bin/disk-check.sh

cron 등록:

0 * * * * /usr/local/bin/disk-check.sh

🎯 운영 서버에서 반드시 해야 하는 5가지 (핵심 요약)

✔ journald 용량 제한 설정
✔ apt clean 자동화
✔ Docker prune 주기 실행
✔ logrotate 강화
✔ 디스크 사용량 cron 감시


💡 실무에서 디스크 터지는 진짜 원인 순위

1️⃣ Docker 방치
2️⃣ journald 로그 무제한
3️⃣ apt cache 누적
4️⃣ Snap 구버전
5️⃣ 백업 파일 방치


bash가 비정상 종료되었을 때 남는 임시 히스토리 파일 정리하기 ~

.bash_history-XXXXX.tmp

👉 삭제해도 문제 전혀 없습니다.
👉 현재 사용 중인 .bash_history 와는 별개입니다.

오히려 계속 쌓이면 쓸데없이 inode + 용량만 차지합니다.


✅ 자동 정리 방법 (권장: 주 1회 cron)

1️⃣ 정리 스크립트 생성

nano /home/p79user/cleanup-bash-tmp.sh

내용:

#!/bin/bash

# bash history tmp 파일 삭제 (7일 지난 것만)
find /home/p79user -maxdepth 1 -name ".bash_history-*.tmp" -type f -mtime +7 -delete

✔ 7일 지난 파일만 삭제 → 혹시 필요한 상황 대비 (안전)


2️⃣ 실행권한 부여

chmod +x /home/p79user/cleanup-bash-tmp.sh

3️⃣ crontab 등록 (p79user 계정)

crontab -e

아래 추가:

30 3 * * 0 /home/p79user/cleanup-bash-tmp.sh >> /home/p79user/cleanup-bash.log 2>&1

⏰ 실행 스케줄

시간

의미

매주 일요일 03:30

tmp history 자동 정리

Docker prune(03:00) 끝나고 이어서 돌게 맞춘 것입니다 👍


✅ 바로 테스트 가능

/home/p79user/cleanup-bash-tmp.sh

삭제 확인:

ls -la ~/.bash_history-*.tmp

🔎 왜 이런 파일이 생기나?

다음 상황에서 생성됩니다:

  • SSH 끊김

  • 터미널 강제 종료

  • 서버 reboot 중 shell 살아있던 경우

  • tmux/screen crash

  • bash history write 중 충돌

bash가 안전하게 기록하려고 tmp 만들다가 못 지운 것들입니다.


❗ 추가로 추천 (재발 방지 설정)

.bashrc 에 아래 넣으면 tmp 생성 크게 줄어듭니다.

export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=5000
export HISTFILESIZE=10000
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

적용:

source ~/.bashrc

🎯 현재 서버 정리 자동화 상태 (추천 구성)

항목

자동화

Docker cache

✅ 매주 정리

bash tmp

✅ 매주 정리

snap old revision

(이미 안내 가능)

journal log

필요시 추가 가능


Comments

Log in to comment

Loading comments...
이전 글목록 보기다음 글

당신의 이야기를 기다리고 있습니다