본문 바로가기

AWS/파워쉘로 배우는 AWS

#20 [EBS] EBS를 추가해보자

EBS는 교육방송 입니다만… 여기서 지칭하는 EBS Elastic Block Storage입니다. AWS에서 지원하는 보조기억공간? 이라고 지칭해 봅시다. 간단히 말해 가상 디스크입니다. 가상 디스크라는 것은 그대로 가상머신에서 사용하는 디스크라고 이해하시면 쉽습니다. 우리가 가상디스크를 다룰 알아야 중요한 사실은 가지쯤 됩니다.

 

  1. 가상디스크는 디스크이다.

     그대로 디스크입니다. 컴퓨터에 디스크를 처음 연결하면 하시는 작업이 뭐죠? 파일시스템 생성과 포멧입니다. 그렇다면 가상디스크도 당연히 작업을 진행해 주셔야 합니다. 그리고 파일시스템의 문제는 가상디스크 문제가 아닌 OS문제입니다.

  2. 가상디스크는 씬프로비저닝이다.

     이건 대부분의 스토리지를 사용해 보신 분들이라면 이해하실 겁니다. 스토리지 공간을 효율적으로 사용하기 위해서는 (thick) 프로비저닝을 사용하게 되면, 사용하지 않는 공간도 전부 디스크 할당을 받기 때문에 운영자 입장에서는 낭비로 인식될 있습니다. 그래서 만큼 디스크 공간을 할당 받는 (thin) 프로비저닝을 씁니다.

  3. 가상디스크는 파일이다.

     아주 기본적인 내용입니다만, 간과하시는 분들이 계십니다. AWS 사용하시는 분들은 EC2 설정 값도 파일로 저장된다는 사실을 알고 계실 것입니다. 파일로 되어있다는 뜻은 전송 중이거나 또는 잘못 조작을 하여 가상디스크 파일이 깨져버리면 복구할 방법이 없다는 사실입니다. 그럼 우리가 해야 일은? 당연히 백업입니다.

 

내용들을 알고 있다면, EBS 다루는데 문제가 없을 것입니다.

그럼 서론은 여기까지 하고 EBS 검색해 봅시다.


PS> Get-EC2Volume

 


 

깔끔하게 개의 EBS 출력되었습니다. 현재 EC2 Instance 2개가 있으니 EBS 2 있는 것입니다. EBS 없이 EC2 Instance 운영할 수도 있지만, 저장공간이 필요 없는 서버를 운영하시는 경우는 많지 않으니 기본적으로 EC2 하나에 EBS 하나씩은 연결하여 사용하실 것이라 생각됩니다.

그럼 속성 값들을 확인해 보겠습니다.

Attachments: EBS 연결정보입니다.

AvailabilityZone: EBS AZ 위치입니다.

CreateTime: EBS 생성 시간입니다.

Encrypted: 암호와 여부입니다.

Iops: EBS 정의된 IOPS 값입니다.

KmsKeyId: kms key ID 입니다.

Size: EBS 용량입니다. 단위는 GB입니다.

SnapshotId: EBS 생성시 참조된 Snapshot ID입니다.

State: EBS 상태입니다.

Tags: 태그..

VolumeId: EBS Volume ID입니다.

VolumeType: EBS Volume Type 입니다.

 

속성들을 보니 EBS 암호화를 지원하는 것을 있네요. 다른 내용들을 이해가 되실 텐데 Volume Type 부분이 추가 설명이 필요해 보이는군요. 그럼 Volume Type 대해 잠시 설명하도록 하겠습니다.

  • General Purpose (SSD) Volumes (gp2)

범용 Volume Type 입니다. SSD 보급화 되면서 AWS에서는 기본적으로 SSD Volume 제공합니다. 해당 볼륨은 보통 System Boot Volume이나 VDI, 작은 규모의 SQL 서버, 개발 테스트환경에 사용합니다. 용량은 1GiB~1TiB까지 설정 가능하며, 1GiB 3 IOPS 제공합니다. MAX IOPS 값은 3,000 이며, Maximum Throughput 160MiB/s입니다. 특이점은 idle IOPS 대해 크래딧을 축적하며, 최고 5,400,000 I/O 크래딧을 축적할 있습니다. 크래딧은 해당 Volume 갑작스러운 IOPS 요구할 사용되며, 최대 3,000 IOPS 까지 부스팅 됩니다. 크래딧을 전부 소모하면 기존 설정된 IOPS 돌아옵니다. I/O 크래딧 부스팅은 3,000 IOPS 까지만 제공하기 때문에 Volume I/O 3,000으로 설정하게 되면 해당 크래딧은 축적하지 않습니다.

  • Provisioned IOPS (SSD) Volumes (io1, piops)

