클라우드를 쓰다 보면 어느 순간 스토리지 용량이 부족해지는 경우가 생겼다. 실제로 사용 중이던 디스크가 100GB였는데, 더 많은 데이터의 저장이 필요해서 200GB로 확장을 했다. 그런데 문제는 클라우드 콘솔에서 용량을 늘렸는데도, 서버에서 df -h를 찍어보니 여전히 100GB로만 보인다는 것이다.
해결방법을 간단히 정리해본다. (환경은 XFS 파일시스템, /home 디렉터리)
클라우드 콘솔에서 디스크 용량만 늘리면 OS에는 블록 디바이스만 커짐.
파티션 확장(growpart) + 파일시스템 확장(XFS는 xfs_growfs, ext4는 resize2fs)을 해야 df -h에 반영됨.
XFS는 온라인 확장 가능(마운트 해제/재부팅 불필요) → 안전하지만 스냅샷 백업은 권장.
환경 & 전제
디스크: /dev/xvdb (확장 후 200GB)
파티션: /dev/xvdb1 (확장 전 100GB)
파일시스템: XFS
마운트 지점: /home
참고: 디바이스 이름은 클라우드/하이퍼바이저에 따라 /dev/xvdb, /dev/sdb, /dev/nvme0n1 등으로 다를 수 있습니다.
왜 이런 일이 생길까?
클라우드에서 볼륨 크기를 키우면 블록 디바이스의 총 용량만 증가합니다. 하지만 운영체제에서 사용하는 파티션 테이블과 파일시스템 메타데이터는 기존 크기를 기준으로 유지되기 때문에, df -h에는 이전 크기가 그대로 표시됩니다.
해결하려면 순서대로:
디바이스가 정말 커졌는지 확인 → 2) 파티션을 여유 공간까지 확장 → 3) 파일시스템을 새 파티션 크기에 맞게 확장
사전 점검 체크리스트
# 블록 디바이스와 파티션 구조 확인
lsblk
fdisk -l
# 파일시스템 유형과 마운트 지점 확인
mount | grep -E "xvdb|nvme|sdb"
디바이스 크기가 이미 200GB로 보이는지?
대상 파티션(/dev/xvdb1)이 어디에 마운트되어 있고, FS 타입이 xfs/ext4 중 무엇인지?
실제 사례 로그 (확장 전 상태)
# fdisk -l (요약)
Disk /dev/xvdb: 214.7 GB, ...
/dev/xvdb1 2048 209715199 104856576 83 Linux # ← 파티션은 100GB 수준
# 마운트 상태
/dev/xvdb1 on /home type xfs (...)
단계별 실전 절차 (XFS)
1) 파티션 확장
growpart로 파티션 테이블을 여유 공간 끝까지 키웁니다.
준비: 패키지 설치 (둘 중 환경에 맞게)
# RHEL/CentOS/Alma/Rocky
sudo yum install -y cloud-utils-growpart
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y cloud-guest-utils
실행
sudo growpart /dev/xvdb 1
성공 예시 출력
CHANGED: partition=1 start=2048 old: size=209713152 end=209715200 new: size=419428319 end=419430367
2) 파일시스템(XFS) 확장
XFS는 온라인 확장이 가능하므로 마운트 해제 없이 진행합니다.
sudo xfs_growfs /home # 또는 sudo xfs_growfs <마운트지점>
성공 예시 출력
meta-data=/dev/xvdb1 ...
data blocks changed from 26214144 to 52428539
3) 확인
df -h /home
lsblk
확인 예시 출력
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 200G 82G 119G 41% /home
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdb 202:16 0 200G 0 disk
└─xvdb1 202:17 0 200G 0 part /home
파일시스템 타입별 명령어 요약
파일시스템 | 파티션 확장 | 파일시스템 확장 |
---|---|---|
XFS | growpart /dev/DEVICE PART | xfs_growfs <mountpoint> |
ext4 | growpart /dev/DEVICE PART | resize2fs /dev/DEVICEPART |
예시
XFS: growpart /dev/xvdb 1 && xfs_growfs /home
ext4: growpart /dev/xvdb 1 && resize2fs /dev/xvdb1
LVM을 사용하는 경우(보너스)
LVM 위의 XFS/ext4라면 순서가 조금 다릅니다.
볼륨 크기 확인: lsblk, vgs, pvs, lvs
PV 확장: (파티션 확장 후) pvresize /dev/DEVICEPART
LV 확장: lvextend -l +100%FREE /dev/VGNAME/LVNAME
파일시스템 확장:
XFS: xfs_growfs /mountpoint
ext4: resize2fs /dev/VGNAME/LVNAME
NVMe 디바이스일 때의 표기
디바이스 이름: /dev/nvme0n1, 파티션: /dev/nvme0n1p1
명령은 동일합니다