모노산달로스의 행보

[AWS] EBS(Elastic Block Store) & EFS(Elastic File System)의 대하여 본문

Infrastructure/AWS

[AWS] EBS(Elastic Block Store) & EFS(Elastic File System)의 대하여

모노산달로스 2024. 10. 14. 15:17

aws - EBS & EFS

 

AWS(Amazon Web Services)

 

AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 서비스로, 서버, 스토리지, 네트워크 등을 클라우드를 통해 이용할 수 있습니다. 높은 안정성과 확장성을 갖춘 AWS는 클라우드 분야에서 높은 점유율을 차지하고 있습니다. 스파게티처럼 많은 기술이 존재하여 올바른 사용을 위해서는 꼭 학습이 필요합니다. 반대로 배워두면 많은 클라우드 기술을 사용할 수 있게 됩니다.

 


 

EBS(Elastic Block Store)

What is EBS(Elastic Block Store)

 

 

EBS(Elastic Block Store)란 EC2 Instance가 실행 중인 동안 연결 가능한 네트워크 드라이브를 의미합니다. 여기서 네트워크 드라이브란 네트워크를 통해 접근할 수 있는 저장 공간을 의미합니다. 중요한 특징으로 인스턴스가 종료된 후에도 데이터를 유지할 수 있다는 점이 있습니다.

 

EBS volume이란 생성한 EBS의 구체적인 스토리지 단위를 의미합니다. 특정 가용 영역에서만 생성 가능하다는 특징이 존재합니다. 즉, us-east-1a에서 생선 된 경우 us-east-1b에서는 생성이 불가능합니다.

 

EBS volume Level
CCP Level : 하나의 EC2 인스턴스에 하나의 EBS 마운트 가능
Associate Level : 하나의 EC2 인스턴스에 다중의 EBS 마운트 가능

 

 

USB Stick

 

EBS volume을 쉽게 이해하기 위해서 USB stick과 같은 역할을 한다고 생각하면 됩니다. USB는 하드웨어에 연결되어 데이터를 저장하고 연결이 끊어져도 데이터가 유지됩니다. 마찬가지로 EC2 Instance에 연결되고 끊어지면서 데이터를 저장할 수 있는 공간입니다.

 

다만 네트워크 드라이브이기 때문에 지연이 발생할 수 있다는 차이점이 존재합니다. 또한 특정 AZ(Availability zone)에 고정되어 있다는 특징이 있습니다. 이를 다른 가용 영역으로 옮기기 위해서는 Snapshot이라고 부르는 방법을 사용해야 합니다.

 

EBS can be attached within the same availability zone

 

 

EC2 Instance 생성 시 자동으로 생성되는 EBS volume을 root volume이라고 합니다. 이 root volume은 기본적으로 EC2 Instance 종료 시 함께 삭제되도록 설정되어 있습니다. 이를 설정하는 부분이 바로 Delete on Termination attribute입니다. 만약 root volume이 삭제되기를 원하지 않는다면 해당 부분을 disabled 하면 됩니다.

 

 


 

 

EBS Snaptshot

How to use snapshot for EBS?

 

앞서 EBS는 특정 AZ에 고정되어 있다고 설명을 했습니다. 그리고 이를 해결하기 위해서 사용하는 snapshot에 대해서도 언급을 했습니다. 그럼 대체 snapshot이 어떤 역할을 할까요?

 

Snapshot은 쉽게 말해서 EBS를 특정 시점에 Backup 하는 것과 같습니다. 만들어진 snapshot은 다른 가용 영역에서도 접근이 가능합니다. 따라서 snapshot을 통해 EBS를 생성하면 마치 다른 AZ의 EBS를 복사하는 것과 같은 결과를 얻을 수 있는 것입니다.

 

EBS Snapshot Archive
snapshot을 더 저렴한 archive tier로 옮기는 것을 의미합니다. 아카이브는 복원 시 24시간에서 72시간의 대기시간이 필요합니다.

