Public Cloud/AWS

AWS - EC2 인스턴스 스토리지(EBS, EFS)

서머스 2022. 5. 30. 18:03

 

EBS(Elastic Block Store)

- 인스턴스가 작동하는 동안 인스턴스에 부착할 수 있는 네트워크 드라이브이다.

- 인스턴스가 terminate 되더라도 데이터는 남아 있게 된다.

- 한 인스턴스당 한개만 마운트된다. (CCP level, *Associate Level - 일부 EBS는 다중 연결이 가능하다)

- 특정 AZ에 바운드된다.

- 마치 실제 usb같은 느낌

 

- EC2가 2006년에 나온 것에 비해, EBS는 더 늦게 나왔다.

- 원래는 EC2가 Instant Volume를 사용했다. 그러나 EBS가 생긴 이후론, EBS가 Persistent Volume을 사용하므로 EBS의 volume을 사용하게 되었다.

1. EBS는 네트워크 드라이브이다.(물리적인 장치 X)

 - 네트워크로 인스턴스에 활용되기 때문. 그래서 지연이 발생한다.

- 원래 인스턴스에서 detach 한 후 다른 인스턴스에 attach할 수 있다.

 

2. 특정 AZ에 제한된다.

- 볼륨을 옮기기 위해서는 스냅샷 해야한다.

 

3. 용량을 미리 결정해야 한다(provisioned capacity)

 

 

EBS - Delete On Termination 속성

- 'Delete On Termination' : 인스턴스를 종료할 시 동시에 EBS도 삭제할 건지에 대한 여부

- root EBS는 체크가 디폴트

- 다른 EBS는 체크X가 디폴트이다.

 

EBS Snapshots

- EBS 볼륨 백업할 때 사용한다.

- 다른 AZ나 리전으로 옮길 때 스냅샷을 카피해야 한다.

 

AMI

- Amazon Machine Image의 줄임말

- EC2 인스턴스를 커스터마이징 한 것 - 내 마음대로 소프트웨어나 환경설정, OS 등을 정할 수 있고 이를 pre-package화 할 수 있다.

- 특정 리전에 둘 수 있고 다른 리전으로 카피해 갈 수도 있다.

 

AMI 생성 과정

- 인스턴스를 커스터마이징 한 뒤, 데이터 무결성을 위해 인스턴스를 stop하고 AMI를 만든다

- EBS 스냅샷도 동시에 만들어진다.

- AMI로부터 새로운 인스턴스를 만든다.

 

snapshot -> 볼륨을 통해 만들어진다.

단독으로 있을 수 있다.

 

AMI(이미지) -> 스냅샷이 있어야만 링크되어 존재할 수 있음

이미지를 launch하거나 복사해서 다른 곳으로 전송할 수도 있다.

 

 

iterm에서 ec2-user(WEB01)에 접속한 뒤, aws.tar파일을 wget한다.

 

/var/www/html 아래에 타르 파일을 압축 해제 한다.

이후 퍼블릭 IP로 접속하면

 

이렇게 뜬다.

 

 

WEB01의 이미지를 생성한다.

[재부팅 안함]에서 [활성화] 에 체크한다.

 

이미지를 만들면 그와 동시에 스냅샷도 만들어진다.

 

이미지를 이용하여 스냅샷 만들기

아까 만들어진 이미지를 선택한 뒤, 오른쪽 마우스 클릭 - [AMI로 인스턴스 시작]을 클릭한다.

 

앞의 과정과 거의 동일하다.

 

방금 만든 인스턴스가 생성되었다.

 

 

MY-AMI-WEB01의 public ip에 접속해보면 WEB01에서 보았던 홈페이지가 동일하게 보인다.

 

탬플릿 생성

방금 복제한 인스턴스에서 오른쪽 마우스 클릭 - [인스턴스에서 템플릿 생성]을 클릭한다.

 

나머진 다 기본값으로 하고 [시작 템플릿 생성] 클릭

 

[EC2 대시보드] 탭에 들어가서 [인스턴스 시작]을 클릭해 보면 [탬플릿으로 인스턴스 시작]을 선택할 수 있다

이를 통해 보다 빠르게 인스턴스를 launching할 수 있다.

 

요렇게 시작할 수 있다.

퍼블릭 Ip로 들어가면 start bootstrap이 역시 뜬다.

 

EC2 Instance Store(인스턴스 스토어)

- 물리적으로 연결된 H/W 드라이브 -> EBS보다 성능이 더 좋다

- I/O Performance가 더 좋다.

- 임시 스토리지이기 때문에 장기적인 저장이 어렵다

- buffer/ cache/ scratch data/ temporary content에 좋다

 

*만약 가변 스토리지에 310,000 IOPS가 필요한 고성능 DB를 실행하고 있을 때 어떤 방법을 추진할 것인지?

