
공부 목적으로 작성된 글입니다.
데이터를 고정 크기의 블록으로 나누어 저장하는 방식
효율적이고 빠르고 신뢰할 수 있는 데이터 액세스가 필요한 애플리케이션에 블록 스토리지를 사용한다.

스토리지 종류는 파일 스토리지, 블록 스토리지, 객체 스토리지가 있다.

박스모양의 이미지가 AWS의 블록스토리지
AWS 스토리지 서비스
EC2 인스턴스에 제공되는 임시 블록 스토리지
버퍼, 캐시, 스크래치 데이터, 기타 임시 콘텐츠 등 자주 변경되는 데이터에 적합
호스트 컴퓨터에 물리적으로 연결된 디스크에서 제공

인스턴스를 시작하면 해당 인스턴스에 대응되는 루트 볼륨이 생성된다.
루트 볼륨 = 인스턴스의 기본 저장 장치로 AMI같은 부팅 파일이 들어있다.
루트 볼륨의 유형은 2가지로 EBS 루트 볼륨과 인스턴스 스토어 루트 볼륨이 있다.

EBS 루트 볼륨을 사용하는 인스턴스는 중지한 후 다시 시작해도 연결된 볼륨에 저장된 데이터에 아무런 영향이 없다.
인스턴스의 속성을 수정하거나, 인스턴스의 크기를 변경하거나, 사용하는 커널을 업데이트하거나, 디버깅 등의 목적으로 루트 볼륨을 실행 중인 다른 인스턴스에 연결할 수 있다.
st1 또는 sc1 EBS 볼륨은 루트 볼륨으로 사용할 수 없다.
인스턴스 스토어 볼륨의 모든 데이터는 종료되거나 장애가 발생하면 삭제된다.(중지 작업은 지원하지 않는다.)

C1, C3, D2, I2, M1, M2, M3, R3 및 X1과 같은 인스턴스 유형만 인스턴스 스토어 볼륨을 루트 볼륨으로 지원한다.
+window 인스턴스는 지원하지 않는다.
인스턴스를 실행할 때마다 os와 인스턴스 유형,각종 설정들을 일일이 설정하면 너무 귀찮지 않을까...?
--> 인스턴스를 미리 패키징하여 해결 = AMI
인스턴스를 생성하는데 모든 정보를 포함하는 템플릿(운영체제, 어플리케이션 서버,관련 설정 등)
이러한 데이터들이 미리 준비되어있기 때문에 부팅 시간이 단축된다.

동일한 구성의 여러 인스턴스가 필요할 때 단일 AMI에서 여러 인스턴스를 시작할 수 있다.

AWS에서 제공하는 고성능 분산 블록 스토리지 서비스
EC2인스턴스는 데이터를 저장하고 처리하기 위해 스토리지가 필요한데 그 중 하나가 EBS이다.
-->강의에서는 마치 "네트워크 USB"에 비유했다
하나의 EBS가 다중 인스턴스 연결되는건 불가능하다.
EBS 볼륨 유형은 크케 3가지 나눌 수 있다.
다양한 트랜잭션 워크로드를 위한 가격과 성능의 균형을 유지한다. (말그대로 범용성)
gp3/gp2
짧은 지연 시간이 필요한 중요하고 IOPS 집약적이며 처리량 집약적 워크로드를 위해 설계되었다.
io2/io1
성능 기준이 throughput인 대규모 스트리밍 워크로드에 최적화되어 있다.
높은 IOPS보다는 대규모 순차적 I/O 처리에 최적화
st1/sc1
위에 3가지 볼륨 유형의 대한 자세한 스펙은 아래 테이블을 참조
SDD volumes
HDD volumes
스토리지 장치가 1초 동안 수행할 수 있는 읽기 및 쓰기 작업의 수
IOPS = (총 읽기 + 쓰기 작업) / 시간(초)
단위 시간당 전송할 수 있는 데이터의 양을 측정
Throughput = IOPS x 블록 크기
EBS 볼륨 데이터를 백업하려면 --> 스냅샷 생성 (특정 시점)
스냅샷을 통해 다른 AZ or 리전으로 복사 가능하다.(S3에 저장)
볼륨에서 생성하는 첫 번째 스냅샷은 항상 전체 스냅샷이다.
--> 후속 스냅샷은 증분 스냅샷이다.
다음 다이어그램은 동일 볼륨의 여러 스냅샷이 작동되는 방식이다.

