2026년 1월 8일 목요일

EBS 볼륨 확장 정리: 수동 확장부터 자동 확장, 모니터링까지 (Linux 기준)

 Amazon Web Services에서 EC2 인스턴스를 운영하다 보면 EBS 볼륨 용량을 늘려야 하는 상황은 자주 발생합니다. 

하지만 EBS 볼륨 크기를 늘렸다고 해서 파일 시스템이 자동으로 확장되지는 않습니다.
볼륨 확장 이후에는 파일 시스템 크기 조정 작업을 반드시 추가로 수행해야 실제로 디스크 용량을 사용할 수 있습니다.

이 글은 EBS 볼륨 확장 이후 Linux 인스턴스에서 파일 시스템을 확장하는 전체 흐름
실무 기준으로 정리한 메모입니다.


먼저 알아두어야 할 점 (중요)

  • EBS 볼륨이 optimizing 상태가 되자마자 파일 시스템 확장은 바로 시작 가능

  • 중요한 데이터가 있는 볼륨이라면 사전에 스냅샷 생성 권장

  • Linux AMI가 MBR 파티션 테이블을 사용하는 경우

    • 부팅 볼륨 최대 크기: 2TiB 제한

  • 파티션이 있는 경우

    • 볼륨 크기 증가 ≠ 파티션 크기 증가


Linux 파일 시스템 확장 전체 흐름

Linux에서 EBS 볼륨 확장은 항상 다음 순서를 따릅니다.

  1. EBS 볼륨 크기 증가 (AWS 콘솔 또는 CLI)

  2. 파티션이 있는지 확인

  3. (필요 시) 파티션 크기 확장

  4. 파일 시스템 확장


사전 확인: 파일 시스템과 디바이스 구조

파일 시스템 확인

df -hT

블록 디바이스 및 파티션 구조 확인

lsblk

이 두 명령으로 다음을 확인합니다.

  • 파일 시스템 종류 (xfs / ext4 등)

  • 파티션 존재 여부

  • 볼륨 크기와 파티션 크기 차이


예제 1: NVMe EBS 볼륨 (Nitro 기반 인스턴스)

예: M5, C5, T3 등 Nitro 시스템

  • Root 볼륨: 8GB → 16GB

  • 추가 볼륨: 8GB → 30GB


1️⃣ 현재 파일 시스템 확인

df -hT

예시 출력:

Filesystem Type Size Used Avail Use% Mounted on /dev/nvme0n1p1 xfs 8.0G 1.6G 6.5G 20% / /dev/nvme1n1 xfs 8.0G 33M 8.0G 1% /data

2️⃣ 파티션 존재 여부 확인

lsblk
nvme0n1 16G disk └─nvme0n1p1 8G part / nvme1n1 30G disk /data

해석:

  • /dev/nvme0n1 (루트 볼륨)

    • 파티션 있음 → 파티션 확장 필요

  • /dev/nvme1n1 (추가 볼륨)

    • 파티션 없음 → 바로 파일 시스템 확장 가능


3️⃣ 파티션 확장 (파티션이 있는 경우만)

sudo growpart /dev/nvme0n1 1

⚠️ 디바이스 이름과 파티션 번호 사이에 공백 필요

확인:

lsblk

4️⃣ 파일 시스템 확장

XFS 파일 시스템

sudo xfs_growfs -d / sudo xfs_growfs -d /data

XFS는 마운트 상태에서도 확장 가능

필요 시 도구 설치:

sudo yum install -y xfsprogs

ext4 파일 시스템

sudo resize2fs /dev/nvme0n1p1 sudo resize2fs /dev/nvme1n1

5️⃣ 확장 결과 확인

df -h
/dev/nvme0n1p1 16G 15G / /dev/nvme1n1 30G 30G /data

예제 2: 기존 Xen 기반 인스턴스 (xvd 디바이스)

예: T2 인스턴스

  • Root 볼륨: 8GB → 16GB

  • 추가 볼륨: 8GB → 30GB


1️⃣ 디바이스 구조 확인

lsblk
xvda 16G disk └─xvda1 8G part / xvdf 30G disk └─xvdf1 8G part /data

두 볼륨 모두 파티션 확장 필요


2️⃣ 파티션 확장

sudo growpart /dev/xvda 1 sudo growpart /dev/xvdf 1

3️⃣ 파일 시스템 확장

XFS

sudo xfs_growfs -d / sudo xfs_growfs -d /data

ext4

sudo resize2fs /dev/xvda1 sudo resize2fs /dev/xvdf1

4️⃣ 최종 확인

df -h

자주 헷갈리는 포인트 정리

  • 볼륨 크기만 늘리고 끝내면 안 됨

  • 파티션이 있으면 growpart 먼저

  • XFS vs ext4 명령 다름

  • optimizing 상태에서도 파일 시스템 확장 가능

  • 운영 환경에서는 스냅샷 먼저


마무리

EBS 볼륨 확장은 자주 하는 작업이지만,
파일 시스템 확장 단계를 빼먹으면 실제 용량은 늘어나지 않습니다.


(추가) EBS 볼륨 자동 확장 방법 정리

