Linux에서 저장 공간을 최적화하는 방법

15분 소요 - 2026년 5월 22일

hero section cover
목차
  • 리눅스에서 스토리지 공간을 최적화하는 방법
  • 디스크를 사용하는 항목 찾기
  • 패키지 캐시, 로그 및 중복 파일 정리
  • 파일 시스템 수준 최적화
  • 스토리지 유지 관리 자동화
  • 가용 용량을 최대한 활용하기
공유

패키지 캐시 정리부터 파일 시스템 튜닝 및 자동화된 유지 관리에 이르기까지 Linux 서버의 디스크 공간을 회수하고 최적화하는 실용적인 기술을 소개합니다.

리눅스에서 스토리지 공간을 최적화하는 방법

수년 동안 디스크 용량이 가득 찼을 때의 기본적인 해결책은 간단했습니다. 바로 저장 공간을 더 추가하는 것이었죠. 당시에는 저장 장치가 저렴했습니다. 하지만 이제는 상황이 달라졌습니다. 전 세계 생산 능력을 소진하는 AI 인프라 수요에 힘입어 2025년 말 이후 NAND 플래시 가격이 급등했습니다. 2026년 1분기에만 기업용 SSD 계약 가격이 85~90% 상승했고, 소비자용 NVMe 드라이브의 시중 가격은 약 두 배로 뛰었으며, 새로운 NAND 생산 능력은 2027년이 되어야 가동될 것으로 예상됩니다.

결과적으로 서버의 모든 기가바이트당 비용이 1년 전보다 더 비싸졌으며, 이는 새로운 장비를 구매하는 것보다 기존 자원을 최적화하는 것이 훨씬 더 나은 투자라는 것을 의미합니다. 이 글에서는 디스크 공간을 차지하는 원인을 파악하고, 이를 정리하며, 스토리지를 더 효율적으로 사용할 수 있도록 파일 시스템을 구성하는 방법을 다룹니다.


 

디스크를 사용하는 항목 찾기

다음 명령어로 시작하세요 df -h 명령어를 실행하여 총 용량, 사용된 공간, 사용률 등을 포함한 모든 마운트된 파일 시스템의 현황을 확인하세요. 90%를 초과하는 파티션은 주의가 필요합니다. 필요한 경우 특정 파티션을 개별적으로 확인하세요:

df -h /
df -h /boot

i노드(inodes)를 간과하지 마십시오. 파일 시스템에 여유 공간이 있어도 사용 가능한 i노드가 없으면 동일한 오류가 발생할 수 있습니다. 다음 명령어로 확인하십시오: df -i.

만약 df 명령어가 100% 사용률을 표시하지만 수치가 맞지 않는다면, 유령 파일이 있을 가능성이 높습니다. 이는 삭제되었지만 실행 중인 프로세스에 의해 여전히 열려 있는 파일입니다. 해당 프로세스가 파일 핸들을 해제할 때까지 공간은 회수되지 않습니다. 다음 명령어로 찾아보세요:

sudo lsof / | grep deleted

어떤 파일 시스템에 부하가 걸려 있는지 파악했다면, 다음 명령어로 디렉터리를 자세히 살펴보세요: du 또는 ncdu를 사용하여 디렉터리를 자세히 살펴보세요. 빠른 확인이나 스크립트 작성을 위해서는 du 이 도구를 사용하는 것이 좋습니다:

du -h --max-depth=1 /var

루트에서 스캔할 때 -x 를 추가하면 루트에서 스캔할 때 단일 파일 시스템 내에서만 탐색하며 /proc와 같은 가상 마운트를 건너뛰고 단일 파일 시스템 내에서 작업하려면 루트에서 스캔할 때를 추가하세요. 원격 서버에서 대화형 탐색을 하려면 ncdu 를 사용하면 크기로 정렬하거나 파일을 직접 삭제할 수 있는 탐색 가능한 텍스트 인터페이스를 제공합니다.

기능duncdu
인터페이스정적 명령줄 출력화살표 키로 탐색하는 대화형 TUI
가장 적합한 용도스크립팅 및 빠른 확인원격 서버에서 수동 탐색
정렬다음으로 파이프 연결 필요 sort내장 기능 (크기, 이름 등 기준)
파일 삭제별도의 rm 명령내장 (누르기 d)

패키지 캐시, 로그 및 중복 파일 정리

가장 많은 공간을 회수할 수 있는 세 가지 영역은 패키지 캐시, 로그 파일, 대용량 또는 중복 파일입니다.

패키지 캐시 및 고아 종속성

설치나 업데이트를 할 때마다 캐시된 패키지 파일이 남습니다. 시간이 지남에 따라 이러한 파일들은 눈에 띄지 않게 쌓입니다. 사용 중인 배포판에 따라 이를 정리하십시오:

