AWS - EBS, EBS Snapshot, AMI

jsbak·2023년 4월 25일
0

Cloud

목록 보기
34/59

EBS(; Elastic Block Store)

인스턴스에 사용할 수 있는 블록 수준 스토리지 볼륨을 제공합니다, EBS 볼륨은
형식이 지정되지 않은 원시 블록 디바이스처럼 동작합니다. 이러한 볼륨을 인스턴
스에 디바이스로 마운트할 수 있습니다. 동일한 인스턴스에 여러 볼륨을 탑재하고
한 번에 여러 인스턴스에 볼륨을 탑재할 수 있습니다. 이러한 볼륨 위에 파일 시스
템을 생성하거나 하드 드라이브와 같은 블록 디바이스를 사용하는 것처럼 볼륨을
사용할 수 있습니다. 인스턴스에 연결된 볼륨의 구성을 동적으로 변경할 수 있습니
다.

  • 인스턴스용 영구 블록 스토리지로 데이터가 유실되지 않으며 외장 드라이브와 유사한 EC2 인스턴스에 연결되는 사용자 구성 크기의 드라이브입니다.
  • 한번에 하나의 EC2 인스턴스에만 Attach 가능하며 가용 영역 단위 의 서비스입니다.
    • 최근에는 EBS를 여러 EC2에 연결 가능하다곤 나와 있음.
      • 그럴바엔 EFS 를 쓰지...

블록 스토리지

  • 파일을 고유한 주소를 가진 블록이라는 고정 크기의 데이터 청크로 파일을 분할하여 저장하는 스토리지
  • 각 블록은 주소 지정이 가능하므로 블록을 효율적으로 검색 가능하다. (액세스 용이)
  • 변경이 필요한 경우 변경이 필요한 부분이 포함된 블록, 즉 파일 조각을 변경하기만 하면 된다.
  • 빠르고 대역폭이 적다.
  • 블록 스토리지의 사용처
    • 대기 시간이 짧은 작업에 최적화되어 있으므로 데이터베이스 또는 전사적 자원 관리(ERP) 시스템
    • 고성능 엔터프라이즈 워크로드

Amazon EBS 볼륨 크기 조정

  • 최대 크기 제한을 초과하지 않는 한 볼륨 크기를 늘립니다.
  • 최대 16TB
  • 여러 볼륨을 단일 Amazon EC2 인스턴스에 연결

EBS 볼륨의 기능

  • 가용 영역 단위의 서비스
    • 특정 가용 영역에서 EBS 볼륨을 생성한 다음 동일한 가용 영역에 있는 인스턴스에 연결
    • 가용 영역 외부에 제공하기 위해서는 스냅샷을 생성하고 이를 통해 새 볼륨을 생성해야 한다.
  • 범용 SSD, 프로비저닝된 IOPS SSD, 처리량 최적화 HDD 및 콜드 HDD 등의 불륨 유형을 제공 (; IOPS-input/output operations per second)
  • 각 볼륨 유형에 대한 성능 및 사용 사례 요약
    • 범용 SSD 볼륨(gp2gp3)은 다양한 트랜잭션 워크로드를 위한 가격과 성능의 균형을 유지
      • 부트 볼룜, 중간 규모의 단일 인스턴스 데이터베이스, 개발 및 테스트 환경 과 같은 사용 사례에 적합
    • 프로비저닝된 IOPS SSD(io1io2)은 스토리지 성능과 일관성에 민감한 I/O 집약적 워크로드의 요구 사항을 충족하도록 설계
      • 볼륨을 생성할 때 지정하는 일관된 IOPS 속도를 제공, 따라서 예측 가능한 방식으로 인스턴스당 수만 IOPS까지 확장 가능
      • io2 볼륨은 최고 수준의 볼륨 내구성을 제공
    • 처리량 최적화 HDD 볼륨(st1)은 IOPS가 아닌 처리량으로 성능을 정의하는 저비용 마그네틱 스토리지를 제공
      • Amazon EMR, ETL, 데이터 웨어하우스, 로그 처리 같은 대용량 순차 워크로드에 적합
    • 콜드 HDD 볼륨(sc1)은 IOPS가 아닌 처리량으로 성능을 정의하는 저비용 마그네틱 스토리지를 제공
      • 순차적인 대용량 콜드 데이터 워크로드에 적합
      • 데이터에 자주 액세스할 필요가 없고 비용을 절약해야 한다면 저렴한 블록 스토리지로 이러한 볼륨이 적합
  • 암호화된 볼륨 - 규제/감사 데이터 및 애플리케이션에 대한 다양한 저장 시 데이터 암호화 요구 사항을 충족 가능
  • 스냅샷 예약 가능

