14장. 백업 및 복원


14.1. VM 스냅샷을 사용하여 백업 및 복원

스냅샷을 사용하여 VM(가상 머신)을 백업하고 복원할 수 있습니다. 스냅샷은 다음 스토리지 공급자가 지원합니다.

  • Red Hat OpenShift Data Foundation
  • Kubernetes Volume Snapshot API를 지원하는 CSI(Container Storage Interface) 드라이버가 있는 기타 클라우드 스토리지 공급자

온라인 스냅샷의 기본 시간 기한은 5분(5m)이며 필요한 경우 변경할 수 있습니다.

중요

온라인 스냅샷은 핫플러그 가상 디스크가 있는 가상 머신에서 지원됩니다. 그러나 가상 머신 사양에 없는 핫플러그 디스크는 스냅샷에 포함되지 않습니다.

무결성이 가장 높은 온라인(실행 상태) VM의 스냅샷을 생성하려면 운영 체제에 포함되지 않은 경우 QEMU 게스트 에이전트를 설치합니다. QEMU 게스트 에이전트는 기본 Red Hat 템플릿에 포함되어 있습니다.

QEMU 게스트 에이전트는 시스템 워크로드에 따라 VM 파일 시스템을 가능한 한 많이 정지하여 일관된 스냅샷을 사용합니다. 이렇게 하면 스냅샷을 생성하기 전에 진행 중인 I/O가 디스크에 기록됩니다. 게스트 에이전트가 없으면 정지를 수행할 수 없으며 최상의 스냅샷을 생성합니다. 스냅샷이 수행된 조건은 웹 콘솔 또는 CLI에 표시되는 스냅샷 표시에 반영됩니다.

14.1.1. 스냅샷 정보

스냅샷은 특정 시점의 VM(가상 머신) 상태 및 데이터를 나타냅니다. 스냅샷을 사용하면 백업 및 재해 복구를 위해 기존 VM을 (스냅샷에 표시된) 이전 상태로 복원하거나 이전 개발 버전으로 신속하게 롤백할 수 있습니다.

VM 스냅샷은 전원이 꺼진(중지됨 상태) VM에서 생성되거나 전원이 켜진(실행 중 상태)에서 생성됩니다.

실행 중인 VM의 스냅샷을 생성하는 경우 컨트롤러는 QEMU 게스트 에이전트가 설치되어 실행 중인지 확인합니다. 이 경우 스냅샷을 생성하기 전에 VM 파일 시스템을 중지하고 스냅샷을 만든 후 파일 시스템을 취소합니다.

스냅샷에는 VM에 연결된 각 CSI(Container Storage Interface) 볼륨 복사본과 VM 사양 및 메타데이터 복사본이 저장됩니다. 스냅샷을 생성한 후에는 변경할 수 없습니다.

다음 스냅샷 작업을 수행할 수 있습니다.

  • 새 프로젝트 생성
  • 스냅샷에서 가상 머신 복사본 생성
  • 특정 VM에 연결된 모든 스냅샷 나열
  • 스냅샷에서 VM 복원
  • 기존 VM 스냅샷 삭제

VM 스냅샷 컨트롤러 및 사용자 정의 리소스

VM 스냅샷 기능에는 스냅샷을 관리하기 위해 사용자 정의 리소스 정의(CRD)로 정의된 세 가지 새 API 오브젝트가 도입되었습니다.

  • VirtualMachineSnapshot: 스냅샷을 생성하라는 사용자 요청을 나타냅니다. 여기에는 VM의 현재 상태 정보가 포함됩니다.
  • VirtualMachineSnapshotContent: 클러스터의 프로비저닝 리소스를 나타냅니다(스냅샷). VM 스냅샷 컨트롤러에서 생성하며 VM을 복원하는 데 필요한 모든 리소스에 대한 참조를 포함합니다.
  • VirtualMachineRestore: 스냅샷에서 VM을 복원하라는 사용자 요청을 나타냅니다.

VM 스냅샷 컨트롤러는 VirtualMachineSnapshot 오브젝트와 이 오브젝트에 대해 생성된 VirtualMachineSnapshotContent 오브젝트를 일대일 매핑으로 바인딩합니다.

14.1.2. 스냅샷 생성

OpenShift Container Platform 웹 콘솔 또는 명령줄을 사용하여 VM(가상 머신)의 스냅샷을 생성할 수 있습니다.

14.1.2.1. 웹 콘솔을 사용하여 스냅샷 생성

OpenShift Container Platform 웹 콘솔을 사용하여 VM(가상 머신)의 스냅샷을 생성할 수 있습니다.