15GB의 볼륨에서 세 시점에서의 스냅샷 촬영
상태 1 에서 볼륨에는 10GB의 데이터가 들어있다.
스냅샷 A는 볼륨의 첫 번째 스냅샷이다. --> 전체 데이터 10GB 백업
상태 2 에서 볼륨의 4GB가 변경되었다.(전체 데이터는 여전히 10GB)
스냅샷 B는 증분 스냅샷이다. --> 변경된 데이터만 백업
즉 전체가 변경되는것이 아닌 바뀐 부분만 백업하여 특정 시점으로 백업이 가능하게 한다.
상태 3 에서 스냅샷 B가 촬영된 후 2GB총 데이터가 볼륨에 추가되었다.
스냅샷 C역시 증분 스냅샷이다.
스냅 B가 촬영된 후 추가된 데이터만 백업하면 된다.
3개의 스냅샷에 필요한 총 스토리지는 16 GB이다.
스냅샷 A = 10GB
스냅샷 B = 4GB
스냅샷 C = 2GB
다음 다이어그램은 다양한 볼륨의 여러 스냅샷이 작동되는 방식이다.

볼륨 1의 용량은 14GB이고 그 중 10GB의 데이터가 들어있다.
스냅샷 A는 볼륨의 첫 번째 스냅샷이다. --> 전체 데이터 10GB 백업
볼륨 2는 스냅샷 A에서 만들어졌다. (볼륨 1 = 볼륨 2)
볼륨 2에 4GB의 데이터가 추가되었다. (볼륨2의 총 데이터 = 14GB)
스냅샷 B는 볼륨 2 에서 가져온다.
스냅샷 B는 추가된 4GB의 데이터만 백업한다.(스냅샷 B의 총 데이터 = 4GB)
스냅샷 B는 다른 볼륨에서 생성되었지만 스냅샷 A 의 증분 스냅샷이다.
EBS 암호화를 사용하면 다음 유형의 데이터가 암호화된다.
- 볼륨 내부에 있는 정지 데이터
- 볼륨과 인스턴스 간에 이동하는 모든 데이터
- 볼륨에서 생성된 모든 스냅샷
- 해당 스냅샷에서 생성된 모든 볼륨
EBS는 리소스를 만든 각 리전에 고유한 AWS KMS를 자동으로 생성한다.
AES-256 데이터 암호화를 사용하여 볼륨을 AWS KMS로 암호화한다.
기본적으로 암호화 되지 않은 EBS볼륨을 바로 암호화는 불가능하다.
대신 다음의 순서를 거쳐서 EBS볼륨을 암호화하는 방법이 있다.
- 암호화 되지 않은 EBS 볼륨의 스냅샷 생성
- EBS 스냅샷 복사 기능을 통해 암호화
- 암호화된 스냅샷에서 암호화된 EBS 생성
| 특성 | EBS (Elastic Block Store) | 인스턴스 스토어 |
|---|---|---|
| 데이터 지속성 | 영구적 (인스턴스 종료/중지 후에도 데이터 유지) | 임시적 |
| 연결 방식 | 네트워크를 통해 연결 | 인스턴스에 물리적으로 연결 |
| 지연 시간 | 상대적으로 높음 | 매우 낮음 |
| I/O 성능 | 다양한 옵션 제공 (gp2, gp3, io1, io2 등) | 매우 높음 |
| 확장성 | 볼륨 크기 조정 가능, 볼륨 추가 가능 | 인스턴스 유형에 따라 고정 |
| 백업 | 스냅샷을 통한 백업 지원 | 사용자가 직접 관리해야 함 |
| 다중 연결 | io2/io1 지원 | 지원하지 않음 |
| 사용 사례 | 운영 체제 및 데이터 저장, 데이터베이스, 지속적인 워크로드 | 임시 데이터 저장, 캐시, 버퍼, 스크래치 데이터 |
| 가용성 | 모든 EC2 인스턴스 유형에서 사용 가능 | 특정 인스턴스 유형에서만 사용 가능 |
| 데이터 공유 | 여러 인스턴스 간 데이터 공유 가능 | 단일 인스턴스에서만 사용 가능 |
| 리전 및 AZ | 특정 AZ에 연결, 스냅샷으로 리전 간 이동 가능 | 인스턴스와 동일한 AZ에 위치 |
참고자료
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/Storage.html
https://aws.amazon.com/what-is/block-storage/
https://docs.aws.amazon.com/ebs/latest/userguide/EBSFeatures.html
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/