AWS

[AWS] aws 강의 섹션 6 (EBS, EFS, Instance Store 개념 정리)

대기업 가고 싶은 공돌이 2024. 9. 17. 05:25

EBS Volume

  • EBS란 Elastic Block Store의 줄임말이다.
  • 인스턴스가 실행중인 동안 연결 가능한 네트워크 드라이브(저장 공간)다.
  • EBS Volume을 사용하면 EC2가 종료된 후에도 데이터를 계속 가지고 있을 수 있다.
    • 인스턴스를 재생성 하고 이전 EBS 볼륨을 올리면 데이터를 다시 받을 수 있는 것이다.
  • CCP 레벨의 EBS 볼륨은 한 번에 하나의 인스턴스에만 올릴 수 있다. 
    • CCP 레벨이란 EBS 볼륨과 인스턴스 간의 일대일 관계를 의미한다.
    • Associate 레벨은 하나의 EBS에 인스턴스 여러 개를 올리는 관계를 의미한다.
  • EBS 볼륨은 특정 가용 영역에서만 사용 가능하다
    • 만약 us-east-1a 에서 생성된 경우 us-east-1b에서는 연결이 불가능 하다.
    • 스냅샷을 사용하면 다른 가용 영역으로 볼륨을 옮길 수 있긴 하다.
  • 간단하게 네트워크 USB 라고 생각하면 된다.
  • 프리티어에서 매달 30GB 까지 이용가능하다.
  • EBS 볼륨과 인스턴스는 네트워크를 통해 연결되기 때문에 지연이 발생할 수 있다.
  • EC2와 개별로 취급되기 때문에 연결을 끊고 다른 EC2로 매우 빠르게 연결할 수 있다.
  • 용량을 미리 결정해야 한다. 
    • 원하는 GB 양과 IOPS(초당 전송 수)를 미리 지정해야 한다. 

위 그림은 CCP 레벨의 EBS 볼륨 예시다.

한 개의 인스턴스에만 연결이 가능하다.

 

그러나 한 개의 인스턴스는 여러 개의 EBS 볼륨을 연결할 수 있다. (한 컴퓨터에 여러 USB를 사용하는 것과 같은 이치)

 

EC2 종료 시 EBS 볼륨 삭제 기능

EC2에서 EBS 볼륨을 같이 생성하여 연결할 시

Delete on Termination 이라는 옵션을 설정할 수 있다.

 

이 옵션은 EC2 종료 시 EBS 볼륨을 같이 삭제한다는 옵션이다. 

 

기본 설정은 EC2 종료시 루트 EBS 볼륨이 함께 삭제되는 것이다 (루트 EBS 말고 다른 EBS 는 삭제되지 않음)

 

EBS 생성 시 주의할 점

  1. 반드시 연결하려는 EC2와 동일한 가용영역에 만들어 줘야 한다.

EBS Snapshots

  • EBS 스냅샷이란 특정 시점에서 EBS 볼륨을 백업해 놓은 것을 의미한다.
  • EC2 인스턴스에서 EBS 연결을 끊을 필요는 없지만, 그렇게 하는 것이 좋다고 한다.
  • EBS 스냅샷을 다른 가용 영역 또는 다른 리전에 복사할 수 있다.

EBS Snapshots 특징

  1. EBS 스냅샷 아카이브 (스냅샷을최대 75% 더 저렴한 아카이브 티어로 옮길 수 있는 기능이다.)
    • 스냅샷을 아카이브 티어로 옮기면 아카이브를 복원하는데 24시간에서 72시간 정도
      시간이 소요된다.
  2. EBS 스냅샷 휴지통을 만들 수 있다.
    • EBS 스냅샷을 영구적으로 삭제하는 대신 휴지통에 보관한다.
      이를 통해 실수로 삭제한 경우 복구할 수 있다. 
      • 보관 기간은 하루에서 1년 사이로 설정할 수 있다.  
  3. Fast SnapShot Resotre (FSR)
    • 스냅샷을 완전히 초기화 하는 기능이다.
    • 스냅샷이 매우 클 때 EBS 볼륨을 초기화 해야 하거나
      또는 매우 빠르게 인스턴스화(새로운 EBS 볼륨을 만드는 것) 해야할 때 유용하다.

스냅샷 실습

스냅샷 생성을 원하는 EBS에서 스냅샷 생성을 누르면 바로 스냅샷을 만들 수 있다.

 

  • 이후 스냅샷에 들어가면 스냅샷 복사를 할 수 있는데, 원하는 AZ를 선택하여 해당 AZ에 스냅샷을 복사할 수 있다.
  • 이러한 기능은 재해로 인한 복구를 해야할 때 유용하다. 
    • 다른 리전에 데이터를 미리 백업해두면, 해당 AZ 자체가 재해로 다 날아가도
      다른 AZ의 스냅샷을 가져와 복구할 수 있는 것이다. 
  • 해당 스냅샷을 통해 새 볼륨도 만들 수 있다. (AZ 도 마음대로 설정 가능)

