udamy/AWS Devleoper

3-3. EBS,AMI,EFS(1)(AWS Certified Developer Associate)

머혀기 2023. 2. 3. 19:09

1.EBS볼륨

 Elastic Block Store의 약자로 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브를 뜻한다.

EBS볼륨을 사용하면 인스턴스가 종료된 후에도 데이터를 지속할 수 있다. 또한 인스턴스를 재생성하고 이전 EBS 볼륨을 마운트하면 데이터를 다시 받을 수 있다.

- 특정 가용 영역에서만 연결이 가능하다.(다른 가용 영역과는 연결이 불가능하다는 의미!)

## 추후에 배우지만 스냅샷을 이용하면 다른 가용 영역으로도 볼륨을 옮길 수 있다.

 

CCP leveld의 EBS volume

- 하나의 EBS는 하나의 ec2 인스턴스에만 마운트 가능

어소시에이트 레벨

- 일부 EBS 다중 연결

 

EBS볼륨이란?

- 네트워크 USB 스틱이라 생각하면 편하다. 네트워크를 통해 EBS스토리지를 범용 SSD 혹은 마그네틱 유형으로 제공한다.

- 이는 물리적 드라이브가 아니고 네트워크 드라이브 이다. --> 즉 ec2와 분리될 수 있다.

- 인스턴스와 EBS 볼륨이 네트워크를 통해 통신하기 때문에 지연이 발생할 수 있다.

- EBS 볼륨은 말그대로 볼륨이기 때문에 용량을 미리 결정해야된다. IOPS즉 단위 초당 전송 수를 미리 지정해야된다.

(프로비전 용량에 따라 요금이 청구된다.)

 

1-2. 예시

EC2와 EB관계 예시

위 그림으로 간다하게 EC2와 EBS 볼륨의 가능한 연결 경우를 설명하려고 한다.

US-EAST-1A를 보면 10GB의 EBS를 인스턴스 1개와 연결을 할 수 있다. 하지만 EBS는 오직 한개의 인스턴스만 연결 가능하기 때문에 새로운 EC2인스턴스를 생성하게 되면 EBS또한 새로 생성해야된다. 하지만 하나의 인스턴스에는 한개이상의 EBS를 연결시키는 것은 가능하다. 그예시로 2번째 인스턴스는 두번째 100GB와 50GB를 동시에 연결했다. 다음으로 EBS는 특정 영역에서만 사용가능하단 것을 보여주는 예시이다.(물론 스냅샷을 사용하게 되면 가능할 수 있지만 이번시간은 EBS의 개념만 생각하자.) 그림에서 US-EAST-1A과 US-EAST-1B가 있는데 이둘은 다른 영역이기 때문에 1B에 생성한 인스턴스는 해당 영역에 새로운 EBS를 생성해 연결해야된다. 마지막으로 EBS는 반드시 한개의 인스턴스를 가지고 있을 필요도 없다. 1B의 10GB EBS가 그 증거다!

 

***시험 출제 가능성***

EC2인스턴스를 통해 EBS 볼륨을 생성한 경우 종료 시 삭제라는 속성이 존재한다.

시나리오

 인스턴스가 종료될 떄 루트 볼룸을 유지하고자 항는경우

- 데이터를 저장하고자 하는 경우 루트 볼륨의 종료 시 속성을 비활성화하면 된다.

 

1-3 EBS 볼륨 생성 실습

- EC2 dashboard /  intances 목록에 들어가면 사용중인 인스턴스를 확인할 수 있다. 내가 확인할 인스턴스를 클릭하고 하단 상세정보 목록에 storage를 클릭하면 사용중인 볼륨을 확인할 수 있다. (추가로 EC2 dashboard /  Volumes 목록에 들어면 모든 EBS 볼륨을 확인할 수 있음)

- Volumes 목록에 들어가서 Create Volume을 클릭하면 내가 원하는 가용 영역에 원하는 데이터 사이즈의 볼륨을 생성 할 수 있음!

- 추가로 인스턴스를 생성할 때 Storage(Volumes)를 설정하는데 details를 들어가면 인스턴스 생성시 볼륨 설정을 수정할 수 있다. 

위에서 시험 출제 가능이라고 써있는 Delete on termination이 이에 해당한다.(Defalut는 인스턴스삭제시 함께 삭제된다는 점!)

2. EBS Snapshots

EBS 스냅샷 앞에서 얘기했듯이 EBS의 특성중 하나는 바로 EBS는 특정 가용 영역(동일한 영역 혹은 리전)에서만 사용이 가능한 기능이다. 하지만 우리는 EBS 스냅샷을 사용한다면 이를 해결할 수 있다!

