EC2 Instance Storage

정연희·2024년 5월 7일
0

AWS

목록 보기
8/18

EBS(Elastic Block Store) Volume

EBS volume은 네트워크를 통해 접근할 수 있는 드라이브로, instance에 부착하고 뗄 수 있다. Instance의 저장공간으로 작용하면서도 instance들이 terminate되더라도 데이터를 유지할 수 있도록 한다. 마치 네트워크의 USB같이 생각하면 된다.

특징

  • EBS 한 개는 주로 한 instance에 부착되어있지만, 특정 EBS volume에 한해서는 여러 개의 instance에 부착할 수 있는 'multi-attatch' 기능을 제공한다.
  • 한 availability zone에 제한적이다
    • us-east-1a에 있는 EBS volume을 us-east-1b에 있는 인스턴스에 부착할 수 없다.
    • 만약 다른 AZ로 옮기고 싶다면, snapshot을 찍어야 한다.
  • 하드웨어 드라이브가 아니고 네트워크를 통해 접근/소통해야 하기 때문에 latency가 발생할 수 있다.
  • 미리 설정을 정의해야 한다
    • 드라이브이기 때문에 미리 얼만큼의 GB를 쓸지, 그리고 IOPS(I/O operations per second)는 어느정도로 할지를 정의해야 한다.
    • 사용자가 정의한 설정대로 비용이 청구된다
  • 한 인스턴스에 여러 개의 EBS volume이 부착될 수 있다
  • IO
    • gp2: IO increases if the disk size increases
    • gp3 & io1: can increase IO independently

EBS Multi-Attatch: io1/io2 family

Multi-attach 기능은 같은 EBS volume을 같은 AZ에 있는 여러 인스턴스에 부착할 수 있는 기능을 의미한다. 각 인스턴스는 높은 성능의 volume에 full read&write 권한을 가진다. 즉, 모든 인스턴스들이 동시에 Read & write할 수 있다는 것이다.

Use-case

  • achieve higher application availability in clustered linux applications (ex. Teradata)
  • when applications must manage concurrent write operations

한계

  • 한 EBS volume은 최대 16개의 인스턴스에만 동시 부착될 수 있따
  • 다른 AZ에 있는 인스턴스에 부착할 수 없다
  • cluster-aware하지 않은 파일 시스템 사용해야 한다.

Delete on termination attribute

인스턴스가 삭제될 때 EBS를 삭제할지 유지할지에 대한 설정이다. 디폴트는

  • 루트 EBS volume는 삭제 (attribute enabled)
  • 부착된 다른 EBS volume들은 유지 (attribute disabled)

이는 AWS consle/AWS CLI를 통해 설정할 수 있다.

EBS Snapshots

이는 EBS volume의 백업같은 것으로, 특정 시점의 EBS volume을 사진찍은 것처럼 백업본을 EBS snapshot이라고 부른다. Snapshot을 만들 때 EBS volume을 뗀 이후에 하는 것이 권장되며, AZ와 지역에 상관없이 snapshot을 복사할 수 있다.

기능

  • EBS Snapshot Archive

    • snapshot을 'archive tier'로 옮길 수 있는데, 이렇게 하면 비용을 75% 절감할 수 있다
    • 다만 아카이브에서 snapshot을 복구하는데 24 ~ 72 시간 걸린다.
  • Recycle Bin for EBS snapshots

    • snapshot을 실수로 삭제했을 시 삭제본을 어느 기간 동안 보관하는 규칙들을 설정할 수 있다
    • 유지 기간은 하루에서 1년까지 설정할 수 있다
  • Fast Snapshot Restore (FSR)

    • snapshot을 지체 없이 바로 initialize하고자 할 때 쓸 수 있는 기능이다
    • 비싸다는 단점

EBS volume을 다른 AZ로 옮기고자 할 경우

  1. Take snapshot
  2. restore snapshot to another AZ

EBS Encryption

EBS volume이 암호화되어있으면

  • volume 내에 있는 데이터가 암호화되어있음
  • 인스턴스와 volume 사이에 오고가는 데이터 또한 암호화되어있다
  • 모든 snapshot은 암호화되어있다
    암호화 및 비암호화는 AWS가 알아서 해주며(transparent), 암호화는 latency에 유의미한 변화를 주지 않기 때문에 하는 것이 좋다. 이떄, EBS encryption은 KMS(AES-256) 키를 사용한다. 한편, unencrypted EBS volume에 대해 snapshot은 항상 unencrypted이지만, 아래 방법을 통해 암호화할 수 있다.

Encrypt an unencrypted EBS volume 방법

  1. create EBS snapshot of volume
  2. encrypt EBS snapshot (using copy)
  3. create new EBS volume from the snapshot (the volume will also be encrypted)
  4. attach the encrypted volume to the original instance