VM 스냅샷에는 다음 요구 사항을 충족하는 디스크가 포함됩니다.

  • 데이터 볼륨 또는 영구 볼륨 클레임 중 하나
  • CSI(Container Storage Interface) 볼륨 스냅샷을 지원하는 스토리지 클래스에 속해야 합니다.

프로세스

  1. 웹 콘솔에서 가상화 VirtualMachines 로 이동합니다.
  2. VM을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
  3. VM이 실행 중인 경우 옵션 메뉴 kebab 를 클릭하고 중지 를 선택하여 전원을 끕니다.
  4. 스냅샷 탭을 클릭한 후 스냅샷 찍기를 클릭합니다.
  5. 스냅샷 이름을 입력합니다.
  6. 이 스냅샷에 포함된 디스크를 확장하여 스냅샷에 스토리지 볼륨이 포함되어 있는지 확인합니다.
  7. VM에 스냅샷에 포함할 수 없는 디스크가 있고 계속 진행하려면 이 경고를 인식하고 계속 진행하시겠습니까.
  8. 저장을 클릭합니다.

14.1.2.2. 명령줄을 사용하여 스냅샷 생성

VirtualMachineSnapshot 오브젝트를 생성하여 오프라인 또는 온라인 VM에 대한 VM(가상 머신) 스냅샷을 생성할 수 있습니다.

사전 요구 사항

  • PVC(영구 볼륨 클레임)이 CSI(Container Storage Interface) 볼륨 스냅샷을 지원하는 스토리지 클래스에 있는지 확인합니다.
  • OpenShift CLI(oc)를 설치합니다.
  • 선택 사항: 스냅샷을 생성할 VM의 전원을 끕니다.

프로세스

  1. 다음 예와 같이 새 VirtualMachineSnapshot 의 이름과 소스 VM의 이름을 지정하는 VirtualMachineSnapshot 오브젝트를 정의하는 YAML 파일을 생성합니다.

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineSnapshot
    metadata:
      name: <snapshot_name>
    spec:
      source:
        apiGroup: kubevirt.io
        kind: VirtualMachine
        name: <vm_name>
  2. VirtualMachineSnapshot 오브젝트를 생성합니다.

    $ oc create -f <snapshot_name>.yaml

    스냅샷 컨트롤러는 VirtualMachineSnapshotContent 오브젝트를 생성하여 VirtualMachineSnapshot에 바인딩하고 VirtualMachineSnapshot 오브젝트의 statusreadyToUse 필드를 업데이트합니다.

  3. 선택 사항: 온라인 스냅샷을 생성하는 경우 wait 명령을 사용하여 스냅샷 상태를 모니터링할 수 있습니다.

    1. 다음 명령을 실행합니다.

      $ oc wait <vm_name> <snapshot_name> --for condition=Ready
    2. 스냅샷 상태를 확인합니다.

      • InProgress - 온라인 스냅샷 작업이 아직 진행 중입니다.
      • Succeeded - 온라인 스냅샷 작업이 성공적으로 완료되었습니다.
      • Failed - 온라인 스냅샷 작업이 실패했습니다.

        참고

        온라인 스냅샷의 기본 시간 기한은 5분(5m)입니다. 5분 내에 스냅샷이 성공적으로 완료되지 않으면 상태가 failed로 설정됩니다. 나중에 파일 시스템이 손상되고 VM이 수정되지 않지만 failed 스냅샷 이미지를 삭제할 때까지 상태는 실패로 유지됩니다.

        기본 시간 기한을 변경하려면 스냅샷 작업이 시간 초과되기 전에 지정할 시간(m) 또는 초(s)를 사용하여 VM 스냅샷 사양에 FailureDeadline 속성을 추가합니다.

        시간 기한을 설정하지 않으려면 0을 지정할 수 있지만 0은 응답하지 않는 VM이 발생할 수 있으므로 일반적으로 권장되지 않습니다.

        m 또는 s 와 같은 시간 단위를 지정하지 않으면 기본값은 초(s)입니다.

