AMI 개념 원리

문한성·2023년 6월 24일
0

부트캠프

목록 보기
119/123
post-thumbnail

EC2 데이터 백업

백업 및 복원을 서버를 사용하는 사람들에게는 필수적으로 알아야할 내용이며 백업하는 습관은 의무적으로라도 해야할한만큼 중요한 습관이다.

EC2는 기본적으로 사용을 하면 할 수록 요금이 많이 발생하게 된다. 따라서 절약하기 위해서는 주기적으로 사용하지 않는 EC2를 중지하거나 종료를 해햐한다.

하지만 해당 EC2에 중요한 데이터나 다시 사용할 수도 있는 데이터들이 담겨져 있는 경우가 많다.

이러한 백업 및 복원에 대한 유지관리를 편리하게 할 수 있는 방법이 AMI 이미지를 통해 EC2의 정보를 저장하고 EBS Snapshot을 통해 데이터를 저장하는 방법이 있다.

이번 강의에서는 EBS 스냅샷, AMI에 대해 알아보고, 이를 백업하여 관리하는 방법을 소개해본다.


스냅샷(Snapshot)

스냅샷(Snapshot)은 EBS를 저장하는 효율적인 방법으로서, 특정 시간에 EBS 볼륨 상태의 저장본을 뜻한다.

EBS의 데이터 저장 상태에 대해 사진(백업본)을 찍어둔 개념이라고 이해하면 된다.

그래서 필요시 스냅샷을 통해 특정시간의 저장 데이터에 대한 EBS의 복구가 가능하다.

스냅샷은 OS 와 별개로 데이터만 백업하고 싶은 경우, 생성된 스냅샷을 기반으로 여러 종류의 AMI 를 생성하고 싶은 경우, Amazon DLM 을 활용하여 백업을 자동화하고 스토리지 비용 최적화를 원하는 경우(동일한 볼륨에 대한 스냅샷을 여러번 생성하면 변경된 부분에 대한 데이터만 추가적으로 백업 + 오래된 스냅샷은 자동으로 삭제)에 주로 애용된다.


스냅샷 원리

스냅샷의 가장 큰 특징은 증분식 저장(변화된 부분만 저장) 한다는 점이다.

만일 GIT을 배운 분들이라면 쉽게 이해가 갈것이다. GIT의 스냅샷 원리를 스토리지에 그대로 차용한 것이기 때문이다.

아래 사진과 같이 파란색 블럭, 노란색 블럭, 초록색 블럭 이라는 각기 다른 데이터가 있다고 가정하자.

만일 이 데이터 블럭들의 각 특정시간대 마다 저장 상태에 대해 백업을 한다고 가정하면, 각 시간대 마다 저장용량(파란박스)을 따로따로 추가로 할당해줘야 할 것이다.

하지만 이는 크나큰 용량 낭비로 이어진다.

따라서 보다 효율적인 방식으로, 저장용량 공간 전체를 각 시간대 마다 할당하는게 아닌, 추가된 데이터(변화된 부분)의 크기(용량)만 스냅샷을 하여 저장함으로서, 전체적인 용량을 아낄수 있게 한다.

만약 하드디스크가 16tb면 스냅샷 할때마다 16tb를 매번 만들 순 없으니까 변화한 부분만 찍어두는 것이다.

그래서 맨 처음에는 16tb가 필요하지만 그 다음부터는 100메가가 바뀌었으면 그부분만 찍어 스토리지를 효율적으로 저장한다.

스냅샷을 자주 찍어도 떠도 부담이 크게 되지 않으니, 필요할때마다 자주 스냅샷을 찍는 것을 추천되어진다.

Tip

이 스냅샷 파일들은 보통 S3(파일저장소)에 보관된다.


AMI (Amazon Machine Image)

AMI는 EC2 인스턴스를 실행하기 위한 정보를 모은 단위 이다.

EC2(가상 컴퓨터)를 실행하기 위해서는 CPU 프로세서 타입이라던지 저장공간 용량은 몇인지, 32비트인지 64비트인지, OS는 윈도우인지 리눅스인지, 소프트웨어는 어떤게 설치되었는지 ..등 정보가 필요한데 이러한 세팅 정보(템플릿)를 저장한 단위라고 생각하면 된다.

