EBS
- 인스턴스가 동작하는 동안 네트워크 드라이브에 부착할 수 있는 볼륨(스토리지)이다.
- 인스턴스가 종료된 뒤에도 데이터가 유지될 수 있도록 만들어 준다.
- 따라서, 인스턴스를 재시작 할 경우 해당 볼륨을 그대로 이용하면 데이터를 유지할 수 있다.
- 한 번에 한 인스턴스에만 마운트 될 수 있다.
- 하지만 한 인스턴스에 여러 볼륨이 붙는 것은 가능하다(한 컴퓨터에 여러 개의 USB를 꽂을 수 있는 것과 같은 이치이다).
- EBS 볼륨을 생성하면 특정 AZ에 묶이게 되어 여러 AZ에서 사용할 수는 없다.
- 만약 스냅샷을 이용한다면 여러 AZ에서 사용할 수도 있을 것이다.
- 네트워크 USB 스틱이라고 생각하면 된다!
- 프리티어의 경우 30GB의 무료 저장 공간이 SSD 또는 Magnetic 타입에 월 별로 제공된다.
- 네트워크 드라이브이다.
- EC2와 네트워크로 통신하기 때문에 지연 시간이 있을 수 있다.
- EC2 인스턴스에서 떼어 내서 다른 인스턴스로 빠르게 붙이는 것도 가능하다.
- 프로비저닝 해서 사용한다.
- GB의 사이즈, IOPS(Operations per seconds)를 미리 정해야 한다.
Delete on Termination 속성
- EC2 인스턴스를 생성할 때 설정할 수 있는 속성이다.
- 인스턴스가 삭제될 경우 default로 root EBS 볼륨은 삭제된다.
- 하지만 이 속성은 체크 박스를 해제해서 삭제되지 않도록 설정할 수도 있다.
EBS 생성하기
- EBS를 생성한 후 우클릭 해서 EC2 instance에 attatch할 수 있다.
- 아래 사진에서 확인할 수 있듯이, 이미 root volume은 인스턴스에 부착 되어 있다.
- 중요한 것은, 인스턴스와 볼륨이 같은 AZ에 있어야 한다는 것이다.
EBS Snapshot 생성하기
- 원하는 시점에 대한 EBS 스토리지 스냅샷을 생성할 수 있다.
- 스냅샷 생성을 위해 인스턴스에서 떼어낼 필요는 없지만 그렇게 하는 것이 권장 된다.
- 스냅샷으로부터 오리진 볼륨의 AZ 또는 리전이 아닌 다른 곳에 EBS를 생성할 수 있다.
EBS Volume Types
-
gp2 / gp3 (SSD)
- 다양한 워크로드에 대해 가격과 성능이 균형을 이루는 범용 SSD 볼륨
-
io1 / io2 (SSD)
- 미션 크리티컬(중요한 비즈니스 앱) 하며 저지연 또는 고처리량 워크로드를 위한 고성능 SSD 볼륨
- EBS multi-attatch를 지원한다.
-
st1 (HDD)
- 액세스 빈도가 높은 처리량 집약적 워크로드 용으로 디자인 된 저비용 HDD 볼륨
- 빅 데이터, DW, log processing 등에 사용하기 좋다.
-
sc1 (HDD)
- 액세스 빈도가 낮은 워크로드를 위해 설계된 가장 저렴한 HDD 볼륨
EBS 스토리지는 크기/ 처리량/ IOPS(I/O Ops Per Sec)로 특징 지을 수 있다.
부팅 볼륨으로는 gp2 / gp3 (SSD), io1 / io2 (SSD)만 사용할 수 있다. 즉, root Volume으로 사용할 수 있는 것은 이 네가지 볼륨이라는 뜻이다.
32000 이상의 IOPS를 원할 경우 io1 또는 io2를 가진 EC2 Nitro가 필요하다.
EBS Multi-Attatch
- io1/ io2 volume에서만 사용할 수 있는 속성이다.
- 동일한 AZ 내에서 세 개의 인스턴스까지 attatch할 수 있다.
- 각 인스턴스는 해당 volume에 대한 full-read & full-write permission을 가져야 한다.
- 이 속성을 사용하면 애플리케이션은 고 가용성을 얻게 된다.
- 이 속성을 사용할 경우 애플리케이션은 concurrent write을 관리해야 한다.
- cluster-aware 한 EFS를 사용해야 한다.
AMI(Amazon Machine Image)
- AMI는 EC2 instance에 대한 일종의 사용자 정의이다.
- 본인이 원하는 소프트웨어, configuration, os, 모니터링 등등을 추가할 수 있다.
- 미리 패키징 된 소프트웨어를 통해 부팅과 구성을 더 빠르게 할 수 있다.
- AMI는 특정 리전에 생성 되어 여러 리전으로 복제가 가능하다.
- EC2 instances는 아래 세 종류의 AMI를 통해 생성할 수 있다.
- Public AMI(AWS 제공)
- 본인이 만든 AMI
- AWS Marketplace AMI: 다른 사람이 만들어 판매하는 AMI
AMI 생성 Process
- EC2 인스턴스를 실행해 사용자화 한다.
- 필요한 소프트웨어가 미리 설치되도록 한다.
- 인스턴스를 중지한다(데이터 무결성을 위해 중지하고 스냅샷을 생성하는 것이 좋다).
- AMI를 생성한다(백엔드에서 EBS가 스냅샷을 생성하게된다).
- 위에서 생성한 AMI를 이용해 다른 인스턴스를 런칭 한다.
EC2 instance를 부팅하는 데는 20~30초가 걸린다. 그런데 AMI를 생성하면 부팅하는 데 걸리는 시간이 줄어들게 된다. 왜냐하면, 필요한 소프트웨어가 이미 설치되어 있기 때문이다. 아래와 같이, 생성된 EC2 instance에 우클릭 해서 Create an Image를 선택해 AMI를 생성할 수 있다.
그러면 아래와 같이 인스턴스를 런칭 할 때, 내가 생성한 AMI가 My AMI에 나타나게 된다.
AMI는 특정 AWS 리전용으로 각 리전 마다 고유하게 구축 된다. 다른 AWS 리전의 AMI를 사용하여 EC2 인스턴스를 런칭할 수는 없지만 AMI를 대상 AWS 리전에 복사한 다음 이를 사용하여 EC2 인스턴스를 생성할 수 있다.
EC2 Instance Store
- 특별한 유형의 인스턴스는 물리적 서버에 연결된 하드 드라이브인 EC2 instance Store를 이용할 수 있다.
- 버퍼/ 캐시/ 스크래치 데이터/ 임시 컨텐츠 보관에 사용하기 좋다.
- 데이터를 장기 보관하기 위해서는 EBS가 더 나은 방법이다.
- 인스턴스를 중단하면 스토리지를 잃게 된다.
- 일시적인 스토리지이기 때문이다.
- EC2 instance에 장애가 생길 경우 데이터를 잃을 위험이 있다.
- instance에 연결된 하드웨어 역시 장애를 입게 되기 때문이다.
- 높은 I/O 성능을 보인다.
- EC2 instance에 대한 매우 고성능의 하드웨어 연결 볼륨이다.
- 인스턴스 타입이 i3.xx인 경우 EC2 instance store를 이용하는 인스턴스이다.
오답노트