Recycle Bin
snapshot을 영구적으로 삭제하는 대신 휴지통에 보관합니다. 실수로 삭제한 경우 복원이 가능하며, 하루에서 1년까지 보관 규칙을 설정할 수 있습니다.

FST(Fast Snapshot Restore)
snapshot을 완전히 초기화하는 것을 의미합니다. 크기가 매우 큰 snapshot로 EBS volume을 초기화하는 경우 사용합니다. 비용이 많이 든다는 특징이 있습니다.

 

 


EBS Volume Types

Amazone EBS volume types

 

EBS volume 생성시 여섯가지 선택지가 존재합니다. 이 요소들은 Size, Thorughput, IOPS로 정의할 수 있습니다. 위 표에 나타나는 네 가지의 타입은 boot volume으로 사용될 수 있는 특징이 있습니다.

 

General Pupose(gp2 / gp3)
비용 효율적인 스토리지로서 낮은 대기 시간을 가집니다. 가상 데스크톱, 개발 및 테스트 환경에서 자주 사용합니다. gp2의 경우 IOPS와 처리량을 독립적으로 늘리는 것이 불가능합니다.

Provisioned IOPS(io1 / io2)
IOPS 성능이 높은 스토리지입니다. 데이터베이스 작업이 스토리지 성능과 일관성에 매우 민감한 경우 적합합니다. multi-attached를 지원한다는 특징이 있습니다.

Hard Disk Drives(st1 / sc1)
매우 큰 저장량이 필요한 경우 사용하는 스토리지입니다. boot volume으로 사용할 수 없으며, 비용이 비교적 저렴합니다. sc1는 아카이브와 같은 역할로 데이터 접근이 매우 적은 경우 사용합니다.

32000이상의 매우 높은 IOPS가 필요한 경우 EC2 Nitro와 io1 혹은 io2를 사용해야합니다.

 

 


 

EBS Multi-Attached

EBS multi-attached to the EC2 instances

 

이제 앞서 언급한 EBS Multi-Attached 기능에 대해서 알아봅시다. 하나의 EBS volume을 여러개의 EC2 instance에 할당하는 기능을 의미합니다. 이때, EBS volume와 EC2 instance는 같은 AZ에 존재해야합니다.

 

io1와 io2 type에서 사용이 가능하며, 각 EC2 instance는 고성능의 volume 읽기와 쓰기 권한을 가지게 됩니다. 동시 쓰기 작업을 관리하는 경우 유용하며 하나의 EBS volume은 최대 16개의 EC2 instance에 할당될 수 있습니다. 

 

EFS(Elastic File System)

EFS(Elastic File Sytem) mount to the EC2 instances

 

EFS(Elastic File System)은 관리형 NFS(Network File System)으로 서로 다른 AZ에 존재하는 여러 EC2 instance에 할당 될 수 있습니다. 웹 서빙, 데이터 공유, Wordpress등 다양하게 사용됩니다. 가용성이 높고 확장성이 뛰어나지만 EBS에 비해 가격이 비싸다는 특징이 있습니다.

 

NFS Protocol을 사용하며 액세스 제어를 위해 Security Group 설정이 필요합니다. linux기반 AMI만 호환되며, POSIX라는 file system을 사용합니다. 

 

EFS Performance & Storage Classes

Amazone EFS performance

 

EFS를 생성할 때 EFS Performance에 관련된 설정을 정할 수 있습니다. General Perpose, Max I/O 그리고 Max Thorughput이 존재합니다.

General Purpose (default)
웹 서버 혹은 CMS와 같이 latency에 민감한 서비스에서 사용합니다.

Maximum IOPS
빅 데이터 혹은 미디어 프로세싱에서 사용합니다. 높은 throughput과 높은 latency를 가집니다. parallel 하게 작동합니다.

