[EBS] EBS 볼륨 생성, EC2 연결(추가) 및 스냅샷 가이드
EBS(Elastic Block Store)는 EC2 인스턴스에 연결하여 사용하는 가상 하드디스크입니다. EC2 인스턴스가 종료되어도 데이터가 유지되며, 필요에 따라 크기를 늘리거나 스냅샷(백업)을 생성할 수 있습니다.
Prerequisite
- AWS 계정 접근 권한: EC2 및 EBS 볼륨을 생성하고 관리할 수 있는 권한이 필요합니다.
- EC2 인스턴스가 생성되어 있어야 합니다: 볼륨을 연결할 대상 EC2 인스턴스가 실행 중이어야 합니다.
- EC2 접속 환경이 준비되어 있어야 합니다: SSH 또는 SSM을 통해 EC2에 접속할 수 있어야 합니다. (볼륨 마운트 작업에 필요)
- 가용 영역(AZ) 확인: EBS 볼륨은 EC2 인스턴스와 동일한 가용 영역(Availability Zone)에 있어야 연결할 수 있습니다.
Process
1. 볼륨 유형 비교
EBS는 용도에 따라 여러 볼륨 유형을 제공합니다. 볼륨을 생성하기 전에 적절한 유형을 선택해야 합니다.
| 유형 | 이름 | 용도 | 최대 IOPS | 최대 처리량 | 비용 |
|---|---|---|---|---|---|
| gp3 | 범용 SSD | 일반적인 워크로드 (권장) | 16,000 | 1,000 MB/s | 낮음 |
| gp2 | 범용 SSD (이전 세대) | 일반적인 워크로드 | 16,000 | 250 MB/s | 중간 |
| io1 | 프로비저닝된 IOPS SSD | 고성능 데이터베이스 | 64,000 | 1,000 MB/s | 높음 |
| st1 | 처리량 최적화 HDD | 빅데이터, 로그 처리 | 500 | 500 MB/s | 매우 낮음 |
| sc1 | 콜드 HDD | 자주 접근하지 않는 데이터 | 250 | 250 MB/s | 가장 낮음 |
(알아두기) 대부분의 경우 gp3를 선택하면 됩니다. gp2 대비 비용이 20% 저렴하면서 성능은 더 높습니다.
2. EBS 볼륨 생성
새로운 EBS 볼륨을 생성하는 단계입니다.
-
AWS Console에서 EC2 서비스로 이동합니다.

-
왼쪽 메뉴에서 Elastic Block Store > Volumes(볼륨)를 클릭합니다.

-
Create volume(볼륨 생성) 버튼을 클릭합니다.

-
볼륨 설정을 입력합니다:

- Volume type(볼륨 유형): General Purpose SSD (gp3) 선택
- Size (GiB)(크기): 원하는 용량 입력 (예:
20) - IOPS: 기본값 3000 유지 (gp3 기본)
- Throughput (MB/s)(처리량): 기본값 125 유지
-
Availability Zone(가용 영역)을 EC2 인스턴스와 동일한 가용 영역으로 선택합니다.

(중요) 가용 영역이 다르면 볼륨을 EC2에 연결할 수 없습니다. EC2 인스턴스의 가용 영역은 EC2 콘솔의 인스턴스 상세 정보에서 확인할 수 있습니다. (예: ap-northeast-2a)
-
Encryption(암호화): 보안이 필요한 경우 Encrypt this volume(이 볼륨 암호화)을 체크합니다. (일반적으로 필요 없음)

-
Create volume(볼륨 생성) 버튼을 클릭합니다.

-
볼륨 상태가 Available(사용 가능)로 변경될 때까지 기다립니다.

3. EC2 인스턴스에 볼륨 연결 (Attach)
생성한 볼륨을 EC2 인스턴스에 연결하는 단계입니다. 물리적으로 하드디스크를 꽂는 것과 같은 작업입니다.
-
Volumes(볼륨) 목록에서 방금 생성한 볼륨을 선택합니다.

-
Actions(작업) 드롭다운에서 Attach volume(볼륨 연결)을 클릭합니다.

-
Instance(인스턴스) 필드에서 볼륨을 연결할 EC2 인스턴스를 선택합니다.

-
Device name(디바이스 이름)은 원하는 값을 선택합니다. (예:
/dev/sdf)
(알아두기) Linux에서 실제로 인식되는 디바이스 이름은 /dev/xvdf 등으로 다를 수 있습니다. 이는 정상적인 동작입니다.
-
Attach volume(볼륨 연결) 버튼을 클릭합니다.

-
볼륨 상태가 In-use(사용 중)로 변경되면 연결 완료입니다.