AMI

  • Amazon Machine Image 의 약자다.
  • EC2 인스턴스를 생성할 때 필요한 모든 정보를 담고 있는 이미지다. 
    • AWS에서 생성한 AMI를 생성하거나, 사용자가 커스텀한 AMI를 만들 수도 있다.
      • AWS 가 제공하는 AMI: 아마존 리눅스 2 
      • 마켓 플레이스에서 다른 사용자가 만든 AMI를 구매할 수도 있다.
    • 운영체제, 볼륨, 소프트웨어 등 필요한 기타 설정등이 포함되어 있다.
  • 설정을 AMI로 만들어두면. 동일한 설정을 가진 서버를 손 쉽게 만들어 낼 수 있다는 장점이 있다.
  • AMI는 이미 운영체제, 애플리케이션, 라이브러리, 설정을 포함하고 있다.
    즉, 새로운 EC2 인스턴스를 생성할 때 모든 소프트웨어를 새로 설치하고 환경 설정을 하는 과정이 필요하지 않다.
    CI/CD에 AMI를 적용하면 훨씬 빠른 배포가 가능하다고 한다.
  • 만약 Spring Boot를 EC2에 올려둔 상태로 AMI를 만들고,
    해당 AMI를 바탕으로 다른 Region에 EC2를 생성하면, Spring 서버가 그대로 복제된다.

AMI Process (In EC2)

  • EC2 인스턴스를 시작하고 customize로 바꾼다.
  • 데이터 무결성을 위해 인스턴스를 중지시킨다.
  • AMI를 만든다 - 이 때 EBS 스냅샷 또한 생성된다.
  • 다른 인스턴스에 AMI를 적용시켜 실행할 수 있다.

AMI 실습

복사할 EC2를 클릭한뒤 AMI를 생성한다.

 

이후 다른 인스턴스를 생성할 때 Amis를 클릭해서 원하는 AMI를 선택한 후에 인스턴스를 생성해주면 끝이다.

EC2 Instance Store

  • EBS의 볼륨은 제한되어 있다. 
  • 만약 더 높은 디스크 성능이 요구되는 작업이 있다면 EC2 인스턴스 스토어를 사용해야한다.
  • EC2 인스턴스는 실제로 물리적인 하드웨어 서버에 연결되어 있다.
    해당 하드웨어 서버엔 물리적으로 연결된 디스크도 존재할 것인데, 
    EC2 인스턴스 스토어는 바로 위에 말하는 연결된 하드웨어 드라이브를 의미한다.
  • 인스턴스 스토어는 새로 만들어서 추가하는 방식이 아니며, 
    인스턴스 스토어를 지원하는 EC2 유형을 선택해야 EC2 인스턴스 스토어를 사용할 수 있다. 

EC2 인스턴스 스토어 특징

  1. I/O 처리 성능을 향상시킬 수 있다.
  2. 인스턴스를 중지 또는 종료하면, 스토리지의 모든 내용이 삭제된다.
  3. 인스턴스 서버에 장애가 생겼을 때도 데이터 손실의 위험이 있다.
  4. 위의 이유 때문에 임시 저장소로 불리며, 장기적으로 데이터를 보관할 수 있는 장소가 아님을 알 수 있다.
  5. 버퍼, 캐시, 스크래치 데이터, 임시 콘텐츠를 보관하는 것에 아주 좋은 선택지다. 
  6. 필요하다면 백업을 해둬야 한다.

고성능 하드웨어를 사용할 때 EC2 인스턴스 스토어를 사용하면 좋은이유

  • EBS나 S3는 네트워크로 연결되어 있기에 작업마다 지연이 생긴다
    그러나 인스턴스 스토어는 물리적으로 EC2와 연결되어 있기 때문에 네트워크 지연이 생기지 않는다.
  • 즉, 고성능 하드웨어가 필요한 고성능 컴퓨팅 작업, 빅데이터 처리, 고성능 DB 작업, 캐싱 작업 등등에서
    성능을 극한으로 뽑아내려면 EC2 인스턴스 스토어가 훨씬 유리한 것이다. 

EBS 볼륨 유형

총 6가지의 유형이 있다. 

  1. gp2와 gp3 (SSD): 다양한 작업에 어울리는, 균형있는 성능과 가격의 SSD 타입 볼륨이다.
  2. io1, io2 Block Express (SSD): 가장 높은 성능의 SSD로 낮은 지연, 높은 뜨루풋 적업에 적합하다.
  3. st1 (HDD): 저비용 대용량 볼륨이다. 자주 액세스하고 처리량이 많은 작업을 위해 설계 되었다. 
  4. sc1 (HDD): 가장 저렴한 HDD 볼륨으로, 액세스가 적은 작업을 위해 설계되었다. 

EBS 볼륨은 Size, Throughput, IOPS를 기준으로 구분된다. 

 

EC2에서 gp2,gp2,io1,io2 즉 SSD만 부팅 볼륨으로 사용할 수 있다. (OS의 루트가 실행되는 위치)

 

gp2

  • 효율적인 비용, 낮은 지연이 특징
  • 시스템 부팅 볼륨, 가상 데스크톱, 개발 및 테스트 환경에 사용할 수 있다. 
  • 크기는 1GB - 16TB이다. 
  • iop와 뜨루풋이 의존적이다.

gp3

  • 최신 세대 볼륨, 기본적으로 3000 iop와 125mb/s 의 뜨루풋을 제공한다. 
  • iop는 최대 16000까지, 뜨루풋은 최대 1000mb/s까지 증가가 가능하다. 
  • iop와 뜨루풋은 독립적이다

gp2는 작은 사이즈에서 최대 3000까지 iop를 제공한다.

gp2는 사이즈와 iop가 연관되어 있다. 최대 iop는 16000이다.

만약 gp2에서 iop를 16000까지 올리고 싶다면 사이즈를 5334GB까지 올려야 한다.

 

gp3은 크기와 iop가 관련 없는 방식으로 설계 되었다. 4휴

 

* 1GB당 3iop가 증가한다. 

 

provisioned iops SSD

지속적인 iops 성능이 필요한 애플리케이션이나 16000 이상의 iop가 필요한 애플리케이션에 사용된다. 

 

만약 데이터베이스가 스토리지 성능과 일관성에 매우 민감한 경우 provisioned iops SSD가 적합할 것이다.

 

io1

  • 4TB - 16TB까지 지원한다.
  • Nitro EC2 인스턴스에서 최대 64000 piops를 제공하고, 다른 인스턴스에선 최대 32000을 제공한다.
  • 스토리지 사이즈와 별개로 piops를 늘릴 수 있다. 

io2 Block Express

  • 4GB - 64TB까지 지원한다. 
  • 최대 256,000 iops를 제공하는데 iops : GB 는 1000:1의 비율을 갖는다. 
  • EBS 다중 연결 기능을 지원한다. 

HDD

  • 부팅 저장소로 사용될 수 없다.
  • 125Gb - 16TB를 제공한다.
  • 뜨루풋 최적화 HDD st1이 있다.
    • 빅데이터, 데이터 웨어하우징, 로그 처리에 적합하다.
    • 최대 500MB/s의 뜨루풋과 500 iop를 제공한다.
  • cold HDD sc1
    • 아카이브 용도다.
    • 액세스가 거의 없다. 
    • 가장 적은 비용의 EBS를 찾을 때 쓰면 된다. 
    • 최대 250MB/s의 뜨루풋과 250 iop를 제공한다.

정리

  • 데이터베이스가 필요한 경우 SSD
  • 높은 처리량과 낮은 비용이 필요하다면 st1, sc1
  • 32000이상의 iop가 필요하다면 EC2 Nitro와 io1, io2 EBS가 필요하다. 

EBS 다중 연결 - io1/io2 family

  • 동일한 EBS 볼륨을 동일한 가용영역에 있는, 여러 개의 EC2 인스턴스에 붙일 수 있다.
  • 오직 io1, io2 에서만 사용할 수 있다. 

  • 각 인스턴스는 고성능 볼륨에 대한 전체 읽기 및 쓰기 권한을 갖게 된다 
  • 동시 쓰기와 동시 읽기가 가능하다. 
  • 사용 사례는 크러스터된 리눅스 어플리케이션에서 애플리케이션 가용성이 높아진다는 것이다. 
    • teradata(클라우드 데이터베이스), 애플리케이션 동시 쓰기 작업 관리 등,, 
  • 한 AZ의 EBS 볼륨을 다른 AZ의 EC2에 붙일 수 없다. 
  • 하나의 볼륨을 최대 16개의 EC2인스턴스에 부착할 수 있다. 
  • 다중 첨부 기능이 작동하려면 클러스터를 인식할 수 있는 파일 시스템을 사용해야한다. 

EFS - Elastic File System

  • EFS는 관리형 네트워크 파일 시스템이다(파일 저장소). 많은 EC2 인스턴스에 올릴 수 있다.
  • 서로 다른 AZ에 있더라도 EFS를 올릴 수 있다.
  • 가용성이 높고, 확장성이 뛰어나며 비싸다(gp2의 3배 가격)
  • 사용한 만큼 가격을 지불한다.