검증

  1. VirtualMachineSnapshot 오브젝트가 생성되고 VirtualMachineSnapshotContent 에 바인딩되고 readyToUse 플래그가 true 로 설정되어 있는지 확인합니다.

    $ oc describe vmsnapshot <snapshot_name>

    출력 예

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineSnapshot
    metadata:
      creationTimestamp: "2020-09-30T14:41:51Z"
      finalizers:
      - snapshot.kubevirt.io/vmsnapshot-protection
      generation: 5
      name: mysnap
      namespace: default
      resourceVersion: "3897"
      selfLink: /apis/snapshot.kubevirt.io/v1alpha1/namespaces/default/virtualmachinesnapshots/my-vmsnapshot
      uid: 28eedf08-5d6a-42c1-969c-2eda58e2a78d
    spec:
      source:
        apiGroup: kubevirt.io
        kind: VirtualMachine
        name: my-vm
    status:
      conditions:
      - lastProbeTime: null
        lastTransitionTime: "2020-09-30T14:42:03Z"
        reason: Operation complete
        status: "False" 1
        type: Progressing
      - lastProbeTime: null
        lastTransitionTime: "2020-09-30T14:42:03Z"
        reason: Operation complete
        status: "True" 2
        type: Ready
      creationTime: "2020-09-30T14:42:03Z"
      readyToUse: true 3
      sourceUID: 355897f3-73a0-4ec4-83d3-3c2df9486f4f
      virtualMachineSnapshotContentName: vmsnapshot-content-28eedf08-5d6a-42c1-969c-2eda58e2a78d 4

    1
    status 필드의 Progressing 조건은 스냅샷이 아직 생성 중인지를 나타냅니다.
    2
    status 필드의 Ready 조건은 스냅샷 생성 프로세스가 완료되었는지를 나타냅니다.
    3
    스냅샷을 사용할 준비가 되었는지를 나타냅니다.
    4
    스냅샷이 스냅샷 컨트롤러에서 생성한 VirtualMachineSnapshotContent 오브젝트에 바인딩되도록 지정합니다.
  2. VirtualMachineSnapshotContent 리소스의 spec:volumeBackups 속성을 확인하여 예상 PVC가 스냅샷에 포함되어 있는지 확인합니다.

14.1.3. 스냅샷 표시를 사용하여 온라인 스냅샷 확인

스냅샷 표시는 온라인 VM(가상 시스템) 스냅샷 작업에 대한 컨텍스트 정보입니다. 오프라인 VM(가상 시스템) 스냅샷 작업에는 표시를 사용할 수 없습니다. 표시는 온라인 스냅샷 생성에 대한 세부 정보를 설명하는 데 유용합니다.

사전 요구 사항

  • 온라인 VM 스냅샷을 생성하려고 시도해야 합니다.

프로세스

  1. 다음 작업 중 하나를 수행하여 스냅샷 표시의 출력을 표시합니다.

    • 명령줄을 사용하여 VirtualMachineSnapshot 오브젝트 YAML의 상태 스탠자에서 표시기 출력을 확인합니다.
    • 웹 콘솔에서 스냅샷 세부 정보 화면에서 VirtualMachineSnapshot Status 를 클릭합니다.
  2. status.indications 매개변수의 값을 확인하여 온라인 VM 스냅샷의 상태를 확인합니다.

    • Online에서는 온라인 스냅샷 생성 중에 VM이 실행 중임을 나타냅니다.
    • GuestAgent 는 온라인 스냅샷 생성 중에 QEMU 게스트 에이전트가 실행 중임을 나타냅니다.
    • NoGuestAgent는 온라인 스냅샷을 생성하는 동안 QEMU 게스트 에이전트가 실행되지 않았음을 나타냅니다. QEMU 게스트 에이전트가 설치되지 않았거나 실행 중이거나 다른 오류로 인해 QEMU 게스트 에이전트를 사용하여 파일 시스템을 중지하고 해석할 수 없습니다.

14.1.4. 스냅샷에서 가상 머신 복원

OpenShift Container Platform 웹 콘솔 또는 명령줄을 사용하여 스냅샷에서 VM(가상 머신)을 복원할 수 있습니다.

14.1.4.1. 웹 콘솔을 사용하여 스냅샷에서 VM 복원

VM(가상 머신)을 OpenShift Container Platform 웹 콘솔의 스냅샷에 표시된 이전 구성으로 복원할 수 있습니다.

프로세스

  1. 웹 콘솔에서 가상화 VirtualMachines 로 이동합니다.
  2. VM을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
  3. VM이 실행 중인 경우 옵션 메뉴 kebab 를 클릭하고 중지 를 선택하여 전원을 끕니다.
  4. 스냅샷 탭을 클릭하여 VM과 연결된 스냅샷 목록을 확인합니다.
  5. 스냅샷을 선택하여 스냅샷 세부 정보 화면을 엽니다.
  6. 옵션 메뉴 kebab 를 클릭하고 VirtualMachineSnapshot 복원을 선택합니다.
  7. 복원을 클릭합니다.

14.1.4.2. 명령줄을 사용하여 스냅샷에서 VM 복원

명령줄을 사용하여 기존 VM(가상 머신)을 이전 구성으로 복원할 수 있습니다. 오프라인 VM 스냅샷에서만 복원할 수 있습니다.

사전 요구 사항

  • 복원할 VM의 전원을 끕니다.