- 인스턴스 스토어를 사용하여 실행 가능

- 데이터 손실이 발생할 수 있으므로, 인스턴스 스토어가 있는 다른 인스턴스에 복제하거나, 데이터를 백업한다.

 

 

EBS Volume의 종류

1. GP(General Purpose) SSD

- 경제적이고 지연시간이 적음

- 부트 볼륨으로 사용됨

- 1GB ~ 16TB

- gp3 : IOPS와 처리량을 독립적으로 증가시킬 수 있음

- gp2 : volume과 IOPS가 연결되어 있고, 용량이 증가함에 따라 IOPS는 3배 증가한다.

 

2. Provisioned IOPS (PIOPS) SSD

- IOPS 성능이 지속적인 중요한 비즈니스 애플리케이션에 사용된다.

- 16,000 IOPS이상이 필요한 어플리케이션에 활용된다.

- 스토리지 성능과 일관성에 민감한 데이터베이스 워크로드에 주로 사용된다. 

- io1 / io2 (4GB ~ 16TB) : 최대 32,000 PIOPS까지, Nitro의 경우 64,000 PIOPS 까지 가능, io2가 io1보다 내구성과 GB당 IOPS가 더 높음

- io2 Block Express (4GB ~ 64TB) : 지연속도가 매우 낮고, 최대 256,000 PIOPS까지 가능하다.

 

3. HDD (Hard Disk Drives)

- boot volume이 될 수 없다.

- 125GB ~ 16TB

- st1(Throughput Optimized HDD) : 빅데이터, Data Warehouse, Log Processing에 적합하다. 최대 500 IOPS

- sc1 (Cold HDD) : 저렴하다. 최대 240 IOPS

 

 

EBS Multi-Attach(EBS 다중 연결)

- 하나의 EBS 볼륨을 한 AZ 내의 여러 인스턴스에 연결하는 것

- 각각의 인스터스는 볼륨 전체 읽기, 쓰기 권한을 갖는다

- cluster된 리눅스 애플리케이션에 높은 availability를 갖는다.

- 애플리케이션은 반드시 동시 쓰기 작업을 관리해야 한다.

- 반드시 클러스터 인식 파일 시스템을 사용해야 한다.

 

 

EBS Encryption(암호화)

- 안 쓰는 데이터는 암호화된다.

- 모든 데이터는 전송될 때 암호화 된다

- 암호화는 지연 시간에 영향을 주지 않는다.

- 암호화 되지 않은 스냅샷을 복사할 때 암호화를 활성화 할 수 있다.

1GB의 EBS Volume을 만든다.

 

 

방금 만든 Volume에 오른쪽 마우스 - [Create Snapshot] 클릭

스냅샷을 unencrypted 상태로 만든다.

 

 

스냅샷 메뉴로 들어간 뒤, 만든 스냅샷 선택 - [Copy snapshot]

그리고 Encryption 에 체크한다.

 

그러면 암호화 된 스냅샷이 생성된다.

방금 만든 스냅샷을 체크해보면, KMS 키가 생긴 것을 확인할 수 있다.

 

 

 

이 스냅샷으로 volume을 생성하면

 

 

 

우 : 암호화되지 않은 스냅샷으로 Volume을 생성할 때, 직접 Encryption에 체크하고 진행하면 된다.

 

KMS 키로 암호화 된 것을 볼 수 있다.

 

 

 

 

EFS (Elastic Files System)

- 다양한 AZ에 걸쳐 다수의 EC2 인스턴스에 마운트 할 수 있는 관리형 NFS ( <-> EBS는 한 인스턴스에서만 사용된다)

- multi-AZ에서 작동한다. (<-> EBS는 멀티를 제외하곤 단일 AZ)

- HA, scalable, 비쌈, 사용한 만큼 지불함

- 콘텐츠 관리, 웹 서빙, 데이터 셰어링, 워드프레스에 사용된다

- NFSv4.1 프로토콜 사용

- 리눅스 기반의 AMI와 호환된다

- 사용되지 않을 땐 KMS를 이용해서 암호화된다.

- 필요한 만큼 알아서 용량이 조절된다.

- standard file API를 갖는 POSIX file system(리눅스에서만 사용 가능)이다.

 

EFS Scale

- 자동으로 용량이 조정된다.

 

Performance mode

- 범용(General Purpose) : 기본, 지연 시간에 민감한 경우에 사용된다.

- Max I/O : 대규모의 데이터 워크로드를 처리할 때. 지연시간과 처리량, 병렬성이 높음

 

Throughput mode

- Bursting

- Provisioned : 스토리지 사이즈와 관계 없이 처리량을 설정할 수 있다. 

 

EFS의 Storage 계층

