Cloud/AWS

EC2 Instance Storage

Debin 2023. 6. 23.
반응형

EBS Volume

EBS란 Elastic Block Store의 줄임말이다.

EBS Volume는 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브다.

 

EBS Volume를 사용하면 인스턴스가 종료된 후에도 데이터를 지속할 수 있다. 이것이 바로 ebs 볼륨을 쓰는 목적이다.

EC2를 재생성해 EBS Volume을 마운트하면 기존의 EC2 데이터를 사용할 수 있다.

 

CCP 레벨의 EBS Volume은 한번에 하나의 인스턴스에만 마운트할 수 있다. 

CCP 레벨은 하나의 EBS는 하나의 EBS에만 마운트 가능하고,

Associate 레벨은 일부 EBS 다중 연결이 가능하다. 그러나 인스턴스 1개에 2개의 EBS 볼륨이 연결되는 건 문제가 없다.

EBS Volume을 생성할 때는 특정 가용 영역에서만 가능하다.

us-east-1a에서 생성되는 경우 us-east-1b에는 연결이 불가능하다.

 

EBS 볼륨은 네트워크 USB 스틱이다. EBS 볼륨은 네트워크 드라이브이며, 물리적 드라이브가 아니다.

실제 물리적 연결은 없고 네트워크를 통해 연결된다.

 

다음으로는 간단한 특징에 대해 알아보겠다.

 

  • 프리티어는 30GB의 EBS 스토리지를 범용 SSD 또는 마그네틱 유형으로 제공한다.
  • 인스턴스와 EBS 볼륨이 서로 통신을 하기 위해서는 네트워크가 필요하다.
  • EBS는 인스턴스에서 분리가 가능하고 매우 빠르게 다른 인스턴스에 연결도 가능하다.
  • 스냅샷을 이용하면 다른 가용 영역에서도 사용할 수 있다.
  • 볼륨이기 때문에 미리 용량을 정해야 한다. 예시로는 원하는 양의 GB 및 IOPS(단위 초당 전송 수)를 미리 지정해야 한다.
    그러면 해당 프로비전 용량에 따라 요금이 청구된다.
  • EBS를 생성하고 인스턴스에 연결 안해도 된다.
  • EC2 인스턴스를 사용해 EBS를 생성하면 종료 시 삭제(Delete on Termination)라는 옵션이 있다.
  • 이 옵션을 사용해 ebs 제어가 가능하다. 기본 루트 EBS 볼륨은 인스턴스가 종료되면 삭제된다.
  • EC2 인스턴스가 삭제되도 루트 볼륨을 유지하고자 하는 경우에는 종료 시 삭제 속성을 비활성화 하면 된다.

EBS SnapShot

EBS 스냅샷은 EBS 볼륨의 특정 시점에 대한 백업이다.

EC2 인스턴스에서 EBS 볼륨을 분리할 필요는 없지만 권장사항이다.

 

EBS 스냅샷은 다른 AZ나 리전에서 공유할 수 있다.

 

EBS 스냅샷 아카이브

EBS 스냅샷 아카이브는 최대 75%까지 저렴한 아카이브 티어로 스냅샷을 옮길 수 있는 기능이다.

스냅샷을 아카이브 티어로 옮기면 아카이브를 복원하는데 24시간에서 최대 72시간이 걸린다.

EBS 스냅샷 휴지통

EBS 스냅샷 휴지통 EBS 스냡샷을 삭제하는 경우 영구 삭제 대신 휴지통에 넣을 수 있다.

실제로 삭제하는 경우에 휴지통에서 복원 가능하다. 휴지통에서 보관되는 기능은 1일에서 1년사이 설정 가능

빠른 스냅샷 복원

FSR(Fast SnapShot Restore)은 빠른 스냅샷 복원 스냅샷을 완전 초기화해 첫 사용에서의 지연 시간을 없애는 기능이다.

스냅샷이 아주 크고 EBS 볼륨 또는 EC2 볼륨 또는 EC2 인스턴스를 빠르게 초기화해야할 때 사용한다.

그러나 비싸다.

 

재해 복구 전략에서 데이터 복구를 위해 스냅샷을 옮기는 것을 종종 사용한다.

생성한 스냅샷을 다시 볼륨으로 만들어서 EC2에 연결할 수 있다.

휴지통은 AMI와 EBS가 안 없어지게 도와준다.

AMI(아마존 머신 이미지)