프로세스

  1. YAML 파일을 생성하여 복원할 VM의 이름과 다음 예와 같이 소스로 사용할 스냅샷 이름을 지정하는 VirtualMachineRestore 오브젝트를 정의합니다.

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineRestore
    metadata:
      name: <vm_restore>
    spec:
      target:
        apiGroup: kubevirt.io
        kind: VirtualMachine
        name: <vm_name>
      virtualMachineSnapshotName: <snapshot_name>
  2. VirtualMachineRestore 오브젝트를 생성합니다.

    $ oc create -f <vm_restore>.yaml

    스냅샷 컨트롤러는 VirtualMachineRestore 오브젝트의 상태 필드를 업데이트하고 기존 VM 구성을 스냅샷의 콘텐츠로 교체합니다.

검증

  • VM이 스냅샷에 표시된 이전 상태로 복원되고 전체 플래그가 true 로 설정되어 있는지 확인합니다.

    $ oc get vmrestore <vm_restore>

    출력 예

    apiVersion: snapshot.kubevirt.io/v1alpha1
    kind: VirtualMachineRestore
    metadata:
    creationTimestamp: "2020-09-30T14:46:27Z"
    generation: 5
    name: my-vmrestore
    namespace: default
    ownerReferences:
    - apiVersion: kubevirt.io/v1
      blockOwnerDeletion: true
      controller: true
      kind: VirtualMachine
      name: my-vm
      uid: 355897f3-73a0-4ec4-83d3-3c2df9486f4f
      resourceVersion: "5512"
      selfLink: /apis/snapshot.kubevirt.io/v1alpha1/namespaces/default/virtualmachinerestores/my-vmrestore
      uid: 71c679a8-136e-46b0-b9b5-f57175a6a041
      spec:
        target:
          apiGroup: kubevirt.io
          kind: VirtualMachine
          name: my-vm
      virtualMachineSnapshotName: my-vmsnapshot
      status:
      complete: true 1
      conditions:
      - lastProbeTime: null
      lastTransitionTime: "2020-09-30T14:46:28Z"
      reason: Operation complete
      status: "False" 2
      type: Progressing
      - lastProbeTime: null
      lastTransitionTime: "2020-09-30T14:46:28Z"
      reason: Operation complete
      status: "True" 3
      type: Ready
      deletedDataVolumes:
      - test-dv1
      restoreTime: "2020-09-30T14:46:28Z"
      restores:
      - dataVolumeName: restore-71c679a8-136e-46b0-b9b5-f57175a6a041-datavolumedisk1
      persistentVolumeClaim: restore-71c679a8-136e-46b0-b9b5-f57175a6a041-datavolumedisk1
      volumeName: datavolumedisk1
      volumeSnapshotName: vmsnapshot-28eedf08-5d6a-42c1-969c-2eda58e2a78d-volume-datavolumedisk1

    1
    VM을 스냅샷에 표시된 상태로 복원하는 프로세스가 완료되었는지를 나타냅니다.
    2
    status 필드의 Progressing 조건은 VM이 아직 복원 중인지를 나타냅니다.
    3
    status 필드의 Ready 조건은 VM 복원 프로세스가 완료되었는지를 나타냅니다.

14.1.5. 스냅샷 삭제

OpenShift Container Platform 웹 콘솔 또는 명령줄을 사용하여 VM(가상 머신)의 스냅샷을 삭제할 수 있습니다.

14.1.5.1. 웹 콘솔을 사용하여 스냅샷 삭제

웹 콘솔을 사용하여 기존 VM(가상 머신) 스냅샷을 삭제할 수 있습니다.

프로세스

  1. 웹 콘솔에서 가상화 VirtualMachines 로 이동합니다.
  2. VM을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
  3. 스냅샷 탭을 클릭하여 VM과 연결된 스냅샷 목록을 확인합니다.
  4. 스냅샷 옆에 있는 옵션 메뉴 kebab 를 클릭하고 VirtualMachineSnapshot 삭제 를 선택합니다.
  5. 삭제를 클릭합니다.

14.1.5.2. CLI에서 가상 머신 스냅샷 삭제

적절한 VirtualMachineSnapshot 오브젝트를 삭제하여 기존 VM(가상 머신) 스냅샷을 삭제할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.

프로세스

  • VirtualMachineSnapshot 오브젝트를 삭제합니다.

    $ oc delete vmsnapshot <snapshot_name>

    스냅샷 컨트롤러는 VirtualMachineSnapshot을 연결된 VirtualMachineSnapshotContent 오브젝트와 함께 삭제합니다.

검증

  • 스냅샷이 삭제되고 더 이상 이 VM에 연결되어 있지 않은지 확인합니다.

    $ oc get vmsnapshot

14.1.6. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.