[AWS Certified Solution Architect Associate Level 2025] 섹션 7: EC2 인스턴스 스토리지

EBS 볼륨

EBS(Elastic Block Store) Volume은 인스턴스가 실행 중이 동안 연결 가능한 네트워크 드라이브다. 이걸 이용해 인스턴스가 종료되어도 데이터를 계속 유지할 수 있다.
Cloud Practitioner 레벨에선 한 EBS가 한 인스턴스에만 붙을 수 있다고 한다.(Associate에서는 아님). 또한 특정 AZ에서만 사용 가능하다. -> 네트워크 USB 스틱이랑 비슷.
프리 티어에서는 30기가 준다. ENI처럼 네트워크기 때문에 attach/detach가 가능하다.

그림처럼 한 인스턴스에 여러개의 EBS가 붙을 수 있다. 또한

전에 나와있던 절전 모드처럼, 종료할 때 삭제할지 안할지를 정할 수 있다.
보통 인스턴스를 만들 때 생겼던 볼륨은 종료할 때 삭제되는 걸로 설정되어 있는데, 이는 인스턴스 만들 때 설정이 가능하다.

실습


Elastic Block Store - 볼륨 들어가면 다음과 같이 볼 수 있다. 여기서 볼륨 생성을 할 수 있다.

EBS 스냅샷

EBS 스냅샷은 EBS 볼륨의 특정 시점에 대한 백업이다. 필수는 아니지만 권장 사항이며, 이를 다른 AZ나 리전에도 복사할 수 있다.


EBS 스냅샷은 세가지 서비스가 있다

  • EBS Snapshot Archive: 스냅샷은 백업 개념이기 때문에 만들어놓고 안읽는 경우가 많다. 이에 대한 볼륨 보관 비용을 낮추기 위해 75% 저렴한 "Archive tier"를 만들어 그곳에 보관한다. 아카이브에서 스냅샷을 복원하는데는 24~72시간이 걸린다.

  • 휴지통: 스냅샷 잘못 지우는 걸 대비해서 휴지통 개념. 1일~1년으로 휴지통 삭제 기간을 지정할 수 있다.

  • Fast Snapshot Restore (FSR): 스냅샷을 완전 초기화해 첫 사용에서의 지연 기간을 없애는 기능. 스냅샷이 크거나, 인스턴스를 빨리 초기화해야할 때 사용한다. -> 근데 비쌈.

    AMI

    AMI(Amazon Machine Image)는 EC2를 통해 만든 이미지를 통칭한다. EC2의 커스텀이라고 생각하면 된다. 나만의 소프트웨어나 설정, OS, 모니터링 등을 설정하여 부팅 및 설정에 걸리는 시간을 줄일 수 있다. 우리는 이런 이미지를 세 군데에서 받을 수 있다
    .

  • 퍼블릭 AMI: Amazon Linux 2같은 AWS가 제공하는 이미지

  • 프라이빗 AMI: 직접 만들기. 대신 관리 및 유지보수를 직접 해야함

  • AWS 마켓플레이스 AMI: 다른 사람이 만든 이미지를 사용 (판매)

AMI를 만드는 과정은
1. EC2를 시작해서 커스텀한다.
2. AMI를 만든다 - 이 과정에서 EBS Snapshot 생성한다.
3. 만들어진 AMI로 다른 리전에서 실행한다.

실습

#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd

이라는 내용으로 인스턴스를 만들고, 오른쪽 클릭 -> 이미지 및 템플릿 -> 이미지 를 만들자.

그 후 인스턴스 시작-> 내 AMI로 한다면,

#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html

사용자 데이터에 이렇게만 넣어도 되고, 실행 속도가 빨라진다.
AMI에서 이미 httpd를 설치했기 때문이다.

EC2 Instance Store

EC2의 성능을 높이기 위해서 사용한다. 향상된 I/O 성능을 제공하지만, 정지된다면 저장된 데이터를 잃기때문에 장기적으로 데이터를 저장할만한 곳은 아니다. -> 버퍼, 캐시,임시 데이터 등을 보관하기 좋다. 데이터가 중요하면 백업 필요

