sol 개발 블로그 로고
Published on

AWS EC2 데이터 저장 방법

Authors
  • avatar
    Name
    Chan Sol OH
    Twitter

목차

EBS - 네트워크 연결

EBS Volume은 Elastic Block Store Volume의 약자. 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브. EBS를 사용하면 인스턴스를 종료하더라도 데이터를 지속할 수 있다.

하나의 EBS는 하나의 EC2 인스턴스에 마운트 가능하지만, 하나의 EC2에 여러개의 EBS를 마운트 할 수 있다. 또한 AZ에 종속된다. 예를 들어 us-east-1a에 생성된 경우 us-east-1b에서는 사용할 수 없다. 다만, 스냅샷을 사용하면 다른 가용영역에서도 사용할 수 있다. 정리하면 EBS는 네트워크로 연결되는 USB 스틱으로 이해할 수 있다! 네트워크 연결이란 특징 덕분에 EC2 인스턴스와 분리되고 빠르게 다른 EC2에 연결할 수 있지만, 약간의 레이턴시가 발생한다. 그리고 저장소이기 때문에 사전에 EBS Volume의 성능을 정해야한다.

EBS - EC2 종료시 삭제 기능

EC2 인스턴스를 생성할 때 콘솔에서 EBS Volume을 생성하면 종료시 삭제 옵션을 체크할 수 있다. 이를 통해 EC2의 변화가 있을 때 EBS 행동을 제어할 수 있다. 기본적으로 root EBS Volume은 삭제되도록 설정되어 있지만, 원할 경우 옵션을 비활성화 시킬 수 있다.

EBS 생성 방법

  1. EC2 페이지에서 볼륨 생성 페이지 진입
  2. 유형과 크기, 그리고 가용영역을 설정한다. 이때 가용영역은 EBS와 연결할 EC2와 같은 AZ에 있어야한다.
  3. 생성한 EBS를 볼륨 연결을 통해 원하는 인스턴스와 연결. EBS는 특정 가용영역(AZ)에 바인딩되어 있기에 EC2와 다른 AZ에서 생성하면 연결할 수 없다.

EBS 스냅샷?

  • EBS Volume의 백업 파일을 만들어 놓기에 추천된다.
  • 다른 AZ나 Region의 EBS에 복사하기 위해 사용될 수 있다.

언제 사용해?

  • EBS 스냅샷을 75% 더 싼 EBS Snapshot Archive에 옮겨서 저장할 수 있다. 단, 복원하는데 24시간에서 72시간 정도 걸린다.
  • EBS 스냅샷을 바로 삭제하는 대신 Recycle Bin에 저장할 수 있다. 실수로 삭제해도 1년 안에 복구할 수 있다.
  • 매우 빠르게 스냅샷을 복구하는 Fast Snapshot Restore (FSR)에 사용한다. 단, 비용이 많이 든다.

어떻게 사용하지?

  1. EBS 볼룸 페이지에서 스냅샷 생성
  2. EBS 탭에서 볼륨 대신 스냅샷으로 접속하면 아래와 같이 생성된다.
  3. 해당 페이지에서 스냅샷 복사를 통해 Region으로 복사할 수 있다.
    • 재해방지를 위해 다른 Region에 저장하기 위해 사용됨.
    • 복사한 스냅샷으로 볼륨을 생성할 수 있다. 이때 원하는 AZ를 설정할 수 있다.
  4. 휴지통 서비스 접속
    • 보존 규칙 생성
    • 리소스 유형과 보존 기간 설정

ESB Volume Types

EBS Volume은 6가지 종류가 있다.

  1. gp2, gp3 (SSD) : 일반적인 목적으로 사용되는 SSD Volume. 가성비가 좋아서 많이 사용된다.
  2. io1, io2 (SSD) : 미션 크리티컬이자 지연 시간이 낮고, 대용량의 워크로드에 쓰인다. - 성능 중심
  3. st1 (HDD) : 저비용의 하드디스크 낮은 처리량이 쓰인 작업이 적합
  4. sc1 (HDD) : 가장 저비용 하드디스크, 거이 접근하지 않는 작업이 있을 때 사용한다.

EBS Volume의 타입은 Size, 처리량 IOPS (I/O Per Sec)에 따라 달라진다. EC2의 부팅 Volume으로는 gp2,gp3와 IO1,IO2만 쓸 수 있다. (다른 건 너무 용량이 작다. ) (부팅 Volume이란 root OS가 저장된 Volume을 뜻함)