EC2 인스턴스를 통해 만든 이미지를 통칭하는 것이 ami다.

ami로 aws를 구축할 수 있고, 우리가 원하는대로 변경도 가능하다

ami에다 원하는 소프트웨어 또는 설정 파일을 추가하거나 별도의 운영체제를 설치거나 모니터링 툴을 추가할 수 있다..

우리가 EC2 인스턴스에 설치하고자하는 모든 소프트웨어를 ami가 미리 패키징해 주므로

ami를 따로 구성하면, 부팅 및 설정에 드는 시간을 줄일 수 잇다

그러므로 ami를 직접 구성하는 것이 좋다.

 

ami를 특정 지역에 구축한 다음 다른 지역으로 복사해서 aws의 글로벌 인프라를 활용할 수 있다,

 

우리는 ec2 인스턴스를 여러 종류 ami에서 실행할 수 있다.

 

  • 현재 본인은 전체공개 ami를 사용하고 있다. 아마존에서 제공하는 것이다.
  • 아마존 리눅스 2 ami는 aws에서 인기있고, aws에서 자체적으로 제공하는 것이다.
  • 자체 ami도 구성 가능하다. 만들면 유지 관리도 해야한다.
  • 자동 관리 도구가 있어도 서버 사용자라면 직접 관리해야한다.
  • aws 마켓 플레이스에서 ami에서 ec2 인스턴스를 실행할 수 있다. 보통 이 ami(다른 사람이 만든 ami)는 구매한 것이다.
  • 이미지를 사 시간을 아끼고, 우리가 이를 판매할 수 있다.

ami는 ec2 인스턴스에 어떻게 처리될까?

 

  • 먼저 ec2 인스턴스를 원하는 대로 설정한다.
  • 그런 다음 인스턴스를 중지해 데이터 무결성을 확보한다.
  • 이 인스턴스를 바탕으로 ami를 구축한다. 이 과정에서 또한 ebs 스냅샷이 생성된다.
  • 그런 다음 ami에서 인스턴스를 실행할 수 있다.
  • 설정과 부팅 시간을 단축시켜주는 장점이 있다. 도커 이미지와 굉장히 비슷한 것 같다.

EC2 인스턴스 스토어

EBS 볼륨은 네트워크 드라이브다. 따라서 성능이 제한되는 부분이 있다.

우리가 높은 성능의 하드웨어 디스크를 원하면, EC2 인스턴스 스토어를 사용해야함.

I/O 성능 향상을 위해 활용하며 매우 향상된 디스크 성능을 원할 때 사용하는 것이 좋다.

특정 유형의 EC2 인스턴스는 EC2 인스턴스 스토어라고 불리며, 이는 해당하는 물리적 서버에 연결된 하드웨어 드라이브를 가리킨다.

 

주의할 점은 ec2 인스턴스, 즉 인스턴스 스토어를 중지 또는 종료하면 해당 스토리지 또한 손실된다.

이 같은 이유로 이를 임시 스토리지라고 부른다.

EC2 인스턴스 스토어는 장기적으로 데이터를 보관할만한 장소가 아니다.

 

버퍼나 캐시 스크래치 데이터 또는 임시 콘텐츠를 사용하려는 경우 좋다. 장기적인 스토리지로는 적합하지 않다.

장기 스토리지는 EBS가 좋다

 

EC2 인스턴스의 기본 서버에 장애가 발생할 시에는 해당 EC2 인스턴스가 연결된 하드웨어에도 장애가 발생하므로 데이터 손실에 대한 위험이 존재한다.

따라서 EC2 인스턴스 스토어를 사용할 때에는 우리의 필요에 따라 데이터를 백업해 두거나 복제해 둬야한다.

EC2 인스턴스에 성능이 아주 뛰어난 하드웨어가 연결된 것으로 보일 때 로컬 ec2 인스턴스 스토어를 떠올릴 수 있어야 한다.

EBS 볼륨 유형

EBS 볼륨 유형은 총 6개다.

gp2/gp3  범용 SSD

gp2와 gp3는 범용 SSD 볼륨으로 다양한 워크로드에 대해 가격과 성능의 절충안이다. 본인도 이걸 사용했었다.

gp2는 짧은 지연 시간을 자랑하며 효율적인 비용의 스토리지이다.

시스템 부팅 볼륨에서 가상 데스크톱 개발, 테스트 환경에서 사용할 수 있다.

