백업 및 복원을 서버를 사용하는 사람들에게는 필수적으로 알아야할 내용이며 백업하는 습관은 의무적으로라도 해야할한만큼 중요한 습관이다.
EC2는 기본적으로 사용을 하면 할 수록 요금이 많이 발생하게 된다. 따라서 절약하기 위해서는 주기적으로 사용하지 않는 EC2를 중지하거나 종료를 해햐한다.
하지만 해당 EC2에 중요한 데이터나 다시 사용할 수도 있는 데이터들이 담겨져 있는 경우가 많다.
이러한 백업 및 복원에 대한 유지관리를 편리하게 할 수 있는 방법이 AMI 이미지를 통해 EC2의 정보를 저장하고 EBS Snapshot을 통해 데이터를 저장하는 방법이 있다.
이번 강의에서는 EBS 스냅샷, AMI에 대해 알아보고, 이를 백업하여 관리하는 방법을 소개해본다.
스냅샷(Snapshot)은 EBS를 저장하는 효율적인 방법으로서, 특정 시간에 EBS 볼륨 상태의 저장본을 뜻한다.
EBS의 데이터 저장 상태에 대해 사진(백업본)을 찍어둔 개념이라고 이해하면 된다.
그래서 필요시 스냅샷을 통해 특정시간의 저장 데이터에 대한 EBS의 복구가 가능하다.
스냅샷은 OS 와 별개로 데이터만 백업하고 싶은 경우, 생성된 스냅샷을 기반으로 여러 종류의 AMI 를 생성하고 싶은 경우, Amazon DLM 을 활용하여 백업을 자동화하고 스토리지 비용 최적화를 원하는 경우(동일한 볼륨에 대한 스냅샷을 여러번 생성하면 변경된 부분에 대한 데이터만 추가적으로 백업 + 오래된 스냅샷은 자동으로 삭제)에 주로 애용된다.
스냅샷의 가장 큰 특징은 증분식 저장(변화된 부분만 저장) 한다는 점이다.
만일 GIT을 배운 분들이라면 쉽게 이해가 갈것이다. GIT의 스냅샷 원리를 스토리지에 그대로 차용한 것이기 때문이다.
아래 사진과 같이 파란색 블럭, 노란색 블럭, 초록색 블럭 이라는 각기 다른 데이터가 있다고 가정하자.
만일 이 데이터 블럭들의 각 특정시간대 마다 저장 상태에 대해 백업을 한다고 가정하면, 각 시간대 마다 저장용량(파란박스)을 따로따로 추가로 할당해줘야 할 것이다.
하지만 이는 크나큰 용량 낭비로 이어진다.
따라서 보다 효율적인 방식으로, 저장용량 공간 전체를 각 시간대 마다 할당하는게 아닌, 추가된 데이터(변화된 부분)의 크기(용량)만 스냅샷을 하여 저장함으로서, 전체적인 용량을 아낄수 있게 한다.
만약 하드디스크가 16tb면 스냅샷 할때마다 16tb를 매번 만들 순 없으니까 변화한 부분만 찍어두는 것이다.
그래서 맨 처음에는 16tb가 필요하지만 그 다음부터는 100메가가 바뀌었으면 그부분만 찍어 스토리지를 효율적으로 저장한다.
스냅샷을 자주 찍어도 떠도 부담이 크게 되지 않으니, 필요할때마다 자주 스냅샷을 찍는 것을 추천되어진다.
Tip
이 스냅샷 파일들은 보통 S3(파일저장소)에 보관된다.
AMI는 EC2 인스턴스를 실행하기 위한 정보를 모은 단위 이다.
EC2(가상 컴퓨터)를 실행하기 위해서는 CPU 프로세서 타입이라던지 저장공간 용량은 몇인지, 32비트인지 64비트인지, OS는 윈도우인지 리눅스인지, 소프트웨어는 어떤게 설치되었는지 ..등 정보가 필요한데 이러한 세팅 정보(템플릿)를 저장한 단위라고 생각하면 된다.
즉 AMI란 서버에 필요한 운영체제와 다양한 소프트웨어로 구성된 탬플릿이며, 보통 이러한 템플릿을 aws에서는 이미지라고 불린다.
템플릿에는 컴퓨터 OS 환경설정 정보 뿐만 아니라 인스턴스의 EBS에 대한 정보도 모두 포함되어있다.
EBS에 대한 정보라는 것은 EC2 인스턴스가 어떤 EBS 스냅샷과 연결되어있는지에 대한 정보를 말한다.
AMI 백업 방식은, 긴급하게 백업된 인스턴스를 복구해야하는 경우, 인스턴스 설정 등이 복잡해서 설정이 완료된 인스턴스 이미지를 만들고 싶은 경우, Auto Scaling Group 에서 새 인스턴스를 자동으로 생성하기 위해 만드는 경우에 애용된다.
그리고 AMI를 사용하여 현재 상태의 EC2 세팅(템플릿)을 복제해서 다른 계정이나 다른 리전에게 전달도 가능하다.
또한 프로그램 형태로 AMI 배포가 가능해 다른사람이 받아 내 EC2 상태 그대로를 사용할 수 있다.
기본적으로 EBS 를 백업한다는 점에서는 AMI 와 Snapshot 은 동일하다.
하지만,
AMI 는 EC2 인스턴스에 연결되어 있는 모든 EBS Volume 을 동시에 백업하는 것이라면,
Snapshot 기능은 사용자가 선택한 EBS Volume 하나를 백업한다는 점에서 차이점이 있다.
쉽게 말하면, AMI 이미지 방식은 컴퓨터 하나를 통째로 백업한다고 생각하면 되고, 스냅샷은 하드디스크 내용물만 백업하는 것으로 이해하면 된다. 물론 EC2와 관련된 EBS 여러개를 백업할수도 있다.
또한 AMI 와 Snapshot 을 이용하여 새로운 EC2 인스턴스를 생성할 수 있는데,
AMI 인 경우에는 바로 EC2 인스턴스를 생성할 수 있고,
Snapshot 인 경우는 Snapshot 을 이용해 AMI 를 생성하는 단계를 거쳐야한다는 차이점이 있다.
스냅샷은 EBS의 내용을 백업한 데이터라 직접 바로 인스턴스를 만드는게 불가능 하다.
정리 하자면,
[AMI]
[SnapShot]
EC2 인스턴스에서 우클릭 -> 이미지 및 템플릿 -> 이미지 생성 을 누른다.
이미지 생성 버튼을 누르면 AMI가 생성되기 시작한다.
다만 시간이 좀 걸리는 작업이니 여유있게 기다려주자.
AMI 이미지를 통해 EC2를 복원하는 방법은 두가지가 있다.
하나는 EC2 인스턴스 생성 메뉴에서 AMI 선택할때 나의 AMI에서 고를수 있고,
아니면 AMI 메뉴에서 우클릭으로 바로 EC2 인스턴스 시작을 할수도 있다.
AMI를 골랐으면, 지금까지 해왔듯이 EC2 생성 절차를 쭉쭉 진행하면, 따로 OS나 프로그램 설치 필요없이 미리 만들어진 컴퓨터를 하나 더 장만하게 되게 된다.
방금 위에서 EBS 볼륨에서 스냅샷을 떳는데 왜 다시 거꾸로 되돌아가는 과정을 소개해 어리둥절 할 것이다.
EBS 볼륨은 한번 생성하면 다른 가용 영역이나 리전으로 이전이 불가능하다. EBS 볼륨을 수정하려해도 용량만 늘릴수있을 뿐이다.
따라서 EBS 볼륨 내용을 그대로 다른 리전에서 사용하고 싶다면, 스냅샷을 생성하고 다시 볼륨을 생성할때 다른 리전으로 등록 해야 하는 우회 방법을 이용해야 한다.
위에서 EC2에서 바로 AMI를 만들었듯이, 스냅샷에서도 AMI를 만들수 있다.
스냅샷으로 EBS 볼륨을 만들고 볼륨 연결하기로 EC2에 연결하면 되겠지만,
처음 EC2를 생성할때 스냅샷으로 볼륨을 바로 등록할수 있는 방법도 있어 소개해본다.
EC2 기작 단계 4 : 스토리지 추가 항목까지 오면 여기서 EBS 볼륨을 등록할수 있는데,
새 볼륨을 추가하고 스냅샷 항목에 위에서 만든 스냅샷 설명(Description) 문자열을 넣으면 한방에 스냅샷으로 EBS를 생성하고 EC2에 연결하는 세팅을 할수도 있다.
수명 주기 관리자를 통해 스냅샷 생성을 자동화를 할수도 있다.
예전에는 스냅샷만 수명 주기 등록을 할수있었지만 최근에는 AMI도 지원한다.
![](https://blog.kakaocdn.net/dn/D5NHg/btrzKl3zqNv/Zl3E5ZVpAtvc6BuBDe6kr0/img.png
우리는 EBS를 백업할 예정이기에 EBS 스냅샷 정책을 선택해준다.
수명 주기 정책이 생성되면, 이제 매주 월요일 UTC 시간 9시마다 대상 EBS 볼륨에 대해 스냅샷을 지속적으로 뜰 것이다.