본문 바로가기
Cloud Services/AWS, Mongo Atlas

EBS(Elastic Block Storage)에 대한 정리 #EC2 #AWS

by Developer88 2020. 5. 8.
반응형

오늘은 AWS의 EBS(Elastic Block Storage)에 대해서 정리해 보도록 하겠습니다.

 

1. EBS

AWS를 시작한지 얼마되지 않아서,

EC2를 몇번 사용하지 않으신 분들은,

나는 EBS(Elastic Block Storage)같은 서비스를 사용한 적이 없다고 하실수도 있는데요.

사실은 EC2를 생성할 때, 혹은 RDS를 생성할 때,

저장공간에 대한 옵션을 설정한 적이 있으실텐데요.

이 때, EBS에 대한 설정을 하고 있는 것 입니다.

 

EC2를 생성할 때 4번째 단계에서 보게되는, 아래의 화면은 EBS에 대한 옵션을 설정하는 화면이었습니다.

EBS Volumes을 추가할 수 있다는 설명도 이제 보이실 것 같습니다.

참고로 EBS에서 말하는 하나의 Volume이 바로 하나의 디스크입니다.

 

처음 EC2나 RDS서버의 Instance를 생성할 때,

EBS에 대해서 어떤 Volume타입을 선택하면좋을지 고민을 해서,

최대한 비용대비 효율적으로 생성하고 사용하는 것이 좋기 때문인데요.

 

예를 들면, MySQL같은 RDS서버를 사용하는데,

앱이 100mb(100,000KB)의 데이터를 읽기 위해서,

MySQL이 10kb의 데이터 단위로 전송한다고 할 때,

10,000 IOPS에 해당하는 디스크를 갖추는 것이 효율적이라고 계산할 수 있습니다.

 

다만 동시에 생각해 주어야 하는 것이, EC2 Instance 서버 사양입니다.

아무리 디스크의 IOPS가 효율적으로 잘 세팅되었다고 하여도,

EC2서버의 데이터 처리속도가 늦으면 효과가 반감되기 때문이지요.

 

2. EBS 스토리지 유형

EBS의 스토리지는 아래 이미지와 같이, 4가지 Volume Type으로 나눌수 있는데요.

하나씩 보도록 하겠습니다.

 

 

 

2-1. General Purpose SSD(범용 SSD)

대부분의 앱에서 이 유형을 사용해서 문제가 없을 정도로 빠른 스토리지로 알고 있습니다.

기가바이트당 3배의 IOPS를 설정할 수 있다고 하는데요.

가성비가 좋은 옵션으로 알려져 있는데요. 아무래도 이 옵션을 많이 사용하게 되겠지요.

아래는 공식문서의 IOPS그래프인데요. 용량이 커질수록 Maximum IOPS가 커집니다.

 

 

2-2. Provisioned IOPS SSD

인풋과 아웃풋의 처리량이 집중적으로 많은, 데이터베이스 같은 작업을 염두해 두고 만든 Volume Type인데요.

MySQL같은 데이터베이스의 EBS로 적합합니다.

참고로 MySQL의 16kb의 페이지당 처리량을 가지고 있어서, 

이 기준으로 계산해 보면, 6,400IOPS가 필요하다고 나오는 것 이지요.

 

2-3. Throughput Optimized HDD

조금은 저비용에 속하는 옵션으로, IOPS가 아니라, 처리량(Throughput)을 기준으로 할 때 사용합니다.

Volume의 크기가 클수록 더많은 처리량을 가진다고 합니다.

 

2-4. Cold HDD

자주 사용하지 않는 앱에 적합한 옵션인데요.

마찬가지로 Volume이 클수록 처리량은 늘어나지만,

위에서의 저비용 처리량 중심의 HDD보다도 최대 처리량은 낮습니다.

 

3. EBS 생성하는 방법

이제 본격적으로 EBS를 생성해 보겠습니다.

먼저 AWS콘솔에서 EC2 > Elastic Block Store > Volumes 를 선택해 줍니다.

Volume을 생성하기 위해서, Create Volume을 눌러줍니다.

 

 

아래에서 볼 수 있는 화면이 나오는데요.

가장 먼저 Size를 설정해 주고요.

Volume Type은 기본값인 General Purpose나 Provisioned IOPS등을 선택할 수 있는데요.

 

Availability Zone을 선택하는데요. EC2 서버가 위치하는 곳과 같도록 선택해 주어야 합니다.

참고로 EC2 서버의 Zone은 EC2 > Instances의 Description에 가면 하단에서 볼 수 있습니다.

이를 참고하여서 선택해 주셔야 합니다.

 

 

설정한 후 Create Volume버튼을 눌러주면 되는데요.

리스트에 State이 Available인 상태로 나오게 됩니다.

이 말은 아직 어느 EC2 에도 Attach되어 있지 않아서 사용되고 있지 않다는 애기인데요.

사용되고 있다면, in-use라고 나오게 됩니다.

 

4. EBS를 EC2에 붙여서(Attach) 사용하기