즉 AMI란 서버에 필요한 운영체제와 다양한 소프트웨어로 구성된 탬플릿이며, 보통 이러한 템플릿을 aws에서는 이미지라고 불린다.

템플릿에는 컴퓨터 OS 환경설정 정보 뿐만 아니라 인스턴스의 EBS에 대한 정보도 모두 포함되어있다.

EBS에 대한 정보라는 것은 EC2 인스턴스가 어떤 EBS 스냅샷과 연결되어있는지에 대한 정보를 말한다.

AMI 백업 방식은, 긴급하게 백업된 인스턴스를 복구해야하는 경우, 인스턴스 설정 등이 복잡해서 설정이 완료된 인스턴스 이미지를 만들고 싶은 경우, Auto Scaling Group 에서 새 인스턴스를 자동으로 생성하기 위해 만드는 경우에 애용된다.

그리고 AMI를 사용하여 현재 상태의 EC2 세팅(템플릿)을 복제해서 다른 계정이나 다른 리전에게 전달도 가능하다.

또한 프로그램 형태로 AMI 배포가 가능해 다른사람이 받아 내 EC2 상태 그대로를 사용할 수 있다.


AMI 구성

  • 1개 이상의 EBS 스냅샷
  • AMI에는 인스턴스가 어떤 EBS 스냅샷과 연결되어있는지에 대한 정보가 포함
  • 인스턴스 저장 인스턴스의 경우 루트 볼륨에 대한 템플릿ex) 운영체제 OS, 애플리케이션 서버
  • 사용 권한 (어떤 AWS 어카운트가 사용할수 있는지)
  • EBS 블록 디바이스 맵핑 (EC2인스턴스를 위한 볼륨 정보 = EBS가 무슨용량으로 몇개 붙는지)

AMI 생성 과정

  1. EBS의 스냅샷을 찍음
  2. 스냅샷에는 OS, 파일, 시작권한 ..등이 들어있음
  3. 스냅샷을 S3에 저장
  4. 스냅샷을 기반으로 AMI를 만듬
  5. AMI을 가지고 EC2를 실행하거나, 다른사람에게 공유하거나 복사 함


AMI 와 Snapshot 의 차이점

기본적으로 EBS 를 백업한다는 점에서는 AMI 와 Snapshot 은 동일하다.

하지만,

AMI 는 EC2 인스턴스에 연결되어 있는 모든 EBS Volume 을 동시에 백업하는 것이라면,

Snapshot 기능은 사용자가 선택한 EBS Volume 하나를 백업한다는 점에서 차이점이 있다.

쉽게 말하면, AMI 이미지 방식은 컴퓨터 하나를 통째로 백업한다고 생각하면 되고, 스냅샷은 하드디스크 내용물만 백업하는 것으로 이해하면 된다. 물론 EC2와 관련된 EBS 여러개를 백업할수도 있다.

또한 AMI 와 Snapshot 을 이용하여 새로운 EC2 인스턴스를 생성할 수 있는데,

AMI 인 경우에는 바로 EC2 인스턴스를 생성할 수 있고,

Snapshot 인 경우는 Snapshot 을 이용해 AMI 를 생성하는 단계를 거쳐야한다는 차이점이 있다.

스냅샷은 EBS의 내용을 백업한 데이터라 직접 바로 인스턴스를 만드는게 불가능 하다.

정리 하자면,

[AMI]

  • EC2에 연결된 전체 볼륨 백업 (EC2 인스턴스에 연결되어있는 OS가 설치된 루트 장치를 포함)
  • 인스턴스가 어떤 EBS 스냅샷과 연결되어있는지에 대한 정보도 포함
  • 긴급하게 백업된 인스턴스를 복구해야하는 경우인스턴스 설정 등이 복잡해서 설정이 완료된 인스턴스 이미지를 만들고 싶은 경우Auto Scaling Group 에서 새 인스턴스를 자동으로 생성하기 위해 만드는 경우

