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