본문 바로가기
aws

AWS storage type

by 초특급하품 2020. 3. 31.

스토리지 종류는 크게 3가지로 각 종류마다 aws에서 제공하는 service들이 있다. 단순히 파일을 저장하는 용도에서 더 나아가 어떤 차이가 있고, 어떻게 동작하는지 알아야 스토리지를 활용하는 다른 서비스를 자유자재로 다루는데 도움이 된다.

 

어떤 서비스를 사용하냐에 따라 쉽게 지원되는 스토리지 서비스가 있는 경우가 많기 때문에 고민하는 경우가 적을 수 있겠지만, 각 종류마다 차이를 알면 더 깊게 가용성 / 보안 / 확장성 / IOPS / 비용 등의 특징도 이해할 수 있을 것이다.

 

Block storage

원시 스토리지로 ssd/hdd 종류가 있고, 각 종류마다 성능을 선택한다.

EC2 Instance Store

  • ec2 인스턴스에 포함된 디스크로 매우 좋은 IOPS 성능을 가진다.
  • ec2를 reboot해도 유지되지만 stop/start는 ec2 인스턴스가 다른 host에서 뜰 수 있기 때문에 사라진다.

EBS

  • ec2와 네트워크로 연결되어 사용되기 때문에 ec2가 삭제가 되어도 EBS 볼륨은 삭제되지 않는다.
  • 볼륨 생성 후 인스턴스에 연결하고 os에서 지원하는 파일 시스템으로 포맷 후 마운트 해서 사용한다.
$ sudo mkfs -t ex4t {device_name}
$ sudo file -s {device_name} // 파일시스템 확인
$ sudo mount {device_name} {mount_point}

 

  • multi attach 기능이 있지만 같은 az에 있어야 하는 등 여러 제약 조건이 있다.
    • snapshot을 생성하고 이 snapshot을 가지고 다른 az에 ebs를 생성하는 방법으로 옮길 수 있다.
  • snapshot은 증분 방식으로 관리되어 s3에 저장된다.

 

 

File storage

리눅스 기반(EFS)과 윈도우즈 기반(FSx) 두 종류로 나뉜다.

EFS(Elastic File System)

  • fully managed system라서 스토리지뿐만 아니라 하드웨어나 인프라를 고민 안 해도 되고 사용한 만큼 과금한다.
  • EBS와 달리 multi az를 지원하고 network를 타기 때문에 security group으로 제어한다.
  • throughput과 IOPS는 저장 용량에 비례하기 때문에 이 용도에 맞지 않다면 provisioned 모드를 사용해야 한다.
  • lifecycle을 통해 잘 접근하지 않는 파일은 자동으로 EFS IA(Infrequently accessed)로 옮겨 저렴하게 이용할 수 있다.
  • EFS dns 이름으로 mount 해서 여러 인스턴스에서 동시에 사용할 수 있다.

Block storage와 마찬가지로 File storage도 mount 하면 내 로컬의 파일 시스템처럼 사용할 수 있다.

FSx

Window용과 Lustre(Linux + cluster) 용이 있다. window용은 window 서버에서 사용하고, Lustre는 linux에서 대량의 데이터를 고성능으로 처리해야 할 때 사용한다.

 

Object storage (s3)

s3(Simple Storage Service)로 불리며 고가용성과 확장성을 대표하는 aws cloud 스토리지 서비스로 매우 많은 aws 서비스가 s3를 사용한다. 기본 사용 방법은 리전 단위로 s3 버킷을 만들고 object를 업로드하면 된다.

IAM, ACL, presigned 등으로 접근 보안을 제어하며 내구성과 가용성에 따라 (+가격) 여러 종류가 있다.

 

Lifecycle

Standard > Intelligent-Tiering > Standard IA > One Zone IA > Glacier > Glacier deep archive

EFS와 마찬가지로 lifecycle로 위 클래스를 유동적으로 적용시킬 수 있다.

 

Security

s3에 접근할 수 있는 권한을 관리한다.

  • IAM
    user의 IAM 권한을 가지고 검사할 수 있다.
  • Bucket
    JSON으로 bucket마다 접근 권한을 action, effect, priciple 등의 속성으로 설정한다.

Versioning

bucket 단위로 versioning을 활성화시키면 같은 key의 object를 수정할 때마다 이력이 기록된다. 삭제를 해도 삭제 마크했다는 기록이 versioning 되기 때문에 다시 복구할 수 있다.

 

Encryption

s3에 저장할 때 여러 암호화 방법을 지원한다.

  • SSE-S3 (server side)
    aws s3가 관리하는 키를 사용해서 암호화한다.
  • SSE-KMS (server side)
    aws KMS가 관리하는 키를 사용해서 암호화한다. KMS의 장점을 활용할 수 있다.
  • SSE-C (server side)
    클라이언트에서 암호화에 사용할 키를 같이 보내고 s3에서 암호화한다. 
  • Client side
    client에서 encryption SDK를 사용해서 직접 암호화해서 업로드하고, 다운로드한 후 복호화한다.

'aws' 카테고리의 다른 글

AWS IAM 보안 정책  (0) 2020.04.07
DNS 과정과 route 53 사용법  (0) 2020.04.04
Security Group vs Network ACL 정리  (0) 2020.04.02
Amazon Kinesis Stream 개념  (0) 2019.12.12
AWS VPC(Virtual Private Cloud) 구성  (0) 2019.10.24

댓글