[AWS] EC2 인스턴스 스토리지

컴공생의 코딩 일기·2023년 7월 16일
0

AWS

목록 보기
3/4
post-thumbnail

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 처리 방법

  1. EC2 인스턴스를 시작하고 이를 사용자 지정으로 변경
  2. 인스턴스를 중지시켜 데이터 무결성을 확보
  3. AMI를 구축 (표시되지는 않으나 EBS 스냅샷 또한 생성됨)
  4. 끝으로 다른 AMI에서 인스턴스를 실행할 수 있게 된다.

EC2 인스턴스 스토어

  • EC2 인스턴스 스토어는 일반 하드디스크와 같은 블록 레벨 스토리지로, 호스트 컴퓨터에 물리적으로 연결된 디스크에 위치한다.
  • EBS보다 더 높은 IOPS를 가진다.
  • 인스턴스 스토어는 버퍼, 캐시, 스크래치 데이터, 기타 임시 콘텐츠와 같이 자주 변경되는 정보의 임시 저장에 적합하다.
  • I/O 성능 향상을 위해 활용할 수 있다.
  • 주의해야 될 점은 EC2 인스턴스, 즉 인스턴스 스토어를 중지 또는 종료하면 해당 스토리지 또한 손실된다.
  • EC2 인스턴스의 기본 서버에 장애가 발생할 시에는 해당 EC2 인스턴스가 연결된 하드웨어도 장애가 발생하므로 데이터 손실에 대한 위험이 존재한다.
  • 따라서 EC2 인스턴스 스토어를 사용할 때에는 필요에 따라 데이터를 백업해 두거나 복제해 둬야 한다.

EBS 볼륨 타입

  • EBS 볼륨은 총 6개의 타입이 있다.
  1. gp2/gp3(SSD): 범용 SSD 볼륨으로 다향한 워크로드에 대해 가격과 성능의 절충안이 되어 준다.

  2. io1/io2(SSD): 최고 성능을 자랑하는 SSD 볼륨으로 미션 크리티컬이자 지연 시간이 낮고 대용량의 워크로드에 쓰인다.

  3. st1(HDD): 저비용의 HDD 볼륨으로 잦은 접근과 처리량이 많은 워크로드에 쓰인다.

  4. 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까지 확장되며 두가지 종류의 볼륨을 제공한다.
      1. 처리량 최적화 HDD(st1):
      • 빅데이터나 데이터 웨어하우징 로그 처리에 적합하다.
      • 최대 처리량 초당 500MB, 최대 IOPS는 500에 달한다.
      1. 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 차이점

  1. EBS:
  • EBS 볼륨은 한 번에 하나의 인스턴스에만 연결이 가능하고 특정 가용 영역에 한정된다.
  • gp2: 디스크 크기가 늘어나면 IO도 함께 증가한다.
  • io1: IO를 볼륨 크기와 관계 없이 독립적으로 증가시킬 수 있다. (중요한 데이터 베이스를 실행할 때 좋은 방법)
  • EBS를 다른 가용 영역으로 옮기고자 할 때:
    • 스냅샷 -> 다른 AZ에서 그 스냅샷을 복원 -> 해당 AZ에 EBS 볼륨이 생성
  • EBS의 스냅샷이나 백업을 만들 때에는 EBS 볼륨 내의 IO를 전부 사용하게 되기 때문에 인스턴스가 EBS를 사용 중이 아닐 때에만 실행해야 한다. (성능에 문제가 생긴다.)
  • EC2 인스턴스가 종료되면 인스턴스 내의 루트 EBS 볼륨도 기본적으로 함께 종료된다. (비활성화 가능)
  1. EFS:
  • EFS는 여러 개의 가용 영역에 걸쳐 무수히 많은 인스턴스들에 연결될 수 있다.
  • Linux 인스턴스에서만 가능하다.
  • EFS는 EBS 보다 훨씬 비싸다. (대략 3배 이상 비쌈)
    • 비용을 절약하고 싶은 경우에는 스토리지 티어로 EFS-IA를 사용하고 제품 수명 정책을 사용하면 비용을 절감할 수 있다.
  • EFS는 사용한 만큼만 비용이 청구된다. (EBS는 정해진 사용량에 따라 비용이 청구됨)
  • EFS는 다수의 인스턴스에 걸쳐 연결해야 하는 네트워크 파일 시스템에 적합하다. (EBS는 네트워크 볼륨을 한 번에 하나의 인스턴스에 연결할 수 있고 특정 AZ 내로 한정 되어 있다.)
profile
더 좋은 개발자가 되기위한 과정

0개의 댓글