[SnapShot]

  • 특점 시점 백업, 특정 EBS 볼륨 백업
  • snapshot으로부터 ami 생성 가능, 단 이 경우 지정된 snapshot이 root volume으로 지정됨
  • OS 와 별개로 데이터만 백업하고 싶은 경우생성된 스냅샷을 기반으로 여러 종류의 AMI 를 생성하고 싶은 경우

AMI 이미지 생성(백업) & 복원

EC2 AMI 만들기

EC2 인스턴스에서 우클릭 -> 이미지 및 템플릿 -> 이미지 생성 을 누른다.

이미지 생성 버튼을 누르면 AMI가 생성되기 시작한다.

다만 시간이 좀 걸리는 작업이니 여유있게 기다려주자.


AMI로 EC2 복원하기

AMI 이미지를 통해 EC2를 복원하는 방법은 두가지가 있다.

하나는 EC2 인스턴스 생성 메뉴에서 AMI 선택할때 나의 AMI에서 고를수 있고,

아니면 AMI 메뉴에서 우클릭으로 바로 EC2 인스턴스 시작을 할수도 있다.

AMI를 골랐으면, 지금까지 해왔듯이 EC2 생성 절차를 쭉쭉 진행하면, 따로 OS나 프로그램 설치 필요없이 미리 만들어진 컴퓨터를 하나 더 장만하게 되게 된다.


EBS 스냅샷 사용법

스냅샷 만들기


스냅샷으로 EBS 볼륨 만들기

방금 위에서 EBS 볼륨에서 스냅샷을 떳는데 왜 다시 거꾸로 되돌아가는 과정을 소개해 어리둥절 할 것이다.

EBS 볼륨은 한번 생성하면 다른 가용 영역이나 리전으로 이전이 불가능하다. EBS 볼륨을 수정하려해도 용량만 늘릴수있을 뿐이다.

따라서 EBS 볼륨 내용을 그대로 다른 리전에서 사용하고 싶다면, 스냅샷을 생성하고 다시 볼륨을 생성할때 다른 리전으로 등록 해야 하는 우회 방법을 이용해야 한다.

스냅샷으로 다른 AZ(가용 영역)로 볼륨 등록


스냅샷을 다른 리전으로 복사하기



스냅샷으로 AMI 이미지 만들기

위에서 EC2에서 바로 AMI를 만들었듯이, 스냅샷에서도 AMI를 만들수 있다.


EC2 생성할때 스냅샷으로 볼륨 추가하기

스냅샷으로 EBS 볼륨을 만들고 볼륨 연결하기로 EC2에 연결하면 되겠지만,

처음 EC2를 생성할때 스냅샷으로 볼륨을 바로 등록할수 있는 방법도 있어 소개해본다.

EC2 기작 단계 4 : 스토리지 추가 항목까지 오면 여기서 EBS 볼륨을 등록할수 있는데,

새 볼륨을 추가하고 스냅샷 항목에 위에서 만든 스냅샷 설명(Description) 문자열을 넣으면 한방에 스냅샷으로 EBS를 생성하고 EC2에 연결하는 세팅을 할수도 있다.


EBS 스냅샷/AMI 생성 자동화

수명 주기 관리자를 통해 스냅샷 생성을 자동화를 할수도 있다.

예전에는 스냅샷만 수명 주기 등록을 할수있었지만 최근에는 AMI도 지원한다.

![](https://blog.kakaocdn.net/dn/D5NHg/btrzKl3zqNv/Zl3E5ZVpAtvc6BuBDe6kr0/img.png

  • EBS 스냅샷 정책 : 스토리지 볼륨을 백업
  • EBS 지원 AMI 정책 : 백업을 해서 AMI 이미지로 만들기
  • 교차 계정 복사 이벤트 정책 : 백업 AMI 이미지를 다른 AWS 사용자와 공유하는 기능

우리는 EBS를 백업할 예정이기에 EBS 스냅샷 정책을 선택해준다.

수명 주기 정책이 생성되면, 이제 매주 월요일 UTC 시간 9시마다 대상 EBS 볼륨에 대해 스냅샷을 지속적으로 뜰 것이다.

profile
기록하고 공유하려고 노력하는 DevOps 엔지니어

0개의 댓글