AWS EBS

김명주·2025년 4월 2일

EBS Volume

EBS 볼륨은 Elastic Bolume Store의 약자로 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브다.
EBS 볼륨을 사용하면 인스턴스가 종료된 후에도 데이터를 지속할 수 있다. 이것이 EBS 볼륨을 쓰는 주 목적이다.
인스턴스를 재생성하고 이전 EBS 볼륨을 마운트하면 데이터를 다시 받을 수 있다.

즉 EBS 볼륨이란 "네트워크 USB 스틱" 처럼 한 컴퓨터에서 꺼내 다른 컴퓨터에 꽂는 장치 같은 거지만, 실제 물리적 연결은 없으며 네트워크를 통해 연결된다.
프리 티어에서는 매달 30GB의 EBS 스토리지를 범용 SSD 또는 마그네틱 유형으로 제공한다.

주의점

  • CCP 레벨에서는 하나의 EBS는 하나의 인스턴스에만 마운트 할 수 있다.
    • 하지만 하나의 인스턴스에는 서로 각기 다른 EBS 볼륨은 연결될 수 있다.
  • EBS 볼륨을 생성할 때는 특정 가용 영역에 귀속된다.
    • 예를들어 A라는 리전에 생성된 경우 B 리전에는 연결이 불가능
    • 단, 스냅샷을 이용하면 다른 가용 영역으로도 볼륨을 옮길 수 있다.
  • 물리적 드라이브가 아닌 네트워크 드라이브다.
    • 즉 인스턴스와 EBS 볼륨이 서로 통신하기 위해서는 네트워크를 필요로 하고, 네트워크를 사용하기 때문에 컴퓨터에 도달할 때 약간의 지연이 있을 수 있다.
  • EC2 인스턴스에서 분리될 수 있고 매우 빠르게 다른 인스턴스로 이동할 수 있다.
    • 이렇기에 작동 오류 발생 시, 대체 작동의 경우 유용함.
  • 볼륨이기 때문에 용량을 미리 결정해야 한다.
    • 해당 프로비전 용량에 따라 요금이 청구되고 더 좋은 성능이나 큰 사이즈가 필요하면 이후에 용량을 늘릴 수 있다.

종료 시 삭제 기능

우리가 EC2 인스턴스를 통해 EBS 볼륨을 생성하는 경우, 종료 시 삭제라는 속성이 있다.
이 옵션을 통해 EB2 인스턴스 종료 시 EBS 볼륨을 제어할 수 있다.

  • 기본적으로 루트 EBS 볼륨은 인스턴스 종료와 함께 삭제되도록 설정되있다. 다른 EBS 볼륨을 비활성 상태이기 때문에 삭제되지 않는다.
  • 이러한 활성화 여부는 AWS 콘솔이나 AWS CLI를 통해 제어 가능하다
  • 인스턴스가 종료될 때 루트 볼륨을 유지하고자 하는 경우, 비활성화 하면 된다.

EBS 스냅샷

EBS 스냅샷은 EBS 볼륨의 특정 시점에 대한 백업이다. EC2 인스턴스에서 EBS 볼륨을 분리할 필요는 없지만 권장 사항이다.
스냅샷은 다른 가용 영역이나 다른 리전에도 복사할 수 있다.
주요 기능으로는,

  • EBS 스냅샷 아카이브
    • 스냅샷을 아카이브 티어로 옮길 수 있는 최대 75% 저렴한 기능
    • 스냅샷을 아카이브 티어로 옮기면 아카이브를 복원하는데 24시간~72시간이 걸린다.
  • EBS 스냅샷 휴지통
    • EBS 스냅샷을 삭제하는 경우 영구 삭제하는 대신에 휴지통에 넣을 수 있고, 실수로 이를 삭제하는 경우 복원도 가능하다.
    • 휴지통에서 보관되는 기간은 1일~1년이다.
  • FSR(빠른 스냅샷 복원)
    • 스냅샷을 완전 초기화해 첫 사용에서의 지연 시간을 없애는 기능.
    • 스냅샷이 아주 크고 EBS 볼륨 또는 EC2 인스턴스를 빠르게 초기화할 때 유용하다.
    • 하지만 비용이 많이 든다.

