AWS EBS, EFS 에 대해 공부하고 정리한 내용입니다.

  • Elastic Block Storage (EBS)
  • Volumes and Snapshots
  • EC2 hibernation
  • Elastic File System (EFS)

Elastic Block Storage (EBS)

EBS volume 이란?

Elastic Block Storage.
EC2 에 붙일 수 있는 storage volumne 이다.
Cloud 의 virtual hard disk 라고 생각하면 된다.

EBS 의 특징

  • Designed for mission-critical workloads.
  • Highly available: 특정 availability zone 내에서 자동으로 복제되어 hard failure 를 방지해준다.
  • Scalable: Capacity 와 volume type 을 자동으로 맞춰주면서 성능에는 영향을 주지 않는다.

EBS 의 종류 - SSD

-

1. gp2: General purpose SSD

  • 3 IOPS per GiB, up to max 16,000 IPOS per volumne.
  • gp2 volumes smaller than 1TB can burst up to 3,000 IOPS
  • 부팅 볼륨이나 latency 에 민감하지 않은 app 을 개발하고 테스트할 때 적절하다.

2. gp3: General purpose SSD

  • predictable 3,000 IOPS baseline performance and 125 MiB/s
  • 저렴한 비용에 고성능을 요구하는 app 에 적절하다. (MySQL, Cassandra, virtual desktops, and Hadoop analytics)
  • 16,000 IOPS & 1,000 MiB/s 까지 scale up 가능하다.
  • gp3 의 최고성능은 gp2 의 네 배 정도이다.

3. io1: provisioned IOPS SSD

  • Up to 64,000 IOPS per volume, 50 IOPS per GiB.
  • 16,000 IOPS 이상이 필요한 경우 사용.
  • 고성능이고, 가장 비싼 옵션이다.

4. io2: provisioned IOPS SSD

  • Latest generation.
  • Higher durability and more IOPS.
  • Up to 64,000 IOPS, 500 IOPS per GiB.
  • 99.999% durability
  • I/O intensive app 이나 large database 그리고 latency-sensitive workload 에 적절하다.
  • io2 가격은 io1 과 동일하다.

EBS 종류 - HDD

-

1. st1: Throughput optimized HDD

  • Low-cost HDD volume
  • baseline 40 MB/s per TB, up to 260 MB/s per TB.
  • Max throughput 500 MB/s per volume
  • 자주 접근하거나 througput-intensive workloads 에 적절하다.
  • Big data, data warehouse, ETL, log processing 등에 사용된다.
  • boot volume 으로 사용될 수 없다.

2. sc1: Cold HDD

  • Lowest cost option.
  • baseline 12 MB/s per TB, up to 80 MB/s per TB.
  • Max throughput 250 MB/s per volume.
  • 자주 접근하지 않는 cold data 에 적절하다.
  • 저렴한 비용에 performance 가 중요하지 않은 app 에 사용된다.
  • boot volume 으로 사용될 수 없다.

IOPS 와 Throughput 의 차이

시간당 read/write 횟수를 측정하느냐, 혹은 read/write 하는 데이터의 크기를 측정하느냐의 차이이다.
-


Volumes and Snapshots

Volume 이란?

  • volume 은 EBS 볼륨을 의미한다.
  • virutal hard disk 라고 생각하면 된다.

Snapshot 이란?

  • snapshot 은 s3 에 저장된다.
  • virtual disk/volume 의 사진을 찍은 거라고 생각할 수 있다.
  • snapshot 을 찍으면, volume 의 특정 시간의 복사본을 만드는 것이다.
  • snapshot 을 찍으면, 가장 마지막에 snapshot 을 찍은 순간부터 바뀐 데이터만이 s3 에 저장된다.
  • 첫 snapshot 은 시간이 좀 걸린다.

-

