EBS(Elastic Block Store) Volume은 인스턴스가 실행 중이 동안 연결 가능한 네트워크 드라이브다. 이걸 이용해 인스턴스가 종료되어도 데이터를 계속 유지할 수 있다.
Cloud Practitioner 레벨에선 한 EBS가 한 인스턴스에만 붙을 수 있다고 한다.(Associate에서는 아님). 또한 특정 AZ에서만 사용 가능하다. -> 네트워크 USB 스틱이랑 비슷.
프리 티어에서는 30기가 준다. ENI처럼 네트워크기 때문에 attach/detach가 가능하다.

그림처럼 한 인스턴스에 여러개의 EBS가 붙을 수 있다. 또한

전에 나와있던 절전 모드처럼, 종료할 때 삭제할지 안할지를 정할 수 있다.
보통 인스턴스를 만들 때 생겼던 볼륨은 종료할 때 삭제되는 걸로 설정되어 있는데, 이는 인스턴스 만들 때 설정이 가능하다.

Elastic Block Store - 볼륨 들어가면 다음과 같이 볼 수 있다. 여기서 볼륨 생성을 할 수 있다.
EBS 스냅샷은 EBS 볼륨의 특정 시점에 대한 백업이다. 필수는 아니지만 권장 사항이며, 이를 다른 AZ나 리전에도 복사할 수 있다.

EBS 스냅샷은 세가지 서비스가 있다
EBS Snapshot Archive: 스냅샷은 백업 개념이기 때문에 만들어놓고 안읽는 경우가 많다. 이에 대한 볼륨 보관 비용을 낮추기 위해 75% 저렴한 "Archive tier"를 만들어 그곳에 보관한다. 아카이브에서 스냅샷을 복원하는데는 24~72시간이 걸린다.
휴지통: 스냅샷 잘못 지우는 걸 대비해서 휴지통 개념. 1일~1년으로 휴지통 삭제 기간을 지정할 수 있다.
Fast Snapshot Restore (FSR): 스냅샷을 완전 초기화해 첫 사용에서의 지연 기간을 없애는 기능. 스냅샷이 크거나, 인스턴스를 빨리 초기화해야할 때 사용한다. -> 근데 비쌈.
AMI(Amazon Machine Image)는 EC2를 통해 만든 이미지를 통칭한다. EC2의 커스텀이라고 생각하면 된다. 나만의 소프트웨어나 설정, OS, 모니터링 등을 설정하여 부팅 및 설정에 걸리는 시간을 줄일 수 있다. 우리는 이런 이미지를 세 군데에서 받을 수 있다
.
퍼블릭 AMI: Amazon Linux 2같은 AWS가 제공하는 이미지
프라이빗 AMI: 직접 만들기. 대신 관리 및 유지보수를 직접 해야함
AWS 마켓플레이스 AMI: 다른 사람이 만든 이미지를 사용 (판매)
AMI를 만드는 과정은
1. EC2를 시작해서 커스텀한다.
2. AMI를 만든다 - 이 과정에서 EBS Snapshot 생성한다.
3. 만들어진 AMI로 다른 리전에서 실행한다.
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
이라는 내용으로 인스턴스를 만들고, 오른쪽 클릭 -> 이미지 및 템플릿 -> 이미지 를 만들자.