4. EC2 내부에서 볼륨 마운트
볼륨을 연결했지만 아직 사용할 수 없습니다. 운영체제에서 볼륨을 인식하고 사용할 수 있도록 포맷(파일 시스템 생성)하고 마운트하는 단계입니다.
- SSH 또는 SSM으로 EC2 인스턴스에 접속합니다.
ssh -i [키파일].pem ec2-user@[EC2-퍼블릭-IP]
예시:
ssh -i ~/Downloads/my-key.pem ec2-user@13.125.100.200
연결된 볼륨 확인
- 다음 명령어로 연결된 디스크 목록을 확인합니다.
lsblk
출력 예시:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 20G 0 disk

xvdf가 새로 연결한 20GB 볼륨입니다. MOUNTPOINT가 비어 있으면 아직 마운트되지 않은 상태입니다.
파일 시스템 생성 (포맷)
- 새 볼륨에 파일 시스템을 생성합니다.
sudo mkfs -t ext4 /dev/[디바이스명]
예시:
sudo mkfs -t ext4 /dev/xvdf

(중요) 이 명령어는 새 볼륨에만 실행하세요. 기존 데이터가 있는 볼륨에 실행하면 모든 데이터가 삭제됩니다.
마운트 디렉토리 생성
- 볼륨을 연결할 디렉토리를 생성합니다.
sudo mkdir /data
볼륨 마운트
- 볼륨을 생성한 디렉토리에 마운트합니다.
sudo mount /dev/[디바이스명] [마운트경로]
예시:
sudo mount /dev/xvdf /data

- 마운트가 정상적으로 되었는지 확인합니다.
df -h
출력 예시:
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 8.0G 1.5G 6.5G 19% /
/dev/xvdf 20G 45M 19G 1% /data

/data에 100GB 볼륨이 마운트된 것을 확인할 수 있습니다.
5. 스냅샷 생성
스냅샷은 EBS 볼륨의 특정 시점 백업입니다. 스냅샷을 사용하면 데이터를 복원하거나 다른 리전으로 복제할 수 있습니다.
-
EC2 콘솔의 왼쪽 메뉴에서 Elastic Block Store > Snapshots(스냅샷)을 클릭합니다.

-
Create snapshot(스냅샷 생성) 버튼을 클릭합니다.

-
스냅샷 설정을 입력합니다:
- Resource type(리소스 유형): Volume(볼륨)
- Volume ID(볼륨 ID): 백업할 볼륨을 선택합니다.
- Description(설명): 스냅샷 용도를 입력합니다. (예:
data-volume-backup-20260324)
-
Create snapshot(스냅샷 생성) 버튼을 클릭합니다.

-
스냅샷 상태가 Completed(완료)로 변경되면 백업이 완료된 것입니다. 볼륨 크기에 따라 수 분에서 수 시간이 소요될 수 있습니다.


(알아두기) 스냅샷은 S3에 저장되며, 변경된 데이터만 저장하는 증분(incremental) 방식이므로 비용 효율적입니다. 첫 번째 스냅샷만 전체 볼륨 크기만큼 소요되고, 이후 스냅샷은 변경분만 저장됩니다.
Trouble Shooting
EBS 볼륨 생성, 연결, 마운트 과정에서 발생할 수 있는 문제 확인 사항입니다.
볼륨 연결(Attach) 시 인스턴스가 목록에 표시되지 않는 경우
- 볼륨과 EC2 인스턴스의 가용 영역(AZ)이 동일한지 확인합니다. (예: 볼륨이
ap-northeast-2a, 인스턴스가ap-northeast-2c이면 연결 불가) - 다른 AZ에 볼륨이 필요하면, 스냅샷을 생성한 후 원하는 AZ에서 새 볼륨을 만들어야 합니다.
lsblk에서 새 볼륨이 보이지 않는 경우
- 볼륨 상태가 In-use(사용 중)인지 AWS 콘솔에서 확인합니다.
- 몇 초 기다린 후
lsblk명령어를 다시 실행합니다.
mkfs 실행 시 "is apparently in use by the system" 오류
- 해당 볼륨이 이미 마운트되어 있을 수 있습니다.
df -h명령어로 확인합니다. - 이미 파일 시스템이 있는 볼륨은 포맷하면 데이터가 삭제됩니다.
sudo file -s /dev/xvdf명령어로 파일 시스템 존재 여부를 먼저 확인하세요.
mount 후 /data 디렉토리에 접근이 되지 않는 경우
ls -la /data명령어로 권한을 확인합니다.- 필요시
sudo chown ec2-user:ec2-user /data명령어로 소유자를 변경합니다.
재부팅 후 자동 마운트가 되지 않는 경우
/etc/fstab파일의 UUID가 정확한지sudo blkid명령어로 다시 확인합니다.sudo mount -a명령어를 실행하여 fstab 설정에 오류가 없는지 테스트합니다.