아래 예시는 다음 작업들을 진행한다.

  1. EC2 를 생성할 때 EBS volume 을 추가한다.
  2. 만들어진 EC2 with EBS volume 에서 volume type 을 바꾼다.
  3. root volume 에 대한 snapshot 을 만든다.
  4. 만들어진 snapshot 을 다른 availability zone 에 복사하고 이를 활용해 AMI 를 만든다.
-
EC2 instance 를 만든다.
-
Network setting 아래쪽에서 volume 을 선택할 수 있다.
-
선택할 때, 위에서 배운대로 sc1 과 같은 cold HDD 는 root volume 으로 선택할 수 없다고 나온다.
-
Root volume 은 gp2 8GB 로 설정했고, Add volume 을 선택해 custome 으로 sc1 125GB 를 추가했다.
-
왼쪽의 Elastic Block Storage - Volumes 탭으로 들어가면 현재 만들어둔 volume 목록을 확인할 수 있다.
-
만들어진 sc1 volume type 을 다른 것으로 바꿀 수 있다. Actions -> Modify Volume 을 선택한다.
-
Volume type 을 sc1 에서 io2 로 변경한다.
-
만들어진 volume 에 대해 snapshot 을 만들 수 있다. Actions -> Create Snapshot 을 선택한다.
-
왼쪽의 Elastic Block Storage - Snapshots 탭으로 들어가면 만들어진 snapshot 들을 확인할 수 있다.
-
Snapshot 을 복사할 수 있다. Actions -> Copy 를 선택한다.
-
복사할 때 availability zone 을 다른 곳으로 선택할 수 있다.

EBS Encryption

-

EBS volume 을 encrypt 하면 어떤 일이 발생하는가?

  • volume 내에 있는 Data 가 암호화된다.
  • instance 와 volume 이 주고받는 데이터가 암호화된다.
  • snapshot 이 암호화된다.
  • 해당 snapshot 으로 만들어진 volume 이 암호화된다.

EBS encrypt 방법

  1. EC2 instance 만들 때 volume option 중 Encrypted - Yes 를 선택한다.
  2. Unencrypted volume 에 대한 snapshot 을 만들고, 이 snapshot 을 복사할 때 Encrypt option 을 선택한다.

EC2 hibernation

EC2 hibernation 이란?

EC2 RAM 에 있는 내용물을 EBS root volume 에 저장하는 것.
일반적으로는 EC2 instance 를 멈추는 경우, data 는 EBS disk 에 남아있고 EC2 를 다시 시작할 때까지 남아있을 것이다.
그리고 EC2 instance 를 terminate 하는 경우 root device volume 은 같이 terminate 하게 된다.

-

EC2 hibernation 의 특징들

  • EC2 in-memory RAM을 persistant storage (EBS) 에 보관한다.
  • hibernation 에 들어간 EC2 를 다시 실행하는 것이 매우 빠르다 - OS 를 다시 불러올 필요가 없기 때문.
  • instance RAM 은 150GB 보다 작아야 한다.
  • instance family 는 C3, C4, C5, M3, M4, M5, R3, R4, R5 를 포함한다.
  • 가능한 OS 는 Windows, Amazon Linux 2 AMI, Ubuntu 이다.
  • hibernation 은 60 일을 초과할 수 없다.

Elastic File System (EFS)

EFS 란?

  • 많은 EC2 instance 에 mount 할 수 있는 network file system.
  • 여러 Availability zone 에 있는 EC2 에서 사용 가능하다.
  • Highly available & scalable, but expensive.
  • Contents management, Web servers 등 data 를 공유하는 시스템에 적절하다.

EFS Overview

  • NFSv4 protocol 을 사용한다.
  • Linux-based AMI compatible (Windows not supported).
  • Encryption at rest using KMS.
  • 사용에 따라 자동으로 커지고 줄어들기 때문에 capacity planning 이 필요 없다.
  • 사용하는 만큼 비용이 발생한다.

EFS performance

-