그 후 인스턴스 시작-> 내 AMI로 한다면,
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
사용자 데이터에 이렇게만 넣어도 되고, 실행 속도가 빨라진다.
AMI에서 이미 httpd를 설치했기 때문이다.
EC2의 성능을 높이기 위해서 사용한다. 향상된 I/O 성능을 제공하지만, 정지된다면 저장된 데이터를 잃기때문에 장기적으로 데이터를 저장할만한 곳은 아니다. -> 버퍼, 캐시,임시 데이터 등을 보관하기 좋다. 데이터가 중요하면 백업 필요
| EBS 볼륨 유형 | 저장소 유형 | 설명 |
|---|---|---|
| gp2 / gp3 | SSD | 다양한 작업 부하에 대해 가격과 성능의 균형을 맞춘 범용 SSD 볼륨. |
| io1 / io2 Block Express | SSD | 미션 크리티컬한 저지연 또는 고처리량 작업 부하를 위한 최고 성능의 SSD 볼륨. |
| st1 | HDD | 자주 액세스되는, 처리량 집중형 작업 부하를 위한 저비용 HDD 볼륨. |
| sc1 | HDD | 덜 자주 액세스되는 작업 부하를 위한 최저 비용 HDD 볼륨. |
General Purpose SSD(GP2, GP3): 비용 효율적, 저지연
시스템 부팅 볼륨, 가상 데스크톱, 개발 및 테스트 환경
1기가 - 16테라 바이트까지 사용 가능
- GP2 : 3000 IOP까지 증가 가능. 볼륨 사이즈와 IOP는 연결되어 있다. -> 최대 IOP는 16000
Ex) 5334GB면 최대 IOP
-GP3: 3000 IOP와 초당 125MB 처리량을 제공 -> 16000 / 1000 MB까지 증가 가능
볼륨 사이즈와 IOP는 독립적이다.
Provisioned IOPS(PIOPS) SSD
지속적인 IOPS 성능이 필요한 중요한 비지니스 애플리케이션 /16000 IOPS 이상을 요구하는 경우
- 데이터베이스 워크로드에 좋다 (성능과 일관성에 민감한 경우)
나머지는 다 안외워도 되지만,
데이터베이스가 필요한 경우 -> IO1/IO2
높은 처리량과 가장 낮은 비용이 필요 -> ST1/ SC1
32000 이상의 IOP가 필요하다면 EC2 Nitro와 io1/io2가 필요하다.
하나의 EBS 볼륨을 같은 AZ에 있는 최대 16개 이하 여러개의 EC2에 연결할 수 있다. (IO1/IO2만 가능)
각 인스턴스는 이 고성능 볼륨에 대한 읽기/쓰기 권한을 모두 가진다.
높은 어플리케이션 가용성이 필요하거나 어플리케이션이 동시에 쓰기 작업을 관리해야 할 떄 사용한다.
또한 반드시 클러스터 인식 파일 시스템을 사용해야 한다. (XFS,EC4..)
EBS 볼륨을 암호화 한다면 다음과 같은 것들도 같이 암호화된다:
- 저장 데이터
- 인스턴스와 볼륨 사이의 전송 데이터
- 스냅샷 및 스냅샷으로 생성된 볼륨
보이지 않게 처리되기 때문에 아무것도 할 필요가 없다. 또한 지연시간이 거의 없기 때문에 사용하는 것이 좋다.
스냅샷을 봇가해서 암호화를 푼걸 다시 암호화 한다. -. 뭔소리?

이렇다네요 일단

암호화된 볼륨을 만드는 방법은 두 가지가 있는데, 처음은 암호화 되지 않은 볼륨에서 스냅샷을 만들고, 스냅샷 복사 -> 이 스냅샷 암호화 누른 다음 볼륨을 만들면 된다.
또는 
볼륨 생성에서 aws/ebs로 암호화해서 간단히 만들 수 도 있다.
EFS는 관리형 NFS(Network File System)이다. 여러 EC2에 연결될 수 있다. 서로 다른 AZ에 있어도 된다!
가용성이 좋고, 확장성이 뛰어나고(자동으로 확장된다), 사용에 따라 돈을 내지만, GP2의 3배로 비싸다.

보안 그룹으로 감싸져 있으며, 다양한 EC2에 연결되어 있는 것을 볼 수 있다.
NFSv4 프로토콜을 사용하며, 보안 그룹이 있어야 한다.
리눅스에서만 작동한다.(윈도우 안됨)
기준 API가 있는 POSIX 파일 시스템을 사용한다.
여기서 잠깐. POSIX는 운영체제 간의 호환을 위한 시스템 표준이라고 생각하자.
EFS는 다양한 스토리지 및 클래스가 존재한다.

접근 빈도에 따라 나눈다. 수명 주기 정책 설정을 통해 오래 접속하지 않은 데이터들은 자동으로 클래스를 바꿀 수 있다.

EFS - 파일 시스템 생성에서 다음과 같이 타입을 고를 수 있다.
단일 지역으로 하면 가격이 낮아지지만, 프로덕션에서는 당연히 리전을 고른다. 

버스트 및 프로비저닝됨을 고르면 성능 모드에서 최대IO를 고를 수 있다.
현재 AWS의 권장 사항은 개선됨 - 범용 콤보다.
저렇게 해서 EFS를 만들고, 연결시킬 인스턴스를 만들어보자.

만들다 보면 밑에 파일 시스템 밑에 서브넷을 선택하라고 하니 
위로 올려서 네트워크 설정을 편집해주자. 그러면

요렇게 돤다.
그 후 EFS - 네트워크에 들어가보면

한 AZ 안에 다양한 보안 그룹이 생성되게 된다.
이후 저 EFS를 연결한 인스턴스를 두개 만들면 파일 시스템이 공유된다.
삭제할 때는 보안 그룹은 직접 지우면 된다.
EBS 볼륨
- 하나의 인스턴스에만 연결 (io1/io2같은 다중 연결 제외)
- 한 AZ에서만 사용 가능
EFS 볼륨
- 여러 AZ에서 다양한 인스턴스에 접속 가능










조심해야 하는 것은, io1 / io2로는 최대 64,000 IOPS까지만 된다. 그거 이상이면 EC2 인스턴스 스토어 쓴다고 생각하자.