크기는 1GB ~ 16TB이다.

 

gp2와 gp3에는 차이가 있다.

gp3에는 최신 세대의 볼륨으로 기본 성능으로 3,000 IOPS와 초당 125MB의 처리량을 제공한다

각각 IOPS는 최대 16,000. 처리량은 1,000MB/s 까지 증가시킬 수 있다.

볼륨과 IOPS가 연결되어 있지 않다.

 

gp2는 좀 더 오래되었다. 최대 3,000 IOPS다.

볼륨과 IOPS가 연결되어 있어서 IOPS가 증가할 때,

즉 볼륨의 GB 수를 늘릴 때에 세 배 더 증가한 16,000 IOPS가 된다는 의미다.

가령 5334GB라고 한다면 최대 용량인 16,000 IOPS를 초과하는 상황이 발생한다.

 

기억할 부분은 gp2/gp3가 비용 효과적인 스토리지이며,

gp3에서는 iops와 처리량을 독자적으로 설정할 수 있는 반면 gp2에서는 그 둘이 연결되어 있다.

io/io2 프로비저닝 iops

최고 성능을 자랑하는 SSD 볼륨으로 미션 크리티컬이자 지연 시간이 낮고 대용량의 워크로드에서 사용한다.

이는 IOPS 성능을 유지할 필요가 있는 주요 비즈니스 애플리케이션이나 16,000 IOPS 이상을 요하는 애플리케이션에 적합하다.

일반적으로 db 워크로드에 적합하다. 스토리지를 이용하는 경우에 적합하다는 뜻이다.

 

스토리지 성능과 일관성에 아주 민감한 경우에는 gp2/gp3를 io/io2로 변경하는 것이 해답이다.

io2 최신 세대로 변경하는 것이 제일 좋다.

크기는 4GB - 16TB이다.

 

Nitro Ec2 인스턴스에서는 최대 64,000 IOPS까지 가능하다.

Nitro가 아닌 경우에는 최대 32,000 IOPS까지 가능하다

또한 io1/io2를 이용하면 gp3 볼륨처럼 프로비저닝된 IOPS를 스토리지 크기와 독자적으로 증가시킬 수 있다

io2의 이용 장점은?

io1과 동일한 비용으로 내구성과 기가 당 iops의 수가 더 높다. io2가 더 합리적인 선택이다.

io2 블록 익스프레서

크기는 4GB - 64TB에 달하며 더 고성능 유형의 볼륨이다.

지연시간이 밀리초 미만이며,  IOPS대 GB 비율이 1000:1일 때 최대 256,000 IOPS를 자랑한다.

st1 볼륨

이는 저비용의 hdd 볼륨으로 잦은 접근과 처리량이 많은 워크로드에 쓰인다.

처리량 최적화 hdd, 빅데이터나 데이터 웨어하우징 로그처리에 적합하다.

최대 처리량은 초당 500MB 그리고 최대 IOPS는 500에 달한다.

sc1 볼륨

가장 비용이 적게드는 HDD 볼륨, 접근 빈도가 낮은 워크로드를 위한 볼륨이다.

아카이브용으로.최저 비용으로 데이터를 저장할 수 있다.

최대 처리량 초당 250MB, 최대 IOPS는 250이다.

 

sc1, st1의 공통점은 부팅 볼륨으로 사용이 불가하고, 최대 16TB까지 사용 가능하다.

중요 내용

  • EBS 볼륨은 크기, 처리량, IOPS(초당 I/O 작업 수)에 의해 결정된다,.
  • ec2 인스턴스는 gp2/gp3와 io1/io2만이 부팅 볼륨으로 사용될 수 있다.
  • 시험에서는 gp2와 iops 프로비저닝이 제일 중요하다고 한다.
  • 볼륨의 차이를 이해하는 것이 중요하다.
  • 문제 예시: 32000IOPS를 원하면 io1, io2 볼륨의 니트로 ec2 인스턴스를 선택.

EBS 다중 연결

다중 연결 기능은 하나의 EBS 볼륨을 같은 가용영역에 있는 여러 ec2 인스턴스에 연결할 수 있게 해준다.

여러 인스턴스가 있고 다중 연결 기능이 활성화된 io2 볼륨이 있을 때 이 볼륨을 여러개 ec2 인스턴스에 동시에 연결할 수 있다.

이는 ebs 볼륨중 io1과 io2 제품에서만 가능하다.

 