EBS 볼륨 유형

EBS 볼륨 유형저장소 유형설명
gp2 / gp3SSD다양한 작업 부하에 대해 가격과 성능의 균형을 맞춘 범용 SSD 볼륨.
io1 / io2 Block ExpressSSD미션 크리티컬한 저지연 또는 고처리량 작업 부하를 위한 최고 성능의 SSD 볼륨.
st1HDD자주 액세스되는, 처리량 집중형 작업 부하를 위한 저비용 HDD 볼륨.
sc1HDD덜 자주 액세스되는 작업 부하를 위한 최저 비용 HDD 볼륨.
  • General Purpose SSD(GP2, GP3): 비용 효율적, 저지연
    시스템 부팅 볼륨, 가상 데스크톱, 개발 및 테스트 환경
    1기가 - 16테라 바이트까지 사용 가능

    - GP2 : 3000 IOP까지 증가 가능. 볼륨 사이즈와 IOP는 연결되어 있다. -> 최대 IOP는 16000
    Ex) 5334GB면 최대 IOP
    
    -GP3: 3000 IOP와 초당 125MB 처리량을 제공 -> 16000 / 1000 MB까지 증가 가능
    볼륨 사이즈와 IOP는 독립적이다. 
  • Provisioned IOPS(PIOPS) SSD
    지속적인 IOPS 성능이 필요한 중요한 비지니스 애플리케이션 /16000 IOPS 이상을 요구하는 경우
    - 데이터베이스 워크로드에 좋다 (성능과 일관성에 민감한 경우)

    • IO1: 4TB ~ 16TB까지 지원, Nitro EC2의 경우 64,000 / 나머지는 32,000
      스토리지 크기와 별도로 IOPS를 늘릴 수 있다.
    • IO2: 서브 밀리세컨드 지연도
      256,000 IOP까지 지원 (IOP:볼륨 = 1000:1)
      EBS 다중 연결 기능 지원

나머지는 다 안외워도 되지만,
데이터베이스가 필요한 경우 -> IO1/IO2
높은 처리량과 가장 낮은 비용이 필요 -> ST1/ SC1
32000 이상의 IOP가 필요하다면 EC2 Nitro와 io1/io2가 필요하다.

EC2 다중 연결

하나의 EBS 볼륨을 같은 AZ에 있는 최대 16개 이하 여러개의 EC2에 연결할 수 있다. (IO1/IO2만 가능)
각 인스턴스는 이 고성능 볼륨에 대한 읽기/쓰기 권한을 모두 가진다.
높은 어플리케이션 가용성이 필요하거나 어플리케이션이 동시에 쓰기 작업을 관리해야 할 떄 사용한다.
또한 반드시 클러스터 인식 파일 시스템을 사용해야 한다. (XFS,EC4..)

EBS 볼륨 암호화

EBS 볼륨을 암호화 한다면 다음과 같은 것들도 같이 암호화된다:
- 저장 데이터
- 인스턴스와 볼륨 사이의 전송 데이터
- 스냅샷 및 스냅샷으로 생성된 볼륨

보이지 않게 처리되기 때문에 아무것도 할 필요가 없다. 또한 지연시간이 거의 없기 때문에 사용하는 것이 좋다.
스냅샷을 봇가해서 암호화를 푼걸 다시 암호화 한다. -. 뭔소리?


이렇다네요 일단


암호화된 볼륨을 만드는 방법은 두 가지가 있는데, 처음은 암호화 되지 않은 볼륨에서 스냅샷을 만들고, 스냅샷 복사 -> 이 스냅샷 암호화 누른 다음 볼륨을 만들면 된다.

또는
볼륨 생성에서 aws/ebs로 암호화해서 간단히 만들 수 도 있다.

EFS (Elastic File System)

