프로그래밍/AWS Solutions Architect
AWS SAA - EC2 Instance Storage
병인
2022. 5. 12. 14:55
EBS Volume
- EBS (Elastic Block Store) Volume은 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브
- EBS 볼륨을 사용하면 인스턴스가 종료(termination)된 후에도 데이터를 지속할 수 있다.
- 인스턴스를 재 생성하고 이전 EBS 볼륨을 마운트하면 데이터를 다시 받을 수 있다.
- CCP 레벨의 EBS 볼륨은 한 번에 하나의 인스턴스에만 마운트할 수 있다.
- CCP 레벨 : 하나의 EBS는 하나의 EC2 인스턴스에만 마운트 가능
- Associate 레벨 : 일부 EBS 다중 연결
- EBS볼륨을 생성할 때는 특정 가용 영역에서만 가능하다.
- 예를 들어 ap-northeast-2에서 생성하면 ap-northeast-4에는 연결이 불가능하다.
- 네트워크 USB 스틱이라고 생각하면 된다.
- 네트워크 드라이브이고 물리적 드라이브가 아니다.
- 인스턴스와 EBS 볼륨이 서로 통신을 하기 위해서는 네트워크를 필요로 한다.
- 컴퓨터가 다른 서버에 도달할 때 지연이 생긴다.
- EC2 인스턴스에서 분리될 수 있고 매우 빠르게 다른 인스턴스로 연결될 수 있다.
- 대체 작동 등의 경우에 굉장히 유용하다.
- 스냅샷을 이용하면 다른 가용 영역으로도 볼륨을 옮길 수 있다.
- 원하는 양의 GB 및 IOPS(초당 전송 수 단위)를 미리 지정해야 한다.
- EC2 인스턴스를 통해 EBS 볼륨을 생성하는 경우 종료 시 삭제(Delete on Termination) 라고 하는 속성이 있다.
EBS Snapshots
- 언제든 원하는 시점에 EBS 볼륨을 가지고 와서 백업이라고 불리기도 하는 스냅샷(Snapshot)을 생성할 수 있다.
- 나중에 EBS 볼륨을 삭제하더라도 해당 시점에 대한 백업으로 복원할 수 있다.
- 가용 영역(AZ) 혹은 리전(Region)에 걸친 스냅샷을 복사할 수 있기 때문이다.
- AWS의 다른 리전에 데이터를 전송하여 글로벌 인프라를 활용한다
AMI
- AMI(Amazon Machine Image)는 사용자 지정(customization) EC2 인스턴스이다.
- 각자의 소프트웨어 구성에 대해 운영 체제를 정의 및 설정할 수 있다.
- 모니터링 도구를 설정할 수 있다.
- 자체적으로 AMI를 생성하면 부팅과 구성에 시간이 단축된다.
- 특정 리전에 맞도록 구축함으로써 원하는 리전에 복사해 놓거나 AWS 글로벌 인프라를 활용할 수 있다.
AMI Process (from an EC2 instance)
- EC2를 인스턴스를 시작하고 이를 사용자 지정으로 바꾸어 준다.
- 인스턴스를 중지시켜 데이터 무결성을 확보한다.
- AMI를 구축한다.
- EBS 스냅샷이 생성된다.
- 다른 AMI에서 인스턴스를 실행할 수 있다.
EC2 Instance Store
- EC2 볼륨은 네트워크 드라이브라 성능 자체는 뛰어나지만 "제한된" 성능을 가지고 있다.
- 만약 더 높은 성능의 하드웨어 디스크를 사용하려면 EC2 Instance Store를 사용하면 된다.
- I/O 성능 향상을 위해 활용할 수 있다.
- EC2 인스턴스, 즉 인스턴스 스토어를 중지 또는 종료하면 해당 스토리지 또한 손실된다.
- 임시 스토리지라고도 한다.
- 장기적으로 데이터를 보관할 만한 장소가 될 수 없다.
- 사용하기 좋은 곳
- 버퍼, 캐시, 스크래치 데이터, 임시 콘텐츠 등
- 장기 스토리지는 EBS가 적합하다.
- EC2 인스턴스의 기본 서버에 장애가 발생할 시에는 해당 EC2 인스턴스가 연결된 하드웨어에도 장애가 발생하므로 데이터 손실에 대한 위험이 존재한다.
- 데이터를 백업 혹은 복제를 해둬야 한다.
EBS Volume Type
- 종류
- gp2 / gp3 (SSD) : 범용 SSD 볼륨으로 다양한 워크로드에 대해 가겨과 성능의 절충안이 되어 준다.
- io1 / io2 (SSD) : 최고 성능을 자랑하는 SSD 볼륨으로 미션 크리티컬이자 지연 시간이 낮고 대용량의 워크로드에 쓰인다.
- st1 (HDD) : 저비용의 HDD 볼륨으로 잦은 접근과 처리량이 많은 워크로드에 쓰인다.
- sc1 (HDD) : 가장 비용이 적게 드는 HDD 볼륨으로 접근 빈도가 낮은 워크로드를 위해 설계됨
- EBS 볼륨의 종류를 정하는 조건은 크기, 처리량, IOPS (초당 I/O 작업 수)이 있다.
- EC2 인스턴스에는 gp2/gp3, io1/io2만이 부팅 볼륨으로 사용될 수 있다.
- 루트 OS가 실행될 위치
- 사용 예
- 범용 스토리지(gp2)
- 짧은 지연 시간을 자랑하며 효율적인 비용의 스토리지
- 시스템 부팅 볼륨에서 가상 데스크톱, 개발, 테스트 환경에서 사용할 수 있다.
- 크기는 1GB에서 16TB까지 다양하다.
- gp3
- 기본으로 3,000 IOPS와 125MB/s 처리량을 제공
- IOPS는 최대 16,000, 처리량은 1000MB/s까지 증가시킬 수 있다.
- gp2
- 최대 IOPS가 3,000이다.
- 볼륨과 IOPS가 연결되어 있다.
- IOPS가 증가할 때면 즉, 볼륨의 GB 수를 늘릴 때에 세 배 더 증가하고 최대 16,000 IOPS 까지 증가할 수 있다.
- 가령 5,334 GB라고 한다면 최대 용량인 16,000 IOPS를 초과하는 상황이 발생한다.
- gp2/gp3가 비용 효과적인 스토리지이다.
- gp3에서는 IOPS와 처리량을 독자적으로 설정할 수 있다.
- gp2에서는 그 둘이 연결되어 있다.
- Provisioned IOPS(PIOPS) SSD
- IOPS 성능을 유지할 필요가 있는 주요 비즈니스 애플리케이션, 16,000 IOPS 이상을 요하는 애플리케이션에 적합하다.
- 일반적으로 데이터베이스 워크로드에 적합하다.
- 스토리지 성능과 일관성에 아주 민감하기 때문
- io1/io2 (4GB ~ 16TB)
- 최대 IOPS
- Nitro EC2 인스턴스에서 64,000 IOPS 까지 가능
- Nitro EC2 인스턴스가 아닌 경우 32,000 IOPS 까지 가능
- 스토리지 크기와 상관 없이 PIOPS를 증가시킬 수 있다.
- 최대 IOPS
- io2 Block Express (4GB ~ 64TB)
- 지연 시간이 ms 미만
- IOPS 대 GB 비율이 1000:1 일때 최대 256,000 IOPS를 자랑한다.
- EBS 다중 연결 지원
- Hard Disk Drives (HDD)
- 부팅 볼륨일 수 없다.
- 125MB ~ 16TB
- 처리량 최적화 HDD (st1)
- 빅 데이터, 데이터 웨어하우징, 로그 처리에 적합
- 최대 처리량 : 500 MB/s
- 최대 IOPS : 500
- 콜드 HDD (sc1)
- 아카이브 데이터용
- 접근 빈도가 낮은 데이터에 적합
- 최저 비용으로 데이터를 저장할 때 사용
- 최대 처리량 : 250 MB/s
- 최대 IOPS : 250
- 범용 스토리지(gp2)
EBS Multi-Attach - io1 / io2 제품군
- 동일한 EBS 볼륨을 동일한 가용 영역 내의 여러 EC2 인스턴스에 연결할 수 있다.
- 한 번에 총 3개의 EC2 인스턴스에 연결할 수 있다.
- 사용 예
- 클러스터 된 Linux 애플리케이션에서 애플리케이션의 가용성을 높여야 하는 경우가 있을 때 (ex. Teradata)
- 동일한 볼륨에서의 동시 쓰기 작업을 관리할 수 있어야 할 때
- 이를 위해서는 반드시 클러스터 인식 파일 시스템을 사용해야 한다.
- XFS, EX4 등은 사용할 수 없다.
EBS Encryption(암호화)
- 암호화된 EBS 볼륨을 생성하면 생기는 것
- 볼륨 내에서 암호화된 저장 데이터를 가져온다.
- 인스턴스와 볼륨 간에 전송되는 모든 데이터는 암호화된다.
- 모든 스냅샷이 암호화된다.
- 스냅샷에서 생성된 모든 볼륨은 암호화된다.
- 암/복호화 매커니즘이 투명하게 처리되므로 사용자가 할 일이 없다.
- 모든 작업은 뒷단에서 EC2와 EBS에서 처리된다.
- 암호화는 지연 시간에 미치는 영향도 거의 없다.
- EBS 암호화는 KMS (AES-256) 방식으로 진행된다.
- 암호화되지 않은 스냅샷을 복사할 때 암호화를 활성화한다.
암호화 되지 않은 EBS 볼륨을 암호화 하는 방법
- 볼륨의 EBS 스냅샷을 생성한다.
- 복사 함수로 EBS 스냅샷을 암호화한다.
- 스냅샷에서 새 EBS 볼륨을 생성하면 해당 볼륨도 암호화되게 된다.
- 암호화 된 볼륨을 원본 인스턴스에 연결할 수 있다.
EFS(Elastic File System)
- 다양한 가용 영역에 걸쳐 다수의 EC2 인스턴스에 마운트 할 수 있는 관리형 NFS 혹은 네트워크 파일 시스템이다.
- 다중 AZ에서 동작한다.
- EBS : 단일 가용 영역에만 존재
- EFS : 다중 가용 영역에 존재
- 가용성이 높다, 확장성이 높다, 비용이 많이 든다(gp2에 비해 3배)
- 사용한 만큼만 낸다.
- 너무 많은 데이터를 저장하지 않는 경우 EBS보다 EFS가 저렴할 수 있다.
- 사용 예
- 콘텐츠 관리, 웹 서비스, 데이터 공유, Wordpress에서 사용
- NFSv4.1 프로토콜이 사용된다.
- 보안 그룹(security group)을 이용해서 EFS에 접근해야 한다.
- Windows가 아닌 Linux 기반 AMI에서만 작동한다.
- KMS 키를 사용하여 EFS 유휴 시 암호화를 설정할 수 있다.
- POSIX 파일 시스템(Linux)에서만 사용 가능하며 표준 파일 API를 갖는다.
- 파일 시스템은 자동으로 확장되며 쓰는 만큼 비용을 내는 방식으로 용량에 구애받지 않고 사용이 가능하다.
EFS 옵션
- EFS Scale
- 수천 명의 동시 클라이언트, 10GB/s의 처리량
- 파일 시스템이 페타바이트(PB) 정도까지 자동으로 확장될 수 있다.
- Performance mode(EFS가 생성될 때 설정 가능)
- 범용 성능 모드(default)
- 웹 서버 운영이나 지연 시간에 민감한 파일이 있는 경우 (ex. 웹서버, CMS 등)
- Max I/O 성능 모드
- 대규모 워크로드를 처리하는 경우
- 지연 시간이 길다.
- 처리량이 향상된다.
- 병렬 처리 성능이 높다.
- 빅 데이터나 미디어 처리에 뛰어난 성능을 보인다.
- 범용 성능 모드(default)
- Throughput 모드
- Bursting(버스팅) 처리량 모드
- 1TB의 스토리지에 대해 초당 50MB를 저장할 수 있다.(초당 100MB까지 확장이 가능하다.)
- Provisioned 모드
- 스토리지 크기와 상관없이 처리량을 설정할 수 있다.(1TB 스토리지에 1GB/S 처리량 가능)
- 파일 시스템 자체는 작으나 높은 처리량을 요구할 때 사용한다.
- Bursting(버스팅) 처리량 모드
- Storage Tiers
- 파일에 대한 수명 주기 관리 기능
- N일(기본 30일)이 지난 후 새로운 계층으로 파일을 이동시키는 기능
- 표준
- 접근 빈도가 높은 파일에 대해 표준으로 설정되어 있다.
- 접근 빈도가 낮음(EFS-IA)
- 저비용의 빈도가 낮은 접근에 대한 티어
- 해당 파일을 가져올 때마다 관련된 비용이 발생한다.
EBS VS EFS
EBS
- 한 번에 하나의 인스턴스에만 열결이 가능하다.
- 특정 가용 영역에 한정된다.
- gp2
- 디스크 크기가 증가하면 I/O도 함께 증가한다.
- io1
- 디스크 크기와 관계 없이 I/O를 증가 시킬 수 있다.
- 중요한 데이터베이스를 실행할 때 좋은 방법이다.
- 다른 가용 영역으로 옮길 때
- 스냅샷을 찍는다.
- 다른 AZ에서 그 스냅샷을 복원시킨다.
- EBS의 스냅샷이나 백업을 만들 때에는 EBS 볼륨 내의 I/O를 전부 사용하게 되니 인스턴스가 EBS를 사용 중이 아닐 때에만 실행해야 한다.
- EC2 인스턴스가 종료되면 인스턴스 내의 루트 EBS 볼륨도 기본적으로 종료된다.(비활성화 가능)
- EBS 볼륨 크기에 따라 비용이 청구된다.
EFS
- 여러 개의 가용 영역에 걸쳐 무수히 많은 인스턴스들에 연결될 수 있다.
- 웹 사이트 파일을 공유할 때 사용한다. (WordPress)
- 오직 리눅스 인스턴스에서만 가능하다. (POSIX)
- EFS는 EBS보다 훨씬 비싸다 (약 3배 정도)
- EFS-IA
- 제품 수명 정책을 사용하면 비용을 절약할 수 있다.
- 사용한 만큼 비용이 청구된다.
EFS VS EBS VS Instance Store
- EFS는 다수의 인스턴스에 걸쳐 연결해야 하는 네트워크 파일 시스템에 적합하다.
- EBS는 네트워크 볼륨을 한 번에 하나의 인스턴스에 연결할 수 있고 특정 AZ 내로 한정된다.
- Instance Store는 EC2 인스턴스에 I/O를 최대로 사용하게끔 해주지만, 인스턴스가 망가지면 함께 망가지는 임시 드라이브이다.