Amazon EBS 볼륨 유형

  • Amazon EBS 볼륨 유형

    • SSD 볼륨 : 작은 I/O 크기의 읽기/쓰기 작업을 자주 처리하며 기준 성능 속성은 IOPS인 트랜잭션 워크로드에 최적화
    • HDD 볼륨 : 기준 성능 속성이 스루풋인 대규모 스트리밍 워크로드에 최적화
  • HDD와 SSD 비교

    특징HDD (Hard Disk Drive)SSD (Solid State Drive)
    구조회전하는 디스크와 자기 저장 매체를 사용NAND 플래시 메모리를 사용
    부품 유무기계적인 부품이 존재(회전하는 디스크, 독립적인 팔)기계적인 부품 없음(전기적으로 쓰기 및 읽기)
    속도상대적으로 느림(디스크 회전 및 팔 이동에 의한 지연)빠름(데이터에 직접 액세스하기 때문에 읽기/쓰기가 빠름
    내구성 및 신뢰성기계적 부품으로 인해 더 취약함내구성이 우수하며, 충격이나 진동에 강하며 신뢰성이 높음
    소음 및 발열회전하는 디스크 및 동작하는 부품으로 인한 소음 발생소음이 적고 발열이 낮음
    전력 소모상대적으로 높음(디스크 회전 및 팔 이동에 의한 에너지 소비)상대적으로 낮음(활성 및 비활성 상태에서의 소비가 낮음)
    용량 대비 비용용량당 비용이 상대적으로 낮음용량당 비용이 높으나 가격은 점차 하락중
    용량 확장성상대적으로 용이함(새로운 디스크 추가 가능)물리적인 크기나 형태가 다양하여 용이함
    적합한 용도대용량 저장이 필요하며 상대적인 속도에 대한 용납이 가능한 경우고성능, 빠른 응답 시간이 필요한 경우
  • HDD(Hard Disk Drive) 작동 원리:

    1. 디스크 회전: HDD는 하나 이상의 원형 디스크(플래터)로 구성되어 있습니다. 이 디스크는 고속으로 회전하며 데이터가 기록되고 읽힙니다.
    2. 헤드 이동: 각 디스크 표면에는 자기적으로 데이터를 기록할 수 있는 헤드가 있습니다. 이 헤드는 팔에 부착되어 디스크 표면을 따라 움직이면서 데이터를 읽거나 쓰게 됩니다. 헤드는 정확한 위치에 배치돼야 하며, 디스크와의 거리도 매우 작아야 합니다.
    3. 자기 저장: 데이터는 헤드가 디스크 표면에 자기적으로 기록됩니다. 디스크의 각 섹터에는 자기적인 패턴이 있어서 이를 이용해 데이터를 저장하고 읽습니다.
    4. 회전 디스크에 따른 읽기 및 쓰기: 특정 위치에 대한 데이터에 액세스 하기 위해 디스크를 회전 시키고 헤드를 움직여서 원하는 섹터에 도달합니다. 데이터를 읽거나 쓸 때는 헤드가 디스크와 매우 가까이 위치하여 상호 작용하게 됩니다.
  • SSD(Solid State Drive) 작동 원리:

    1. NAND 플래시 메모리: SSD는 NAND 플래시 메모리를 사용합니다. 이 메모리는 플래시 셀로 구성돼 있고, 각 셀은 비트를 저장할 수 있는 작은 단위 입니다.
    2. 플래시 셀의 상태: NAND 플래시 메모리의 프랠 셀은 전하의 양에 따라 여러 상태를 가집니다. 이를 이용하여 비트를 저장합니다. 일반적으로는 0 또는 1의 상태를 나타내며, 이들의 조합으로 데이터를 표현합니다.
    3. 읽기 및 쓰기 작업: SSD에서는 데이터를 읽거나 쓸 때 전기적인 신호를 사용합니다. 특히, 전기를 흘려서 상태를 변경하거나 상태를 읽어와서 데이터를 액세스합니다.
    4. 에너지 소모: SSD는 데이터를 읽고 쓸 때 메모리 셀에 전기를 흘려 상태를 변경하므로, 전력 소모가 발생합니다. 그러나 HDD에 비해 상대적으로 적은 전력을 필요로 합니다.

EBS 생성 및 추가

EBS 볼륨 생성

  • EC2 메뉴 - Elastic Block Store - 볼륨 - 볼륨 생성 클릭

생성한 볼륨 연결

  • 생성한 볼륨 선택 - 우클릭(or 작업) - 볼륨 연결 클릭

  • 인스턴스로 이동
## 불륨 마운트
# 포멧
$ sudo mkfs -t ext4 /dev/xvdf

# 마운트
$ sudo mount /dev/xvdf /mnt

# 마운트 결과 확인
$ df -h
  • 마운트 결과 확인
  • 마운트/언마운트 과정 명령어
## 볼륨 추가 확인
$ lsblk

## 불륨 마운트
# 포멧
$ sudo mkfs -t ext4 /dev/xvdf

## 마운트
$ sudo mount /dev/xvdf /mnt

## 마운트 결과 확인
$ df -h

## 볼륨 언마운트
$ sudo umount /mnt

(루트) 볼륨 확장

  • 볼륨 축소(❌) 불가
  • 볼륨 - 볼륨 선택 - 우클릭(or 작업) - 볼륨 수정 클릭
  • 볼륨 크기 8 -> 10

  • 볼륨 추가 내역 확인
  • 인스턴스에서 볼륨 확인
    • lsblk, 루트 볼륨이 10GB 늘었으나 파티션이 8GB 인것으로 확인
  • 볼륨 늘리기
    • 볼륨이름 과 파티션 번호 지정
      sudo growpart /dev/xvda 1 - xvda1 파티션의 용량을 확장, 주의할 점은, 명령어 입력시 xvda 과 1 사이에 한 칸의 공백이 반드시 필요 ❗
  • 마운트 된 정보 수정
    • sudo xfs_growfs -d /
    • 마운트한 최상위 폴더/의 xfs 파일 형식의 grow 파일 시스템의 정보xfs_growfs를 적용 -d
  • 루트 볼륨 확장 명령어
lsblk
## 디스크의 파티션 1번에 추가 용량 적용
sudo growpart /dev/xvda 1
lsblk
## 최상위 디스크 적용하기
sudo xfs_growfs -d /
## -T 옵션은 디스크 포멧 타입 확인 가능
df -Th 

EBS Snapshot

  • EBS 볼륨의 특정 시점 스냅샷을 생성하여 새 볼륨이나 데이터 백업의 기준으로 사용 가능 ⭕
  • 볼륨의 스냅샷이 주기적으로 생성되는 경우 스냅샷은 증분식에 이어서 새 스냅샷은 마지막 스냅샷 이후 변경된 블록만 저장
  • 연결되어 사용 중인 볼륨의 스냅샷을 만들기 가능 ⭕
    • 스냅샷은 snapshot 명령을 실행할 때 Amazon EBS 볼륨에 기록된 데이터만 캡처
    • 이때 애플리케이션이나 운영 체제에 의해 캐시된 데이터가 제외될 가능성 ⭕

EBS Snapshot의 목적

  • 볼륨
  • 이미지: 루트 볼륨을 이미지로 만드는 경우가 많다.
    • EC2로 만들기 위함, 루트 볼륨을 이미지 스냅샷으로 찍는다.
    • 이미지는 스냅샷과 함께 간다.
  • 복사(백업)
  • 스냅샷 생성 - 스냅샷을 통한 이미지 생성 - (AMI 복사) - 이미지를 통해 EC2 생성

볼륨을 가지고 스냅샷 생성

  • EC2 탐색 - Elastic Block Store - 볼륨 - 우클릭 - 스냅샷 생성 클릭
  • 태그 지정
  • 생성 결과 - 스냅샷가서 확인

스냅샷에서 이미지 생성

  • 스냅샷 - 우클릭 - 스냅샷에서 이미지 생성 클릭
  • 이름 지정 후 이미지 생성

  • AMI에서 결과 확인

AMI 이미지 복사

  • 도쿄로 리전으로 이미지 복사
    • AMI는 스냅샷과 항상 같이 이동
    • 데이터 트랜스퍼 비용 발생 ❗
    • 이미지 뿐만 아니라 스냅샷 10GB 짜리가 같이 발송되기 때문에 (서울에서) 아웃바운드에 대한 비용 발생
  • AMI - 우클릭 또는 작업 - AMI 복사 클릭
  • 리전 지정 후 AMI 복사 클릭
  • 도쿄 리전에서 확인
    • AMI
    • 스냅샷

AMI로 인스턴스 시작

  • EC2 메뉴 - 이미지 - AMI - AMI 선택 - AMI로 인스턴스 시작 클릭
  • 이름 지정 및 AMI 확인
  • 키페어 및 인스턴스 유형
  • 네트워크 설정
  • 스토리지 10 GB 확인 후 만들기
  • 생성 확인

  • NS 서버 설정 후 확인

스냅샷 제거 - ✅ AMI 제거 선행 필요

  • ❗AMI 제거 후 스냅샷 제거
  • AMI 등록 취소(제거)

  • 스냅샷 삭제

AMI

  • Amazon Machine Image
  • 인스턴스를 시작하는 데 필요한 정보를 제공하는 AWS에서 지원되고 유지 관리되는 이미지
  • AMI 의 구성요소
    • 1개 이상의 Amazon Elastic Block Store(Amazon EBS) 스냅샷 또는, 인스턴스 스토어 기반 AMI의 경우, 인스턴스의 루트 볼륨에 대한 템플릿(예: 운영 체제, 애플리케이션 서버, 애플리케이션)
    • AMI를 사용하여 인스턴스를 시작할 수 있는 AWS 계정을 제어하는 시작 권한
    • 시작될 때 인스턴스에 연결할 볼륨을 지정하는 블록 디바이스 매핑

EC2 에서 AMI 생성

  • 인스턴스에서 Linux AMI 생성 Docs
  • EC2 인스턴스를 선택하고작업(Actions) - 이미지 및 템플릿(Image and templates) - 이미지 생성(Create Image) 클릭
  • 이미지 이름을 넣고 이미지 생성(Create Image) 을 클릭
    • 재부팅 안 함(No reboot) 옵션을 활성화 할 경우, 인스턴스를 재부팅하지 않고 이미지를 생성합니다. Production 환경의 인스턴스를 백업할 때, 재부팅을 하면 안 되는 경우 반드시 체크해야 합니다. (생성된 이미지의 파일 시스템 무결성을 보장할 수 없습니다.)

생성 결과

  • AMI 등록취소
  • AMI 생성하면 Snapshot이 같이 생성된다.
  • AMI
  • Snapshot

AMI 삭제

  • AMI 삭제후 Snapshot도 삭제해야한다.
  • AMI 삭제 방법 : 작업 - AMI 등록 취소 클릭
  • AMI 등록 취소(Deregister AMI) 클릭
  • Snapshot 제거 방법 - 작업 - 스냅샷 삭제 클릭
  • 삭제 클릭
profile
끄적끄적 쓰는곳

0개의 댓글