각 인스턴스는 고성능 볼륨에 대한 읽기 및 쓰기 권한을 전부 갖는다. 동시에 읽고 쓸 수 있다

사용 예시

  • 애플리케이션 가용성을 높이기 위해 Teradata 처럼 클러스터링된 리눅스 애플리케이션에서 사용하거나

애플리케이션이 동시 쓰기 작업을 관리해야할 때 사용한다.

참고로 다중 연결 기능은 당연히 해당 가용 영역 내에서만 사용가능하다.

한 az에서 다른 az로 ebs 볼륨을 연결할 수 없다.

다중 연결의 또 다른 제한은 한 번에 16개의 ec2 인스턴스만 같은 볼륨에 연결할 수 있다. (시험에 나온다. 16이란 숫자가 중요)

다중 연결을 시행하려면 반드시 클러스터 인식 파일 시스템을 사용해야 한다. xfs, ex4와 다름.

EBS 볼륨 암호화

ebs 볼륨을 생성하면 즉시 다음과 같은 일이 일어난다.

 

  1. 저장 데이터가 볼륨 내부에 암호화 된다.
  2. 인스턴스와 볼륨간의 전송 데이터 역시 암호화 된다.
  3. 스냅샷 뿐 만 아니라 스냅샷으로 생성한 볼륨 역시 암호화가 일어난다.
  4. 암호화가 동시 다발적으로 일어난다.
  5. 이때 암호화 및 복호화 메커니즘은 보이지 않게 처리되고 아무것도 하지 않아도 된다.
  6. 백그라운드에서 ec2와 ebs가 전부 처리한다.

 

암호화를 진행하면 지연시간에 영향이 없고 kms에서 암호화 키를 생성해 aes-256 암호화 표준을 갖는다.

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

  • 우선 볼륨의 EBS 스냅샷을 생성하고 
  • 복사 기능을 통해 EBS 스냅샷을 암호화한다.
  • 스냅샷을 이용해 새 EBS 볼륨을 만들면 해당 볼륨도 암호화가 된다.
  • 암호화된 볼륨을 인스턴스에 연결한다.

암호화되지 않은 EBS 볼륨에서 생성한 스냅샷은 암호화 되지 않는다

스냅샷을 복사할 때 동일한 대상 리전에 암호화를 활성화하면 스냅샷이 암호화된다. 이 때 kms 키도 선택해야 한다.

Amazon EFS (Elastic File System)

관리형 NFS, 네트워크 파일 시스템이다.

네트워크 파일 시스템이므로 여러 ec2 인스턴스에 마운트 될 수 있고 해당 ec2 인스턴스들은 여러 가용 영역에 있을 수 있다.

가용성이 높고 확장성도 높다. 가격도 비싸다. gp2 ebs 볼륨의 3배다.

사용량만큼 지불하므로 미리 용량을 프로비저닝하지 않아도 된다.

사용 예시로는 콘텐츠 관리, 웹 서버,데이터 공유, 워드프레스가 있다

 

내부적으로는 NFS 프로토콜을 사용하고 EFS에 대한 액세스를 제어하려면 보안 그룹을 설정해야 한다.

윈도우가 아닌 linux 기반 ami와 호환된다.

kms를 사용해 efs 드라이브에 저장 데이터 암호화를 활성화할 수 있다.

리눅스 표준 파일 시스템이다. posix 시스템을 사용하고 표준 파일 api를 가진다.

efs는 미리 용량을 계획하지 않아도 된다는 점이 좋다.

파일 시스템이 자동으로 확장되고 사용량에 따라 요금을 지불한다.

efs요금은 사용한 gb당 데이터 비용을 지불한다.

EFS 성능

수천개의 nfs 클라이언트에서 efs에 동시 액세스할 수 있게 확장되고 처리량은 초당 10GB다.

용량은 미리 프로비저닝하지 않아도 네트워크 파일 시스템이 PB 규모로 자동 확장된다.

efs를 생성할 때 다양한 성능 모드를 설정이 가능하다.

다양한 성능 모드

  • 범용 모드: 기본 설정으로 지연시간에 민감한 웹서버, cms와 같은 사용 사례에서 사용한다.
  • 최대 io: I/O 를 최대화하고 싶다면 최대 I/O를 사용해야한다.
    지연 시간 처리량 병렬 처리 성능이 향상된다 파일 시스템이나 빅데이터 미디어 처리 작업이 있을 때 유용하다.