General Purpose SSD (gp 시리즈)

  • 적절한 가성비, 낮은 레이턴시
  • 시스템 부팅 Volume에서 가상 데스크톱, 개발 그리고 테스트 환경에서 사용할 수 있다.
  • gp3는 최신 버전이라 IOPS와 처리량을 독립적으로 설정할 수 있지만, gp2는 IOPS와 처리량을 따로 설정할 수 없다.

Proviosioned IOPS (PIOPS) SSD - 용량을 미리 지정한 SSD

PIOPS SSD Volume은 고성능 Amazon EBS storage Volume이다. for critical, IOPS-intensive, and throughput-intensive workloads. 타입으로는 io1, io2, io Block Express volumes가 있다.

32,000 이상의 IOPS를 수행하기 위해선 io1 or io2 Volume의 EC2 Nitro가 필요하다!!

  • 16,000IOPS 이상의 성능을 유지할 필요가 있는 비즈니스 애플리케이션
  • 데이터베이스 작업은 성능과 일관성이 중요하기 때문에 gp2,3 보다는 io1,io2 Volume을 사용하자. io 시리즈는 최대 16TiB까지 저장할 수 있고, 최대 64,000 IOPS까지 사용할 수 있다. 물론 저장 크기와 독립적으로 PIOPS를 증가시킬 수 있다. - io2는 io1과 동일한 비용으로 더 많은 IOPS per GiB를 가질 수 있다. (더 가성비 있다.)
  • io2 Block Express (4 ~ 64TiB) - 초고성능
    • 몇백 나노초의 지연시간
    • IOPS대 GiB 비가 1000대 1일 때, PIOPS는 최대 256,000 IOPS를 가질 수 있다.

Hard Disk Drives (HDD) s시리즈

  • 부팅 Volume이 될 수 없다
  • 125MiB ~ 16TiB까지 범위가 넓다.
  • 처리량이 낮기 때문에 Big Data 저장소나 Log Processing에 적합하다. 최대 IOPS가 500...
  • Cold HDD (sc1)은 데이터를 거이 접근하지 않는 아카이브 같은 저장소다. 최저 비용으로 데이터를 저장할 때 사용한다. 최대 처리량은 250MiB/s - 최대 IOPS 250 ...

EBS 다중 연결 기능 - io1,io2 family

이전에 EBS는 하나의 EC2에만 연결할 수 있다고 했지만, Multiple-Attachable io1/io2 Volume의 경우 여러 EC2에 동시에 연결할 수 있다. 대신에 EC2와 EBS가 동일한 AZ에 있어야하는 것은 변함없다. 그리고 한번에 16개의 EC2 인스턴스와 연결할 수 있다. !!

  • Multi-Attach io Volume에 연결된 인스턴스는 고성은 Volume에대한 전체 읽기 및 쓰기 권한을 가진다.
  • 동일한 데이터에 접근할 수 있는 여러 애플리케이션을 만들 수 있기 때문에 높은 애플리케이션 가용성을 얻을 수 있다, - 한 인스턴스가 죽어도 다른 인스턴스들이 동일한 데이터에 빠르게 접근할 수 있기 때문
  • 동시 쓰기 작업을 관리하는 경우에 적합하다.

EC2 Instance Store - 물리적 연결

일반적으로 EC2 성능은 충분하지만, 가끔 더 높은 성능이 필요할 때가 있고, 이를 위해선 더 좋은 하드웨어 디스크의 성능이 필요하다. 그래서 EC2 Instace Store를 사용한다. 기본적으로 EC2를 구동시키는 것은 하드웨어 서버이고 여기에는 물리적으로 연결된 하드디스크 드라이버 공간이 있다.

EC2 Instace Store라는 EC2 인스턴스는 이 서버에 물리적으로 연결된 하드웨어 드라이브를 가리킨다.

  • 310,000IOPS 같이 압도적으로 더 높은 I/O 성능
  • EC2 Instace Store를 종료하면, 해당 스토리지 또한 손실된다. 이처럼 EC2 Instance Store는 좋은 성능을 가지지만, 임시적으로 사용하고 장기적으로 데이터를 보관할만하지 않다.
  • 버퍼나 캐시, 또는 임시 컨텐츠를 저장할 때 사용. 장기적으로 사용하려면 EBS를 사용하는 것이 맞다.
  • EC2 인스턴스의 물리적 서버에 장애가 발생하면 EC2 Instace Store 자체의 물리적 장애가 발생할 수 있어서 데이터 손실에 대한 위험이 존재한다.
  • 그래서 꼭 백업이나 복제해둬야한다.

Elastic Fiile System (EFS)

