[AWS] 7. EBS란?(with EC2에 EBS Volume 추가하기)
- -
안녕하세요. 갓대희 입니다. 이번 포스팅은 [ AWS - EBS란?(with EC2에 EBS Volume 추가하기) ] 입니다. : )
0. 들어가기 앞서
- 예전에 생성하였던 EC2에 MySql을 설치하여 사용하다보니 EC2 EBS 용량 이 부족한 상황이 발생 하였다.
- 간단하게 EBS Volume을 추가해보며 이참에 EBS란 어떤 것인지도 함께 알아보자.
1. EBS (Elastic Block Storage) 정의 및 특징
- EBS는 클라우드에서 사용하는 가상 하드디스크(HDD or SSD)라고 할 수 있다.
EC2 인스턴스
- EC2 인스턴스에 사용할 대규모 고성능 블록 스토리지 볼륨을 제공한다.
EC2 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브. 즉 인스턴스와 저장소간 실제 물리적 연결은 없으며 네트워크를 통해 연결된다.
- 비휘발성 드라이브이다. EC2 인스턴스를 제거해도 EBS는 독립적이기 때문에 데이터가 유지된다.
(독립형 Storage가 아니기 때문에 항상 EC2와 함께 사용된다.)
- 하나의 인스턴스에 여러가지 EBS를 붙일 수 있다. 하나의 컴퓨터에 HDD, SSD를 여러개 부착할수 있는 것과 같은 원리이다.
- 반대로 EBS를 여러 EC2에 장착(EBS Multi Attach) 가능하다.
리전
- EBS 볼륨을 생성할때는 특정 가용영역만 생성이 가능하다. 한번 생성된 EBS 볼륨은 다른 region으로 옮길 수 없다.
(다른 가용영역으로 볼륨을 옮기기 위해서는 스냅샷을 사용해야 한다.)
- 각 EBS 볼륨은 가용 영역 내에 자동으로 복제되어 구성요소 장애로부터 보호해주고 고가용성 및 내구성을 제공한다.
확장, 축소, 비용
- 필요한 용량에 맞게 구매가 가능하다. 필요에 따라서 즉시 생성 및 제거할수 있다. (Root Device가 아닌 경우)
- 볼륨이기 때문에 용량을 미리 결정해야 하며, 원하는 용량(GB) 및 IOPS, 즉 단위 초당 Disk I/O 수를 미리 지정해야 한다.
( IOPS : 디스크에 접근하여 데이터 탐색시 초당 몇 번의 INPUT/OUTPUT이 발생하는지를 의미.)
- 단 몇 분 내에 사용량을 많게 또는 적게 확장할 수 있으며, 프로비저닝한 부분에 대해서만 저렴한 비용을 지불한다.
- 프리티어에서는 30G까지 무료 이다.
Block Storage?
- EBS의 BS(Block Storage)를 Object Storage와 비교하여 살펴보자.
- 이전에 사용해 보았던 S3와 같은 Object Storage는 프로그램 등을 설치할수 없이 파일만 저장되는 저장소이다.
반면 Block Store는 프로그램 등을 설치가 가능한 저장소를 의미한다.
2. EBS의 스냅샷
- EBS를 저장하는 효율적인 방법. 특정 시간의 EBS 볼륨 상태 저장본을 뜻한다.
(스냅샷을 이용하여 특정시간의 저장 데이터에 대한 EBS의 복구가 가능하다.)
- 스냅샷은 OS와 별개로 데이터만 백업시키고 싶거나, 생성된 스냅샷을 기반으로 여러 종류의 AMI를 생성할 때 사용된다.
- 스냅샷의 큰 특징은 변화된 부분만 저장하기 때문에 용량을 효율적으로 사용할 수 있다.
ex) EBS가 10GB인 경우 스냅샷을 찍을 때마다 10GB가 생성되는 것이 아니다.
ex) 변화된 부분이 10MB라고 하면 변화된 부분인 10MB에 대한 부분만 저장하기 때문에 효율적으로 스냅샷을 저장할 수 있다.
- 스냅샷은 기본적으로 S3에 저장된다.
3. EC2에 EBS Volume 추가하기
- EC2 대시보드로 이동 > "Elastic Block Store" > "볼륨" 클릭
- "볼륨 생성" 클릭.
3.1 볼륨 설정
1) 볼륨 유형 : 기본인 gp2를 사용할 것 이다.
( 볼륨 유형에 대해선 하기 aws 가이드 문서에 나와 있긴 하지만 볼륨, 볼륨유형이 먼지 간략하게만 알고 넘어가자)
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html?icmpid=docs_ec2_console
EBS 볼륨(Volume) 이란?
1) 정의 : EBS로 생성한 디스크 하나하나 저장 단위. 즉, EBS의 기본 형태로 OS에서 바로 사용 가능한 단위를 말한다.
2) 유형 (간단하게 큰 특징만 살펴 보자)
- 범용 SSD 볼륨
① gp2 : 개발/테스트 환경, 짧은 지연 시간의 대화형 애플리케이션 및 부트 볼륨을 비롯한 광범위한 트랜잭션 워크로드에 적합.
② gp3 : 가상 데스크탑, 중간 크기 단일 인스턴스 데이터베이스, 개발 및 테스트 등에 적합.
- 프로비저닝 된 IOPS SSD 볼륨
① io1 : I/O가 많이 발생하는 NoSql 및 관계형 데이터베이스에 적합.(HBase, Vertica, Cassandra 등)
② io2 : io1과 비교하여 내구성이 100배 높다.
io2는 높은 내구성을 요구하면서 I/O가 많이 발생하는 데이터 베이스에 적합.(Oracle, Microsoft SQL 서버, IBM DB2)
- 처리량 최적화된 HDD : st1
대규모 스트리밍 워크로드에 이상이다.(처리량 최적화 HDD)
대규모 데이터 세트와 큰 I/O가 있으면서 액세스 횟수가 많고 처리량 집약적인 워크로드에 적합.(빅 데이터, 데이터 웨어하우스, 로그 처리)
- 콜드 HDD 볼륨(최저 비용) : sc1
콜드 데이터 세트가 있고 액세스 빈도가 낮은 워크로드에 적합. 덜 액세스 되고 빠르게 액세스 할 필요가 없는 데이터를 보관하기 위한 용도.
- 마그네틱(Standard)
데이터에 자주 액세스하지 않는 워크로드에 가장 적합.
※ 참고(성능)
- 각 하드의 성능은 용량과 MAX IOPS 수치를 보면 된다.(IOPS 수치가 높을수록 데이터 통신이 빠르다)
- 일반적으로 범용타입을 선택하면 되지만, 자신은 요금을 극도로 아끼겠다 하면 마그네틱을 사용하면 된다.
※ 참고(IOPS, Throughput(처리량))
- IOPS(Input/Output Operations Per Second, IOPS)는 초당 처리되는 IO의 개수(IO/s)를 의미한다.
- Throughput(처리량)은 초당 처리되는 바이트의 량을 의미한다. ex) B/s, KB/s, MB/s
2) 볼륨 크기 : 본인이 필요한 용량을 추가
3) 가용 영역 : EC2에 연결할 것이며, 해당 EC2와 동일한 AZ에 위치해야 한다.
- 정상적으로 볼륨이 생성된 것을 볼 수 있다.
3.2 EBS 볼륨을 EC2에 추가 하기
- 생성된 볼륨 체크 > "작업" 클릭 > "볼륨 연결" 클릭
- 연결할 인스턴스 선택 > 디바이스 이름은 default로 설정 하였다.
※ /dev/sdf 로 지정했어도, Linux 커널로 인해 내부적으로 xvdf로 바뀌게 된다.
※ 참고
- 루트 볼륨의 이름은 /dev/sda1 이므로 /dev/sdb 부터 사용할 수 있다. (루트볼륨의 이름은 AMI에 따라 다릅니다)
(기존 ec2에 장착되어 있는 볼륨 확인시 이름은 /dev/sda1)
- 연결 완료 후 "볼륨 상태" 및 "연결된 인스턴스"를 확인 해 본다. 정상적으로 연결 되었다.
3.3 볼륨 연결 확인하기
- 연결을 완료했던 ec에 접속 후 다음 2가지 명령어를 입력 해 보자.
$ ls -asl /dev/xvd* # 연결된 디렉토리 조회
$ lsblk # 파일 시스템 조회
※ /dev/sdf 로 지정했어도, Linux 커널로 인해 내부적으로 xvdf로 바뀌게 된다.
ex) 방법1
ex) 방법2
- 내가 새로 추가한 볼륨을 확인할 수 있다.
3.4 파일시스템 확인 및 포맷하기
- /dev : 단순히 외부 디바이스, 하드를 모아둔 곳이다. 하드(EBS 볼륨)를 리눅스에 연결했다고 해서 바로 바로 사용할 순 없다.
- 이를 파일시스템으로 포맷해줘야 사용할 수 있게 된다.
1) 파일 시스템 이란?
- 저장장치에 파일을 어떻게 쓰고, 관리하고, 찾고, 읽을 것인지에 대한 규칙.
2) 파일 시스템의 종류
- Linux : ext, ext2, ext3, ext4, xfs
- Windows : FAT12, FAT16, FAT32, exFAT, NTFS
- Mac : HFS, HFS+
3) 파일 시스템 존재여부 확인 및 루트볼륨 파일시스템 확인
3.1) 파일시스템 존재 여부 확인
file -s <장치명>
- data라고 나타난다면 파일시스템이 존재하지 않는 것이다.
3.2) 루트볼륨 파일시스템 확인
df -hT
- 우분투를 설치 했기 떄문에 당연한 얘기지만, Linux, ext4 임을 확인할 수 있다.
3.3) 포맷하기
mkfs -t <볼륨타입> <볼륨장치명>
- 나의 경우 root 볼륨타입인 ext4로 포맷
- 정상적으로 포맷 되었는지 확인 해보자. 파일시스템이 생성되어있음을 확인할 수 있다.
3.5 마운트 하기
- 마운트란 보조기억장치(하드디스크, usb 등)을 디렉터리로서 사용할 수 있게 해주는 행위 이다.
1) 마운트 지점 디렉토리 생성
- window의 D:\ 과 유사하게
신규 디바이스(EBS)를 OS(EC2)에서 사용자가 직접 이용할수 있게, 연결시켜줄 디렉터리를 만든다.
- 나의 경우 "xvdf"로 생성하였다.
mkdir /xvdf
2) 마운트 하기
- blkid 명령어를 통해 UUID와 TYPE을 확인하여 마운트 할 수 있지만, 조금더 가시적인 방법으로 마운트 해보자.
- 내가 추가한 디바이스와 내가 생성한 디렉토리를 통해 마운트. 이후 확인하면 정상적으로 볼륨이 확인 된다.
mount /dev/xvdf /xvdf
3) 영구 마운트
- 여기까지만 해서는 재시작 시 다시 마운트를 해줘야 한다.
- /etc/fstab에 등록하면 부팅 시 자동으로 마운트 된다. 해당 작업까지 진행해 주자.
- 하기 명령어를 입력하여 전체 마운트
mount -a
3.6 EBS 볼륨 확장 하기
- 예전 EC2를 생성 해 보았을때 용량을 늘릴순 있어도, 줄이는것은 안되는거을 보았었다.
- 볼륨 확장은 가능하니 해당 방법도 알아보자.
- "볼륨" > "확장할 볼륨 체크" > "볼륨 수정"
- 원하는 크기로 변경
- 어느정도 시간이 걸린 후에 "사용 중"으로 뜬다.
※ AWS 콘솔에서 크기를 수정했다고 해서, EC2 인스턴스에서 자동으로 볼륨 크기가 확장되지 않는다.
- 나의 경우 EX4 볼륨 유형이었기 때문에 다음 명령어를 입력 한다.
resize2fs {장치명}
- 혹시 xf4의 볼륨 유형을 선택한 경우 다음 명령어를 수행 한다.
$ sudo xfs_growfs -d {마운트 위치}
- df -hT 를 통해 정상적으로 크기가 확장된 것을 확인할 수 있다.
- 최종적으로 동잃나 EC2 인스턴스에 2개의 볼륨이 장착 되어있는 것을 볼 수 있다.
- 실습은 다 끝났지만 마지막으로 한가지만 정리 하도록 하자.
4. EBS와 Instance Storage
- EC2 인스턴스의 저장 타입은 대표적으로 두가지가 있다.
1) EBS 기반
- 앞서 계속 설명한 EBS이며, EC2와 네트워크로 연결된다. (그렇기 때문에 상대적으로 느리다.)
2) 인스턴스 저장 기반 (Instance Storage)
- EC2안에 storage가 들어 있다. (네트워크 연결되는 형식이 아니기 때문에 상대적으로 빠름.)
- EC2안에 들어있기 때문에, 인스턴스가 삭제되면 storage도 같이 삭제 된다.
'6. DevOps > AWS 기초편' 카테고리의 다른 글
[AWS] 9. 프리티어 요금 폭탄 방지 및 환불 요청 방법 (2) | 2023.10.06 |
---|---|
[AWS] 8. EFS란?(with EC2에 EFS Volume 추가하기) (0) | 2023.10.01 |
[AWS] 6-3. AWS - S3를 통해 정적 웹 사이트 호스팅 하기(3)(S3로 index.html 호스팅 하기) (0) | 2023.09.25 |
[AWS] 6-2. AWS - AWS Transfer로 FileZilla(+MobaXterm)로 S3 파일 전송하기(1)(AWS Transfer로 Serverless SFTP 구현하기) (0) | 2023.09.15 |
[AWS] 6-1. AWS - S3 버킷 생성 및 파일 업로드 하기 (0) | 2023.09.09 |
당신이 좋아할만한 콘텐츠
소중한 공감 감사합니다