프로그래밍/AWS Solutions Architect

AWS SAA - EC2 Instance Storage

병인 2022. 5. 12. 14:55

EBS Volume

  • EBS (Elastic Block Store) Volume은 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브
  • EBS 볼륨을 사용하면 인스턴스가 종료(termination)된 후에도 데이터를 지속할 수 있다.
    • 인스턴스를 재 생성하고 이전 EBS 볼륨을 마운트하면 데이터를 다시 받을 수 있다.
  • CCP 레벨의 EBS 볼륨은 한 번에 하나의 인스턴스에만 마운트할 수 있다.
    • CCP 레벨 : 하나의 EBS는 하나의 EC2 인스턴스에만 마운트 가능
    • Associate 레벨 : 일부 EBS 다중 연결
  • EBS볼륨을 생성할 때는 특정 가용 영역에서만 가능하다.
    • 예를 들어 ap-northeast-2에서 생성하면 ap-northeast-4에는 연결이 불가능하다.
  • 네트워크 USB 스틱이라고 생각하면 된다.
  • 네트워크 드라이브이고 물리적 드라이브가 아니다.
    • 인스턴스와 EBS 볼륨이 서로 통신을 하기 위해서는 네트워크를 필요로 한다.
    • 컴퓨터가 다른 서버에 도달할 때 지연이 생긴다.
    • EC2 인스턴스에서 분리될 수 있고 매우 빠르게 다른 인스턴스로 연결될 수 있다.
      • 대체 작동 등의 경우에 굉장히 유용하다.
  • 스냅샷을 이용하면 다른 가용 영역으로도 볼륨을 옮길 수 있다.
  • 원하는 양의 GB 및 IOPS(초당 전송 수 단위)를 미리 지정해야 한다.
  • EC2 인스턴스를 통해 EBS 볼륨을 생성하는 경우 종료 시 삭제(Delete on Termination) 라고 하는 속성이 있다.

EBS Snapshots

  • 언제든 원하는 시점에 EBS 볼륨을 가지고 와서 백업이라고 불리기도 하는 스냅샷(Snapshot)을 생성할 수 있다.
    • 나중에 EBS 볼륨을 삭제하더라도 해당 시점에 대한 백업으로 복원할 수 있다.
  • 가용 영역(AZ) 혹은 리전(Region)에 걸친 스냅샷을 복사할 수 있기 때문이다.
    • AWS의 다른 리전에 데이터를 전송하여 글로벌 인프라를 활용한다

AMI

  • AMI(Amazon Machine Image)는 사용자 지정(customization) EC2 인스턴스이다.
    • 각자의 소프트웨어 구성에 대해 운영 체제를 정의 및 설정할 수 있다.
    • 모니터링 도구를 설정할 수 있다.
    • 자체적으로 AMI를 생성하면 부팅과 구성에 시간이 단축된다.
  • 특정 리전에 맞도록 구축함으로써 원하는 리전에 복사해 놓거나 AWS 글로벌 인프라를 활용할 수 있다.

AMI Process (from an EC2 instance)

  • EC2를 인스턴스를 시작하고 이를 사용자 지정으로 바꾸어 준다.
  • 인스턴스를 중지시켜 데이터 무결성을 확보한다.
  • AMI를 구축한다.
    • EBS 스냅샷이 생성된다.
  • 다른 AMI에서 인스턴스를 실행할 수 있다.

EC2 Instance Store

  • EC2 볼륨은 네트워크 드라이브라 성능 자체는 뛰어나지만 "제한된" 성능을 가지고 있다.
  • 만약 더 높은 성능의 하드웨어 디스크를 사용하려면 EC2 Instance Store를 사용하면 된다.
  • I/O 성능 향상을 위해 활용할 수 있다.
  • EC2 인스턴스, 즉 인스턴스 스토어를 중지 또는 종료하면 해당 스토리지 또한 손실된다.
    • 임시 스토리지라고도 한다.
    • 장기적으로 데이터를 보관할 만한 장소가 될 수 없다.
  • 사용하기 좋은 곳
    • 버퍼, 캐시, 스크래치 데이터, 임시 콘텐츠 등
  • 장기 스토리지는 EBS가 적합하다.
  • EC2 인스턴스의 기본 서버에 장애가 발생할 시에는 해당 EC2 인스턴스가 연결된 하드웨어에도 장애가 발생하므로 데이터 손실에 대한 위험이 존재한다.
    • 데이터를 백업 혹은 복제를 해둬야 한다.