AMI

  • AMI는 Amazon Machine Image의 약자로, EC2 인스턴스를 통해 만든 이미지를 통칭하는 단어다.
  • AMI로 AWS를 구축할 수도 있고 원하는 대로 변경할 수도 있다.
    • AMI에 소프트웨어, 운영체제, 모니터링 툴 등등 또한 추가할 수 있다.
    • EC2 인스턴스에 설치하고자 하는 모든 소프트웨어를 미리 패키징 하기 때문에 AMI를 구성하면 부팅 및 설정에 드는 시간을 줄일 수 있다.
  • AMI는 특정 리전에 구축해야 하고 이렇게 만들어진 이미지는 다른 리전으로 복사도 가능하여 AWS의 글로벌 인프라를 활용할 수 있다.
  • 여러 유형의 EC2 인스턴스 유형에서 사용 가능하다.
    • Public AMI -> 기본적으로 AWS에서 제공하는 이미지
    • 자체 생성한 AMI -> 우리가 직접 만들 수 있지만 직접 유지 및 관리를 해야한다.
    • AWS Marketplace AMI -> 누군가가 만든 AMI로 보통은 구매한 이미지

AMI 처리과정 (EC2 인스턴스에서)

  1. EC2 인스턴스를 원하는 대로 설정
  2. 인스턴스를 중지하여 데이터 무결성 확보
  3. 이 인스턴스를 바탕으로 AMI를 생성. 이 과정에서 EBS 스냅샷이 생성된다.
  4. 다른 AMI에서 인스턴스를 실행

EC2 인스턴스 스토어

EBS 볼륨은 네트워크 드라이브로, 성능 자체는 좋지만 상황에 따라 이보다 더 높은 성능이 필요할 때가 있고, 이를 위해선 EC2 인스턴스에 연결된 하드웨어 디스크 성능이 향상되어야 한다.
EC2 인스턴스는 가상 머신이지만 실제로는 하드웨어 서버에 연결되어 있다. 이러한 하드웨어 서버는 해당 서버에 물리적으로 연결된 디스크 공간을 가진다.
즉, 특정 유형의 EC2 인스턴스는 EC2 인스턴스 스토어라고 불리며 이는 해당하는 물리적 서버에 연결된 하드웨어 드라이브를 가리킨다.

EC2 인스턴스 스토어의 장점은 더 나은 Input/Output 성능이고 이 장점 때문에 버퍼, 캐쉬, 스크래치 데이터, 임시 콘텐츠 등을 보관할 좋은 장소로 활용된다.
하지만 EC2 인스턴스 스토어가 중지 또는 종료되면 해당 스토리지 또한 손실되는데 이 때문에 임시 스토리지라고 불린다. 임시 스토리지 이기 때문에 장기적으로 데이터를 보관하기엔 부적합하다.

  • 더 나은 Input/Output 성능
  • 버퍼, 캐쉬, 스크래치 데이터, 임시 콘텐츠 등을 보관할 좋은 장소로 활용
  • EC2 인스턴스 스토어가 중지 또는 종료되면 해당 스토리지 또한 손실
  • 임시 스토리지 이기 때문에 장기적으로 데이터를 보관하기엔 부적합
  • 사용할 때에는 데이터를 백업 또는 복제해 두는 것이 좋다.

EBS 볼륨 유형