- EBS 스냅샷이란?

  사전적으로 스냅샷은 마치 사진 찍듯이 특정 시점에 스토리지의 파일 시스템을 포착해 보관하는 기술을 의미한다. 즉 EBS 스냅샷은 사용자가 원하는 시점에 대한 백업을 할 수있는 기능이라고 이해하면 편하다. 서버를 운영하면서 우리는 운영중인 서버를 다른 리전 혹은 다른 가용영역으로 이동하는 경우가 생길 수 있다. 이때 우리는 스냅샷으로 특정 시점 상태를 백업으로 남겨두고 해당 스냅샷 백업본을 통해 복구(이전)할 수 있다. (해당 강사는 백업 생성을 위해 백업 전 볼륨을 분리시킬 필요는 없지만 분리를 권장한다구 한다. ㅎㅎ )

 

2-1. 스냅샷의 필요성

- EBS 볼륨 복구시 사용

- 다른 가용 영력과 리전 간 복제시 사용

 

2-2. 스냅샷 사용

- 백업할 EBS 볼륨을 전송 전 EC2를 잠시 중단 시키거나 중단없이 스냅샷을 생성한다. (이는 개발자가 프로그래밍된 방식에 따라 달라짐)

- 백업된 스냅샷을 자신이 원하는 가용영역(혹은 리전)에 restore하여 다른 EBS 볼륨에 복구 작업을 할 수있다.

 

2-3. EBS 스냅샷의 특성

- Archive(아카이브)

 이를 이용하면 또 다른 스토리지 티어인 "Archive tier"로 옮길 수 있다. --> 해당 티어는 비용이 75%나 저럼한 티어라구!!!!

단, 아카이브로부터 스냅샷을 복구하는 데에 24~72간이 소요되므로 저장하는 스냅샷은 급히 복구할 만큼의 중요도가 높지 않은 스냅샷을 저장하자!! --> 우리에게 가장 중요한 비용을 낮추는 목적으로 사용가능하기 때문에 잘 알아두면 좋을 듯!!

- EBS 스냅샷 휴지통

기본적으로 EBS 스냅샷은 삭제하면 다시 복구할 수 없다. 하지만 이 기능을 설정해두면 스냅샷은 휴지통에서 사용자가 설정한 기간동안 보관될 수 이다. 실수를 대처하기위해 설정해두는 것은 필수 일듯. ㅎㅎ

 

2-4 실습

2-4-1. 스냅샷 생성

- EC2에 들어가 원하는 EBS 볼륨을 우측마우스 클릭 또는 클릭 후  Actions를 클릭해 Create snapshot을 클릭하며 아래와 같은 페이지로 이동한다.

- 해당 패이지에서 스냅샷에 대한 간단한 설명을추가하고 생성하면 스냅샷 완성! (너무 쉬운데..??)

EBS 스냅샷 생성 페이지

2-4-2. 생성된 스냅샷을 다른 영역에 복제하는 방법

 - EC2/snapshots 목록에 들어가 복구할 스냅샷을 우측마우스 클릭 또는 스냅샷 클릭 후  Actions를 클릭해 copy snapshot을 선택하면 아래와 같은 화면으로 이동한다.

 - 복제할 영역을 선택하고 copy하면 끝!! (이부분은 볼륨 복제가아닌 스냅샷 복제임!) 

- 만약 다른 영역에 EBS 볼륨을 복제하고 싶으면 create volume from snapshot을 클릭하면 끝!

2-4-3. 스냅샷 휴지통 생성

snapshot 페이지 우측 상단에 Recycle Bin 클릭 후 새로운 휴지통을 만들어준다. 좌측 그림과 같이 create retenion reule 페이지에서 만들어줌! 여기서 사용자는 휴지통 이름,설명,종류(우린 EBS Snapshots을 선택),기한을 설정하고 만들어주기!

(특정 테그의 리소스를 연결할 수 있지만 우리는 모든 리소스를 휴지통에 저장하기 위해 Apply to All resources를 체크하기)

 

 

 

 

 

 

 

 

(Archive Snapshot으로 설정하는 법은 너무 쉬우니까 그냥 글로만 쓸기루 ㅎㅎㅎ )

 - > Archive Snapshot로 관리할 스냅샷을 우클릭 후 Archive snapshot 클릭하고 확인 누름 끝!! 

:::::> 단 중요한 백업 스냅샷이 아닌것만 사용하자 -> 복구하는데 시간이 너무 오래걸림

 

 

3. EBS 볼륨 타입

 3-1. 종류 

- gp2/gp3

 범용 SSD보륨으로 다양한 워크로드에 대해 가격과 성능의 절충안이 돼있다.