작업데비안/우분투 (APT)Fedora/RHEL (DNF)Arch (Pacman)
캐시 지우기sudo apt cleansudo dnf clean allsudo paccache -r
고아 파일 제거sudo apt autoremovesudo dnf autoremovepacman -Rs $(pacman -Qdtq)
남은 설정 파일 삭제sudo apt autoremove --purgeautoremove에서 처리해당 없음

먼저 sudo apt autoremove --dry-run. 구형 커널은 Ubuntu 시스템에서 1.5GB 이상의 공간을 차지할 수 있습니다. 구버전을 제거하기 전에 항상 현재 사용 중인 커널과 백업용 커널 하나는 남겨두십시오.

Snap이나 Flatpak을 사용하는 경우, 이들도 리비전과 런타임 파일을 축적합니다:

sudo snap set system refresh.retain=2
flatpak uninstall --unused

/var/log의 로그 파일

로그는 가장 흔한 숨은 디스크 공간 낭비 원인입니다. 먼저 용량이 큰 로그를 찾아보세요:

du -xhd1 /var/log | sort -h
find /var/log -type f -size +100M

systemd 저널의 경우, 파일을 수동으로 삭제하는 대신 내장된 vacuum 도구를 사용하십시오:

sudo journalctl --vacuum-size=500M

영구적인 상한선을 설정하려면 다음을 편집하십시오: /etc/systemd/journald.conf:

SystemMaxUse=500M
MaxRetentionSec=14day

서비스에 의해 여전히 열려 있는 활성 로그 파일의 경우, rm를 사용하지 마십시오. 프로세스가 파일 디스크립터를 잡고 있는 동안에는 공간이 확보되지 않습니다. 대신 truncate를 사용하십시오:

sudo truncate -s 0 /var/log/syslog

대용량 및 중복 파일

전체 시스템에서 500MB를 초과하는 파일을 찾으려면:

sudo find / -type f -size +500M -exec ls -lh {} +

중복 파일의 경우, rmlint 는 해시 기반 비교를 사용하여 중복 파일, 빈 디렉터리 및 손상된 심볼릭 링크를 감지합니다. 특히 동일한 파일이 서로 다른 역할을 수행할 수 있는 서버에서는, 어떤 것도 삭제하기 전에 출력을 주의 깊게 검토하십시오.

파일 시스템 수준 최적화

파일을 정리한 후에는 파일 시스템을 조정하여 동일한 하드웨어에서 더 많은 사용 가능한 공간을 확보할 수 있습니다.

ext4 예약 공간 줄이기

기본적으로 ext4는 파일 시스템의 5%를 루트(root)용으로 예약합니다. 2TB 데이터 파티션의 경우, 이는 100GB가 유휴 상태로 남아 있음을 의미합니다. 데이터 파티션이 루트 파일 시스템이 아닌 전용 서버에서는 이 값을 안전하게 줄일 수 있습니다:

sudo tune2fs -m 1 /dev/sdXn

이렇게 하면 예약 공간이 1%로 설정되며, 이는 대부분의 사용 사례에 충분합니다. 다음 명령어로 변경 사항을 확인하십시오. tune2fs -l /dev/sdXn.

Btrfs 투명 압축

Btrfs는 ext4나 XFS에서는 제공하지 않는 투명한 파일 압축을 지원합니다. compress=zstd 를 사용하여 쓰기 시 데이터를 자동으로 압축할 수 있습니다. ZSTD는 속도와 압축률의 균형이 잘 잡혀 있습니다. 다양한 유형의 파일이 혼합된 워크로드의 경우, compress-force=zstd 는 휴리스틱 알고리즘이 일반적으로 건너뛰는 파일들을 압축함으로써 추가로 10~20%의 공간 절약 효과를 제공할 수 있습니다.

Btrfs 볼륨의 기존 데이터를 압축하려면:

btrfs filesystem defragment -czstd /path/to/dir

스냅샷이나 리플링크가 있는 볼륨에서는 이 작업을 주의해서 수행하십시오. 조각 모음은 Copy-on-Write 관계를 끊어버려, 오히려 디스크 사용량을 증가시킬 수 있습니다.

인스턴트 복사를 위한 리플링크

XFS와 Btrfs 모두 리플링크(reflinks)를 지원합니다. 리플링크는 한 사본이 수정될 때까지 물리적 블록을 공유하는 파일 사본을 생성합니다. 이는 스토리지 사용량을 두 배로 늘리지 않고 VM 디스크 이미지나 컨테이너 레이어를 복제하는 데 유용합니다:

cp --reflink=always source.img clone.img

LVM 씬 프로비저닝