EBS 볼륨은 크기, 처리량, 초당 입출력 작업 수(IOPS) 등으로 정의하게 된다.
단, EC2 인스턴스는 GP2,GP3,IO1,IO2 유형만 부팅 볼륨으로 사용할 수 있다.
1. GP2, GP3

  • 다양한 워크로드에 대해 가격과 성능의 균형을 맞추는 범용 SSD 볼륨
  • GP2는 비용 효율적인 스토리지로 낮은 대기 시간을 제공하며 시스템 부팅 볼륨, 가상 데스크톱, 개발 및 테스트 환경에 사용할 수 있다. 크기는 1GB에서 16TB까지다.
    • GP2는 구세대 볼륨으로, 작은 GP2 볼륨은 최대 3000 IOPS까지 제공하며 볼륨의 크기는 IOPS와 연관되어 있다. -> IOP와 처리량은 서로 연결되어 있다.
    • 즉 IOP를 늘릴려면 볼륨 용량을 더 크게 가져야 한다.
  • GP3는 최신 세대 볼륨으로 기본적으로 3000 IOPS와 초당 125mb의 처리량을 제공한다.
    • 최대 16000 IOPS, 처리량은 초당 최대 1000mb까지 독립적으로 증가시킬 수 있다. -> IOP와 처리량은 서로 연관되어 있지 않다.
  1. IO1, IO2 Block Express
  • 가장 높은 성능의 SSD 볼륨으로 낮은 지연시간이 필요하고 처리량이 많은 작업에 사용된다.
  • 지속적인 IOPS 성능이 필요한 중요한 비즈니스 애플리케이션이나 16000 IOPS 이상이 필요한 애플리케이션에 사용된다.
  • ex) 스토리지 성능과 일관성에 매우 민감한 데이터베이스 작업
  • IO1 유형은 4GB~16TB까지 지원하며 최대 IOP를 프로비저닝 할 수 있다.
    • 최대 IOP는 Nitro EC2의 경우 약 64000, 다른 인스턴스는 32000
    • 스토리지 크기와 별도로 프로비저닝된 IOPS를 늘릴 수 있다.
  • IO2 Block Express는 4GB~64TB 까지 지원한다.
    • 밀리초 정도의 대기시간이 존재하고 최대 256000의 IOP가 제공된다.
  • EBS 다중 연결 기능 지원
  1. ST1
  • 낮은 가격의 HDD 볼륨으로 자주 액세스되고 처리량이 많은 작업에 사용된다.
  • 125GB~16TB 용량 지원
  • 처리량에 최적화된 HDD다 -> 빅데이터, 데이터 웨어하우징, 로그 처리
  • 초당 최대 500mb의 처리량과 최대 500의 IOPS 제공
  1. SC1
  • 가장 저렴한 HDD 볼륨으로 액세스 빈도가 낮은 작업을 위해 설계되었다.
  • 125GB~16TB 용량 지원
  • 아카이브 데이터 용 -> 자주 액세스 되지 않는 데이터에 적합
  • 가장 낮은 비용이 필요할 때 적합
  • 초당 최대 250mb의 처리량과 최대 250의 IOPS 제공

EBS 다중 연결

다중 연결 기능은 하나의 EBS 볼륨을 같은 가용 영역에 있는 여러 EC2 인스턴스에 연결할 수 있게 하는 기능이다.
다중 연결 기능은 IO1, IO2 제품군만 사용할 수 있는 기능이다.
각 인스턴스는 고성능 볼륨에 대한 읽기 및 쓰기 권한을 전부 가진다. 이는 동시에 읽고 쓸 수 있다는 의미다.
사용 사례로는,

  • 애플리케이션 가용성을 높이기 위해 클러스터링된 리눅스 애플리케이션에 사용
  • 애플리케이션이 동시 쓰기 작업을 관리해야 할 때

다중 연결은 한번에 16개의 EC2 인스턴스에만 같은 볼륨에 연결할 수 있다.
그리고 반드시 클러스터 인식 파일 시스템을 사용해야 한다.

EBS 암호화

우리가 EBS 볼륨을 생성하면 다음과 같은 일이 발생한다.
1. 저장 데이터가 볼륨 내부에 암호화 되고
2. 인스턴스와 볼륨 간의 전송 데이터 역시 암호화된다.
3. 스냅샷 뿐만 아니라 스냅샷으로 생성한 볼륨 역시 모두 암호화된다.
4. 이러한 암호화가 동시다발적으로 일어난다.

이때의 암호화 및 복호화 메커니즘은 보이지 않게 처리되기 때문에 우리는 아무것도 하지 않아도 된다.
우리가 암호화를 사용해야 하는 이유는,

  • 지연 시간에는 영향이 거의 없음
  • KMS에서 암호화 키를 생성하기 때문에 AES-256 암호화 표준을 가진다. 이 키는 스냅샷을 복사해 암호화를 푼 걸 다시 암호화 활성화에 사용된다.

EBS 볼륨 암호화 및 암호화 풀기

  1. 볼륨의 EBS 스냅샷 생성
  2. 복사 기능을 통해 EBS 스냅샷 암호화
  3. 스냅샷을 이용해 새 EBS 볼륨을 생성하면 그 볼륨 또한 암호화된다.
  4. 암호화된 볼륨을 인스턴스 원본에 연결
profile
개발자를 향해 달리는 사람

0개의 댓글