EFS는 관리형 NFS(Network File System)이다. 여러 EC2에 연결될 수 있다. 서로 다른 AZ에 있어도 된다!
가용성이 좋고, 확장성이 뛰어나고(자동으로 확장된다), 사용에 따라 돈을 내지만, GP2의 3배로 비싸다.

보안 그룹으로 감싸져 있으며, 다양한 EC2에 연결되어 있는 것을 볼 수 있다.

NFSv4 프로토콜을 사용하며, 보안 그룹이 있어야 한다.
리눅스에서만 작동한다.(윈도우 안됨)
기준 API가 있는 POSIX 파일 시스템을 사용한다.
여기서 잠깐. POSIX는 운영체제 간의 호환을 위한 시스템 표준이라고 생각하자.

EFS는 다양한 스토리지 및 클래스가 존재한다.

  • EFS 스케일
    - 동시 NFS 클라이언트 수천개와 10GB 이상의 처리량 확보 가능
    - PB 단위 네트워크 시스템으러 자동 확장
  • Performance Mode
    - General Purpose (기본값) - 지연 시간에 민감한 경우 (웹서버, cms..)
    • MAX I/O - 지연 시간은 더 길지만, 병렬성 및 처리량이 높다. (빅 데이터, 미디어 처리..)
  • 처리량 모드
    -Bursting - 1TB: 50MB+ 100MB까지 버스팅. 실제 사용 중인 스토리지 용량에 따라 처리량을 더 확장하고 싶은 경우.
    -Provisioning: 스토리지 크기에 관계없이 처리량을 설정하고 싶은 경우에 사용(1tb 스토리지에서 1GB 처리)
    -Elastic: 자동으로 처리량을 조절한다. 예측할 수 없는 IO가 발생할 워크롣의 경우 사용한다.
  • 스토리지 클래스

접근 빈도에 따라 나눈다. 수명 주기 정책 설정을 통해 오래 접속하지 않은 데이터들은 자동으로 클래스를 바꿀 수 있다.

실습

EFS - 파일 시스템 생성에서 다음과 같이 타입을 고를 수 있다.
단일 지역으로 하면 가격이 낮아지지만, 프로덕션에서는 당연히 리전을 고른다.


버스트 및 프로비저닝됨을 고르면 성능 모드에서 최대IO를 고를 수 있다.
현재 AWS의 권장 사항은 개선됨 - 범용 콤보다.

저렇게 해서 EFS를 만들고, 연결시킬 인스턴스를 만들어보자.

만들다 보면 밑에 파일 시스템 밑에 서브넷을 선택하라고 하니
위로 올려서 네트워크 설정을 편집해주자. 그러면


요렇게 돤다.

그 후 EFS - 네트워크에 들어가보면

한 AZ 안에 다양한 보안 그룹이 생성되게 된다.

이후 저 EFS를 연결한 인스턴스를 두개 만들면 파일 시스템이 공유된다.
삭제할 때는 보안 그룹은 직접 지우면 된다.

EFS vs EBS

  • EBS 볼륨
    - 하나의 인스턴스에만 연결 (io1/io2같은 다중 연결 제외)
    - 한 AZ에서만 사용 가능

    • gp2: 디스크 사이즈가 증가하면 IO 증가
    • gp3: 독립적으로 IO 증가 가능
    • EBS를 다른 볼륨으로 보내고 싶으면 스냅샷 이용. 다만 볼륨 백업은 IO를 사용하기 때문에 어플리케이션이 많은 트래픽을 처리하고 있으면 쓰면 안된다.
      -EC2가 종료되면 기본적으로 루트 EBS 볼륨도 종료되지만 이 동작은 비활성화 가능.
  • EFS 볼륨
    - 여러 AZ에서 다양한 인스턴스에 접속 가능

    • 리눅스에서만 사용 가능
    • EBS보다 비싸지만, 스토리지 계층을 이용해 비용 컨트롤 가능

    문제

업로드중..

조심해야 하는 것은, io1 / io2로는 최대 64,000 IOPS까지만 된다. 그거 이상이면 EC2 인스턴스 스토어 쓴다고 생각하자.

0개의 댓글