위와 같이 다른 가용영역의 EC2들을 모두 한 EFS 에 올릴 수 있다. 

 

사용 예)

  1. 콘텐츠 관리
  2. 웹서빙
  3. 데이터 공유
  • NFS(network file System) 프로토콜을 사용한다
  • EFS에 대한 액세스를 보안 그룹으로 제어해야한다.
  • 윈도우완 호환되지 않는다. 리눅스 기반 AMI와만 호환된다. 
  • KMS를 사용하여 EFS 드라이브에서 미사용 암호화(암호화 시켜 저장하는 방식)를 활성화 할 수 있다.
  •  Posix 파일 시스템을 사용하고 표준 파일 API가 존재한다. 
  • 용량을 미리 정할 필요가 없다. 
    • 자동으로 확장되며, 사용하는 GB양에 따라 자동으로 비용을 지불한다. 

특징

  • EFS Scale
    • NFS 수천 명 이상의 고객이 동시에 읽기 쓰기를 할 수 있다.
    • 10GB /s 이상이 뜨루풋을 확보할 수 있다. 
    • PB 규모의 네트워크 파일 시스템으로 자동 확장이 가능하다.
  • Performance Mode (Set at EFS creation time)
    • general purpose(default) - 지연 시간에 민감한 애플리케이션에 사용 (웹서버, CMS ,,)
    • Max I/O - 지연 시간은 길어지나, 뜨루풋이 늘어나고 병렬성이 높다. (빅 데이터, 미디어 처리에 적합)
  • Throughput mode
    • Bursting - 1TB = 50MB/s + burst of up to 100mb/s
    • Provisioned - 스토리지 크기에 관계 없이 뜨루풋을 설정하고 싶을 때 사용 
      • 1TB 스토리지에서 1GB/s 의 뜨루풋을 얻을 수 있더.
    • Elastic - 작업에 따라 자동으로 뜨루풋을 조절할 수 있다. 
      • 읽기는 초당 최대 3GB
      • 쓰기는 초당 최대 1GB까지 가능
      • 작업량을 예측하기 힘들 때 유용

EFS - Storage Classes

스토리지 계층을 설정할 수 있고, 며칠 후 파일을 다른 계층으로 옮길 수 있다.

  • standard: 자주 액세스 하는 파일을 위한 계층
  • Infrequent access (IA): 자주 액세스 하지 않는 파일을 위한 계층
    (파일을 검색할 경우 비용 발생 그러나 저장 비용은 적다)
  • Archive: 거의 액세스하지 않는 데이터 용도 (1년에 몇 번?) 50% 더 싸다.

스토리지 계층 간에 파일을 자동으로 이동하기 위해 수명 주기 정책이 있다.

수명 주기 동안 액세스 되지 않거나 자주 액세스 된다면 자동으로 계층이 변한다. 

 

가용성과 내구성 측면

  • standard: 여러 AZ에 분포해 있을 때 추천 (운영 중인 시스템)
    • 재해 대비 복구를 위해서
  • One Zone: 개발만 하고 싶고 저렴한 옵션을 원할 때
    • 기본으로 백업이 설정돼 있다. 
    • IA  계층과 호환된다. 
    • 단일 AZ에 저장되는 옵션으로 비용 절감이 필요할 때 사용된다.
    • IA 계층에 One Zone 옵션을 추가해서 사용하는 방식이다. 

EBS VS EFS - Elastic Block Storage (차이점)

EBS

  • EBS 볼륨은 한 번에 한 개의 인스턴스밖에 연결하지 못 한다 (io1/io2를 제외하고)
  • AZ에 고정된다. 다른 AZ의 EC2엔 올리지 못한다. 
  • gp2의 볼륨은 디스크 크기가 증가해야 IO가 증가한다.
  • gp3과 io1은 디스크 크기와 상관없이 IO성능을 조절할 수 있다. 
  • AZ 간에 EBS를 옮기려면 스냅샷을 이용해야 한다. 
  • EBS 볼륨 백업 작업은 IO를 사용한다. 따라서 애플리케이션이 많은 트래픽을 처리하고 있을 땐 실행하면 안 된다. 
  • EC2가 종료되면 기본적으로 루트 EBS도 종료된다. (옵션으로 바꿀 수 있다.)

EFS

  • 서로 다른 가용 영역의 수백 개의 인스턴스에 연결될 수 있다.
  • POSIX(리눅스 파일 시스템)을 사용하므로 오직 리눅스 인스턴스에만 사용할 수 있다.
  • EFS는 EBS보다 가격이 높다 (비용 절감을 위해 EFS-IA 기능을 활용할 수 있다.)