구글 클라우드 플랫폼(GCP)에서 스냅샷(snapshot)을 활용하여 디스크 백업하기 (incremental backup)
GCP에서 VM을 사용하다가 데이터를 백업해야 할 때가 있습니다. GCP에서는 머신이미지(machine image), 이미지(custom image), 스냅샷(snapshot)을 사용할 수 있습니다. 하지만 세 가지의 차이점은 있습니다. 디스크 백업을 위해선 스냅샷이 가장 이상적인 것 같습니다. 왜냐하면 증분 백업(incremental backup)이 되기 때문입니다. 정확히 증분 백업이 어떻게 이루어 지는지 실습을 통해 알아보겠습니다. 그 전에 일단 스냅샷부터 만드는 법을 배우겠습니다.
- 구글 클라우드 콘솔에서 Compute Engine 영역에 보면 Snapshots 이란 메뉴가 있습니다. 그리고 CREATE SNAPSHOT 이란 버튼이 보이실 겁니다.
- CREATE SNAPSHOT이란 버튼을 누른 후 아래와 같이 생성하면 됩니다. Source disk 부분에 내가 스냅샷을 찍고자 하는 디스크를 선택합니다. 그리고 스냅샷을 저장할 위치를 고르시면 되는데 스냅샷은 한국에 있는데 미국에서 그 스냅샷으로 서버를 생성하게 되면 스냅샷이 미국으로 가야해서 네트워크 요금이 발생합니다. (제가 예전에 이거 모르고 스냅샷과 다른 위치에 VM 계속 만들다가 5만원 나왔습니다. 물론 회사가 냈지만... )
- 스냅샷을 이용해서 VM 인스턴스를 만들면 똑같은 OS, 똑같은 데이터를 가진 환경에서 작업을 할 수 있습니다. (스냅샷은 서버가 기동중에도 사용할 수 있으나 되도록이면 데이터의 일관성을 위해서 디스크에 write가 발생하지 않을 때 찍으면 좋을 것 같습니다.)
- 요금은 아래와 같습니다. 제가 사용해보니 40GB 정도의 스냅샷이 천 원 정도 듭니다.
- 그럼 고급지게 incremental backup에 대해 알아보겠습니다. 증분 백업을 사용하면 백업 요금이 싸집니다.
- 제가 예전에 처음에 스냅샷을 찍고 같은 디스크로 스냅샷을 또 찍었는데 용량이 너무 이상했습니다. 처음 스냅샷은 20기가 정도인데 두 번째 스냅샷은 4기가 정도였습니다. 이상해서 두 번째 스냅샷으로 인스턴스를 생성했는데 신기하게 데이터는 정상적으로 백업이 되어 있었습니다. 알고보니 GCP는 기본적으로 스냅샷이 증분 백업을 사용합니다. 스냅샷 1번에서 바뀐 부분만 스냅샷 2가 가지고 있고, 스냅샷 2에서 바뀐 부분을 스냅샷 3이 가지고 있다고 쉽게 이해하시면 될 것 같습니다. 그래서 스냅샷 2로 인스턴스를 생성하게 되면 스냅샷 1을 reference로 참고합니다.
- 근데 그렇다면 만약 스냅샷1이 지워지면 어떻할까요? 스냅샷1을 지우면 스냅샷2가 참고하고 있던 부분이 자동으로 스냅샷2로 이동됩니다. 즉 스냅샷1이 삭제되도 스냅샷2는 정상 동작합니다. 잘 이해가 안 가실까봐 뒤에 실습에서 직접 두 눈으로 보실 수 있게 하겠습니다. (사실 전 제가 직접해보기 전까진 구글 공식문서래도 안 믿어서)
- 제가 직접 실습해보겠습니다. 첫번째 찍은 스냅샷은 391 MB이고 두번째 찍은 스냅샷은 2.8 MB입니다. 두번째 스냅샷으로 인스턴를 생성해 확인해보니 정상이였습니다. 증분백업이 아니라면 여러 개의 스냅샷을 가지고 있을 때 요금이 많이 발생하게 됩니다. (예로 스냅샷 3개면, 391 MB + 400 MB + 410 MB = 1,201 MB 비용을 내야하지만 증분백업을 사용하면 402 MB 정도의 비용만 내면 됩니다.
- 디스크에 데이터를 추가했습니다. 그리고 다시 스냅샷을 만들 것입니다. 세번째 만든 스냅샷으로 인스턴스를 생성해서 데이터가 잘 있는지 보려고 하는데 난이도를 올리기 위해 첫번째 두번째 스냅샷을 지울것입니다. 오직 세번째 스냅샷만 남기고 인스턴스를 만든 뒤 데이터가 잘 있는지 확인하겠습니다.
- 세번째 스냅샷을 만들었습니다. 용량은 2.73 MB 입니다.
- 세 번째 스냅샷으로 인스턴스를 생성하겠습니다. 주의할 점은 스냅샷이 저장된 위치와 생성하는 VM의 위치가 다르면 네트워크 비용이 발생합니다. 스냅샷이 있는 위치와 서버의 위치를 맞춰주세요.
Comments
Post a Comment