- Storage Tiers : 파일에 대한 수명 주기 관리 기능

    - Standard : 자주 액세스되는 파일

    - EFS-IA(Infrequent access) : 저비용의, 접근빈도가 낮은 파일에 대한 티어. 파일을 불러올 때마다 돈이 든다.

* 관리형 - 데이터 보호, 자동 백업, 고가용성, 자동조정 등을 총괄적으로 관리해 준다.

 

[파일 시스템 생성]을 클릭한다.

One Zone이 리전보다 가용성은 떨어지지만 더 저렴하다.

 

[생성]을 누르면 빠르게 생성된다.

 

우측 상단의 [연결]을 클릭한다.

 

첫 번째 명령어를 클립보드에 복사한 뒤, 터미널에 붙여넣기 한다.

 

* NFS 클라이언트 사용 - 전통적인 nfs 프로토콜 방식으로 사용하겠다는 의미 

 

mkdir efs
sudo yum install -y amazon-efs-utils

efs디렉터리를 만든 뒤, amazon-efs-utils를 설치한다.

 

그리고 sudo mount ~... 명령어를 입력하면 time out이 된다. default 보안 그룹에서 포트 번호가 열려 있지 않기 때문이다.

=>  새로운 보안 그룹을 만들어서 efs의 포트 번호를 열어준다.

다시 ec2로 가서, [보안 그룹]탭에 들어간 뒤 새로운 보안 그룹을 생성하자

 

 

customize를 클릭한다(안하고 바로 Create 한 뒤, 따로 보안 그룹을 설정해도 된다.)

Customize를 클릭한다.

 

Lifecycle management : n일 동안 파일에 대한 접근이 없는 경우 해당 파일을 접근 빈도가 낮은 파일로 분류한다. -> EFS IA 스토리지 클래스로 옮겨 비용을 절약한다.

 

Performance mode

- General Purpose : 지연 시간에 민감한 웹 서비스 환경에 적합하다.

- Max I/O : 처리량이 많은 것, 지연 시간이 긴 작업인 빅 데이터 등에 적합하다.

 

Throughput mode

- Bursting : 파일 시스템의 크기에 따라 처리량이 확장됨

- Provisioned : EFS 파일 시스템 처리량이 정해져 있고, 처리량이 높을 때 

 

EC2 > Security Group 으로 가서

보안 그룹을 만든다.

 

이 보안 그룹을 각 AZ의 Mount target으로 추가한다.

 

 

그 다음 이 EFS에 접근할 인스턴스 두 개를 만들고, 가용영역은 각각 a, c

SG를 새로 만들고 이름을 ec2-to-efs로 지정한다.

 

터미널로 Test1, Test2 인스턴스에 접속한다.

 

sudo yum install -y amazon-efs-utils
mkdir efs

EFS 네트워크 파일 시스템에 대한 접근을 허용해 주기 위해, 아까 만든 EFS 선택 - [Attach] 클릭한다.

복사해서 각각의 터미널에 붙여넣기 한다.

 

하지만 timeout이 발생한다.

 

보안그룹에서 my-efs-demo가 ec2-to-efs로부터 오는 트래픽을 허용하도록 인바운드 규칙을 수정해야 한다.

 

다시 mount 명령어를 실행해 본 뒤, 확인해 보면 127.0.0.1 ~ efs 디렉터리가 성공적으로 마운트된 것을 확인할 수 있다.

확인해 보면 Test1 인스턴스에서 만든 txt파일이 Test2에서도 잘 보인다.

ip a를 해 보면 efs 디렉터리와 연결된  127.0.0.1이 나타나는 것을 볼 수 있다.

 

EBS vs EFS

EBS EFS
오직 하나의 인스턴스에만 붙일 수 있음 여러 AZ에 걸쳐 있는 여러 인스턴스들에 마운트 가능하다
AZ에 제한됨 AZ 외부에 있어서 여러 AZ에 걸쳐 마운트할 수 있음
저렴하며, 사용량에 관계 없이 EBS 드라이브 크기에 따라 지불한다 비싸며, 사용한 만큼 지불한다

 

 

구글 드라이브와 AWS EFS의 차이

구글드라이브

- 웹브라우저 없이 wget만으로 받을 수 없다.

- 즉, CLI에서 다운로드 불가능하다.

 

 

AWS EFS

- 객체이다. -> ~~.jpg 처럼 끝이 확장자로 끝남

- 배포 속도가 훨씬 빠르다.

- 대신 배포가 쉽다 보니 트래픽 과다 발생할 수도 있다.

 

 

'Public Cloud > AWS' 카테고리의 다른 글

AWS 실습하기 6  (0) 2022.06.13
AWS - RDS 개념, 실습  (0) 2022.05.31
AWS - EC2 Basic 2  (0) 2022.05.27
AWS - EC2 Basic  (0) 2022.05.27
AWS - IAM 및 AWS CLI  (0) 2022.05.25