처리량 모드

  • 버스팅 모드가 기본 값이다.
  • 1TB 파일 시스템의 데이터 전송 속도는 초당 약 50mb이며, 초당 100mb까지 버스트할 수 있다.
  • 프로비저닝모드 설정도 가능하다.
  • 버스팅 모드에서는 사용 공간이 많을 수록 버스팅 용량과 처리량이 늘어나는데 프로비저닝 모드에서는 스토리지 크기에 상관없이 처리량을 설정할 수 있다.
  • 작은 파일 시스템에 유용하다. 그러나 초반에 큰 처리량이 필요하다

스토리지 클래스

스토리지 계층 설정이 가능하다.

일정 기간 후에 파일을 다른 계층으로 옮기는 기능이다.

 

액세스가 빈번한 파일은 보통 standard 계층에 저장한다.

 

efs-ia 계층도 존재한다.

efs-ia(Infrequent access)를 사용하면 파일을 검색할 경우 검색에 대한 비용이 발생한다.

하지만 efs-ia에 파일을 저장하는 비용은 낮다

efs-ia를 활성화하려면 수명 주기 정책을 사용해야 한다.

efs standard에 수명 주기 정책에 따라 그 기간 이상 파일이 존재하면 파일은 다른 계층인 EFS-IA로 옮겨진다.

이러면 비용이 낮아지는 장점이 있다.

 

가용성과 내구성 측면에서는 두 가지 측면이 있다

standard 옵션은 efs를 다중 az에 설정한다. 프로덕션에 적합하다.

한 가용 영역이 중단되더라도 efs에 영향을 주지 않는다.

 

one zone efs 파일 시스템으로 개발하는 것도 가능하다. 개발할 때 좋은 옵션이다.

하나의 az이므로 기본적으로 백업이 활성화된다.

efs-ia 스토리지 계층과 호환이 되는데 이를 efs one zone ia라고 한다. 요금할인 측면에서 유리하다. 최대 90% 할인.

 

시험 문제는 언제 EFS를 사용할지 유효성 검사와 요구 사항 준수를 위해 nfs 파일 시스템에 설정해야 할 옵션을 물어볼 수 있다

EBS VS EFS

EBS 볼륨은 한 번에 하나의 인스턴스에만 연결이 가능하고 특정 가용영역에 한정된다.

gp2에서는 디스크 크기가 늘어나면 io도 증가한다. 중요한 내용이다.

io1은 io를 볼륨 크기와 관계 없이 독립적으로 증가시킬 수 있다. 중요 db에 좋다.

EBS 스냅샷, 백업을 만들때는 EBS 볼륨 내의 io를 모두 사용하니 인스턴스가 ebs를 사용안할 때 진행해야 한다.

안그러면 성능에 문제가 생긴다. 인스턴스가 종료되면 루트 EBS 볼륨도 기본적으로 종료되며, 해당 기능을 비활성화할 수 있다.

 

efs는 일래스틱 파일 시스템으로 여러 개의가용영역에 걸칠 수 있다. 많은 인스턴스와도 연결이 가능하다.

다중 az이므로 az외부에 존재한다.

efs mount target을 사용해 특정 az에서 ec2 인스턴스들과 efs 드라이브를 연결해줄수도 있다. 

참고로 리눅스에서만 구동한다.

ebs보다 3배 비싸며, 비용을 절약하고 싶으면 스토리지 티어로 efs-ia를 사용 제품 수명 정책을 사용하면 비용을 절감할 수 있다.

 

efs는 사용한만큼 비용 청구한다.

ebs는 실제 사용한 양이 아닌 ebs 드라이브의 크기에 따라 실제 사용량이 아니라 정해진 사용량을 지불한다.

EBS vs EFS vs EC2 instance store

efs는 다수의 인스턴스에 걸친다. 다수에 연결하는 네트워크 파일시스템에 적합하다.

ebs는 네트워크 볼륨으로 한번에 하나의 인스턴스에 연결 가능하다. 스냅샷을 사용해 다른 가용영역으로 옮길 수 있다.

인스턴스 스토어는 ec2 인스턴스에 io를 최대로 하게 끔 해주지만 인스턴스가 망가지면 같이 망가진다. 임시 드라이브로 적합하다.

참고자료

https://www.udemy.com/course/best-aws-certified-cloud/

반응형

댓글