CDN처럼 NFS (network file system)이 관리하고 많은 EC2에 마운트될 수 있다. 네트워크로 연결되기 때문에 EC2와 다른 AZ에 있어도 사용할 수 있고, 사용량에 따라 비용을 지불하기에 프로비저닝할 필요 없다. 대신 비싸다!! (gp2의 3배 가격) 여러 AZ에 있는 EC2와 연결하기 위한 SG 설정은 각 AZ마다 다르게 할 수 있다

aws efs 구조
  • 웹 서빙, 데이터 공유, 워드 프레스에 사용된다.

  • 내부적으론 NFSv4 프로토콜을 사용한다.

  • EFS를 위한 보안그룹을 설정해줘야한다. 그리고 리눅스 기반 AMI와 연동할 수 있다.

  • KMS를 이용해서 미사용 데이터를 EFS 드라이브에서 암호화를 활성화할 수 있다.

  • 리눅스 기반 파일 시스템인 POSIX라서 일반적인 파일 API를 지원한다.

  • 용량을 미리 계획할 필요가 없다!! 사용량에 따라 비용이 지불되고, 자동으로 확장된다.

  • EFS Scale

    • 수천개의 NFS 클라이언트와 10GiB/s 이상의 처리량이 가능하다.
    • 페타바이트 크기의 네트워크 파일 시스템으로 확장할 수 있다.

EFS Mode와 그 옵션

  • Performance Mode (EFS를 생성할 때 지정)
    • 범용 설정 : 웹서버, CMS 같이 지연시간에 민감한 경우 사용
    • Max I/O 설정 : 처리량을 최대화할 경우 사용. 지연시간이 더 길지만, 높은 처리량과 병렬성을 가진다. (빅데이터나 미디어 프로세싱에 적합)
  • Throughput Mode
    • Bursting - 1TB는 초단 50MiB/s (burst of up하면 + 100MiB/s, 파일 시스템 크기와 비례해서 증가)의 처리량을 가질 수 있다.
    • Provisioned - 저장소 크기와 상관없이 처리량을 설정할 수 있다.
    • Elastic - 작업량에 따라 처리량을 자동적으로 늘리거나 줄일 수 있다. 작업량을 예측할 수 없을 때 유용하다

EFS Storage Classes

  • Storage Tiers - 며칠 후 파일을 다른 계층으로 옮길 수 있는 기능
    • Standard : 자주 사용하는 파일이 있는 계층
    • Infrequent access (EFS-IA) : 이 계층에서 검색할 경우 검색 비용이 발생한다. 대신 더 낮은 비용이 발생한다. 또한 라이프 사이클을 생명주기 정책을 설정해야한다. 예를 들어 표준 계층에서 60일 동안 검색하지 않은 파일은 생명주기 정책에 따라 EFS-IA로 이동해서 비용을 절감할 수 있다.
  • Availability and durability
    • Standard : 다중 AZ 설정 가능. 프로덕션에 적합, 한 AZ가 에러나도 EFS 파일 시스템에는 영향이 크지 않기 때문에 프로덕션 애플리케이션의 가용성과 내구성을 높일 수 있따.
    • One Zone : 개발용으로 하나의 AZ를 사용하기에 백업은 기본적으로 사용하도록 설정된다. 그리고 EFS-IA와는 호환되지 않고, EFS One Zone-IA라는 것과 호환됨 (90% 더 싸다)

EBS vs EFS

  • EBS

    • 한 AZ에 있는 하나의 EC2에만 연결할 수 있다.
    • gp2는 디스크 사이즈가 커질 수록 IO 처리량이 증가한다.
    • io1은 IO처리량을 디스크 사이즈로부터 독립적으로 증가시킬 수 있다. 중요한 데이터베이스를 사용할 때 적합하다.
  • EBS를 다른 AZ로 이동시키는 방법

    • EBS 스냅샷 찍기, 이때 EBS 볼륨의 IO를 전부 사용하기 때문에 EC2가 EBS를 사용하지 않을 때 찍어야한다.
    • 다른 AZ로 스냅샷 이동, 재시작
  • root EBS는 기본적으로 EC2가 종료될 때 함께 제거되지만, 설정을 통해 비활성화 시킬 수 있다.

  • EFS

    • 수백개의 인스턴스가 여러 AZ에 걸쳐서 존재한다. 그렇기에 여러 AZ에 있는 여러 Linux EC2와 연결할 수 있다.
    • EFS는 웹 사이트 파일을 공유할 수 있다.
    • EBS 보다 3배 비싸지만, EFS-IA를 생명주기 설정을 통해 비용을 절감할 수 있다.
    • EBS는 드라이브의 크기에 따라 비용이 청구되지만, EFS는 사용량에 따라 청구된다.