Linux 가상 머신(VM) 인스턴스에 연결된 디스크의 애플리케이션 일관성 스냅샷을 만들 수 있습니다. 일반적으로 디스크 스냅샷의 품질은 쓰기 워크로드가 클 때 사용자가 만든 스냅샷으로 애플리케이션을 얼마나 잘 복구할 수 있느냐에 따라 달라집니다. 애플리케이션 일관성 스냅샷에서는 완료된 모든 애플리케이션 트랜잭션과 디스크에서 삭제된 대기 중인 모든 쓰기를 사용해 백업 시점에 애플리케이션 데이터 상태를 캡처합니다.
애플리케이션 일관성 스냅샷을 만들려면 먼저 디스크에 데이터를 쓰는 앱 또는 운영체제 프로세스를 일시중지하고 디스크 버퍼를 삭제한 후 파일 시스템을 동기화해야 합니다. 애플리케이션에 따라 모든 애플리케이션 트랜잭션이 완료되고 백업에서 캡처되도록 하려면 이를 비롯한 여러 단계가 필요할 수 있습니다.
디스크의 애플리케이션 일관성 스냅샷을 만들려면 다음 프로세스를 따르세요.
- 게스트 환경의 애플리케이션 일관성을 준비하려면 스냅샷을 캡처하기 전후에 실행할 커스텀 셸 스크립트를 만듭니다.
- 가상 머신(VM) 인스턴스에서 스냅샷 설정을 구성합니다.
- 그런 다음
guest-flush
옵션을 사용 설정하여 스냅샷을 만듭니다.guest-flush
옵션에서 사전 및 사후 스냅샷 스크립트를 시작합니다.
시작하기 전에
- Linux VM 만들기
- 게스트 환경을 업데이트합니다.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Compute 인스턴스 관리자(v1)(
roles/compute.instanceAdmin.v1
) - 서비스 계정으로 실행될 수 있는 VM에 연결하려는 경우: 서비스 계정 사용자(v1)(
roles/iam.serviceAccountUser
) -
영역 디스크의 스냅샷 만들기:
- 프로젝트에 대한
compute.snapshots.create
- 디스크에 대한
compute.disks.createSnapshot
- 프로젝트에 대한
-
디스크의 데이터를 사용하여 리전 디스크의 스냅샷 만들기:
- 프로젝트에 대한
compute.snapshots.create
-
소스 VM에 대한
compute.instances.useReadOnly
- 디스크에 대한
compute.disks.createSnapshot
- 프로젝트에 대한
-
복제본 복구 체크포인트에서 리전 디스크의 스냅샷 만들기:
- 프로젝트에 대한
compute.snapshots.create
- 디스크에 대한
compute.disks.createSnapshot
- 프로젝트에 대한
-
스냅샷 일정 만들기: 프로젝트 또는 조직에 대한
compute.resourcePolicies.create
-
디스크에 스냅샷 일정 연결:
- 디스크에 대한
compute.disks.addResourcePolicies
- 리소스 정책에 대한
compute.resourcePolicies.use
- 디스크에 대한
-
스냅샷 삭제:
-
스냅샷에 대한
compute.snapshots.delete
- 프로젝트에 대한
compute.snapshots.list
-
스냅샷에 대한
- 애플리케이션 일관성은 스냅샷 작업 자체로는 보장되지 않으며 커스텀 사전 및 사후 스냅샷 스크립트의 동작으로만 보장됩니다.
- 스냅샷 생성 요청에
guest-flush
옵션을 사용할 경우 스크립트가 오류를 반환하거나 제한 시간 한도에 도달하면 스냅샷이 생성되지 않습니다. - 디스크에 데이터를 쓰는 VM에서 실행되는 앱 또는 운영체제 프로세스를 일시중지합니다.
- 디스크 버퍼를 삭제합니다. 예를 들어 MySQL에는
FLUSH
문이 있습니다. 애플리케이션에 사용할 수 있는 도구라면 무엇이든 사용하세요. - 파일 시스템을 동기화합니다.
- SCSI 연결 디스크: 쉼표로 구분된
<target/lun>
쌍의 목록입니다. - NVME 연결 디스크: 쉼표로 구분된
<nvme:namespace>
쌍의 목록입니다. 게스트 환경 구성 파일을 열거나 만듭니다.
edit /etc/default/instance_configs.cfg
구성 파일에 다음 섹션을 추가한 후 변경사항을 저장하고 편집기를 종료합니다.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
다음을 바꿉니다.
ENABLED
: 애플리케이션 일관성 스냅샷 기능을 사용 설정하려면true
로 설정합니다. 기본값은false
입니다.TIMEOUT_SECONDS
: 제한 시간 전에 사전 또는 사후 스냅샷 스크립트가 실행을 완료하는 데 걸릴 수 있는 시간(초)입니다. 정수 값은 0에서 300 사이여야 합니다. 기본값은60
입니다.
새 구성 설정을 사용하려면 게스트 에이전트를 다시 시작합니다.
$ sudo systemctl restart google-guest-agent.service
Google Cloud 콘솔의 스냅샷 만들기 페이지로 이동합니다.
스냅샷 만들기 페이지로 이동- 스냅샷 이름을 입력합니다.
-
스냅샷 유형을 선택합니다. 기본값은 장기 백업 및 재해 복구에 가장 적합한
STANDARD
스냅샷입니다.비용 효율적인 데이터 보관을 위해서는 보관처리 스냅샷을 선택합니다.
- 선택사항: 스냅샷에 대한 설명을 입력합니다.
- 소스 디스크에서 스냅샷을 만들려는 기존 디스크를 선택합니다.
위치 섹션에서 스냅샷 스토리지 위치를 선택합니다.
스냅샷 설정에 정의된 사전 정의되었거나 맞춤설정된 기본 위치가 자동으로 선택됩니다. 선택적으로 다음을 수행해서 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 저장할 수 있습니다.
- 애플리케이션 일관성 스냅샷 사용 설정 옵션을 선택합니다.
- 만들기를 클릭하여 스냅샷을 만듭니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤설정된 기본 위치에 스냅샷을 만들려면
gcloud compute snapshots create
명령어를 사용합니다.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush
-
또는 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 만들려면 스냅샷 저장 위치를 나타내는
--storage-location
플래그를 포함하세요.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION \ --guest-flush
다음을 바꿉니다.
- SNAPSHOT_NAME: 스냅샷의 이름입니다.
- SOURCE_ZONE: 소스 디스크의 영역
- SOURCE_DISK_NAME: 스냅샷을 만들려는 디스크 볼륨의 이름
- SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE).
스냅샷 유형을 지정하지 않으면
STANDARD
스냅샷이 생성됩니다. -
STORAGE_LOCATION: (선택사항) 스냅샷을 저장할 Cloud Storage 멀티 리전 또는 Cloud Storage 리전. 스토리지 위치는 하나만 지정할 수 있습니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 재정의하려는 경우에만
--storage-location
매개변수를 사용합니다.
-
스냅샷 설정에 구성된 사전 정의되었거나 맞춤설정된 기본 위치에 스냅샷을 만들려면
snapshots.insert
메서드에POST
요청을 수행하세요.POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "guestFlush": true, }
-
또는 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 만들려면
snapshots.insert
메서드에 대해POST
요청을 수행하고 요청에storageLocations
속성을 포함합니다.POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], "guestFlush": true, }
- DESTINATION_PROJECT_ID: 스냅샷을 만들려는 프로젝트의 ID
- SNAPSHOT_NAME: 스냅샷의 이름입니다.
- SOURCE_PROJECT_ID: 소스 디스크 프로젝트의 ID
- SOURCE_ZONE: 소스 디스크의 영역
- SOURCE_DISK_NAME: 스냅샷을 만들려는 디스크의 이름
- SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE).
스냅샷 유형을 지정하지 않으면
STANDARD
스냅샷이 생성됩니다. -
STORAGE_LOCATION: (선택사항) 스냅샷을 저장할 Cloud Storage 멀티 리전 또는 Cloud Storage 리전. 스토리지 위치는 하나만 지정할 수 있습니다.
스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 재정의하려는 경우에만
storageLocations
매개변수를 사용합니다. Google Cloud 콘솔의 로그 탐색기 페이지로 이동합니다.
로그 쿼리 창에 다음 쿼리를 붙여넣습니다.
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
쿼리를 실행하고 로그를 조사합니다.
인스턴스에 파일 시스템의 활동/IOPS를 고정하는 사전 또는 사후 스냅샷 스크립트가 없으면 스냅샷이 생성되지 않습니다. 사전 및 사후 스냅샷 스크립트 만들기의 단계를 따랐는지 확인합니다.
스크립트 오류 또는 제한 시간 초과 시 스냅샷이 생성되지 않습니다. 일관된 스냅샷 준비을 검토합니다. 설정에서 구성할 수 있는 최대 제한 시간은 300초입니다. 샘플 스크립트를 사용하여 전체 프로세스를 반복해 보세요.
guest-flush
가 사용 설정된 디스크의 스냅샷을 캡처하려면 디스크를 VM에 연결해야 합니다. Linux VM을 만들고 디스크를 연결하는 방법은 VM 만들기를 참조하세요.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
필수 역할 및 권한
표준 스냅샷을 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 표준 스냅샷을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
표준 스냅샷을 관리하려면 다음 권한이 필요합니다.
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
제한사항
Linux에서 애플리케이션 일관성 스냅샷을 만들 때 다음과 같은 제한사항이 있습니다.
사전 및 사후 스냅샷 스크립트 만들기
계속 진행하기 전에 Linux VM에서 최신 소프트웨어를 실행하도록 게스트 환경을 업데이트합니다.
애플리케이션 일관성을 높이기 위해 스냅샷 캡처 전후에 실행할 사전 및 사후 스냅샷 셸 스크립트를 만듭니다. 다음과 같은 작업에는 사전 및 사후 스크립트를 사용합니다.
다음 코드 예시에서는 사전 스냅샷 스크립트를 보여줍니다. 선행
#!
문자를 기록합니다.#!/bin/bash sudo fsfreeze -f [example-disk-location]
다음 코드 예시에서는 사후 스냅샷 스크립트를 보여줍니다. 선행
#!
문자를 기록합니다.#!/bin/bash sudo fsfreeze -u [example-disk-location]
VM의
/etc/google/snapshots/
디렉터리에 스크립트를 저장해야 합니다. 사전 스크립트의 전체 경로는/etc/google/snapshots/pre.sh
이고 사후 스크립트의 전체 경로는/etc/google/snapshots/post.sh
이어야 합니다.스크립트의 특정 디스크 참조
스냅샷 전후 스크립트에 전달되는 첫 번째 인수는 스냅샷을 생성하는 디스크 목록입니다. 스크립트에서 이 인수를 사용하여 다양한 검사를 수행할 수 있습니다. 예를 들어 VM에 여러 디스크가 연결되어 있지만 스냅샷 요청에 하나의 디스크만 지정한 경우 스냅샷을 만드는 중인 디스크를 확인할 수 있습니다.
인수의 형식은 다음과 같습니다.
예를 들어 SCSI 연결 부팅 디스크는
1/0
으로 표시되고 VM에 연결된 추가 디스크는2/0
으로 표시됩니다.게스트 환경 구성 파일 수정
VM에서 특정 구성 파일을 업데이트하여 애플리케이션 일관성 스냅샷 설정을 구성합니다.
guest-flush
가 사용 설정된 스냅샷 만들기Google Cloud 콘솔, Google Cloud CLI 또는 REST를 사용하여
guest-flush
옵션을 사용 설정한 상태로 스냅샷을 만듭니다. 그러면 스냅샷 캡처 전후에 사전 및 사후 스냅샷 스크립트 실행이 시작됩니다.콘솔
gcloud
스냅샷 설정에 따라 또는 선택한 대체 스토리지 위치를 사용해서 정의된 스토리지 위치 정책으로 스냅샷을 만들 수 있습니다. 자세한 내용은 스냅샷 스토리지 위치 선택을 참조하세요.
REST
스냅샷 설정에 따라 또는 선택한 대체 스토리지 위치를 사용해서 정의된 스토리지 위치 정책으로 스냅샷을 만들 수 있습니다. 자세한 내용은 스냅샷 스토리지 위치 선택을 참조하세요.
다음을 바꿉니다.
guest-flush
가 사용 설정된 스냅샷 일정 만들기예약된 스냅샷을 사용하여 영역 및 리전 Persistent Disk와 Google Cloud Hyperdisk를 정기적으로 자동으로 백업합니다. 백업에 애플리케이션 일관성 스냅샷을 예약하려면 예약된 각 스냅샷의 전후로 사전 및 사후 스냅샷 스크립트가 실행되도록 스냅샷 일정을 만들 때
--guest-flush
옵션을 사용합니다.예를 들어 게스트 환경 구성 파일을 구성하고 커스텀 스크립트를 만든 후 다음 명령어로 시간별 애플리케이션 일관성 스냅샷을 만듭니다.
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush \ --max-retention-days SNAPSHOT_RETENTION_AGE
자세한 내용은 디스크의 스냅샷 일정 정보를 참조하세요.
문제 해결
로그를 검토하고 구성을 확인하여 스냅샷 일정 및 생성 프로세스의 문제를 해결합니다.
로그 검토
구성 확인
다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-09-05(UTC)
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"번역 문제" },{ "type": "thumb-down", "id": "otherDown", "label":"기타" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"이해하기 쉬움" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"문제가 해결됨" },{ "type": "thumb-up", "id": "otherUp", "label":"기타" }] -