본문 바로가기
일반IT/리눅스

🐧 리눅스 스토리지 관리의 끝판왕: LVM으로 디스크 파티션 자유자재로 다루기

by gasbugs 2025. 10. 10.

안녕하세요! 리눅스 서버를 운영하다 보면 "파티션 용량이 부족한데 늘릴 수 없나?", "디스크 두 개를 하나처럼 합쳐서 쓰고 싶은데..." 와 같은 고민을 한 번쯤 해보셨을 겁니다. 물리적인 디스크의 한계를 뛰어넘어 스토리지를 레고 블록처럼 자유롭게 조립하고 관리할 수 있게 해주는 강력한 솔루션, 바로 LVM(Logical Volume Manager)입니다.

 

오늘은 LVM이 무엇인지 개념부터 실제 하드 디스크를 추가하여 새로운 논리 볼륨을 생성하고 사용하는 전 과정을 상세한 가이드로 알려드리겠습니다. 이 포스팅만 따라오시면 LVM과 금방 친해지실 수 있을 거예요! 🚀

 

 


LVM, 왜 사용해야 할까요? 🤔

LVM을 이해하기 위해 레고 블록을 상상해 보세요.

  • 물리 볼륨 (Physical Volume, PV): LVM에서 사용할 실제 디스크나 파티션입니다. 다양한 모양과 크기의 '레고 블록' 그 자체죠. 🧱
  • 볼륨 그룹 (Volume Group, VG): 이 레고 블록들을 모두 담아두는 하나의 거대한 '레고 상자'입니다. 상자 안에 블록을 계속 추가할 수 있죠. 📦
  • 논리 볼륨 (Logical Volume, LV): 상자 안의 블록들을 조합해서 만든 '레고 성'입니다. 우리가 실제로 데이터를 저장하고 사용하는 공간이죠. 성이 작으면 블록을 더 가져와서 크게 만들 수 있습니다. 🏰

이처럼 LVM은 디스크(PV)들을 하나의 큰 저장소(VG)로 묶은 다음, 필요한 크기만큼 논리적인 파티션(LV)을 만들어 사용합니다.

 

LVM의 핵심 장점:

  • 유연한 크기 조절: 사용 중인 파일 시스템도 온라인 상태에서 쉽게 확장하거나 축소할 수 있습니다.
  • 여러 디스크 통합: 여러 개의 물리 디스크를 하나의 볼륨 그룹으로 묶어 단일하고 거대한 저장 공간처럼 사용할 수 있습니다.
  • 스냅샷 기능: 특정 시점의 파일 시스템을 그대로 복사하여 백업이나 테스트에 안전하게 활용할 수 있습니다.

LVM 실전 가이드: 3단계로 논리 볼륨 만들기 🚀

이제 새로운 디스크 /dev/vdc와 /dev/vdd를 서버에 추가했다고 가정하고, 이 두 디스크를 사용하여 3GB 크기의 새로운 논리 볼륨을 만들어 보겠습니다.

1단계: 물리 볼륨(PV) 생성 🧱

가장 먼저, 리눅스 시스템에 LVM이 이 디스크들을 '레고 블록'으로 인식할 수 있도록 표식을 남겨줘야 합니다.

sudo pvcreate /dev/vdc /dev/vdd

 

이 pvcreate 명령어는 /dev/vdc와 /dev/vdd 디스크를 LVM이 사용할 수 있는 물리 볼륨으로 초기화합니다.

 

✅ 확인하기: pvs 명령어로 물리 볼륨이 잘 생성되었는지 확인합니다.

sudo pvs
# 결과 예시
  PV         VG   Fmt  Attr PSize   PFree
  /dev/vdc        lvm2 ---  <사이즈> <사이즈>
  /dev/vdd        lvm2 ---  <사이즈> <사이즈>

 

2단계: 볼륨 그룹(VG) 생성 📦

이제 준비된 레고 블록(PV)들을 하나의 큰 '레고 상자(VG)'에 담을 차례입니다. volume1이라는 이름의 볼륨 그룹을 만들어 보겠습니다.

sudo vgcreate volume1 /dev/vdc /dev/vdd

 

vgcreate 명령어는 volume1이라는 이름으로, /dev/vdc와 /dev/vdd를 멤버로 하는 새로운 볼륨 그룹을 생성합니다.

 

✅ 확인하기: vgs 명령어로 볼륨 그룹 목록을 확인합니다.

sudo vgs
# 결과 예시
  VG      #PV #LV #SN Attr   VSize   VFree
  volume1   2   0   0 wz--n- <총 사이즈> <총 사이즈>

 

VSize(전체 크기)를 보면 두 디스크의 용량이 합쳐진 것을 볼 수 있습니다.

 

3단계: 논리 볼륨(LV) 생성 📁

드디어 상자 안의 블록을 사용해서 우리가 원하는 '레고 성(LV)'을 만들 시간입니다. volume1 볼륨 그룹에서 3GB 크기를 할당받아 website_files라는 이름의 논리 볼륨을 생성합니다.

sudo lvcreate -n website_files -L 3G volume1

 

명령어 옵션 완전 분석!

  • -n website_files: 생성할 논리 볼륨의 이름(name)을 지정합니다.
  • -L 3G: 논리 볼륨의 크기(Logical size)를 3 기가바이트(Gigabytes)로 설정합니다. (-l 옵션을 사용하면 퍼센트로도 할당 가능합니다.)
  • volume1: 어떤 볼륨 그룹에서 공간을 할당받을지 지정합니다.

✅ 확인하기: lvs 명령어로 논리 볼륨이 잘 만들어졌는지 최종 확인합니다.

sudo lvs
# 결과 예시
  LV            VG      Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  website_files volume1 -wi-a----- 3.00g

✨ 가장 중요한 마지막 단계: 파일 시스템 생성 및 마운트

축하합니다! 논리 볼륨 생성은 끝났습니다. 하지만 지금은 파일을 저장할 수 없는 '깡통' 상태입니다. 데이터를 저장하려면 파일 시스템으로 포맷하고, 특정 디렉터리에 연결(마운트)해야 합니다.

  1. 파일 시스템 생성 (포맷) 새로 만든 논리 볼륨의 경로는 /dev/볼륨그룹명/논리볼륨명 형식을 따릅니다. 이 볼륨을 xfs 파일 시스템으로 포맷해 보겠습니다.
    sudo mkfs.xfs /dev/volume1/website_files
    
  2. 마운트 포인트 생성 및 마운트 이제 이 논리 볼륨을 연결할 디렉터리를 만들고 마운트합니다.
    # 웹사이트 파일을 저장할 디렉터리를 생성합니다.
    sudo mkdir -p /var/www/website
    
    # 논리 볼륨을 생성한 디렉터리에 마운트합니다.
    sudo mount /dev/volume1/website_files /var/www/website
    

이제 /var/www/website 경로에 파일을 저장하면, 우리가 LVM으로 구성한 새로운 스토리지에 안전하게 데이터가 기록됩니다! (재부팅 시 자동 마운트를 원하시면 /etc/fstab에 등록하는 것도 잊지 마세요!)


마무리하며 🎬

LVM은 처음에는 조금 복잡해 보일 수 있지만, 그 구조와 명령어 몇 가지만 익히면 물리적 디스크의 한계를 넘어 훨씬 유연하고 강력하게 서버 스토리지를 관리할 수 있게 됩니다. 용량이 부족하면 lvextend로 늘리고, 필요하면 스냅샷으로 안전하게 백업하는 등 LVM의 무한한 가능성을 직접 경험해 보시길 바랍니다!

 

태그: 리눅스, LVM, 스토리지, 서버 관리, Logical Volume, Volume Group, pvcreate, vgcreate, lvcreate, DevOps, 파일시스템, 디스크 관리