EBS Volume Type

  • 종류
    • gp2 / gp3 (SSD) : 범용 SSD 볼륨으로 다양한 워크로드에 대해 가겨과 성능의 절충안이 되어 준다.
    • io1 / io2 (SSD) : 최고 성능을 자랑하는 SSD 볼륨으로 미션 크리티컬이자 지연 시간이 낮고 대용량의 워크로드에 쓰인다.
    • st1 (HDD) : 저비용의 HDD 볼륨으로 잦은 접근과 처리량이 많은 워크로드에 쓰인다.
    • sc1 (HDD) : 가장 비용이 적게 드는 HDD 볼륨으로 접근 빈도가 낮은 워크로드를 위해 설계됨
  • EBS 볼륨의 종류를 정하는 조건은 크기, 처리량, IOPS (초당 I/O 작업 수)이 있다.
  • EC2 인스턴스에는 gp2/gp3, io1/io2만이 부팅 볼륨으로 사용될 수 있다.
    • 루트 OS가 실행될 위치
  • 사용 예
    • 범용 스토리지(gp2)
      • 짧은 지연 시간을 자랑하며 효율적인 비용의 스토리지
      • 시스템 부팅 볼륨에서 가상 데스크톱, 개발, 테스트 환경에서 사용할 수 있다.
      • 크기는 1GB에서 16TB까지 다양하다.
      • gp3
        • 기본으로 3,000 IOPS와 125MB/s 처리량을 제공
        • IOPS는 최대 16,000, 처리량은 1000MB/s까지 증가시킬 수 있다.
      • gp2
        • 최대 IOPS가 3,000이다.
        • 볼륨과 IOPS가 연결되어 있다.
          • IOPS가 증가할 때면 즉, 볼륨의 GB 수를 늘릴 때에 세 배 더 증가하고 최대 16,000 IOPS 까지 증가할 수 있다.
          • 가령 5,334 GB라고 한다면 최대 용량인 16,000 IOPS를 초과하는 상황이 발생한다.
      • gp2/gp3가 비용 효과적인 스토리지이다.
      • gp3에서는 IOPS와 처리량을 독자적으로 설정할 수 있다.
      • gp2에서는 그 둘이 연결되어 있다.
    • Provisioned IOPS(PIOPS) SSD
      • IOPS 성능을 유지할 필요가 있는 주요 비즈니스 애플리케이션, 16,000 IOPS 이상을 요하는 애플리케이션에 적합하다.
      • 일반적으로 데이터베이스 워크로드에 적합하다.
        • 스토리지 성능과 일관성에 아주 민감하기 때문
      • io1/io2 (4GB ~ 16TB)
        • 최대 IOPS
          • Nitro EC2 인스턴스에서 64,000 IOPS 까지 가능
          • Nitro EC2 인스턴스가 아닌 경우 32,000 IOPS 까지 가능
        • 스토리지 크기와 상관 없이 PIOPS를 증가시킬 수 있다.
      • io2 Block Express (4GB ~ 64TB)
        • 지연 시간이 ms 미만
        • IOPS 대 GB 비율이 1000:1 일때 최대 256,000 IOPS를 자랑한다.
      • EBS 다중 연결 지원
    • Hard Disk Drives (HDD)
      • 부팅 볼륨일 수 없다.
      • 125MB ~ 16TB
      • 처리량 최적화 HDD (st1)
        • 빅 데이터, 데이터 웨어하우징, 로그 처리에 적합
        • 최대 처리량 : 500 MB/s
        • 최대 IOPS : 500
      • 콜드 HDD (sc1)
        • 아카이브 데이터용
        • 접근 빈도가 낮은 데이터에 적합
        • 최저 비용으로 데이터를 저장할 때 사용
        • 최대 처리량 : 250 MB/s
        • 최대 IOPS : 250

EBS Multi-Attach - io1 / io2 제품군

  • 동일한 EBS 볼륨을 동일한 가용 영역 내의 여러 EC2 인스턴스에 연결할 수 있다.
  • 한 번에 총 3개의 EC2 인스턴스에 연결할 수 있다.
  • 사용 예
    • 클러스터 된 Linux 애플리케이션에서 애플리케이션의 가용성을 높여야 하는 경우가 있을 때 (ex. Teradata)
    • 동일한 볼륨에서의 동시 쓰기 작업을 관리할 수 있어야 할 때
  • 이를 위해서는 반드시 클러스터 인식 파일 시스템을 사용해야 한다.
    • XFS, EX4 등은 사용할 수 없다.

EBS Encryption(암호화)

  • 암호화된 EBS 볼륨을 생성하면 생기는 것
    • 볼륨 내에서 암호화된 저장 데이터를 가져온다.
    • 인스턴스와 볼륨 간에 전송되는 모든 데이터는 암호화된다.
    • 모든 스냅샷이 암호화된다.
    • 스냅샷에서 생성된 모든 볼륨은 암호화된다.
  • 암/복호화 매커니즘이 투명하게 처리되므로 사용자가 할 일이 없다.
    • 모든 작업은 뒷단에서 EC2와 EBS에서 처리된다.
  • 암호화는 지연 시간에 미치는 영향도 거의 없다.
  • EBS 암호화는 KMS (AES-256) 방식으로 진행된다.
  • 암호화되지 않은 스냅샷을 복사할 때 암호화를 활성화한다.

암호화 되지 않은 EBS 볼륨을 암호화 하는 방법

  • 볼륨의 EBS 스냅샷을 생성한다.
  • 복사 함수로 EBS 스냅샷을 암호화한다.
  • 스냅샷에서 새 EBS 볼륨을 생성하면 해당 볼륨도 암호화되게 된다.
  • 암호화 된 볼륨을 원본 인스턴스에 연결할 수 있다.

