리눅스 용량 부족 해결: LVM 볼륨 확장 및 디스크 파티션 정리 가이드
리눅스(Linux) 서버나 가상화 환경을 운영하다 보면 데이터가 점차 쌓이면서 디스크 용량 부족 경고에 직면하는 순간이 찾아옵니다. 특히 데이터베이스 파일, 로그(Log) 파일, 도커 컨테이너 이미지 등이 늘어나서 루트 파티션(/)이 100% 가득 차게 되면, 서비스가 비정상적으로 정지하거나 시스템 부팅조차 불가능한 심각한 장애로 이어질 수 있습니다.
이러한 문제를 안전하고 유연하게 해결하기 위해 대부분의 리눅스 배포판(Ubuntu, CentOS, Debian 등)은 LVM(Logical Volume Manager, 논리 볼륨 관리자) 구조를 기본으로 적용하여 설치됩니다. LVM을 활용하면 물리적인 디스크를 추가하거나 기존 가상 디스크 크기를 늘린 후, 재부팅이나 데이터 손실 없이 온라인 상태에서 손쉽게 논리 볼륨을 확장할 수 있습니다.
본 글에서는 LVM의 기본 작동 개념부터, 새로운 물리 디스크 추가 및 파티션 확장 단계, LVM 볼륨 확장 실전 명령어, 그리고 불필요한 파일 정리를 통해 용량을 확보하는 팁까지 단계별로 상세히 알아보겠습니다.
1. LVM(Logical Volume Manager)의 개념과 용량 확장의 작동 원리
LVM(Logical Volume Manager)은 물리적 저장장치(HDD, SSD)의 디스크 공간을 추상화하여, 관리자가 파티션을 크기 제약 없이 유연하게 다룰 수 있도록 돕는 리눅스의 디스크 관리 레이어입니다.
[이미지: 물리 디스크(PV)가 볼륨 그룹(VG)으로 묶이고, 이를 필요한 만큼 논리 볼륨(LV)으로 분할하여 확장하는 LVM 계층 구조도]
LVM의 핵심 구성 요소와 용량 확장 원리는 다음과 같습니다.
- PV (Physical Volume, 물리 볼륨): 실제 물리 하드디스크나 가상머신의 가상 디스크 파티션(예: /dev/sda3, /dev/sdb1)을 LVM에서 사용할 수 있도록 블록 단위로 초기화한 상태입니다.
- VG (Volume Group, 볼륨 그룹): 하나 이상의 PV를 묶어서 하나의 큰 거대한 저장소 풀(Pool)로 만든 공간입니다. 여러 개의 물리 디스크를 하나의 볼륨 그룹으로 통합할 수 있습니다.
- LV (Logical Volume, 논리 볼륨): VG 저장소 풀에서 사용자가 실제로 할당받아 파일 시스템(ext4, xfs 등)을 입혀 사용하는 논리 파티션(예: /dev/ubuntu-vg/ubuntu-lv)입니다.
- 용량 확장의 작동 원리: 기존 디스크 크기를 늘리거나 새 디스크를 추가한 뒤, PV 확장 ➔ VG 용량 확보 ➔ LV 논리 볼륨 확장 ➔ 파일 시스템 적용 순으로 진행하여 기존 데이터 보존 상태 그대로 확장 작업을 완료합니다.
2. 실전 LVM 디스크 파티션 및 논리 볼륨(LV) 확장 4단계
VirtualBox, VMware, Proxmox 등의 가상화 환경이나 실제 서버에서 디스크 크기를 먼저 확정한 후, 리눅스 OS 내부에서 LVM 용량을 실제로 적용하는 실전 가이드입니다.
3. 디스크 용량 부족 시 불필요한 데이터 파티션 정리 팁
디스크 용량을 물리적으로 확장하기 전에, 서버 내부에 불필요하게 누적된 대용량 파일과 임시 캐시를 정돈하여 디스크 공간을 확보하는 것은 매우 훌륭한 유지보수 습관입니다.
[이미지: 리눅스 터미널 화면에서 ncdu 또는 du 명령어를 통해 용량을 많이 차지하는 대용량 폴더를 탐색하는 화면]
효과적인 디스크 공간 청소 및 파티션 정리 방법은 다음과 같습니다.
- 대용량 폴더 및 파일 탐색 (du / ncdu 도구)
- 루트 디렉터리부터 용량을 가장 많이 차지하는 상위 폴더를 추적합니다.
- 탐색 명령어: sudo du -sh /* | sort -h
- 시각적 탐색 도구인 ncdu를 설치(sudo apt install ncdu)하여 실행하면 폴더별 용량을 직관적으로 확인하고 정돈할 수 있습니다.
- 시스템 로그(Systemd Journal Log) 용량 제한 및 삭제
- 리눅스 시스템 로그 파일이 축적되어 수 기가바이트(GB) 이상을 차지하는 경우가 많습니다.
- 오래된 로그 정리 명령어: sudo journalctl --vacuum-time=3d (최근 3일 치만 남기고 삭제)
- 로그 용량 제한 명령어: sudo journalctl --vacuum-size=500M (500MB 이하로 정리)
- 도커(Docker) 사용하지 않는 임시 미사용 자원 정리
- 도커를 구동 중이라면 사용하지 않는 컨테이너, 고립된 이미지, 빌드 캐시가 디스크 용량을 크게 차지합니다.
- 일괄 정리 명령어: docker system prune -a --volumes
자주 묻는 질문 (FAQ)
Q1. LVM 디스크 용량 확장 작업 도중 기존 서버의 데이터가 삭제되거나 포맷되나요?
A1. 아니요, 그렇지 않습니다. LVM의 lvextend 및 resize2fs (또는 xfs_growfs) 명령어는 기존에 기록된 데이터를 그대로 유지하면서 파일 시스템의 경계선(Boundary)만 뒤로 늘려주는 방식으로 작동합니다. 따라서 포맷 과정 없이 안전하게 용량을 확장할 수 있습니다. 다만 만약의 사태를 대비해 중요한 작업 전 스냅샷(Snapshot)이나 백업을 진행하는 것을 권장합니다.
Q2. df -h에서는 용량이 가득 찼다고 나오는데, 파일들을 삭제해도 용량이 줄어들지 않습니다.
A2. 특정 프로세스가 삭제된 파일의 파일 핸들러(File Descriptor)를 여전히 잡고 있어 발생하는 현상입니다. 파일은 파일 시스템상에서 지워졌지만 디스크 블록이 해제되지 않은 상태입니다. sudo lsof | grep deleted 명령어로 해당 프로세스를 찾아 재시작(systemctl restart)하거나, 서버를 재부팅하면 점유되었던 디스크 공간이 즉시 확보됩니다.
Q3. ext4 파일 시스템과 xfs 파일 시스템의 LVM 확장 명령어 차이는 무엇인가요?
A3. ext4 파일 시스템은 resize2fs [논리볼륨경로] 명령어를 사용하며, 디스크가 마운트된 상태(Online)에서 축소 및 확장이 모두 가능합니다. 반면 xfs 파일 시스템은 xfs_growfs [마운트포인트경로] 명령어를 사용하며, 오직 용량을 늘리는 온라인 확장만 지원한다는 차이점이 있습니다.
결론
리눅스 서버 운영 시 수시로 노출되는 용량 부족 문제는 LVM(Logical Volume Manager) 구조와 올바른 디스크 파티션 정리 절차를 이해하고 있다면 서비스 중단 없이 안전하고 완벽하게 해결할 수 있습니다.
서버 디스크 추가 또는 가상 디스크 확장을 진행한 후, growpart ➔ pvresize ➔ lvextend ➔ resize2fs로 이어지는 표준 LVM 확장 순서를 적용하면 기존 데이터 손실 없이 넉넉한 저장 공간을 확보할 수 있습니다.
본 가이드의 실전 4단계와 불필요 파일 정리 팁을 차근차근 적용해 보시면서 쾌적하고 안정적인 리눅스 서버 디스크 환경을 지속적으로 유지해 보시기 바랍니다.