I/O 특화된 SSD Volume 제공해 줍니다. 지속적인 IOPS 성능이 gp2 최대 IOPS보다 높은 값이 요구되거나, Throughput 160MiB/s 이상 요구되는 환경에서 사용합니다. 보통 대규모 DB 서버에서 사용합니다. 용량은 4GiB~16TiB까지 지원 가능하며, Maximum Throughput 320MiB/s 입니다. 최대 20,000 IOPS까지 설정할 있으며, gp2 달리 Volume 용량과 관계 없이 IOPS 설정할 있습니다.

  • Magnetic Volumes (standard, EBS)

기존 HDD 형식의 Volume 제공해 줍니다. 자주 접근하지 않는 데이터나 스토리지 비용을 최소하 화는 비즈니스에 적합합니다. 용량은 1GiB~1TiB까지 설정 가능하며 100 IOPS 제공해 줍니다. Maximum Throughput 40~90MiB/s이며 RAID 구성하여 성능을 끌어올릴 수도 있습니다. 현재는 사용하지 않는 Type 입니다.

 

내용은 읽어보시고 숙지하시기 바랍니다. 모든 IT 엔지니어들이 동일하게 고려해야 부분이 버로 컴퓨팅과 네트워크 그리고 저장소인 만큼 중요 고려사항이니 꼭꼭 숙지하시기 바랍니다.

그럼 Volume 만들어 보겠습니다.


PS> New-EC2Volume -AvailabilityZone us-west-2a -VolumeType gp2 -Size 5


 


 

볼륨이 하나 생성되었습니다. 어디에도 연결되지 않은 따끈따끈한 Volume 입니다. 원본 Snapshot 없기 때문에 SnapshotId 값이 비어있는 것을 확인하실 있습니다. 그럼 Instance Mount 보도록 하겠습니다.

 

PS> Add-EC2Volume -InstanceId i-4f846d88 -Device sdf -VolumeId vol-830c2374


 


 

정상적으로 mount 되었습니다. 여기서 유심히 봐야 부분은 Device 입니다. 다음 캡쳐화면을 보면서 설명 드리겠습니다.

 

출처: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html

 

표는 Linux 입니다. 보시면 아시겠지만 지정 가능한 Device 설정하셔야 정상적으로 Mount 됩니다. 표에서 Recommended 표시된 대로 Device 설정하셔서 Mount 하시면 손쉽게 사용 가능합니다.

Windows 다음 표를 참고하셔야 합니다.

 

출처: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/device_naming.html

 

Volume Mount시에 고려사항이 많으니 사이트에 접속하셔서 OS Type별로 고려사항을 확인하셔야 합니다.

한가지 고려사항이 있습니다. 바로 EC2 Instance 사용 가능한 Volume 크기 개수입니다.

잘못된 내용이 있어 수정합니다. 아래의 내용은 인스턴스 스토어라고 하여서 Hypervisor의 DAS영역을 사용하는 용량입니다. 페이지를 방문하시면 아시겠지만 '이전 세대 Instance Type의 내용'입니다.

 

 

출처 : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html

 

사이트도 접속하셔서 사용하고 있는 Instance Type 별로 사용 가능한 Volume 내용을 확인해 보시기 바랍니다.

Instance를 AWS Consol로 제작시 EBS Only로 나오는 Instance Type은 위의 저장공간을 활용하실 수 없습니다.


Instance Windows 시에는 Mount Volume LUN으로 Mapping되니 다음 사이트를 참고하시기 바랍니다.


Disk Mapping : http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/ec2-windows-volumes.html


Volume Mount 봤으니 이제 Dismount 차례입니다.

 

PS> Dismount-EC2Volume -InstanceId i-4f846d88 -VolumeId vol-830c2374

PS> Get-EC2Volume -VolumeId vol-830c2374


 


 

정상적으로 Volume Dismount 되었습니다.

이런저런 설명이 길어져서 블로깅이 엄청 길어졌기 때문에 Volume 초기화에 대한 내용은 다음으로 미루겠습니다.

 

참고 : http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html