AMI (Amazon Machine Image)

AMI는 가상 머신 이미지를 나타낸다. 이 이미지는 EC2 인스턴스를 시작하는 데 사용되며, 운영 체제, 소프트웨어, 설정 및 데이터를 포함한 완전한 환경을 정의한다. AMI를 사용하면 필요한 애플리케이션을 미리 설치하고 구성한 다음 해당 이미지를 사용하여 여러 인스턴스를 시작할 수 있다. 이는 애플리케이션 배포, 확장 및 복원을 단순화하고, 일관된 환경을 유지하는 데 도움이 된다.

  • AMI는 특정 지역에서 만들어지고, 여러 지역에 복사할 수 있다
  • AMI는 다양한 형태로 제공된다
    • public AMI: AWS가 제공하여 공개적으로 사용 가능한 이미지
    • your own AMI: 사용자가 만든 사용자 정의 이미지
    • AWS marketplace AMI: 다른 사람에 의해 만들어진 이미지

만드는 과정

  1. start EC2 instance and customize it
  2. stop instance (for data integrity)
  3. buid AMI - this will also create EBS snapshots
  4. launch instances from other AMIs

EFS (Elastic File System)

EFS는 인스턴스에 부착할 수 있는 NFS(Network File System)이다.

NFS(Network File System)
네트워크 파일 시스템(Network File System, NFS)은 컴퓨터 네트워크를 통해 파일 및 디렉터리를 공유하는 프로토콜 및 시스템이다. NFS를 사용하면 여러 컴퓨터가 동일한 파일 시스템을 공유하고, 파일에 액세스하고, 수정할 수 있다.

이는 여러 AZ에 있는 여러 인스턴스에 부착될 수 있으며 다음과 같은 특징이 있다.

특징

  • highly available
  • highly scalable
    • 용량이 더 필요하면, 자동적으로 scaling 해준다
  • very expensive (pay per use)
    • 미리 capcity 설정을 할 필요가 없지만, 매우 비쌈
  • security group으로 EFS 접근을 관리함
  • compatible with Linux based AMI (not windows)
  • encryption at rest using KMS
  • POSIX file system that has a standard file API (Linux instance에만 적용 가능)

Performance

  • EFS scale
    • 1000s of concurrent NFS clients, 10GB+/s throughput
    • grow to Petabyte-scale network file system, automatically
  • Performance mode (set at EFS creation time)
    • general purpose (default): latency-sensitive use cases (web server, CMS, etc...)
    • MAX I/O: higher latency, throughput, highly parallel(big data, media processing)
  • Throughput mode
    • Bursting
      • 1TB = 50MiB/s + burst of up to 100MiB/s
    • Provisioned
      • set your throughput regardless of storage size (ex. 1GiB/s for 1TB storage)
    • Elastic
      • automatically scales throughput up or down based on your workloads
      • up to 3GiB/s for reads and 1GiB/s for writes
      • used for unpredictable workloads

Storage Classes

  • storage tiers
    • EFS에서 설정할 수 있는 기능으로, lifecycle management feature이다. 즉 며칠동안 사용되지 않은 파일은 다른 티어로 옮기는 기능이다.
    • standard tier: for frequently accessed files
    • infrequent access tier (EFS-IA): cost to retrieve files, lower price to store. enable EFS-IA witha Lifecycle Policy
  • Availability and durability
    • standard
      • EFS가 높은 availability를 원한다면, EFS를 multi-AZ하는 것이 좋다. 한 AZ가 작동안해도, EFS는 작동될 수 있기 때문.
      • standard storage는 이런 Multi-AZ를 지원한다
      • great for production
    • One Zone
      • 만약 한 AZ에서만 EFS를 사용하고 있다면 One Zone-IA를 사용하면 좋다
      • great for development
      • backdup enabled by default
      • compatible with IA(EFS One Zone-IA)
        • infrequent access tier를 함께 사용하는 경우
        • 비용을 대폭 절감할 수 있다.

EBS vs EFS vs Instance store

EBS

  • 한 EBS는 한 인스턴스에만 부착될 수 있음(multi-attach to io1/io2 제외하고)
  • multi-attach: 한 EBS volume은 최대 16개의 인스턴스에만 동시 부착될 수 있다
  • 다른 AZ에 있는 인스턴스에 부착할 수 없다

EFS

  • 한 EFS는 수백 개의 인스턴스에 부착될 수 있다
  • 다른 AZ에 있는 인스턴스에 부착할 수 있다
  • 매우 비쌈

Instance Store

  • EC2에 물리적으로 부착된 저장공간
  • 데이터 유지 방법이 없음: EC2가 삭제되면 instance store 데이터도 모두 삭제됨

0개의 댓글