본문 바로가기
기술 공부/DevOps

VirtualBox 새 파티션 LVM 디스크 확장

by soy-ul 2025. 12. 14.
반응형

🔹 들어가며

 

안녕하세요!

VirtualBox 환경에서 Ubuntu 서버의 디스크 공간이 부족해져서 LVM을 이용한 디스크 확장 작업을 진행했습니다.

간단할 줄 알았던 작업이 예상치 못한 PV 중복 이슈로 인해 시스템 부팅이 실패하였고, 결국 새 VM에서 재작업하며 배운 내용들을 정리하려 합니다. 

 

파티션 uid 중복으로 인해 volume 확장이 불가능한 경우의 대처 방법에 대해 아시는 분이 있다면 공유 부탁드려요. 🙏🏻

 

파티션 신규 추가 및 논리 볼륨 확장은 여러번 해보았지만, 이번 기회에 왜 문제가 발생했는지, 그리고 각 단계가 왜 필요한지를 중심으로 상세하게 내용을 작성해보겠습니다. 


🔹 작업 목표

현재 상황:

  • OS: Ubuntu Server 24.04
  • 환경: VirtualBox
  • 기존 LV 크기: 24GB
  • Root 파티션 공간 부족

목표:

  • 새 디스크(50GB) 추가, 파일시스템 확장 

🔹 1단계: 첫 번째 시도 - 중복 PV 문제 발생

상황

기존에 운영 중이던 VM에 새 디스크를 추가하고 vgextend를 시도했더니 다음과 같은 오류가 발생했습니다:

 
root@ubuntu:~# vgextend ubuntu-vg /dev/sdf1
  WARNING: Not using device /dev/sde3 for PV 6HrJKH-bwIn-EA4C-w3La-qOKn-2H6x-Pfw7Sd.
  WARNING: PV 6HrJKH-bwIn-EA4C-w3La-qOKn-2H6x-Pfw7Sd prefers device /dev/sda3 because device is used by LV.
  Cannot update volume group ubuntu-vg with duplicate PV devices.

문제 원인 분석

pvs -o+pv_uuid 명령어로 확인한 결과:

root@ubuntu:~# pvs -o+pv_uuid
  PV         VG        Fmt  Attr PSize   PFree   PV UUID
  /dev/sda3  ubuntu-vg lvm2 a--  <48.00g  24.00g 6HrJKH-bwIn-EA4C-w3La-qOKn-2H6x-Pfw7Sd
  /dev/sdf1            lvm2 ---  <50.00g <50.00g K0DATb-B2w0-wLgD-ZVqt-s9kN-z8IE-Q35FTs

 

pvs -a 명령어로 더 자세히 확인:

  /dev/sde3  ubuntu-vg lvm2 d--       0       0

 

발견한 내용 :

  • /dev/sde3는 d-- (duplicate) 상태
  • /dev/sda3와 /dev/sde3가 동일한 UUID를 가짐
  • 이는 VM 디스크 복제나 스냅샷으로 인한 문제라는 것을 확인함

 

해결 시도

 

1. LVM 캐시 초기화

root@ubuntu:~# rm -rf /etc/lvm/cache/
root@ubuntu:~# vgscan --cache
root@ubuntu:~# pvscan --cache

 

2. 중복되는 Physical Volume 삭제 : pvremove

root@ubuntu:~# pvremove /dev/sde3
  WARNING: Not using device /dev/sde3 for PV 6HrJKH-bwIn-EA4C-w3La-qOKn-2H6x-Pfw7Sd.
  Failed to read lvm info for /dev/sde3 PVID 6HrJKHbwInEA4Cw3LaqOKn2H6xPfw7Sd.

# 강제로 PV 삭제 시도하였으나 실패
root@ubuntu:~# pvremove -ff /dev/sde3
  Command failed with status code 5.

결과는, ❌ 실패

 

3: dd로 메타데이터 삭제

root@ubuntu:~# dd if=/dev/zero of=/dev/sde3 bs=1M count=10
10+0 records in
10+0 records out

root@ubuntu:~# dd if=/dev/zero of=/dev/sde bs=1M count=100
100+0 records in
100+0 records out

 

결과는, 시스템 부팅 실패

부팅 실패 원인 추정:

  1. 중복 PV 문제 (가장 유력)
    • 부팅 시 LVM이 중복 PV를 발견
    • VG 활성화 실패
    • Root LV를 마운트할 수 없음
  2. LV 메타데이터 손상 가능성
    • 작업 중 메타데이터 불일치 발생
  3. initramfs 미업데이트
    • 변경된 LVM 설정이 initramfs에 반영 안 됨

 


🔹 2단계: 새 VM에서 재작업 

다른 VM을 활용하여 LVM 확장을 시도하였습니다. 

환경 재구성

  1. 새 Ubuntu Server VM 준비
  2. 기존 데이터 백업 후 복원
  3. 깨끗한 LVM 환경 확보

디스크 추가 및 파티션 생성

# 새 디스크 확인
root@ubuntu:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   50G  0 disk
├─sda1   8:1    0    1M  0 part
├─sda2   8:2    0    2G  0 part /boot
└─sda3   8:3    0   48G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0   24G  0 lvm  /
sdb      8:16   0   50G  0 disk    # 새로 추가된 디스크

# 파티션 생성
root@ubuntu:~# fdisk /dev/sdb
```

fdisk 내부에서:
```
Command: n (새 파티션)
Partition number: p
First sector: (Enter - 기본값)
Last sector: (Enter - 전체 사용)
Command: w (저장)

 

