대상 OS: Rocky Linux 9

디스크가 꽉 차기 시작하면 운영자는 결국 “안 끊고 늘릴 수 있나?”를 묻게 됩니다.
Rocky Linux 9의 기본 조합(LVM + XFS)은 온라인 확장이 매우 강력하지만, 순서 하나만 틀려도 ‘늘린 줄 알았는데 용량이 그대로’ 같은 허탈한 상황이 나옵니다.
이 글은 파티션(또는 새 디스크) 추가부터 PV/LV 확장, XFS 파일시스템 확장까지를 한 흐름으로 정리하고,
중간중간 어디서 확인해야 실수가 줄어드는지(그리고 어떤 건 되돌릴 수 없는지)를 운영 관점에서 묶었습니다.

---

1) 시나리오(가장 흔한 케이스)

1. /dev/sda3 파티션이 LVM PV로 잡혀 있고, 그 위에 VG=vg0, LV=lv_data가 있으며 XFS로 마운트되어 있다

2. 가상화 환경/스토리지에서 디스크가 200G → 400G로 늘어났고, OS에서는 파티션과 LVM, 파일시스템을 확장해야 한다

3. 마운트포인트는 /data (예시)

---

2) ‘어디가 꽉 찼는지’부터 정확히 확인

1. 파일시스템 사용량과 마운트 대상

df -hT /data
findmnt -no SOURCE,TARGET,FSTYPE,OPTIONS /data

2. 블록 디바이스/파티션 크기(디스크는 커졌는데 파티션이 그대로인 경우가 많음)

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo fdisk -l /dev/sda | sed -n '1,120p'

3. LVM 레이어별 여유 공간

sudo pvs
sudo vgs
sudo lvs -a -o +devices

---

3) (중요) 확장 전 안전장치: “되돌릴 수 없는 단계”를 표시해두기

1. 현재 LVM 메타데이터 백업(작지만 효과 큼)

sudo mkdir -p /root/lvm-backup
sudo vgcfgbackup -f /root/lvm-backup/vg0-$(date +%F).cfg vg0
ls -l /root/lvm-backup

2. /data가 서비스 핵심이면, 최소한 스냅샷/백업 상태를 확인하고 작업 창구를 잡기

# (예시) 작업 전후 비교용으로만: 핵심 파일 목록/용량 상위 확인
sudo du -xhd1 /data | sort -h | tail

주의: XFS는 “축소(shrink)”가 사실상 불가능합니다. 즉, 늘리는 건 쉽지만 되돌려 줄이는 건 어렵다고 생각하고 접근해야 합니다.

---

4) 디스크는 커졌는데 파티션이 안 커진 경우: 파티션 확장

1. 커널에 디스크 사이즈 재인식 요청(가상화에서 유용)

sudo partprobe /dev/sda || true
sudo blockdev --rereadpt /dev/sda || true
lsblk -o NAME,SIZE,TYPE /dev/sda

2. 파티션을 “끝까지” 확장(대부분 growpart가 제일 간단)

sudo dnf -y install cloud-utils-growpart
sudo growpart /dev/sda 3
lsblk -o NAME,SIZE,TYPE /dev/sda

3. 확장된 파티션을 PV로 쓰고 있었다면 PV 크기 반영

sudo pvresize /dev/sda3
sudo pvs

growpart가 싫거나 환경 제약이 있으면 `parted`로도 가능합니다. 핵심은 “파티션을 늘린 뒤 pvresize” 순서를 지키는 겁니다.

---

5) VG에 생긴 여유(PV Free)를 LV에 할당하기

1. VG에 Free가 생겼는지 확인

sudo vgs
sudo pvs

2. LV를 원하는 만큼 또는 전부 확장

# +100G만 늘리기
sudo lvextend -L +100G /dev/vg0/lv_data

# 남은 공간을 전부 쓰기(운영에서는 이게 편한 경우가 많음)
# sudo lvextend -l +100%FREE /dev/vg0/lv_data

sudo lvs -o lv_name,vg_name,lv_size,devices

팁: 확장 단위를 애매하게 잡으면(예: +99.9G) 모니터링/용량계산에서 혼란이 생깁니다. “정수 GiB/100G 단위”처럼 팀 룰을 만들어 두면 나중에 편합니다.

---

6) XFS 파일시스템 온라인 확장(xfs_growfs)

1. 현재 파일시스템 타입 확인(XFS인지)

df -hT /data

2. XFS는 마운트된 상태에서 grow가 가능

sudo xfs_growfs /data

3. 결과 확인

df -hT /data
sudo xfs_info /data | sed -n '1,80p'

참고: ext4는 `resize2fs`를 쓰지만, 이 글의 대상은 XFS입니다. 파일시스템 타입을 섞어 생각하면 “명령이 먹히지 않는다”로 시간을 날립니다.

---

7) 자주 하는 실수와 ‘빠른 진단’

# A. lvextend는 했는데 df 용량이 그대로

1. 파일시스템 확장 명령을 안 했을 가능성이 큼

sudo lvs -o lv_name,lv_size
sudo xfs_growfs /data
sudo df -hT /data

# B. pvresize가 실패하거나 PV가 늘지 않는다

1. 파티션 크기 자체가 안 늘었을 수 있음

lsblk -o NAME,SIZE,TYPE /dev/sda
sudo fdisk -l /dev/sda | sed -n '1,120p'

2. 커널 파티션 테이블 재인식이 안 된 경우(재부팅이 필요할 때도 있음)

sudo partprobe /dev/sda || true
sudo udevadm settle

# C. “어떤 디바이스가 /data인지” 헷갈린다

1. findmnt로 소스를 먼저 고정하고, 그 다음 LVM 경로를 따라간다

findmnt -no SOURCE,TARGET,FSTYPE /data
sudo lsblk -f
sudo lvs -a -o +devices

---

8) 운영 체크리스트(작업 후 5분)

1. 부팅 후에도 정상 마운트되는지(fstab/UUID)

sudo grep -n "\s/data\s" /etc/fstab || true
sudo systemctl daemon-reload

2. LVM/디스크 관련 에러 로그가 없는지

sudo dmesg -T | tail -n 80
sudo journalctl -b -p warning --no-pager | tail -n 80

3. 여유 공간이 정상적으로 늘었는지(모니터링 기준도 함께 업데이트)

df -hT /data
sudo vgs
sudo lvs

---

9) 덤: 새 디스크를 ‘추가’로 붙이는 경우(요약)

1. 새 디스크가 /dev/sdb로 보인다고 가정

lsblk -o NAME,SIZE,TYPE /dev/sdb
sudo pvcreate /dev/sdb
sudo vgextend vg0 /dev/sdb
sudo lvextend -l +100%FREE /dev/vg0/lv_data
sudo xfs_growfs /data

이 방식은 기존 파티션을 건드리지 않아(리스크가 낮아) 실무에서 선호되기도 합니다. 스토리지/가상화에서 “디스크 증설”이 가능하다면, 파티션 확장보다 더 깔끔하게 끝날 때가 많습니다.