EFS(Elastic File System)

  • 다양한 가용 영역에 걸쳐 다수의 EC2 인스턴스에 마운트 할 수 있는 관리형 NFS 혹은 네트워크 파일 시스템이다.
  • 다중 AZ에서 동작한다.
    • EBS : 단일 가용 영역에만 존재
    • EFS : 다중 가용 영역에 존재
  • 가용성이 높다, 확장성이 높다, 비용이 많이 든다(gp2에 비해 3배)
  • 사용한 만큼만 낸다.
    • 너무 많은 데이터를 저장하지 않는 경우 EBS보다 EFS가 저렴할 수 있다.
  • 사용 예
    • 콘텐츠 관리, 웹 서비스, 데이터 공유, Wordpress에서 사용
  • NFSv4.1 프로토콜이 사용된다.
  • 보안 그룹(security group)을 이용해서 EFS에 접근해야 한다.
  • Windows가 아닌 Linux 기반 AMI에서만 작동한다.
  • KMS 키를 사용하여 EFS 유휴 시 암호화를 설정할 수 있다.
  • POSIX 파일 시스템(Linux)에서만 사용 가능하며 표준 파일 API를 갖는다.
  • 파일 시스템은 자동으로 확장되며 쓰는 만큼 비용을 내는 방식으로 용량에 구애받지 않고 사용이 가능하다.

EFS 옵션

  • EFS Scale
    • 수천 명의 동시 클라이언트, 10GB/s의 처리량
    • 파일 시스템이 페타바이트(PB) 정도까지 자동으로 확장될 수 있다.
  • Performance mode(EFS가 생성될 때 설정 가능)
    • 범용 성능 모드(default)
      • 웹 서버 운영이나 지연 시간에 민감한 파일이 있는 경우 (ex. 웹서버, CMS 등)
    • Max I/O 성능 모드
      • 대규모 워크로드를 처리하는 경우
      • 지연 시간이 길다.
      • 처리량이 향상된다.
      • 병렬 처리 성능이 높다.
      • 빅 데이터나 미디어 처리에 뛰어난 성능을 보인다.
  • Throughput 모드
    • Bursting(버스팅) 처리량 모드
      • 1TB의 스토리지에 대해 초당 50MB를 저장할 수 있다.(초당 100MB까지 확장이 가능하다.)
    • Provisioned 모드
      • 스토리지 크기와 상관없이 처리량을 설정할 수 있다.(1TB 스토리지에 1GB/S 처리량 가능)
      • 파일 시스템 자체는 작으나 높은 처리량을 요구할 때 사용한다.
  • Storage Tiers
    • 파일에 대한 수명 주기 관리 기능
    • N일(기본 30일)이 지난 후 새로운 계층으로 파일을 이동시키는 기능
    • 표준
      • 접근 빈도가 높은 파일에 대해 표준으로 설정되어 있다.
    • 접근 빈도가 낮음(EFS-IA)
      • 저비용의 빈도가 낮은 접근에 대한 티어
      • 해당 파일을 가져올 때마다 관련된 비용이 발생한다.

EBS VS EFS

EBS

  • 한 번에 하나의 인스턴스에만 열결이 가능하다.
  • 특정 가용 영역에 한정된다.
  • gp2
    • 디스크 크기가 증가하면 I/O도 함께 증가한다.
  • io1
    • 디스크 크기와 관계 없이 I/O를 증가 시킬 수 있다.
    • 중요한 데이터베이스를 실행할 때 좋은 방법이다.
  • 다른 가용 영역으로 옮길 때
    • 스냅샷을 찍는다.
    • 다른 AZ에서 그 스냅샷을 복원시킨다.
    • EBS의 스냅샷이나 백업을 만들 때에는 EBS 볼륨 내의 I/O를 전부 사용하게 되니 인스턴스가 EBS를 사용 중이 아닐 때에만 실행해야 한다.
  • EC2 인스턴스가 종료되면 인스턴스 내의 루트 EBS 볼륨도 기본적으로 종료된다.(비활성화 가능)
  • EBS 볼륨 크기에 따라 비용이 청구된다.

EFS

  • 여러 개의 가용 영역에 걸쳐 무수히 많은 인스턴스들에 연결될 수 있다.
  • 웹 사이트 파일을 공유할 때 사용한다. (WordPress)
  • 오직 리눅스 인스턴스에서만 가능하다. (POSIX)
  • EFS는 EBS보다 훨씬 비싸다 (약 3배 정도)
  • EFS-IA
    • 제품 수명 정책을 사용하면 비용을 절약할 수 있다.
  • 사용한 만큼 비용이 청구된다.

EFS VS EBS VS Instance Store

  • EFS는 다수의 인스턴스에 걸쳐 연결해야 하는 네트워크 파일 시스템에 적합하다.
  • EBS는 네트워크 볼륨을 한 번에 하나의 인스턴스에 연결할 수 있고 특정 AZ 내로 한정된다.
  • Instance Store는 EC2 인스턴스에 I/O를 최대로 사용하게끔 해주지만, 인스턴스가 망가지면 함께 망가지는 임시 드라이브이다.