EBS
EBS Volume 이란?
- Elastic Block Store의 줄임말로 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브이다.
- EBS 볼륨을 사용하면 인스턴스가 종료된 후에도 데이터를 지속할 수 있다. 인스턴스를 재생성하고 EBS 볼륨을 마운트하면 데이터를 다시 받을 수 있다.
- CCP 레벨 : 하나의 EBS는 하나의 EC2 인스턴스에만 마운트 가능
- associate 레벨 : 일부 EBS 다중 연결 가능
- EBS 볼륨은 특정 가용 영역에서만 사용 가능하다.
- 네트워크 USB 스틱이라고 생각하면 된다.
- 물리적인 드라이브가 아닌 네트워크적인 드라이브이다. 즉, 인스턴스와 EBS 볼륨이 서로 통신을 하기 위해서는 네트워크를 필요로 한다.
- 네트워크가 사용되기 때문에 컴퓨터가 다른 서버에 도달할 때 지연이 생길 수 있다.
- EC2 인스턴스에서 분리될 수 있고, 다른 EC2 인스턴스와 연결할 수 있다.
- volume 이기 때문에 용량을 미리 결정해야 한다. 따라서 원하는 양의 GB와 IOPS(단위 초당 전송 수를 미리 지정해야 한다. 이후에 용량을 늘릴 수도 있다)
- 하나의 EC2 인스턴스에 2개의 EBS 볼륨이 결합하는 것은 가능하다.
EBS - Delete on Termination attribute
- 인스턴스를 통해 EBS 볼륨을 생성하는 경우 종료 시 삭제라고 하는 속성이 존재한다.
- root EBS volume은 기본적으로 인스턴스 종료와 함께 삭제되도록 설정되어 있다. 조작을 통해 제어 가능하다.
EBS Snapshots
- EBS 볼륨의 특정 시점에 대한 백업이다.
- EC2 인스턴스에서 EBS 볼륨을 분리할 필요는 없지만 권장 사항이다.
- EBS 스냅샷은 다른 가용 영역이나 다른 리전에도 복사할 수 있다.
- EBS Snapshots Archive
- 최대 75%까지 저렴한 아카이브 티어로 스냅샷을 옮길 수 있는 기능이다.
- 스냅샷을 아카이브 티어로 옮기면 아카이브를 복원하는데 24시간에서 최대 72시간이 걸린다.
- Recycle Bin for EBS Snapshot (EBS 스냅샷 휴지통)
- EBS 스냅샷을 삭제하는 경우 영구 삭제하는 대신에 휴지통에 넣을 수 있다.
- 잘못 삭제하는 경우 휴지통에서 복원할 수 있다. 휴지통의 보관 기간은 1일에서 1년 사이로 설정할 수 있다.
- Fast Snapshot Restore(FSR)
- 스냅샷을 완전히 초기화해 첫 사용에서의 지연 시간을 없애는 기능이다.
- 스냅샷이 아주 크고 EBS 볼륨 또는 EC2 인스턴스를 빠르겍 초기화해야 할 때 특히 유용하다. 하지만 비용이 많이든다.
EBS Volume Types
- gp2/gp3 : 범용 SSD volume으로 다양한 워크로드에 대해 가격과 성능의 절충안이 되는 옵션이다.
- 짧은 지연 시간을 갖는 효율적인 비용의 스토리지이다. 크기는 1GB에서 16TB까지 있다.
- gp3 : 최신 세대의 volume으로 기본 성능으로 3000 IOPS와 초당 125MB의 처리량을 제공한다. (최대는 16000 IOPS, 1000MB 처리량)
- gp2 : 좀 더 오래된 버전으로 볼륨이 더 작다. 최대 3000 IOPS이다. 볼륨과 IOPS가 연결되어 있어서 IOPS가 증가할 때 (볼륨의 GB 수를 늘릴 때 IOPS도 증가, 3 IOPS per GB. 즉, 5334GB일 때 최대 IOPS이다.)
- io1/io2 : 최고 성능의 SSD 볼륨으로 지연 시간이 낮고 대용량 워크로드에 쓰인다.
- st1 : 저비용 HDD 볼륨으로 잦은 접근과 처리량이 많은 워크로드에 쓰인다.
- sc1 : 가장 비용이 적게 드는 HDD 볼륨으로 접근 빈도가 낮은 워크로드를 위해 설계되었다.
- EC2 인스턴스에는 gp2/gp3와 io1/io2만이 부팅 볼륨으로 사용될 수 있다.(루트 OS가 실행될 위치)
EBS Volume Types Use cases Provisioned IOPS SSD
- 프로비저닝을 마친 IOPS는 성능을 유지할 필요가 있는 주요 비즈니스 애플리케이션이나 16000 IOPS 이상을 요하는 애플리케이션에 적합하다.
- 일반적으로 database workloads에 적합하다.
- 스토리지 성능과 일관성에 민감하다
- 이경우 gp2/gp3를 io1 또는 io2 볼륨으로 변경하는 것이 해답이다
- 4 ~ 16TB를 지원하며 Nitro EC2 인스턴스에서는 최대 64000 IOPS까지 가능하다. 아닌 경우에는 32000 IOPS까지 지원 된다.
- gp3 처럼 스토리지 크기와는 독립적으로 IOPS를 증가시킬 수 있다.
- io2는 io1과 동일한 비용으로 내구성과 기가 당 IOPS의 수가 더 높다.
- io2 block express는 4GB ~ 64TB이다. 최대 256000 IOPS를 가질 수 있다
EBS Volume Types Use cases Hard Disk Drives(HDD)
- 부팅 볼륨이 될 수 없다.
- 최대 16TB까지 확장된다.
- 2가지 종류의 볼륨을 제공한다
- st1 : 처리량 최적화 HDD로 빅 데이터나 데이터 웨어하우징 로그 처리에 적합하다
- 최대 처리량은 초당 500MB, 최대 IOPS 500이다
- sc1 : 콜드 HDD로 아카이브 데이터용으로 접근 빈도가 낮은 데이터에 적합하다. 최저 비용으로 데이터를 저장할 때 적합하다.
- 최대 처리량은 초당 250mb, IOPS 250이다
- st1 : 처리량 최적화 HDD로 빅 데이터나 데이터 웨어하우징 로그 처리에 적합하다
EBS volume을 정의하는 요소
- Size
- Throughput
- IOPS(I/O Ops Per Sec : 초당 I/O 작업 수)
EBS Multi-Attach - io1/io2 family
- 하나의 EBS 볼륨을 같은 가용 영역에 있는 여러 EC2 인스턴스에 연결할 수 있다.
- 이러한 기능은 io1과 io2 제품군에서만 사용할 수 있는 기능이다.
- 각 인스턴스는 고성능 볼륨에 대한 읽기 및 쓰기 권한을 전부 갖는다.
- 사용 사례 : 애플리케이션 가용성을 높이기 위해 Teradata 처럼 클러스터링된 Linux 애플리케이션에서 사용하거나, 애플리케이션이 동시 쓰기 작업을 관리해야 할 때 사용한다.
- 해당 가용 영역 내에서만 사용할 수 있다.
- 한 번에 16개의 EC2 인스턴스만 같은 볼륨에 연결할 수 있다는 점이다.
- 다중 연결을 실행하려면 반드시 클러스터 인식 파일 시스템을 사용해야 한다. (XFS, EX4와 같은 것은 사용 못한다 : 애네는 윈도우 전용 FSX를 써야된다)
EBS Encryption(EBS 볼륨 암호화)
- 저장 데이터가 볼륨 내부에 암호화되고
- 인스턴스와 볼륨 간의 전송 데이터 역시 암호화된다.
- 스냅샷도 암호화 된다.
- KMS에서 암호화 키를 생성해 AES-256 암호화 표준을 갖는다.
Encryption: encrypt and unencrypted EBS volume
- 볼륨의 EBS 스냅샷을 생성하고 복사 기능을 통해 EBS 스냅샷을 암호화 한다.
- 스냅샷을 이용해 새 EBS 볼륨을 생성하면 해당 볼륨도 암호화 된다.
- 암호화된 볼륨을 인스턴스 원본에 연결한다.
AMI
AMI이란?
- Amazon Machine Image를 뜻하는 말로, EC2 인스턴스를 통해 만든 이미지를 통칭한다.
- AMI로 AWS를 구축할 수 있고, 사용자가 원하는 대로 변경할 수도 있다.
- AMI에 워하는 소프트웨어 또는 설정 파일을 추가하거나 별도의 운영체제를 설치할 수도 있고, 모니터링 툴을 추가할 수도 있다.
- AMI를 따로 구성하면, 부팅 및 설정에 드는 시간을 줄일 수 있다.
- 사용자가 EC2 인스턴스에 설치하고자 하는 모든 소프트웨어를 AMI가 미리 패키징해 준다.
- AMI를 특정 지역에 구축한 다음 다른 지역으로 복사해서 AWS의 글로벌 인프라를 활용할 수도 있다.
- AMI에는 여러 종류의 AMI가 있다.
- Public AMI : AWS에서 제공하는 것(ex : Amazon Linux2)
- Custom AMI
- Marketplace AMI
AMI process (from an EC2 instance)
- Start an EC2 instance and customize it
- Stop the instance(데이터 무결성을 위해)
- 이 인스턴스를 바탕으로 AMI를 구축한다(이 과정에서 EBS snapshot이 생성된다)
- Launch instances from others AMIs
EC2 Instance Store
- 더 높은 성능이 필요한 상황이 생겨 EC2 instance에 연결된 하드웨어를 업그레이드 해야될 때가 있다(기존의 EBS volume은 네트워크 드라이브로 연결된 것이기에 성능에 한계가 있다)
- EC2 인스턴스가 연결된 서버에 물리적으로 연결된 하드웨어 드라이브가 필요해진다. 이때 해당 물리적 서버에 연결된 하드웨어를 EC2 Instance Store라고 부른다.
- I/O 성능 향상을 경험할 수 있다.
- 하지만 EC2 인스턴스가 중지 또는 종료되면 해당 스토리지 또한 손실된다. 이러한 이유로 임시 스토리지라고 부른다.
- 위와 같은 이유로 장기적 데이터를 보관할 만한 기능은 아니다.
- EC2 인스턴스의 서버에 장애가 발생하면 해당 인스턴스가 연결된 하드웨어에도 장애가 발생하므로 데이터 손실의 위험도 존재한다.
- 데이터 손실에 대비해 데이터를 백업해두거나 복제해둬야 한다
- 적절한 사용 사례 : Buffer, Cache, scratch 데이터 또는 임시 콘텐츠를 사용하려는 경우
Amazon EFS - Elastic File System
- EFS는 관리형 NFS(Network File System)이다.
- 네트워크 파일 시스템이기 때문에 많은 EC2 인스턴스에 마운트될 수 있다.
- EC2 인스턴스는 서로 다른 가용 영역에 있을 수 있다.
- 가용성이 높고 확장성이 뛰어나며 비싸다.(gp2 EBS 볼륨의 약 3배이다)
- 사용량에 따라 비용을 지불하므로 미리 용량을 프로비저닝할 필요 없다.(파일 시스템은 자동으로 확장된다)
- 사용 사례 : 콘텐츠 관리, 웹 서빙 데이터 공유, Wordpress
- 내부적으로 NFS 프로토콜을 사용하며, EFS에 대한 액세스를 제어하려면 보안 그룹을 설정해야 한다.
- 중요한 점은 윈도우가 아닌 Linux 기반 AMI와만 호환된다는 점이다.
- KMS를 사용해서 EFS 드라이브에서 미사용 암호화를 활성화할 수 있다.
- Linux 표준 파일 시스템이기 때문에 Posix 시스템을 사용한다. 또한 표준 파일 API가 존재한다.
EFS - Performance & Storage Classes
- EFS Scale
- NFS 사용자 수천명과 10GB 이상의 처리량을 확보할 수 있다.
- PB 규모의 네트워크 파일 시스템으로 자동 확장할 수 있다.
- Performance Mode(set a EFS creation time)
- General Purpose : 지연 시간에 민감한 사용 사례에 사용된다. 웹 서버나 CMS 같은 것
- Max I/O : 지연 시간이 더 긴 네트워크 파일 시스템이지만, 처리량이 높고 병렬성이 좋다.
- 빅데이터 애플리케이션이나 미디어 처리가 필요한 경우 유용하다.
- Throughput Mode
- Storage Classes
- Storage Tiers(lifecycle management feature - move file after N days)
- Standard : 자주 액세스하는 파일을 위한 계층
- Infrequent access(EFS-IA) : 자주 액세스하지 않은 계층. EFS-IA를 사용하려면 수명 주기 정책을 사용해야 한다.
- 이 파일 계층에서 파일을 검색할 경우 비용이 발생한다.
- 하지만 파일을 EFS-IA에 저장하면 비용이 감소된다.
- Storage Tiers(lifecycle management feature - move file after N days)
- Availability and Durability
- Standard
- 다중 AZ로 설정할 수 있다.
- 프로덕션 사용 사례에 적합하다.
- 가용성 영역 하나가 다운되더라도 EFS 파일 시스템에 영향을 미치지 않는다.
- One Zone
- 개발용으로 하나의 AZ에만 있다.
- 백업은 기본적으로 활성화되도록 설정되어 있다.
- 액세스 빈도가 낮은 스토리지 계층과 호환된다.
- 할인이 굉장히 많이된다.
- Standard
EBS vs EFS
- EBS volumes
- 한 번에 하나의 인스턴에스 첨부된다.(io1/io2를 제외하고)
- AZ 수준에서 잠긴다.
- gp2의 경우 디스크 크기가 증가하면 io가 증가, io1은 독립적으로 io를 늘릴 수 있다.
- AZ 간에 EBS 볼륨을 마이그레이션하려면 스냅샷을 만들어야 한다.
- EBS 볼륨 백업은 IO를 사용하므로, 애플리케이션이 많은 트래픽을 처리하는 경우엔 실행하지 않아야 한다. (EBS 인스턴스의 성능에 영향을 미칠 수 있기 때문이다.)
- 인스턴스의 루트 EBS 볼륨은 EC2 인스턴스가 종료되면 기본적으로 종료된다.
- EFS
- 서로 다른 AZ에서 서로 다른 마운트 대상을 가질 수 있다.
- 여러 인스턴스가 하나의 파일 시스템을 공유할 수 있다.
- EFS는 EBS보다 가격대가 높지만 EFS-IA 기능을 활용하면 비용을 절감할 수 있다.