🔗 도입: 리눅스 디스크 스토리지 관리의 한계점 (Introduction)
리눅스 서버를 운영하다 보면 초기 파티션 설정 이후 디스크 용량이 부족해지는 상황에 빈번하게 직면합니다. 전통적인 일반 파티션(fdisk/parted) 방식은 파티션 크기를 확장하려면 디스크 내에 연속된 물리적 빈 공간이 필요하여, 한 번 정해진 용량을 변경하기가 매우 까다롭고 위험합니다. 이번 포스팅에서는 이러한 기존 디스크 관리 방식의 경직성을 극복하고, 디스크 용량을 유연하게 확장 및 축소할 수 있게 해주는 LVM(Logical Volume Manager)에 대해 알아봅니다.
📖 1. LVM(Logical Volume Manager)의 정의 (Definition)
LVM은 리눅스 환경에서 물리적인 디스크(Storage)나 파티션을 논리적인 볼륨으로 그룹화하여, 마치 고무줄처럼 유연하게 용량을 조절할 수 있도록 해주는 고급 스토리지 관리 기술입니다.
한 줄 요약: LVM이란 디스크 파티션의 크기 변경이 어려운 단점을 해결하기 위해, 여러 물리 디스크를 하나의 논리적 가상 디스크 풀(Pool)로 묶고 필요한 만큼 자유롭게 용량을 할당하는 디스크 관리 시스템이다.
🧠 2. 핵심 내용 및 아키텍처 (Content & Architecture)
LVM은 세 가지 주요 계층(PV, VG, LV)으로 나뉘어 동작하며 스토리지의 유연성을 확보합니다.
- PV (Physical Volume, 물리 볼륨): 실제 물리적 하드 디스크(
/dev/sdb,/dev/sdc)나 파티션을 LVM에서 사용할 수 있는 블록 형태로 변환한 단위입니다. - VG (Volume Group, 볼륨 그룹): 여러 개의 PV를 묶어 하나의 커다란 가상 디스크 풀(Pool)로 만든 공간입니다.
- LV (Logical Volume, 논리 볼륨): VG 안에서 사용자가 원하는 크기만큼 쪼개어 할당받은 가상 파티션으로, 이곳에 파일시스템을 포맷하고 실제 운영체제에 마운트하여 사용합니다.
🎨 동작 원리 다이어그램
🛠️ 3. 테스트베드 구축 및 실습 (Testbed Setup)
Step 1. 환경 준비
- OS: Ubuntu 22.04 LTS (또는 CentOS/RHEL 계열)
- 사전 요구사항: OS 디스크 외에 추가로 장착된 빈 디스크 2개 (
/dev/sdb,/dev/sdc)
Step 2. 설치 및 기본 설정
# LVM2 패키지 업데이트 및 설치 sudo apt-get update sudo apt-get install lvm2 -y
Step 3. PV, VG, LV 생성
# 1. PV(Physical Volume) 생성
sudo pvcreate /dev/sdb /dev/sdc
# PV 생성 상태 확인
sudo pvs
# 2. VG(Volume Group) 생성 ('data_vg' 라는 이름으로 sdb와 sdc 묶기)
sudo vgcreate data_vg /dev/sdb /dev/sdc
# VG 생성 상태 확인
sudo vgs
# 3. LV(Logical Volume) 생성 ('data_vg'에서 10G 크기의 'web_lv' 논리 볼륨 생성)
sudo lvcreate -n web_lv -L 10G data_vg
# LV 생성 상태 확인
sudo lvs
Step 4. 파일시스템 포맷 및 마운트 테스트
# 생성된 LV에 ext4 파일시스템 포맷 sudo mkfs.ext4 /dev/data_vg/web_lv # 마운트 포인트 생성 sudo mkdir -p /mnt/web_data # 디스크 마운트 적용 sudo mount /dev/data_vg/web_lv /mnt/web_data # 정상 마운트 여부 확인 df -h | grep web_data
Step 5. 논리 볼륨(LV) 용량 확장 실습 (온라인 확장)
# 'web_lv' 용량을 5G 추가 확장 (+5G) sudo lvextend -L +5G /dev/data_vg/web_lv # LV 확장 후, 적용된 실제 파일시스템 용량도 확장 (ext4 기준) sudo resize2fs /dev/data_vg/web_lv # 용량이 늘어났는지 최종 확인 df -h | grep web_data
⚠️ 4. 주의사항 및 실무 팁 (Precautions & Tips)
- 🚨 데이터 유실 주의: 여러 물리 디스크가 하나의 VG로 묶여 있기 때문에, VG에 속한 물리 디스크 중 하나라도 고장나면 VG 전체 데이터에 손상이 갈 수 있습니다. 따라서 실무에서는 하드웨어 RAID(RAID 1, 5 등) 기반 위에서 LVM을 구성하여 가용성을 확보하는 것이 중요합니다.
- 📉 LV 축소 위험: LV 용량 확장(
lvextend)은 서비스(온라인) 중에도 비교적 쉽게 가능하지만, 축소(lvreduce)는 파일시스템 손상 위험이 커서 권장하지 않습니다. 만약 해야 한다면 반드시 언마운트 상태에서 파일시스템 축소(resize2fs)를 선행하고 신중하게 작업해야 합니다. - 💡 Best Practice: 처음부터 VG의 전체 남은 용량을 LV에 전부 할당하지 마세요. 필요한 최소한의 용량만 할당해두고 추후 디스크 공간이 부족할 때마다 VG의 여유 공간을 이용해 확장하는 방식으로 운영하는 것을 권장합니다.
❓ 5. 자주 묻는 질문 (FAQ)
Q1. 기존 일반 파티션(fdisk/parted) 방식과 비교해 LVM을 도입하면 어떤 장점이 있나요?
A1. '파티션 확장의 유연성'이 가장 큽니다. 기존 방식은 파티션 뒤에 빈 연속된 공간이 있어야만 파티션을 확장할 수 있지만, LVM은 VG에 새로운 디스크(PV)만 꽂아 추가하면 파티션의 물리적 위치에 상관없이 언제든지 LV의 용량을 유연하게 늘릴 수 있습니다.
Q2. 실습 중 pvcreate /dev/sdb 명령어 실행 시 Device /dev/sdb not found 에러가 발생합니다.
A2. 가상 머신(VM)이나 클라우드 인스턴스에 실제로 디스크가 추가되지 않았거나, OS에서 새 디스크를 인식하지 못한 상태일 확률이 높습니다. lsblk 명령어를 먼저 실행하여 리눅스가 물리적인 /dev/sdb 블록 디바이스를 정상적으로 인식하고 있는지 확인해 보세요.
댓글 0