이 포스팅에서는 AMI 와 Snapshot 의 차이점을 간단하게 살펴보도록 하겠습니다.
EC2 인스턴스를 운영하다보면 EC2 인스턴스의 데이터를 백업하기 위하여 Snapshot 을 사용하기도 하고 필요에 따라서는 AMI 로 Image 를 생성하기도 합니다. AWS 환경에서 사용중이던 EBS 를 저장한다는 의미로 본다면 AMI 를 생성하는 것과 Snapshot 을 생성한다는 것이 비슷하게 받아드려질 수도 있는데요. 사용 중인 EC2 인스턴스를 기반으로 해서 AMI 를 생성하는 것과 Snapshot 을 생성하는 것은 약간의 차이점이 있습니다.
먼저 AMI 와 Snapshot 들을 만들어가면서 차이점을 이해할 수 있도록 새로운 EC2 인스턴스를 설치해보도록 하겠습니다. 저는 아래와 같이 Root Volume 에 추가로 2개의 EBS Volume 을 추가하여 EC2 인스턴스를 생성하였습니다.
EC2 인스턴스 설치 완료 후에 이름을 “Origin_EC2” 라는 이름으로 설정해 주었고 상세 정보에서 아래와 같이 3개의 Volume 이 연결되어 있는 것을 확인하였습니다.
이제 Snapshot 이 무엇인지 알아볼텐데요. Snapshot 은 EC2 에 연결되어 있는 EBS Volume 을 백업하는 기능이라고 생각하시면 됩니다. 예를 들면, 제가 만든 “Origin_EC2” 는 3개의 EBS Volume 을 사용하고 있는데 각각의 EBS Volume 에 대한 백업을 하는 기능이 Snapshot 이라고 생각하시면 됩니다. 즉, 여러분이 EC2 에서 사용중인 EBS 의 데이터들을 백업하고 싶다면 Snapshot 을 이용하여 백업하실 수 있습니다.
제 테스트 환경은 EC2 인스턴스만을 생성한 상태이고 아무런 Snaptshot 이 생성되어 있지 않은 상황인데요. 각각의 EBS Volume 을 백업하기 위해서 Snapshot 을 생성해보도록 하겠습니다.
아래는 Snapshot 생성 화면입니다. 각각의 Volume 을 따로 따로 선택후 백업할 수도 있지만 저는 EC2 인스턴스에 연결된 모든 Volume 을 백업해보도록 하겠습니다. Snapshot 의 Source 를 Instance 로 선택하고 조금 전 생성한 EC2 인스턴스를 선택해주면 아래와 같이 “Origin_EC2” 에 연결되어 있는 3개의 Volume 이 리스트에 나타나는 것을 볼 수 있습니다.
아래는 Snapshot 생성이 완료된 상태인데요. “Origin_EC2” 에 연결되어 있는 3개의 Volume 에 대해 각각 Snapshot 이 정상적으로 생성이 되었습니다.
이번에는 EC2 인스턴스를 기반으로 새로운 AMI 이미지를 만들어보도록 하겠습니다. “Origin_EC2” 를 선택하고 이미지 생성하기를 선택하면 아래와 같은 화면이 나타나는데요. 보시는 것처럼 AMI 이미지는 대상 EC2 에 연결되어 있는 모든 EBS 가 자동으로 포함된 상태로 생성이 됩니다. 그리고 새로운 AMI 이미지가 생성이 될 때 각 EBS 별로 Snapshot 생성 여부를 지정하실 수 있는데요. 기본값으로는 새로운 Snapshot 을 생성하도록 설정되어 있습니다.
아래는 AMI 이미지 생성이 완료된 후의 AMI 정보입니다. AMI 에 3개의 EBS 가 연결된 상태인 것을 확인할 수 있습니다.
아래는 AMI 이미지 생성하기가 완료된 후의 Snapshot 메뉴 화면입니다. 기존에 생성하였던 Snapshot 이외에 AMI 생성 과정에서 생성된 3개의 Snapshot 이 추가된 것을 확인할 수 있습니다.
여기서 알게되는 것처럼 Snapshot 이 각각의 EBS Volume 을 백업하는 개념이라면 AMI 를 생성한다는 것은 Root Volume 을 포함하여 EC2 에 연결된 모든 EBS Volume 정보를 한번에 백업하는 개념입니다.
우리는 생성한 AMI 이미지를 이용해 새로운 EC2 를 Provisioning 할 수 있는데요. 제가 조금 전 생성한 AMI 이미지를 선택하여 새로운 EC2 를 생성하면 아래와 같이 3개의 EBS Volume 이 선택되어 있으며 각각의 Volume 들이 AMI 생성 과정에서 생성된 EBS Snapshot 들을 가르키도록 되어 있는 것을 보실 수 있습니다.
Snapshot 을 통해서도 새로운 EC2 인스턴스를 생성할 수 있는데요. 우리가 Backup 한 Snapshot 을 통해 EC2 인스턴스를 생성하려면 Snapshot 을 기반으로 해서 새로운 AMI 이미지를 생성하면 됩니다.
Snapshot 메뉴에서 이미지 생성하기를 누른 후 아래와 같이 EBS Volume 과 기타 AMI 환경을 설정한 후 생성하실 수 있습니다.
새롭게 생성된 AMI 의 EBS 정보를 확인해보니 3개의 EBS Volume 이 연결되어 있네요. 이 AMI 를 이용해서 EC2 인스턴스를 생성하면 조금 전 “Origin_AMI” 와 동일한 EC2 인스턴스를 생성할 수 있습니다.
간단하게 AMI 아 Snapshot 에 대해 알아보았는데요. 서두에 말씀드린 것처럼 기본적으로 EBS 를 백업한다는 점에서는 AMI 와 Snapshot 은 동일합니다. 하지만 AMI 는 EC2 인스턴스에 연결되어 있는 모든 EBS Volume 을 동시에 백업하는 것이라면 Snapshot 기능은 여러분들이 선택한 EBS Volume 을 백업한다는 점에서 차이점이 있습니다.
그리고 AMI 와 Snapshot 을 이용하여 새로운 EC2 인스턴스를 생성하실 수 있습니다. AMI 인 경우에는 바로 EC2 인스턴스를 생성할 수 있고 Snapshot 인 경우는 Snapshot 을 이용해 AMI 를 생성하는 단계를 거쳐야한다는 차이점이 있습니다.
그리고 주기적인 데이터 백업이 필요한 경우라면 AMI 메뉴 상에는 주기적으로 AMI 를 생성하는 메뉴를 제공하지 않지만 Snapshot 에는 여러분들이 EBS Snapshot 생명 주기 정책을 이용해서 주기적으로 EBS Volume 을 백업하는 기능을 제공하고 있다는 차이점도 있습니다.
감사합니다.