결과 확인:

root@ubuntu:~# fdisk -l /dev/sdb
Device     Boot Start       End   Sectors Size Id Type
/dev/sdb1        2048 104857599 104855552  50G 83 Linux

🔹 3단계: LVM 구성

PV 생성

root@ubuntu:~# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

root@ubuntu:~# pvs
  PV         VG        Fmt  Attr PSize   PFree
  /dev/sda3  ubuntu-vg lvm2 a--  <48.00g  24.00g
  /dev/sdb1            lvm2 ---  <50.00g <50.00g

깨끗한 상태! 중복 PV 경고 없음

 

VG 확장

root@ubuntu:~# vgextend ubuntu-vg /dev/sdb1
  Volume group "ubuntu-vg" successfully extended

root@ubuntu:~# vgs
  VG        #PV #LV #SN Attr   VSize   VFree
  ubuntu-vg   2   1   0 wz--n- <97.99g <73.99g

성공! VG가 약 98GB로 확장됨

 

LV 확장

root@ubuntu:~# lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <24.00 GiB to 73.99 GiB.
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

root@ubuntu:~# lvdisplay /dev/ubuntu-vg/ubuntu-lv
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV Size                73.99 GiB
  ...

LV 확장 완료! 


🔹 4단계: 파일시스템 확장 

현재 상황 확인

root@ubuntu:~# df -h /
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   22G  6.9G   15G  32% /
```

🚨 **문제 발견!**
- LV는 74GB로 확장됨
- 하지만 파일시스템은 여전히 22GB 으로 나타남
  • lvextend: LV 크기만 확장 (논리적 공간)
  • resize2fs: 파일시스템 확장 (실제 사용 가능한 공간)

 

파일시스템 타입 확인

root@ubuntu:~# lsblk -f /dev/mapper/ubuntu--vg-ubuntu--lv
NAME                  FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
ubuntu--vg-ubuntu--lv ext4   1.0         245421e5-9c6e-4f22-b7b4-f9dc6bef1968   15.4G    29% /

ext4 파일시스템 확인!

 

resize2fs 실행

root@ubuntu:~# resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 19396608 (4k) blocks long.

💡 참고: ext4는 온라인 리사이징을 지원하기 때문에, 마운트된 상태에서도 안전하게 확장이 가능합니다. 

 

최종 확인 : LV 확장 성공

 
root@ubuntu:~# df -h /
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   73G  6.9G   63G  10% /
  • 파일시스템: 73GB
  • 사용 가능 공간: 63GB
  • 사용률: 10%

🔹 추가 작업 필요 여부

/etc/fstab 수정이 필요한가?

❌ 필요 없습니다!

이유:

  • LV 경로(/dev/ubuntu-vg/ubuntu-lv)는 그대로 유지
  • 단순히 크기만 확장한 것
  • UUID도 변경되지 않음

 

확인:

root@ubuntu:~# cat /etc/fstab | grep ubuntu-vg
/dev/mapper/ubuntu--vg-ubuntu--lv /               ext4    errors=remount-ro 0       1

🔹 전체 작업 요약

LVM 디스크 확장 절차 - 성공

# 1. 파티션 생성
fdisk /dev/sdb
# → n (새 파티션), t (타입 8e: LVM), w (저장)

# 2. PV 생성
pvcreate /dev/sdb1

# 3. VG 확장
vgextend ubuntu-vg /dev/sdb1

# 4. LV 확장
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 또는 특정 크기: lvextend -L +50G /dev/ubuntu-vg/ubuntu-lv

# 5. 파일시스템 확장 (ext4)
resize2fs /dev/ubuntu-vg/ubuntu-lv
# xfs인 경우: xfs_growfs /dev/ubuntu-vg/ubuntu-lv

# 6. 확인
df -Th

파일시스템별 확장 명령어

파일시스템확장 명령어온라인 리사이징
ext4 resize2fs ✅ 지원
xfs xfs_growfs ✅ 지원
ext3 resize2fs ✅ 지원

🔹 중요

  1. LV 확장 ≠ 파일시스템 확장
    • lvextend만 하고 resize2fs를 하지 않으면 실제 사용 가능한 볼륨 사이즈가 늘어나지 않음
  2. 중복 PV 문제는 조심스럽게 처리
    • VM 복제/스냅샷 시 주의
    • 운영 시스템에서는 무리하게 해결하지 말 것
    • 백업 후 깨끗한 환경에서 재작업이 안전
  3. 부팅 실패 원인
    • resize2fs를 안 해서 부팅이 실패하는 것은 아님 
    • 중복 PV, LVM 메타데이터 손상 등이 실제 원인인 것으로 추정
  4. 단계별 확인의 중요성
    • 각 단계마다 pvs, vgs, lvs, df -h로 확인
    • 문제 발생 시 어느 단계에서 실패했는지 파악 가능

🔹 마치며

간단해 보였던 디스크 확장 작업이 중복 PV 문제로 인해 시스템 부팅 실패까지 겪게 되었지만, 덕분에 LVM의 내부 구조와 파일시스템 확장의 중요성을 깊이 이해할 수 있었습니다.

특히 LV 크기를 늘렸다고 해서 바로 사용할 수 있는 게 아니며, resize2fs를 통해 파티션 볼륨을 조정해야 합니다. 

비슷한 작업을 하시는 분들께 도움이 되길 바라며, 혹시 질문이나 더 나은 방법이 있다면 댓글로 말씀 부탁드립니다! 😊

반응형