gp2

 짧은 지연 시간을 자랑하며 효율적인 비용의 스토리지이다. 시스템 부팅 볼륨에서 가상 데스크톱,개발,테스트 환경에서 사용가능하고 크기는 1GB~16TB까지 다양하다. gp3보단 오래된 버전이며 볼륨이 더 작다. 또한 gp2는 볼륨과 IOPS가 연결(최대 3000 IOPS)되어 있어 IOPS가 증가할 때( 즉 볼륨의 GB 수를 늘릴 때 )에 세배더 증가한 16000 IOPS가 된다는 의미이다. 

gp3

 최신 세데의 볼륨으로 기본 성능으로 3000IOPS와 초당 125MB의 처리량을 제공한다. 각  IOPS는 최대 16000 처리량은 1,000MB/s까지 증가시킬 수 있다. 즉 볼륨과 IOPS가 연결되어 있지않다는 뜻

 

핵심

 gp2/gp3가 비용 효과적인 스토리지이며 gp3에서는 IOPS와 처리량을 독자적으로 설정 가능하지만 gp2는 연결되어있어 불가능 하다는 점이다.

 

- io1/io2

 최고성능을 자랑하는 SSD 볼륨으로 미션 크리티컬이자 지연 시간이 낮고 대용량의 워크로드에 쓰인다.

4~16TB의 퍼포먼스를 보여주고 Nitro EC2 인스턴스에서는 최대 64000IOPS까지 가능하다(Nitro EC2가 아닌경우 32000 IOPS).

gp3같이 IOPS를 스토리지 크기와 독자적으로 증가실킬 수 있다.

 io2

io1과 동일한 비용으로 내구성과 기기당 IOPS의 수가 더 높다. io2 block Express를 보면 4GB~64TB에 달하며 고성능 유형의 볼룸이다. 또한 지연 시간이 밀리초 미만이며 IOPS:GB 비율이 1000:1일 때 최대 256000 IOPS를 자랑한다.(그만큼 좋다는 뜻인듯 ㅎㅎㅎ)

 

- st1/sc1

 125MB ~  16TB까지 확장 가능하다.

st1

 저비용의 HDD볼륨으로 잦은 접근과 처리량이 많은 워크로드에 쓰인다.

주롤 빅데이터나 데이터 웨워하우징 로그 처리에 적합하며 최대 처리량은 초당 500MB,최대 500  IOPS에 달한다.

sc1

 가장 비용이 적게 드는 HDD 볼륨으로 접근 빈도가 낮은 워크로드를 위해 설계됨

아카이브 데이터용으로 접근 빈도가 낮은 데이터에 적합하다. 최저 비용으로 데이터를 저장할 때 사용한다. 최대 처리량은 250MB,250 IOPS이다.

 

3-2. 타입 정의 방법

- 크기(size),처리량(Throughput),IOPS(초당 I/O 작업 수)

오직 gp2/gp3와 io1/io2만이 부팅 볼륨으로 사용될 수 있다. -> root OS가 실행될 위치에 해당.

 

***시험 중요 내용***

gp2와 IOPS 프로바이저닝을 중점으로 체크, 모든 볼륨의 차이 이해

 

3-3. Provisioned IOPS(PIOPS) SSD

- IOPS 성능을 유지할 필요가 있는 주요 비즈니스 애플리케이션이나 16000 IOPS이상을 요구하는 애플리케이션에 적합하다.

- 일반적으로 데이터베이스 워크로드에 쓰임 (스토리지를 이용하는 경우)

- PIOPS는 스토리지 성능과 일관성에 아주 민감해 gp2/gp3볼륨에서 io1/io2볼륨으로 바꾸는것이 좋다. 32000 IOPS 이상을 요구할 때 필수! (추가적으로 둘중 최신 세대를 고르는것이 좋다.)

 

 

4.EBS 다중 연결

(이전까지 우리는 EBS 볼륨은 오직 한개의 인스턴스에만 연결할 수 이다고 이야기했다.. 하지만!! 이놈만큼은 제외이기떄무에 간단히 알고만 있자 )

조건 ::::> io1/io2 제품군이여야된다.

총 세게의 인스턴스에 연결할 수 있다. 각 EC2 인스턴스는  읽기 및 쓰기 권한을 갖는다. Teradata와 같이 클러스터 된 Linux 애플리케이에서 가용성을 높여야하는 경우 모든 애플리케이션에 가능하지 않지만 해당 애플리케이션 내에서는 동일한 볼룸에 동시 쓰기 작업을 관리 할 수 있다. (필수 요소::: 반드시 클러스터 인식 파일 시스템을 사용해야됨) XFS/EX4등은 사용불가.

 

 

 

 


참고자료

- 생성한 볼륨을 사용하는 방법

 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html

 

Make an Amazon EBS volume available for use on Linux - Amazon Elastic Compute Cloud

If you ever boot your instance without this volume attached (for example, after moving the volume to another instance), the nofail mount option enables the instance to boot even if there are errors mounting the volume. Debian derivatives, including Ubuntu

docs.aws.amazon.com