Maximum Thorughput
Bursting, Provisioned, Elsatic 세 가지 선택지가 존재합니다. Bursting은 실제 사용중인 스토리지 용량에 따라 처리량을 확장합니다. Provisioned는 스토리지 크기에 상관 없이 처리량 설정이 가능합니다. Elastic은 워크로드에 따라 자동으로 처리량을 설정해줍니다.

일반적으로는 Elastic을 사용하는 것이 추천됩니다.

 

 

EFS Storage Tier

 

마찬가지로 EFS Storage Classes 또한 설정할 수 있습니다. Storage Tier는 세 가지가 존재하며 액세스 주기에 따라 역할이 달라집니다.

 

Storage Tier
Standard : 자주 액세스 하는 데이터를 저장합니다.
Infrequent Access(EFS-IA) : 자주 액세스 하지 않는 데이터를 저장합니다. 파일 검색시 비용이 발생하지만 저장 비용이 감소합니다.
Archive : 거의 액세스하지 않는 데이터를 저장합니다.

세 개의 계층간 이동은 Lifecycle Policies를 통해서 자동화 될 수 있습니다.

 

추가로 AvailabilityDurability 설정이 가능합니다. Multi-AZ는 여러 AZ에 접근이 가능하며 프로덕션 환경에서 주로 사용합니다. One Zone은 하나의 AZ에 고정되어 있으며 주로 개발 용도로 사용합니다.

 

위와 같이 상황에 맞게 올바른 클래스 스토리지를 사용하면 매우 높은 비용 절감 효과를 얻을 수 있습니다.

 

01
EFS Practice Screen using CLI

 

EFS를 사용하면 위와 같은 결과를 얻을 수 있습니다. 서로 다른 AZ에 존재하는 EC2 Instance 1와 Instance 2가 존재한다고 합시다. 둘은 하나의 EFS에 연결되어 있습니다.

 

이러한 상황에서 EC2 Instance 1에서 hello.txt 파일을 생성하였습니다. 이후 EC2 Instance 2에서 같은 경로로 접근하면 앞서 생성한 hello.txt 파일에 접근이 가능합니다. 즉, 다른 AZ에 존재하는 EC2 Instance가 같은 파일 시스템을 공유하고 있다는 의미입니다.

 


EC2 Instance Store

EBS volume은 좋은 네트워크 드라이브입니다. 하지만 네트워크로 연결하는 특성상 성능이 제한될 수 밖에 없습니다. 따라서 더 좋은 성능이 필요하다면 EC2에 연결된 하드웨어의 성능이 뛰어나야합니다.

 

Instance store temporary block storage for EC2 instances

 

EC2 Instance Store는 물리적 서버에 연결된 하드웨어 드라이브로서 뛰어난 I/O 성능을 가집니다. 하지만 EC2 Instance가 종료되면 스토리지도 같이 손실되기 때문에 임시 스토리지라고 부르기도 합니다. 즉, 장기 데이터를 보관하기 위해서는 추천되지 않습니다.

 

버퍼, 캐시, 스크래치 데이터 등 일시적 콘텐츠에 적합하며, EC2 인스턴스 기본 서버에 장애가 발생하면 연결된 스토어에도 장애 발생합니다. 따라서 데이터의 백업과 복제가 필요하다는 특징이 있습니다.

 

 


 

 

01
What is AMI(Amazon Machine Image)?

 

AMI(Amazone Machine Image)의 대한 내용은 약간 범위에서 벗어난 내용이라 과감하게 생략했습니다. 간단하게 설명하자면 EBS의 snapshot과 같은 역할을 하지만, EC2 Instance를 위해 사용된다고 이해하면 좋을 것 같습니다.

 


 

EC2의 스토리지에 관한 내용이 끝이 났습니다. 네트워크 드라이브의 개념에 대해서 이해한다면 어렵지 않은 내용이였습니다.

 

특히 EBS type의 종류와 더불어 EFS, EC2 Instance Store와의 차이점을 위주로 공부하면 좋을 것 같습니다.