AWS Backup의 VSS Windows 옵션에 대해

2022.10.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드의 수재입니다.
이번에 작업 중 Windows server with SQL Server의 EC2를 백업하기 위해 AWS Backup을 사용하게 되었습니다.
이 중 Windows VSS 옵션에 대해 알게 되었기 때문에 이 내용에 관해 정리해보고자 합니다.

VSS 란?

섀도 복사본(shadow copy, 볼륨 스냅샷 서비스)는 윈도우 XP 서비스팩 1, 윈도우 서버 2003, 윈도우 비스타, 윈도우 서버 2008, 윈도우 7에 내장된 기능으로, 특정한 시각의 파일, 폴더 또는 특정한 볼륨의 수동 또는 자동 복사본이나 스냅샷을 저장해둔 것을 말한다.
스냅샷에서는 두 가지 주된 목적이 있다. 첫째로는 일정한 볼륨 백업본을 만들어서 백업을 하는 동안 내용이 바뀌지 않도록 보증하는 것이다. 나머지 하나는 파일 잠금의 문제를 피하는 것이다.
위키피디아

VSS는 섀도 복사본(Volume Shadow Copy Services)의 약어 입니다.
연속된 백업으로 백업 간에 비어있는 내용이 없도록(무결성 담보) 유지할 수 있습니다.

AWS 에서는 2017년부터 이미 SSM을 이용한 VSS 스냅샷 저장 등을 지원했습니다. AWS Backup에는 해당 기능이 20년 9월에 추가되었습니다.

왜 이 기능이 필요한가?

EC2를 AWS Backup으로 백업할 때 아무런 옵션 지정 없이 EBS의 스냅샷을 백업하게 되면 백업 도중에 발생하는 데이터의 조작(I/O)는 제대로 적용되지 않았을 가능성(무결성이 유지되지 않음)이 있습니다.
따라서 백업하는 도중에 데이터의 무결성을 유지하기 위해서 VSS를 지원하는 Windows 서버 인스턴스에 한해서 해당 기능을 사용할 수 있습니다.

사전 준비

우선 위에서 말한 것 처럼 옵션을 사용하기 위한 역할이 필요합니다.

EC2의 백업을 위한 정책과 AmazonSSMManagedInstanceCore 정책을 포함한 역할이 필요합니다.

IAM 역할이 준비되었다면 인스턴스에 VSS의 구성요소(VSS 컴포넌트)를 설치할 필요가 있습니다.
공식 문서에서는 SSM 을 이용한 방법을 섦여하고 있습니다.
SSM 의 Run Command에서 AWS-ConfigureAWSPackage 명령어를 실행합니다.
Name 매개변수에는 AwsVssComponents를 입력합니다.

SSM 으로 조작하기위해서 인스턴스가 위치한 서브넷은 인터넷과 통신할 수 있거나(인터넷 게이트웨이 혹은 넷 게이트웨이) 엔드포인트가 연결되어 있어야합니다.

설치가 끝났다면 이제 AWS Backup에서 EC2를 백업할 때 VSS 옵션을 체크하여 백업을 설정하면 됩니다.

주의점

우선 AWS Backup의 Plan이나 Resources를 정의할 때는 사전 준비의 여부와 상관없이 설정이 저장됩니다.
하지만 설정한 백업시간에 실제로 백업이 진행될 때 사전 준비 중 무엇 하나라도 되어있지 않다면 에러가 발생합니다. 만약 AMI가 설정되어 있지 않다면 다음과 같은 에러가 발생합니다.

WindowsVSS Backup attempt failed because either Instance or SSM Agent has invalid state or insufficient privileges.

EC2에 VSS 컴포넌트가 설치되어 있지 않은 경우에는 다음과 같은 에러가 발생합니다.

ec2-vss-agent.exe is not installed. To install, run command AWS-ConfigureAWSPackage with package AwsVssComponents.

또한 인스턴스는 반드시 실행 중이어야 합니다. 인스턴스가 중지되어 있는 경우에는 AMI가 부족할 때와 같은 에러가 발생하며 VSS 백업이 진행되지 않습니다.

VSS를 지원하지 않는 데이터베이스는?

SQLServer나 Oracle의 경우에는 VSS를 지원하기 때문에 AWS Backup으로 데이터베이스의 무결성을 지키면서 간단하게 백업을 설정할 수 있습니다.
그 외의 다른 데이터베이스의 경우에는 인스턴스의 백업과는 별개로 데이터베이스에서 지원하는 방식으로 dump를 내보낸 후 S3 등에 저장하는 방식으로 대응할 수 있습니다.
이 경우에도 마찬가지로 EC2에 적절한 IAM 역할을 연결할 필요가 있습니다.

마무리

사용 범위 자체는 한정적이지만 아주 간단한 방법으로 데이터베이스를 백업할 수 있는 기능을 알게되어 앞으로 조금 편할 것 같네요.
여러분들도 한번 검증해보고 사용하시는 것을 추천합니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 언제나 환영합니다. must01940 지메일로 연락 주시면 감사합니다!


본 블로그 게시글을 보시고 문의 사항이 있으신 분들은
클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !