EBS 볼륨
- EBS 볼륨은 Elastic Block Store Volume의 줄임말로 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브(하드디스크)이다.
- EBS 볼륨을 사용하면 인스턴스가 종료된 후에도 데이터가 삭제 되지 않고 지속할 수 있다.
- CCP 레벨: 하나의 EBS는 하나의 EC2 인스턴스에만 마운트 가능
- 어소시에이트 레벨: 일부 EBS 다중 연결
- EBS 볼륨은 특정 가용 영역(Avalibility Zone)에서만 가능
- 단 스냅샷을 사용할 경우 다른 가용 영역으로 볼륨을 옮길 수 있다.
- EBS 볼륨은 네트워크 USB라고 생각하면 된다.
- EBS 볼륨은 네트워크 드라이브이므로 EC2 인스턴스에서 분리될 수 있고 매우 빠르게 다른 인스턴스로 연결될 수 있다.
- 원하는 양의 GB 및 IOPS로 구매 가능
무료 등급으로는 매달 30GB의 EBS 스토리지를 범용 SSD 혹은 마그네틱 유형으로 제공된다.
EBS - Delete On Termination attribute
EC2 인스턴스를 생성할 때 콘솔에서 EBS 볼륨을 생성하면 Delete On Termination attribute 옵션에서 체크 시 EC2 인스턴스 종료시 EBS 볼륨도 같이 삭제 되고 체크를 안 할 경우 EC2 인스턴스 종료시 EBS 볼륨은 삭제 되지 않는다. (기본적으로 루트 EBS 볼륨은 인스턴스 종료와 함께 삭제 되도록 활성화 되어 있고 다른 EBS 볼륨은 삭제 되지 않도록 비활성화 되어 있다.)
EBS - Snapshots
- EBS 스냅샷은 EBS 볼륨의 특정 시점에서의 백업이다.
- 이를 위해 EC2 인스턴스에서 EBS 볼륨을 분리할 필요는 없지만 분리하는게 좋다.
- EBS 스냅샷을 다른 가용 영역 또는 다른 리전에 복사할 수 있다.
EBS Snapshots 기능
- EBS Snapshot Archive: 스냅샷을 최대 75% 더 저렴한 아카이브 티어로 옯길 수 있는 기능
- 스냅샷을 아카이브 티어로 옮기면 아카이브를 복원하는데 24시간 에서 72시간 정도 걸린다.
- EBS 스냅샷을 위한 휴지통을 만드는 기능: EBS 스냅샷을 영구적으로 삭제하는 대신 휴지통에 보관
- 휴지통에 보관할 경우 보관 기간은 하루에서 1년까지 설정할 수 있다.
- 빠른 스냅샷 복원: 스냅샷을 완전히 초기화 (스냅샷을 처음 사용할 때 대기시간이 없기 하기 위한 목적)
AMI
- AMI는 Amazon Machine Image의 약자로 사용자 지정 EC2 인스턴스를 나타낸다.
- 각자의 소프트웨어 구성에 대해 운영체제를 정의 및 설정하며 모니터링 도구를 설정할 수도 있는데 이때 자체적으로 AMI를 생성하면 부팅과 구성에 시간이 단축된다.
- 특정 리전에 맞도록 구축함으로써 이들을 원하는 리전에 복사해 놓거나 AWS 글로벌 인프라를 활용할 수 있다.
AMI에 EC2 인스턴스 실행 종류
- 공용 AMI: AWS에서 제공 (예: 아마존 Linux2 AMI)
- 직접 AMI 생성
- AWS 마켓 플레이스 AMI: 다른 사용자가 만들어서 판매하는 AMI
AMI 처리 방법
- EC2 인스턴스를 시작하고 이를 사용자 지정으로 변경
- 인스턴스를 중지시켜 데이터 무결성을 확보
- AMI를 구축 (표시되지는 않으나 EBS 스냅샷 또한 생성됨)
- 끝으로 다른 AMI에서 인스턴스를 실행할 수 있게 된다.
EC2 인스턴스 스토어
- EC2 인스턴스 스토어는 일반 하드디스크와 같은 블록 레벨 스토리지로, 호스트 컴퓨터에 물리적으로 연결된 디스크에 위치한다.
- EBS보다 더 높은 IOPS를 가진다.
- 인스턴스 스토어는 버퍼, 캐시, 스크래치 데이터, 기타 임시 콘텐츠와 같이 자주 변경되는 정보의 임시 저장에 적합하다.
- I/O 성능 향상을 위해 활용할 수 있다.
- 주의해야 될 점은 EC2 인스턴스, 즉 인스턴스 스토어를 중지 또는 종료하면 해당 스토리지 또한 손실된다.
- EC2 인스턴스의 기본 서버에 장애가 발생할 시에는 해당 EC2 인스턴스가 연결된 하드웨어도 장애가 발생하므로 데이터 손실에 대한 위험이 존재한다.
- 따라서 EC2 인스턴스 스토어를 사용할 때에는 필요에 따라 데이터를 백업해 두거나 복제해 둬야 한다.
EBS 볼륨 타입
-
gp2/gp3(SSD): 범용 SSD 볼륨으로 다향한 워크로드에 대해 가격과 성능의 절충안이 되어 준다.
-
io1/io2(SSD): 최고 성능을 자랑하는 SSD 볼륨으로 미션 크리티컬이자 지연 시간이 낮고 대용량의 워크로드에 쓰인다.
-
st1(HDD): 저비용의 HDD 볼륨으로 잦은 접근과 처리량이 많은 워크로드에 쓰인다.
-
sc1(HDD): sc1 볼륨은 가장 비용이 적게 드는 HDD 볼륨으로 접근 빈도가 낮은 워크로드를 위해 설계되었다.
EBS 볼륨 정의 -> 크기 | 처리량 | IOPS(초당 I/O 작업 수)
세부 사항 정리
- gp2/gp3:
- 짧은 지연 시간을 자랑하며 효율적인 비용의 스토리지이다.
- 시스템 부팅 볼륨에서 가상 데스크톱, 개발, 테스트 환경에서 사용될 수 있다.
- gp3
- 크기: 1GB ~ 16TB
- gp2와 gp3의 차이점으로는 gp3는 최신 세대의 볼륨으로 기본 성능으로 3,000 IOPS와 초당 125MB의 처리량을 제공한다.
- 각각 IOPS는 최대 16,000, 처리량은 1,000MB/s까지 증가시킬 수 있다.
- gp2:
- 이전 세대 모델이다.
- 볼륨이 gp3보다 작다.
- 최대 3,000 IOPS에 볼륨과 IOPS가 연결되어 있다.
- IOPS가 증가할 때면 볼륨의 GB 수를 늘릴 때에 세 배 더 증가한 16,000 IOPS가 된다.
- gp3에서는 IOPS와 처리량을 독자적으로 설정할 수 있는 반면 gp2에서는 IOPS와 처리량이 연결되어 있다.
- 프로비전 IOPS:
- IOPS 성능을 유지할 필요가 있는 주요 비즈니스 애플리케이션이나 16,000 IOPS 이상을 요하는 애플리케이션에 적합하다.
- 예: 데이터베이스 워크로드 (스토리지를 이용하는 경우)
- gp2/gp3 에서 io1/io2로 바꾸는것이 좋다.
- io1/io2 (4GiB - 16TiB):
- io1/io2 중에서는 최신 세대를 고르는 것이 좋다. (io2는 io1과 동일한 비용으로 내구성과 기가 당 IOPS의 수가 더 높다. io2를 사용하는 것이 더 좋다.)
- io2 블록 익스프레스(4GiB - 64TiB):
- 좀 더 고성능 유형의 볼륨이다.
- 지연 시간이 밀리초 미만이며 IOPS 대 GB 비율이 1,000:1일 때 최대 256,000 IOPS를 자랑한다.
- st1/sc1:
- 부팅 볼륨이 없다.
- 최대 16TB까지 확장되며 두가지 종류의 볼륨을 제공한다.
- 처리량 최적화 HDD(st1):
- 빅데이터나 데이터 웨어하우징 로그 처리에 적합하다.
- 최대 처리량 초당 500MB, 최대 IOPS는 500에 달한다.
- Cold HDD(sc1)
- 아카이브 데이터용으로 접근 빈도가 낮은 데이터에 적합하다.
- 최저 비용으로 데이터를 저장할 때 사용한다.
- 최대 처리량 초당 250MB, 최대 IOPS는 250에 달한다.
EBS 볼륨의 다중 첨부 기능
- 다중 첨부 기능을 사용하면 동일한 EBS 볼륨을 동일한 가용 영역에 있는 여러 개의 EC2 인스턴스에 첨부할 수 있다.
- EBS 볼륨 중 io1/io2 제품군에서만 사용할 수 있다.
- 각 인스턴스는 고성능 볼륨에 대한 전체 읽기 및 쓰기 권한을 갖게 된다. (동시에 읽기 쓰기도 가능)
- 다중 첨부 기능은 지정된 가용 영역 내에서만 사용 할 수 있다.
- 하나의 볼륨은 한 번에 최대 16개의 EC2 인스턴스에 부착할 수 있다.
- 다중 첨부 기능을 작동하려면 클러스터를 인식할 수 있는 파일 시스템을 사용해야 한다. (XFS나 Xe4와는 다른 파일 시스템이다.)
Amazon EFS (탄력적 파일 시스템)
- EFS는 Elastic File System의 약자로 관리형 NFS(네트워크 파일 시스템)이다.
- 서로 다른 가용 영역에 있는 EC2 인스턴스에도 사용 가능하다.
- 가용성이 높고, 확장성이 뛰어나며, 비용도 GP2 EBS 볼륨의 약 3배 비싸다.
- 사용량에 따라 비용을 지불한다. (용량을 미리 프로비저닝할 필요가 없다.
- EFS는 콘텐츠 관리, 웹 서비스, 데이터 공유, 워드 프레스에 사용된다.
- 내부적으로 NFS 프로토콜을 사용한다.
- EFS에 대한 액세스를 제어하려면 보안 그룹을 설정해야 한다.
- EFS는 Window가 아닌 Linux 기반 AMI와만 호환된다.
- KMS를 사용하여 EFS 드라이브에서 미사용 데이터 암호화를 활성화 할 수 있다.
- EFS는 용량을 미리 정할 필요가 없다. (파일 시스템은 자동 확장되며, EFS에서 사용하는 데이터 사용(GB)량 만큼 비용이 발생한다.)
EFS 성능
- EFS 스케일:
- 수천 개의 동시 NFS 클라이언트와 10GB 이상의 처리량이 가능하다.
- 페타바이트 규모의 네트워크 파일 시스템으로 자동 확장 할 수도 있다.
- 성능 모드:
- 범용(기본값): 웹 서버, CMS 등과 같이 지연 시간에 민감한 경우 사용된다.
- MAX I/O: 처리량을 최대화하려고 할 떄 사용, 지연 시간이 긴 파일 시스템이지만 처리량이 크고 병렬성이 높다. (빅데이터 애플리케이션, 미디어 처리)
- 처리량 모드:
- 버스팅: 1TB의 경우 초당 50MB에 초당 100MB 버스트이다.
- 프로비저닝: 스토리지 크기에 관계없이 처리량 설정 가능 (1TB에 스토리지에 대해 초당 1GB 처리 가능)
- 엘라스틱(Elastic): 워크로드에 따라 처리량을 자동으로 확장할 수 있다. 워크로드를 예측할 수 없을 때 유용
EFS 스토리지 클래스
- 스토리지 계층 설정 가능 (며칠 후 파일을 다른 계층으로 옮길 수 있는 기능)
- 가용성과 내구성:
- EFS를 다중 AZ로 설정할 수 있다. (프로덕션 사용 사례에 적합)
- 하지만 개발용으로는 하나의 영역 EFS 파일 시스템을 사용한다.
EBS와 EFS 차이점
- EBS:
- EBS 볼륨은 한 번에 하나의 인스턴스에만 연결이 가능하고 특정 가용 영역에 한정된다.
- gp2: 디스크 크기가 늘어나면 IO도 함께 증가한다.
- io1: IO를 볼륨 크기와 관계 없이 독립적으로 증가시킬 수 있다. (중요한 데이터 베이스를 실행할 때 좋은 방법)
- EBS를 다른 가용 영역으로 옮기고자 할 때:
- 스냅샷 -> 다른 AZ에서 그 스냅샷을 복원 -> 해당 AZ에 EBS 볼륨이 생성
- EBS의 스냅샷이나 백업을 만들 때에는 EBS 볼륨 내의 IO를 전부 사용하게 되기 때문에 인스턴스가 EBS를 사용 중이 아닐 때에만 실행해야 한다. (성능에 문제가 생긴다.)
- EC2 인스턴스가 종료되면 인스턴스 내의 루트 EBS 볼륨도 기본적으로 함께 종료된다. (비활성화 가능)
- EFS:
- EFS는 여러 개의 가용 영역에 걸쳐 무수히 많은 인스턴스들에 연결될 수 있다.
- Linux 인스턴스에서만 가능하다.
- EFS는 EBS 보다 훨씬 비싸다. (대략 3배 이상 비쌈)
- 비용을 절약하고 싶은 경우에는 스토리지 티어로 EFS-IA를 사용하고 제품 수명 정책을 사용하면 비용을 절감할 수 있다.
- EFS는 사용한 만큼만 비용이 청구된다. (EBS는 정해진 사용량에 따라 비용이 청구됨)
- EFS는 다수의 인스턴스에 걸쳐 연결해야 하는 네트워크 파일 시스템에 적합하다. (EBS는 네트워크 볼륨을 한 번에 하나의 인스턴스에 연결할 수 있고 특정 AZ 내로 한정 되어 있다.)