AWS에서는 별도의 중단 없이 EBS 볼륨 크기를 조정할 수 있는
Elastic Volumes 기능을 제공합니다.

이를 활용하면 운영 중에도 볼륨 크기 확장이 가능하며,
여기에 간단한 자동화와 모니터링을 조합하면 사실상 자동 확장 구조를 만들 수 있습니다.


Elastic Volumes 개요

  • 인스턴스 중지 없이 EBS 볼륨 크기 변경 가능

  • optimizing 상태에서도 I/O 가능

  • 대부분의 최신 인스턴스 타입에서 기본 지원

📌 단, 파일 시스템 확장은 여전히 OS 레벨에서 수행해야 합니다.


자동 확장 설계 패턴 (실무 기준)

패턴 1: CloudWatch + Lambda 기반 자동 확장 (가장 일반적)

구성 흐름

  1. CloudWatch에서 디스크 사용률 모니터링

  2. 임계치 초과 시 Lambda 트리거

  3. Lambda가 EBS 볼륨 크기 확장

  4. 인스턴스 내부에서 파일 시스템 확장 수행

CloudWatch → Alarm → Lambda → ModifyVolume(EBS) ↓ OS 파일 시스템 확장

CloudWatch 모니터링 설정

EBS는 기본적으로 볼륨 사용률(filesystem usage) 을 직접 제공하지 않습니다.
따라서 인스턴스 내부 지표를 CloudWatch로 올려야 합니다.

1️⃣ CloudWatch Agent 설치 (Linux)

sudo yum install -y amazon-cloudwatch-agent

2️⃣ 디스크 사용률 수집 설정 예시

{ "metrics": { "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "disk": { "measurement": [ "used_percent" ], "resources": [ "/", "/data" ] } } } }

적용:

sudo amazon-cloudwatch-agent-ctl \ -a fetch-config \ -m ec2 \ -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json \ -s

3️⃣ CloudWatch Alarm 설정

예시:

  • Metric: disk_used_percent

  • Threshold: 80%

  • Period: 5분

  • Action: Lambda 트리거


Lambda를 이용한 EBS 볼륨 자동 확장

Lambda 로직 개념

  • 현재 볼륨 크기 조회

  • 일정 비율(예: +20%)로 확장

  • 최대 크기 제한 적용 (예: 500GB)

의사 코드 예시

new_size = int(current_size * 1.2) if new_size <= MAX_SIZE: modify_volume(volume_id, new_size)

📌 중요

  • Lambda는 EBS 크기만 늘림

  • 파일 시스템 확장은 별도 처리 필요


파일 시스템 자동 확장 방법

방법 1: cron + growpart + filesystem 명령 (가장 단순)

예시 스크립트:

#!/bin/bash growpart /dev/nvme0n1 1 xfs_growfs -d /

cron 등록:

*/5 * * * * root /usr/local/bin/fs-grow.sh

볼륨이 확장되면 다음 주기에 자동 반영됨


방법 2: systemd 서비스 + udev (조금 더 깔끔)

  • 볼륨 크기 변경 이벤트 감지

  • systemd unit으로 growfs 실행

  • cron보다 중복 실행 리스크 적음

(이건 환경에 따라 복잡도가 올라가서 필요할 때만 추천)


운영 시 주의사항 (자동 확장)

  • 자동 축소는 불가

  • ❌ 무한 확장 방지 필요 (상한선 필수)

  • ✅ 사전 스냅샷 또는 정기 백업 권장

  • ✅ 알람은 “확장 성공/실패”도 함께 설정


모니터링 요약 정리

항목방법
디스크 사용률CloudWatch Agent
확장 트리거CloudWatch Alarm
볼륨 확장Lambda (ModifyVolume)
파일 시스템cron / systemd
알림SNS 연계

정리

  • EBS는 Elastic Volumes 덕분에 온라인 확장이 가능

  • 파일 시스템 확장은 여전히 OS 레벨 작업

  • CloudWatch + Lambda + 간단한 스크립트로
    운영 부담 없는 자동 확장 구조 구성 가능

  • “완전 자동”보다는
    모니터링 + 제한된 자동화가 가장 안전한 패턴




참고 자료 (AWS 공식 문서)

이 글에서 정리한 내용은 실제 운영 경험을 바탕으로 작성했으며,
아래 Amazon Web Services 공식 문서를 함께 참고하면
각 환경별 세부 사항을 더 정확하게 확인할 수 있습니다.

EBS 볼륨 확장 및 파일 시스템 관련


자동 확장 및 모니터링 관련


스냅샷 및 백업

댓글 없음:

댓글 쓰기

EBS 볼륨 확장 정리: 수동 확장부터 자동 확장, 모니터링까지 (Linux 기준)

  Amazon Web Services 에서 EC2 인스턴스를 운영하다 보면 EBS 볼륨 용량을 늘려야 하는 상황은 자주 발생합니다.  하지만 EBS 볼륨 크기를 늘렸다고 해서 파일 시스템이 자동으로 확장되지는 않습니다. 볼륨 확장 이후에는 파일 ...