생성한 EBS를 EC2에 붙여서 사용하기 위해서는

붙이고자 하는 EBS를 리스트에서 선택하고 상단의 액션 메뉴 버튼을 누르거나, 우측 마우스 버튼을 눌러서 나오는 메뉴에서,

Attach Volume을 해 주면 되는데요.

 

그럼 Attach할 Instance를 선택하는 화면을 보게 됩니다.

(만약, EC2와 EBS의 Zone이 다르다면 Instance가 보이지 않을 수 있습니다.

이것은 위에서 Availability Zone을 EC2서버와 다르게 설정하였기 때문입니다.)

 

Instance를 선택하면, Device라고 하는 부분이 나오는데요.

이것은 EC2에 Attach 되었을 때,

이 Device이름은 나중에 필요할 수 있으므로,

가능하면 메모장 같은곳에 복사해서 붙여넣기 해놓으시면 편합니다.

이제 Attach버튼을 눌러주면 Attach되게 되는데요.

 

Attach된 내용은 해당 EBS의 Volume을 선택하면,

하단의 Attachment에서 확인할 수 있습니다.

 

EC2에서도 확인할 수 있는데요.

EC2에서 해당 Instance를 선택한 후에, 하단의 Description을 보면,

Block devices를 보면, 보통 하나의 Device가 보이는데요.

이제 아래 줄에 하나 더 추가되어 있는 것을 볼 수 있습니다.

(AWS서비스에서 Block Device, Volume, Block Storage등의 명칭에 익숙하지 않으면 정보를 알아보기 조금 힘들 수 있지요.)

 

5. EC2에서 Device 사용하기

5-1. EC2에서 Device 찾기

SSH접속을 통해서 EC2에 접속하여서,

아래 명령어로 Device 상태를 봅니다.

df -h

 

참고로 df는 현재 파일시스템에서 사용중인 공간과 전체에서 몇%를 사용하고 있는지등을 보여주는데요.

"-h" 옵션은 Mega나 Giga단위로 보기 쉽게 해주는 옵션입니다.

위에서 attach를 한 EBS의 디스크 즉, Volume도 여기서 볼 수 있는데요.

 

해당 디스크를 사용하기 위해서는 file system을 만들어 주어야 합니다.

(저희가 예전에 하드드라이브를 사서 포맷해서 쓰는 것과 같은 것 인데요)

아래 명령어와 같이 file -s를 해서 file system에 대한 정보가 나온다면,

이미 file system을 가지고 있는 것이므로 포맷할 필요가 없습니다.

sudo file -s /dev/xvdf

 

5-2. File System생성하기

위에서 File System이 없다는 것을 확인했다면, 아래와 같이해서 File System을 생성해 주면 됩니다.

sudo mkfs -t xfs /dev/xvdf

 

 

5-3. Mount하기

해당 Volume의 File System을 생성하는 것 만으로는 끝나지 않습니다.

File System을 갖춘 Volume을 Mount를 해 주어야 하는데요.

특정 디렉토리를 Mount Point로 잡고 해당 디렉토리에 Mount를 하면,

Attach한 EBS Volume을 해당 디렉토리에서 접근할 수 있게 되는 것 이지요.

 

data라는 디렉토리를 생성해서, mount point로 잡은뒤,

mount라는 명령어를 이용해서 아래와 같이 mount를 해 줍니다.

sudo mkdir /data
sudo mount /dev/xvdf /data

 

 

참고로 mount를 제거하려면 아래의 명령어를 사용해 주면 됩니다.

sudo umount /dev/xvdf

 

6. 주의할 점

EC2인스턴스를 제거할 때, EBS볼륨을 제거하지 않았다면, EBS는 유지될 수 있습니다.

Free Tier를 사용하시는 분들 중,

연습을 위해서 여러번 EC2인스턴스를 생성하거나 하시는 분들의 경우 반드시 기억하고 있어야 되는 부분인데요.

EC2인스턴스 생성시에 아래와 같이, Delete on Termination이 활성화 되어 있지 않으면,

삭제되지 않고 남아서 사용량이 과금될 수 있습니다.

 

아무생각없이 EBS를 관리 않하며 사용하다가 어느날 Free Tier한도를 거의 다 썻다는 메일을 받게 될 수도 있기 때문입니다.

 

단순히 어떠한 데이터를 저장하는 용도로는,

AWS의 S3와 Glacier같은 서비스를 혼용해서 사용하는 것이,

비용적으로 보아도 효율적이기 때문에,

이것을 하나의 저장장치로 보고 접근하는 것은 효율적이지 않은 것 같구요.

다만, EC2 서버 혹은 RDS 서버의 성능 효율화를 위해서,

최적의 디스크를 선택하기 위해서 EBS의 타입이나 사용방법에 대해서 알아두는 것이 좋을 것 같습니다.

 

이상으로 AWS의 EBS에 대해서 정리해 보았구요.

더 좋은 내용이 있다면 이 글을 통해서 업데이트 하도록 하겠습니다.

 

728x90

댓글