만약 여러분이 Amazon Web Services (AWS)를 사용하여 Elastic Compute Cloud에서 EC2 인스턴스(가상 머신)를 실행하고 있다면, 소프트웨어 오류, 맬웨어 감염, 실수로 인한 삭제 등으로부터 작업을 보호하기 위한 여러 가지 방법을 사용할 수 있습니다. 사용 가능한 옵션 중 하나는 EC2 인스턴스용 AWS 내장 백업 기능인 EBS 스냅샷입니다. 이 블로그 게시물은 EBS 볼륨 스냅샷을 사용하여 EC2 인스턴스의 스냅샷을 생성하는 방법을 설명하며 구성 프로세스의 자세한 예제를 제공합니다.
EBS 스냅샷이란?
EBS 스냅샷은 Amazon S3에 저장된 Elastic Block Store (EBS) 볼륨의 증분 복사본입니다. 처음 EBS 스냅샷을 생성할 때 전체 백업이 생성되고 그 이후의 EBS 스냅샷에 대해서는 변경된 데이터만 복사됩니다. EBS 볼륨은 EC2 인스턴스에 연결된 가상 디스크입니다.
EBS 스냅샷은 Amazon S3에 저장되지만 S3 스토리지에서 수동으로 스냅샷에 접근할 수는 없습니다. 이러한 스냅샷은 EC2 Management Console에서 관리할 수 있습니다.
참고: AWS EC2 스냅샷 및 Amazon 스냅샷이라는 용어는 때때로 EBS 스냅샷을 나타내기도 합니다.
EBS 스냅샷 작동 방식
EBS 스냅샷은 EC2 인스턴스 데이터의 블록 수준 백업으로, 스냅샷 명령이 실행된 특정 시점의 EBS 볼륨을 나타냅니다. 이는 인스턴스가 실행 중인 경우 스냅샷 생성 개시 이후에 EBS 볼륨에 기록된 데이터 블록이 스냅샷에 저장되지 않는다는 것을 의미합니다. 그 결과, EBS 스냅샷은 크래시 일관성이 있는 백업이지 애플리케이션 일관성이 있는 백업이 아닙니다.
EBS 스냅샷이 VMware vSphere 및 Microsoft Hyper-V의 스냅샷과 동일하지 않다는 점을 유념하십시오. Hyper-V 및 VMware 스냅샷은 백업이 아니며 적절한 백업을 대체할 수 없습니다.
그러나 EBS 스냅샷에는 일정 설정과 보존 옵션의 부재, 온프레미스 복사본 생성 불가, 애플리케이션 일관성 있는 EC2 스냅샷 생성 복잡성과 같은 제약 사항이 있습니다. 이는 복구 프로세스를 간소화합니다.
AWS 콘솔에서 EC2 인스턴스 스냅샷을 만드는 방법
AWS Management Console은 EC2 인스턴스, EBS 볼륨 및 EBS 스냅샷 생성과 같은 AWS 컴퓨팅, 스토리지 및 기타 리소스를 관리하는 데 사용되는 GUI 웹 인터페이스입니다.
스냅샷을 생성하려는 EC2 인스턴스에 액세스하려면
- EC2 인스턴스, EBS 볼륨 및 EBS 스냅샷 생성에 필요한 권한이 있는 계정을 사용하여 AWS Management Console에 로그인합니다.
- 서비스를 클릭하고 Compute 섹션에서 EC2를 클릭하여 EC2 인스턴스, EBS 볼륨 및 기타 EC2 기능의 관리 콘솔을 엽니다.
우리는 EBS 스냅샷을 생성하는 단계를 보여주기 위해 EC2 인스턴스를 준비했습니다. EBS 스냅샷을 사용하여 백업하고 복구할 EC2 인스턴스의 매개변수는 다음과 같습니다:
이름: blog-temp
EC2 인스턴스 ID: i-0071290000000cb84
인스턴스 유형: t2.micro
가용 영역: eu-central-1c
EBS 볼륨 1: vol-0617000000000763c
볼륨 유형: gp2
볼륨 크기: 8GB
EC2 인스턴스에서 실행되는 게스트 운영 체제(OS)는 Ubuntu Server(Linux)입니다.
EBS 볼륨에 파일 쓰기
스냅샷을 생성하기 전에 EC2 인스턴스에 연결된 가상 디스크에 두 개의 파일을 생성합니다. 이렇게 하면 EBS 스냅샷에서 인스턴스를 복원한 후에 이 파일이 복구되는지 확인할 수 있습니다. 사용자 홈 디렉토리에 두 개의 파일을 생성합니다:
lspci > file01.txt
echo "test EC2 snapshot 01" > snapshot01.txt
인스턴스 준비
EC2 인스턴스를 중지하여 스냅샷이 일관된 데이터를 포함하는지 확인하십시오. 이유는 EBS 볼륨이 블록 수준에서 작동하기 때문입니다. EBS 스냅샷을 찍을 때 해당 시점의 EBS 볼륨 상태가 저장됩니다. 저장된 저장 블록은 그대로 저장됩니다. 시스템은 파일 시스템 수준에서 파일 작업이 이루어진 것을 알지 못합니다. 스냅샷이 찍힐 때 EBS 볼륨에 파일이 쓰여지고 있다면 스냅샷에 일관되지 않은 데이터가 포함됩니다. 이로 인해 파일이 쓰여지는 중에 물리적 컴퓨터의 전원 케이블을 뽑는 것과 유사한 효과가 발생합니다.
시스템 스냅샷을 찍기 위해 EC2 인스턴스에서 파일 시스템을 마운트 해제하여 볼륨에 파일 쓰기 작업이 없도록 할 수 있습니다. 스냅샷을 찍으려면 EC2 인스턴스에서 휴면 모드를 비활성화해야 합니다.
EC2 인스턴스를 스냅샷을 찍기 위해 준비하려면:
- EC2 관리 콘솔의 EC2 인스턴스 목록 페이지를 엽니다. 인스턴스 이름을 마우스 오른쪽 단추로 클릭하고 컨텍스트 메뉴에서 인스턴스 중지를 클릭합니다.
- EC2 인스턴스에서 사용하는 볼륨을 찾습니다. 스토리지 탭을 클릭하고 적절한 EBS 볼륨의 볼륨 ID(vol-0617000000000763c)를 클릭합니다.
스냅샷 찍기
EC2 인스턴스의 스냅샷을 만들 준비가 되었습니다:
- EBS 볼륨을 선택하고(행의 왼쪽에 있는 확인란을 클릭) 작업> 스냅샷 생성을 클릭합니다.
- 설명을 입력하고 암호화 설정을 구성하고 태그를 추가합니다. 다음과 같은 매개변수를 사용합니다:
- 설명: EBS 스냅샷 블로그 01
- 암호화되지 않음
클릭 스냅샷 생성.
참고: 우리는 암호화되지 않은 볼륨을 사용하여 암호화되지 않은 스냅샷을 만듭니다. 이 경우, 스냅샷의 암호화 설정을 수동으로 설정할 수 있습니다. 암호화된 볼륨의 스냅샷을 찍으면, 해당 스냅샷은 자동으로 암호화됩니다.
- 다음 메시지와 스냅샷 ID를 확인해야 합니다:
스냅샷 생성 요청이 성공했습니다
snap-0778000000000ab40
스냅샷 ID를 클릭하여 스냅샷 옵션 및 상태가 표시된 페이지를 엽니다.
- 대기 중인 스냅샷 상태는 EBS 볼륨의 데이터가 현재 Amazon S3로 전송 중임을 의미합니다. 스냅샷 생성이 완료될 때까지 기다려야 합니다 (상태가 완료됨으로 변경됨). 시간은 스냅샷에 저장된 데이터의 크기에 따라 다릅니다.
다중 볼륨 스냅샷을 어떻게 찍는지
여러 EBS 볼륨을 사용하는 EC2 인스턴스를 찾는 것은 흔한 일입니다. 이 경우, Amazon EC2 백업을 위해 해당 EC2 인스턴스에 연결된 모든 EBS 볼륨에 대해 다중 볼륨 스냅샷을 만들 수 있습니다.
이 섹션에서 다룰 내용은 다음과 같습니다:
EC2 인스턴스에 두 번째 EBS 볼륨 생성
먼저 시연용으로 사용 중인 EC2 인스턴스에 두 번째 EBS 볼륨을 추가해 봅시다:
- 다음 작업을 수행하십시오.
EC2 관리 콘솔의 탐색 창에서 탄력적 블록 스토어 > 볼륨으로 이동합니다. 볼륨 생성을 클릭하십시오.
- 가용 영역에 대해 리전은 인스턴스의 리전과 동일해야 합니다 (eu-central-1c의 경우).
볼륨 유형/크기를 입력하고, 암호화 옵션을 설정하고, 태그를 입력하십시오. 태그는 볼륨 목록에서 볼륨을 찾는 데 도움이 됩니다. 우리는 볼륨 크기를 1 GiB로 설정하고 다음과 같은 태그를 사용합니다:
-
키: 블로그
-
값: 임시 볼륨 2
볼륨 생성을 클릭하십시오.
-
볼륨 ID를 기억하거나 기록하십시오 ((vol-0b4a0000000003d01의 경우). 볼륨 속성을 열려면 볼륨 ID를 클릭하십시오.
-
볼륨을 EC2 인스턴스에 연결하십시오. 볼륨을 마우스 오른쪽 단추로 클릭하거나 작업을 클릭하고 열리는 메뉴에서 볼륨 연결을 클릭하십시오.
-
연결해야 할 EC2 인스턴스를 선택하십시오. EC2 인스턴스 ID를 선택해야 합니다. 우리의 경우 인스턴스 ID는 i-0071290000000cb84입니다.
연결된 볼륨에 액세스하는 데 사용되는 게스트 운영 체제의 장치를 선택할 수 있습니다. 우리의 경우 /dev/sdf가 사용됩니다.
새 볼륨을 EC2 인스턴스에 연결하려면 연결을 클릭하십시오.
참고: 디스크 장치 이름을 바꾸는 유용한 정보가 노트에 표시됩니다. 우리의 경우 /dev/sdf가 게스트 운영 체제에서 /def/xvdf(으)로 이름이 변경되었습니다.
현재 두 볼륨이 EC2 인스턴스(blog-temp)에 연결되어 있습니다:
vol-0617000000000763c
vol-0b4a0000000003d01
두 번째 EBS 볼륨에 데이터 작성
다음으로, 두 번째 EBS 볼륨에 파일을 생성할 것입니다. 이 파일은 EBS 스냅샷에서 볼륨을 복원한 후 모든 데이터가 복구되었는지 확인하는 데 사용될 것입니다. 이를 위해 파티션을 생성하고 파일 시스템을 생성하고 파일 시스템을 EC2 인스턴스에서 실행 중인 게스트 리눅스 운영 체제에 마운트할 것입니다.
우리는 EC2 인스턴스에서 실행 중인 게스트 리눅스 운영 체제의 작업이 아니라 EBS 스냅샷을 사용한 작업에 집중하고 있지만, 볼륨 작업을 더 잘 이해하기 위해 사용되는 명령어를 나열합니다.
스토리지 관리
- 리눅스에서 블록 장치에 대한 세부 정보를 표시하려면 lsblk를 사용하십시오.
- 마운트된 디스크의 저장 공간을 확인하려면 df -h를 사용하십시오.
- 마운트된 디스크를 확인하려면 mount를 사용하십시오.
파티션 생성 및 마운트
parted를 사용하여 두 번째 EBS 볼륨에 파티션을 생성하고 포맷하는 방법:
sudo parted -l
parted /dev/xvdf
(parted) mklabel msdos
(parted) print
(parted) mkpart primary ext4 1MB 955MB
(parted) print
(parted) quit
준비된 파티션에 파일 시스템 생성:
mkfs.ext4 /dev/xvdf1
마운트 포인트로 사용할 디렉토리 생성:
mkdir disk2
파일 시스템이 적용된 파티션을 생성된 디렉토리에 마운트:
mount /dev/xvdf1 /disk2/
마운트된 파티션의 디렉토리로 이동:
cd /disk2
2개의 EBS 볼륨에 변경 내용을 작성
- Linux를 실행 중인 EC2 인스턴스에 연결된 두 번째 EBS 볼륨의 파티션에 파일을 생성:
echo “디스크 2에 대한 EBS 스냅샷” > /disk2/d2-file01.txt
- 첫 번째 디스크에 변경 사항을 적용하여 EC2 인스턴스에서 사용하는 첫 번째 볼륨의 새 EBS 스냅샷 생성. 두 볼륨은 이전 스냅샷이 찍힌 상태에서의 변경 사항을 포함해야 합니다.
첫 번째 볼륨의 새 스냅샷에 저장된 변경 사항을 더 편리하게 감지하기 위해 첫 번째 볼륨에 snapshot02.txt 파일을 생성합니다.
새 데이터가 포함된 두 개의 EBS 볼륨이 EC2 인스턴스에 연결되면 다중 볼륨 스냅샷을 생성할 수 있습니다.
다음과 같은 다볼륨 스냅샷을 생성합니다.
- EC2 인스턴스 관리 페이지의 네비게이션 창에서 Elastic Block Store > 스냅샷으로 이동합니다. 스냅샷 생성을 클릭합니다.
- 리소스 유형을 선택합니다: 인스턴스.
- 사용하려는 EBS 스냅샷을 백업하려는 필요한 EC2 인스턴스의 인스턴스 ID를 입력합니다.
선택한 인스턴스에 연결된 모든 볼륨이 자동으로 선택됩니다.
- AWS에서 필요할 때 EBS 스냅샷을 찾기 위한 설명을 입력합니다. 예시에서는 EBS 스냅샷 블로그 02입니다.
- EBS 볼륨에 할당된 태그를 사용하려면 볼륨에서 태그 복사 확인란을 선택합니다.
- 스냅샷 생성을 클릭하면 선택한 모든 볼륨에 대한 스냅샷이 생성됩니다.
프로세스가 성공하면 다음 메시지가 표시됩니다:
스냅샷 생성 요청이 성공했습니다
두 개의 Amazon 스냅샷 식별자가 표시됩니다: snap-0f95000000000de71 및 snap–0a91000000000769b 우리의 경우입니다.
이 식별자 값을 저장하고 스냅샷 생성 상태를 확인하려면 그 중 하나를 클릭합니다. 스냅샷 생성을 시작한 직후에는 작업 상태가 대기 중으로 표시되며 프로세스가 완료되면 완료됨으로 변경됩니다.
A new snapshot for each volume has been created.
AWS CLI를 사용하여 스냅샷 생성하기
명령줄 인터페이스를 선호하거나 스냅샷 생성을 자동화해야 하는 경우 AWS 관리 콘솔 대신 AWS CLI를 사용할 수 있습니다.
아마존 AWS CLI에서 EBS 스냅샷을 생성하는 명령어는 다음과 같습니다:
aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description "블로그를 위한 테스트 스냅샷입니다"
출력은 다음과 같아야 합니다:
{
"Description": "블로그를 위한 테스트 스냅샷입니다",
"Tags": [],
"Encrypted": false,
"VolumeId": "vol-0b4a51e1cea333d01",
"State": "pending",
"VolumeSize": 8,
"StartTime": "2021-08-28T21:06:01.000Z",
"Progress": "",
"OwnerId": "012345678910",
"SnapshotId": "snap-0689749a39a7b822b"
}
태그와 함께 스냅샷을 생성하는 명령어는 다음과 같습니다:
aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description '프로드 백업' --tag-specifications
'ResourceType=snapshot,Tags=[{Key=Blog,Value=Test},{Key=AWS,Value=EC2-snapshot}]'
EBS 스냅샷을 사용하여 EC2 인스턴스를 복원하는 방법:
아마존 EC2 인스턴스에 연결된 EBS 볼륨의 스냅샷을 만들었습니다. 이러한 스냅샷은 AWS에서의 데이터 백업 형태입니다. 이제 복원하여 스냅샷에서 EC2 인스턴스를 만드는 방법을 알아보겠습니다:
- AWS에서 특정 EBS 볼륨
- 전체 EC2 인스턴스
두 번째 EBS 볼륨을 복원합니다.
스냅샷에서 두 번째 EBS 볼륨(크기는 1 GiB)을 복원합시다. 이 볼륨은 파일을 저장하는 데 사용되며, 운영 체제는 이 볼륨에 설치되지 않았습니다.
- EC2 관리 콘솔의 탐색 창에서 Elastic Block Store > Snapshots로 이동합니다.
검색 필드에 “blog”를 입력하여 이 블로그 게시물을 작성하는 데 사용되는 EC2 인스턴스의 EBS 볼륨에 대해 생성된 모든 스냅샷을 표시합니다. 설명과 태그를 추가하는 것이 가치 있는 이유의 예입니다.
- 1 GiB 볼륨의 스냅샷을 선택하고 스냅샷에서 새 볼륨을 생성합니다. 스냅샷을 우클릭하고 열리는 메뉴에서 Create Volume을 클릭하세요.
- Create Volume 페이지에서 필요한 볼륨 매개변수를 정의합니다: 볼륨 유형을 선택하고 볼륨 크기, 가용 영역, 암호화 옵션, 태그 키 및 값을 정의합니다.
가용 영역은 EC2 인스턴스와 동일해야 합니다(예: eu-central-1c).
볼륨 크기는 원래 백업된 볼륨 크기와 동일합니다(예: 1 GiB).
태그 키는 blog이고 값은 복구된 볼륨 1입니다.
- Create Volume을 클릭하여 완료하고 EBS 스냅샷을 사용하여 EBS 볼륨을 생성합니다.
다음과 같은 메시지가 표시됩니다:
Create Volume Request Succeeded
볼륨 ID를 저장할 수 있습니다. 새 볼륨 ID는 예: vol-09cd000000000b502입니다.
시스템 볼륨 복원
EC2 인스턴스를 복원하려면 운영 체제가 설치된 EBS 볼륨을 복원해야 합니다. 이 경우 게스트 운영 체제가 사용하는 EBS 볼륨의 스냅샷에서 이미지를 생성하고 이 이미지를 사용하여 인스턴스를 시작할 수 있습니다(복원된 EC2 인스턴스).
이미지 생성
- EC2 관리 콘솔에서 Elastic Block Store > Snapshots로 이동하여 게스트 OS가 설치된 EBS 볼륨의 필요한 스냅샷을 선택합니다.
게스트 OS(Ubuntu Server)가 사용하는 8-GiB 볼륨의 최신 스냅샷을 선택합니다. 이 EBS 볼륨 스냅샷은 EC2 인스턴스에 대한 다중 볼륨 스냅샷을 생성할 때 생성되었습니다.
스냅샷을 오른쪽 클릭하고 열리는 메뉴에서 Create Image를 클릭합니다.
- 열리는 창에서 필요한 정보를 입력하고 EBS 스냅샷에서 이미지를 생성하기 위한 옵션을 선택합니다. 다음 매개변수를 사용합니다.
이름: blog-recovered
설명: EBS 스냅샷에서 복원됨 (blog)
다른 설정은 기본값으로 둡니다.
Create를 클릭합니다.
- 열리는 Create Image request received 대화 상자에서 이미지 ID를 클릭하여 이미지에 대한 정보를 볼 수 있습니다(우리의 경우 ami-08ed800000000872a). 이미지 생성이 완료될 때까지 기다립니다.
이미지 시작
이미지가 생성되면 이미지를 오른쪽 클릭하고 Launch를 클릭합니다.
새 EC2 인스턴스 생성 마법사가 열립니다. 인스턴스 옵션을 선택해야합니다. 백업된 원본 VM에 선택된 옵션과 동일한 옵션을 선택할 수 있습니다. 또한 새로운 보다 강력한 EC2 인스턴스로 인스턴스를 복원할 수도 있습니다.
참고: 우리는 이미 AMI 목록 페이지에서 블로그 복구된 AMI를 선택했기 때문에 (단계 1. AMI 선택 대신에) 마법사의 단계 2 로 리디렉션됩니다.
단계 2: 인스턴스 유형 선택. 우리는 인스턴스 유형으로 t2.micro를 선택합니다. 마법사의 각 단계에서 다음을 클릭하여 계속합니다.
단계 3: 인스턴스 구성. 네트워크 설정, IAM 역할, 종료 동작 등을 포함하여 요구 사항에 따라 세부 정보를 구성합니다.
단계 4: 저장소 추가 는 EBS 스냅샷을 사용하여 EC2 인스턴스를 복구할 때 중요합니다. 새 볼륨 추가를 클릭합니다. 이 페이지에 볼륨 옵션이 추가됩니다. 스냅샷 필드에 필요한 볼륨 스냅샷의 ID를 입력하십시오.
우리는 snap-0a91000000000769b 를 입력합니다. 이것은 우리가 1-GiB 볼륨의 스냅샷 ID입니다. 볼륨의 8-GiB 크기가 기본적으로 선택됩니다. 예제에서는 원본 EBS 볼륨에 구성된 대로 볼륨 크기를 1 GiB로 설정할 수 있습니다. 스토리지 장치, 볼륨 유형, 암호화 및 종료시 삭제 옵션을 선택할 수도 있습니다.
단계 5: 태그 추가. 검색 목적에 유용한 태그를 추가하십시오. 태그는 모든 볼륨과 인스턴스에 적용됩니다. 이 예에서 태그 키는 블로그이고 값은 복구된 VM 01입니다.
단계 6: 보안 그룹 구성. EC2 인스턴스의 네트워크 트래픽을 제어하기 위해 매개변수를 편집하십시오.
단계 7: 인스턴스 시작 검토. 인스턴스 시작 세부 정보를 검토하고 완료하려면 시작을 클릭하십시오. EC2 인스턴스에 액세스하기 위해 키페어를 선택하거나 새로 생성해야 합니다.
- 시작 상태 페이지가 현재 표시됩니다. 인스턴스 보기를 클릭하십시오.
- 복구된 인스턴스에 이름을 입력하십시오 (우리의 경우 blog-recovered). 복구된 E2 인스턴스의 상태는 실행 중입니다. EBS 스냅샷에서 복구된 두 개의 EBS 볼륨이 EC2 인스턴스에 연결되었습니다 (아래 스크린샷 참조).
복원된 파일 확인
최신 스냅샷을 촬영하기 전에 생성된 파일이 복구되었는지 확인하겠습니다:
연결된 블록 장치 목록:
lsblk
사용자의 현재 (홈) 디렉토리 파일 목록:
ls -al
스냅샷01.txt 및 스냅샷2.txt 파일은 OS가 설치된 EBS 볼륨에 대한 첫 번째 및 두 번째 스냅샷을 촬영하기 전에 생성된 것입니다.
두 번째 디스크 (EBS 볼륨)에 있는 파티션을 마운트하십시오:
sudo mount /dev/xvdb1 /disk2/
파티션 이름이 /dev/xvdb1로 변경되었습니다. 인스턴스를 복원한 후에 자동 마운트를 위해 /etc/fstab를 편집해야 할 수도 있습니다.
ls -al /disk2/
d2-file01.txt는 두 번째 EBS 볼륨에 저장된 파일 시스템에 있습니다. 복원 후입니다.
모든 부착된 EBS 볼륨과 함께 AWS EC2 인스턴스가 성공적으로 EBS 스냅샷에서 복원되었습니다. 필요한 모든 데이터가 보존되었습니다.
결론
다중 볼륨 스냅샷을 사용하여 단일 볼륨을 백업하거나 모든 볼륨을 백업할 수 있습니다. 이는 데이터 보호 및 재해 복구를 위한 매우 편리한 네이티브 AWS 기능입니다. 그러나 Amazon 클라우드에 EBS 스냅샷을 저장할 때 추가 비용이 발생하며 추가 클라우드 저장소가 사용됩니다. 또한, 스냅샷 생성 시 파일이 작성되는 것을 인식하지 못하는 스냅샷 생성 시스템 등 백업에 EBS 스냅샷을 사용하는 데 제한 사항이 있습니다. 결과적으로, EBS 스냅샷을 사용하여 만든 백업은 충돌 일관성이 있으며 응용 프로그램 일관성이 없습니다.
NAKIVO Backup & Replication은 Amazon EC2 인스턴스의 응용 프로그램 인식 백업 및 레플리카를 지원하는 데이터 보호 솔루션입니다. 또한 솔루션을 사용하여 백업 및 복구 프로세스를 크게 단순화하고 자동화할 수 있습니다. EBS 볼륨을 복구하지 않고 백업에서 전체 EC2 인스턴스를 신속하게 복구하고, EC2 인스턴스를 만들고 생성된 EC2 인스턴스에 볼륨을 수동으로 부착할 필요가 없습니다.
Source:
https://www.nakivo.com/blog/how-to-create-snapshots-of-ec2-instance/