LVM 씬 프로비저닝을 사용하면 물리적으로 확보된 공간보다 더 많은 논리적 공간을 할당할 수 있으며, 데이터가 기록될 때만 실제 디스크 공간을 소비합니다. 이는 각각 자체 논리 볼륨이 필요하지만 동시에 모두 볼륨을 채우지는 않는 여러 VM이나 컨테이너를 실행할 때 유용합니다.

씬 풀의 공간이 고갈되는 것을 방지하려면 /etc/lvm/lvm.conf 다음 설정을 통해 thin_pool_autoextend_threshold 을 설정하여 thin_pool_autoextend_percent.

스토리지 유지 관리 자동화

수동 정리는 한 번만 효과가 있습니다. 자동 정리는 지금부터 다음 로그인 때까지 디스크를 양호한 상태로 유지해 줍니다. systemd 가능한 한 타이머를 cron 가능한 경우 사용하십시오. 타이머는 journalctl 자동으로 기록하며, Persistent=true 재부팅 후 실행되지 않은 작업을 처리합니다.

작업빈도
로그 회전logrotate매일 또는 매주
저널 백업journalctl --vacuum-time매주
패키지 캐시 정리apt clean / dnf clean all매월
임시 파일 삭제systemd-tmpfiles매일
Docker 정리docker system prune매주
디스크 사용량 모니터링사용자 정의 스크립트 + systemd 타이머15~30분마다

Docker에는 각별한 주의가 필요합니다. 컨테이너 로그는 별다른 경고 없이도 용량이 커질 수 있습니다. /etc/docker/daemon.json. max-sizemax-file 아래의 log-opts 키를 설정하여 개별 컨테이너가 디스크 공간을 모두 차지하지 못하도록 방지하십시오.

사전 예방적 모니터링을 위해 2단계 경보 시스템을 설정하세요. 디스크 사용량이 80%에 도달하면 경고, 90%에 도달하면 중대 경보를 발령합니다. 디스크 사용량을 매시간 기록하여 증가 추세를 추적하고 파티션 용량이 언제 가득 찰지 예측할 수 있도록 하세요:

0 * * * * df --output=source,size,used,pcent >> /var/log/disk_usage.csv

추가적인 안전 장치로: /var, /tmp, 그리고 /home 를 별도의 파티션에 마운트하십시오. 이렇게 하면 통제 불능의 로그나 사용자 데이터가 루트 파일 시스템을 잠식하여 전체 시스템을 다운시키는 것을 방지할 수 있습니다.

가용 용량을 최대한 활용하기

스토리지 가격이 상승하고 있으며, 2027년에 새로운 NAND 생산이 가동되기 전까지는 가격 안정화가 기대되지 않는 상황에서, 현재 보유한 자원을 최적화하는 것은 단순한 모범 사례가 아닙니다. 이는 실질적인 비용 절감으로 이어집니다. 접근 방식은 간단합니다:

  • 다음 도구를 사용하여 디스크 사용량을 점검하십시오 df, du, 그리고 ncdu 변경 사항을 적용하기 전에 디스크 사용량을 점검하십시오.
  • 패키지 캐시를 지우고, 로그를 순환 삭제하며, 중복 파일을 제거하여 즉시 공간을 확보하십시오.
  • 파일 시스템을 조정하십시오. ext4 예약 블록을 줄이고, Btrfs 압축을 활성화하거나, LVM 씬 프로비저닝을 사용하여 동일한 하드웨어에서 더 많은 성능을 확보하십시오.
  • systemd 타이머를 사용하여 유지 관리를 자동화하면 점검 사이에도 디스크를 깨끗하게 유지할 수 있습니다.
  • 사용량 추세를 모니터링하고 80% 및 90%에 경보를 설정하여 문제를 조기에 포착하십시오.

고성능 NVMe 스토리지를 갖춘 전용 서버 인프라가 필요하다면, FDC의 전용 서버가 이를 위해 설계되었습니다.

블로그

이번 주 추천

더 많은 기사
강력하고 계량되지 않는 VPS가 중요한 이유

강력하고 계량되지 않는 VPS가 중요한 이유

안정적인 성능과 무제한 트래픽이 필요하신가요? 강력한 무제한 VPS는 사용량 제한에 대한 걱정 없이 필요한 속도, 확장성, 대역폭을 제공합니다.

3분 소요 - 2025년 5월 9일

Linux에서 저장 공간을 최적화하는 방법

15분 소요 - 2026년 5월 22일

더 많은 기사
background image

질문이 있거나 맞춤형 솔루션이 필요하신가요?

icon

유연한 옵션

icon

글로벌 도달 범위

icon

즉시 배포

icon

유연한 옵션

icon

글로벌 도달 범위

icon

즉시 배포