Controlling performance

  • 용도에 따라 성능을 결정할 수 있다.
  • General Purpose: web server, CMS 등에 사용된다.
  • Max I/O: Big data, media processing 등에 사용된다.

Storage Tiers

  • EFS 는 storage tiers 그리고 lifecycle management 가 가능해서 며칠 뒤에 다른 tier 로 넘어가게 할지 설정할 수 있다.
  • Standard: frequently accessed file 에 해당한다.
  • Infrequently accessed: 자주 사용되지 않는 파일들에 해당한다.

아래는 EFS 를 생성하고 정책을 설정하는 과정에 대한 예시이다.

-
EFS 콘솔 화면. 오른쪽 Create file system 을 통해 EFS 를 생성할 수 있다.
-
EFS 의 이름, VPC 그리고 Availability 를 설정할 수 있다. Regional 로 만드는 것을 추천하고 있다.
-
만들어진 EFS 목록. 이름을 클릭해서 들어가면 세부사항을 확인할 수 있다.
-
해당 EFS 에 대한 설명이 나온다. 아래의 Metered size 에서 전체 크기를 확인할 수 있다.
-
“Edit” 으로 들어가면 해당 EFS 에 대한 정책을 설정할 수 있다. Lifecycle 및 Throughput 을 조정할 수 있다.

만들어진 EFS 를 EC2 에 연결하기

-
만들어진 EFS 에서 아래 “Network” 탭의 “Manage” 를 선택한다.
-
EFS 의 mount target 을 설정한다. 현재 만들어져 있는 EC2 instance 들이 target 으로 뜨게 되고, 이들에 대한 security group 을 새로 설정한다.
-
이제 해당 EFS 화면에서 오른쪽 위의 Attach 를 선택한다.
-
여기서 mount via IP 를 선택하면 IP 를 통해 마운트를 할 수 있게 된다. EC2 터미널에서 아래의 마운트 명령어를 사용하면 “efs” 폴더에 해당 EFS 가 마운트되게 된다.

EC2 terminal 에서 해당 EFS 를 마운트하고 마운트 목록에 추가하는 명령어는 다음과 같다.

sudo mkdir /efs # root 에 efs 디렉토리를 생성
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 10.0.0.233:/ /efs # mount 진행
sudo nano /etc/fstab # 해당 파일을 수정한다.

/etc/fstab 파일에서는 다음 항목을 추가한다.

10.0.0.233:/ 		/data 	nfs4    nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 0 0
# 형태: <NFS MOUNT IP>:/ 		/data 	nfs4 	 <OPTIONS> 0 0
# NFS MOUNT IP 및 OPTIONS 는 EFS - Attach 에서 확인했던 값을 사용하면 된다.
# 중간에 tab 두번, 한번, 한번이 각각 들어있다.

다른 EC2 에서도 /etc/fstab 에 해당 라인을 추가하고 mount -a 를 실행하면 EFS 가 mount 되게 된다.


AWS backup

AWS backup 이란?

EC2, EBS, EFS, RDS, DynamoDB 등 여러 AWS service 에 대한 백업을 의미한다.

AWS backup with organizations

AWS organization 에 대해 Backup 을 진행할 수 있고, 이 때 해당 organization에 속한 여러 AWS account 에 대한 백업이 가능하다.

Benefits of AWS backup

1. Central management: 하나의 백업 콘솔을 통해 여러 AWS 서비스와 여러 AWS account 백업이 가능하다.
2. Automation: 자동 백업 스케줄과 retention policy 들을 사용할 수 있다. 또한 lifecycle policy 를 사용해 특정 기간이 지난 불필요한 백업 파일은 삭제하도록 할 수도 있다.
3. Improved Compliance: 백업 정책을 시행하는 동안 백업은 미사용 및 전송 모두에 암호화되어 규정 준수사항에 부합되도록 할 수 있다.

-


네, 오늘은 AWS EBS, EFS 에 대해서 알아보았습니다.
그럼 다음 시간에 만나요!