Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »


FSR 1.2 이상

개요

스냅샷은 특정 시점의 스토리지의 파일 시스템을 사진 찍듯이 캡처해서 데이터를 백업하는 기술 입니다. 복제 운영 중 사고로 최신 데이터가 훼손되거나 말웨어 감염과 같은 보안이슈에 노출되어 데이터 무결성이 훼손되면 복제 기능만으로 대응하기 어려운 상황에 놓입니다. 이런 경우를 대비해 스냅샷으로 미리 데이터를 백업해 두었다면 특정 시점의 데이터로 복구하여 최악의 상황은 피할 수 있습니다. 즉, FSR 스냅샷 기능은 복제의 보조 기능으로서의 역할을 합니다.

스냅샷은 각 노드의 디스크 볼륨 내 이미지로 저장 되며 노드 내에서 개별적으로 제어하고 처리됩니다. 클러스터 노드 들 간의 스냅샷들이 상호 연동되지 않는 다는 뜻 입니다. 즉 노드 별로 스냅샷을 운영하다가 스냅샷 복구가 필요할 경우 노드 개별적으로 복구하면 됩니다.


구성


환경

스냅샷을 운영하기에 앞서 가장 먼저 고려해야 할 것은 스냅샷을 저장해 둘 볼륨을 지정하는 것 입니다. 복제 볼륨 내에 스냅샷을 보관해 둘 수 도 있고 외부의 다른 디스크 볼륨에 저장할 수도 있습니다. 이것은 볼륨에서 사용된 공간과 여유 공간을 보고 정해야 하는데, 여유 공간이 많지 않다면 외부의 볼륨에 지정하여 스냅샷을 저장하는 것이 좋습니다. 

스냅샷을 저장해 둘 공간에 대한 용량 계산 문제가 있습니다. 일부 문서에서는 전체 볼륨의 수십% 의 여유 공간을 확보하는 것을 권장한다고 되어 있습니다. 그러나 이것은 스냅샷을 위한 최대용량을 의미하지 않으며 때로는 스냅샷 공간 구성에 대한 사용자들의 오해를 불러 일으킵니다.

스냅샷은 Copy On Write(COW) 기술을 기반으로 합니다. 데이터에 변경이 발생할 때 원본을 저장해 두는 방식입니다. 따라서 스냅샷을 생성한 지 얼마 지나지 않은 초기에는 변경점이 많지 않으므로 스냅샷이 차지하는 용량이 작습니다. 그렇지만 시간이 지날수록 데이터 변경 분은 점차 늘어나고 결국 데이터의 모든 영역이 변경 됬다고 가정하면 전체 원본 데이터를 저장해 둘 스냅샷 공간이 필요하게 됩니다. 결론적으로 스냅샷에 필요한 최대 용량은 데이터의 전체 백업분에 해당하는 용량과 같다고 할 수 있습니다. 

예를 들어 1TB 볼륨에 100GB 를 사용하고 있다면 여기에 필요한 스냅샷 용량은 100GB 입니다. 만약 사용 용량이 100GB 를 넘어서 150GB 가 된다면 새로운 스냅샷을 기록하는데 150GB 용량이 요구될 것 입니다.

다음은 스냅샷을 운영하기 위한 구체적인 구성 사례입니다.

  • 복제 볼륨 1TB, 사용공간 300GB
  • 1일 1회 스냅샷 기록, 1주(7일)의 스냅샷 스케줄 유지

위 예의 경우 1주 동안 7개 스냅샷 이미지 공간이 요구 되므로 스냅샷 저장을 위한 볼륨의 공간은 최소 300GB * 7 = 2.1TB 이며 최대 1TB * 7 = 7TB 가 됩니다. 당장 스냅샷에 필요한 공간은 현재 사용되는 공간 만큼의 용량을 요구하겠지만 볼륨의 사용용량은 시간이 갈수록 증가할 수 있으므로 이를 염두에 두어서 최대 용량으로 고려해야 한다는 것 입니다.

  • FSR 스냅샷은 Windows 에서 Volume Shadow Copy Service 의 명세를 따릅니다.
    • Windows 의 VSS 최대 볼륨 지원 크기는 64TB 입니다. 64TB 이상의 볼륨은 스냅샷을 지원하지 않습니다.
    • 하나의 볼륨에 최대 64개의 스냅샷 이미지를 기록할 수 있습니다. 그 이상의 스냅샷을 기록할 경우 가장 오래된 스냅샷이 삭제됩니다.



스냅샷 유형

스냅샷을 운영하기 위해 스냅샷 유형의 지정이 필요합니다. 스냅샷은 기록하는 방식에 따라 복사, 전체, 차등, 증분 옵션이 있으며 구성파일의 snapshot 섹션의 type 항목에서 지정합니다.

  • 복사(Copy): 전체 데이터와 애플리케이션 로그를 백업합니다. 기본값 입니다.
  • 전체(Full): 전체 데이터를 대상으로 백업합니다.
  • 차등(Differential): 마지막 전체 백업 기준의 모든 차이점에 대해 백업합니다.
  • 증분(Incremental): 마지막 전체 또는 증분 백업 기준의 증가분에 대해 백업합니다.

FSR은 복사 유형이 기본으로 지정되어 있어서 특별한 요구가 없다면 복사 유형으로 스냅샷을 기록해서 백업합니다. 그러나 복사 백업은 차등, 증분 백업의 기준으로 제공할 수 없기 때문에 차등, 증분 백업을 사용하려면 전체백업으로 먼저 기록해야 할 수도 있습니다. 이것은 응용 프로그램에서 지원하는 백업 유형에 따라 차이가 있습니다.


사전/사후 처리

FSR 스냅샷은 응용 일관성(Application Consistency)을 보장하는 스냅샷을 지향합니다. 응용 프로그램이 일관성을 가진 스냅샷을 획득하기 위해선 다음의 절차가 수행되어야 합니다.

  1. 스냅샷을 기록하기 전
    1. 응용 I/O 작업을 일시 중단하고 응용의 메모리 버퍼를 Flush 하여 디스크를 최신 데이터로 갱신합니다.
    2. 해당 볼륨에 대한 파일시스템 캐쉬를 Flush 합니다.
  2. 스냅샷을 기록합니다.
  3. 응용 I/O 작업을 재개합니다.

절차에서 보이듯이 스냅샷을 기록하기 전과 후에 필요한 절차가 있음을 알 수 있습니다. 사용자는 FSR 의 스냅샷 사전/사후 핸들러를 통해 스크립트 형식으로 응용을 제어할 기회를 가집니다. 

Windows 의 VSS 서비스는 이러한 응용 일관성 스냅샷을 보장하기 위하여 VSS Writer 를 응용 프로그램에서 구현하도록 제안하고 있습니다. VSS는 응용의 VSS Writer 와 상호 연동하여 스냅샷 요청이 있을 경우 위 절차를 차례로 수행하여 응용 일관성 스냅샷을 구현합니다. 따라서 VSS Writer 를 구현한 응용 프로그램을 대상으로 한다면 사전/사후 핸들러를 작성할 필요가 없습니다. 다음은 VSS Writer 를 지원하는 대표적인 프로그램들 입니다.

현실적으로는 위 프로그램들을 제외하면 대부분의 응용 프로그램들에선 VSS Writer 를 구현하고 있지 않습니다.

만약 위 절차대로 응용을 제어할 수 없다면 최소한 파일시스템 캐쉬를 Flush 해서 파일시스템 일관성(Filesystem Consistency)을 가진 스냅샷으로 기록해야 하며 이마저도 수행하지 않는다면 충돌 일관성(Crash Consistency) 수준의 스냅샷만을 확보하게 될 것 입니다.


제어

FSR의 스냅샷 기능은 복제 운영 중 복제 대상에 대한 백업을 수행하기 위한 부가 기능입니다. 즉 스냅샷을 복제 리소스 단위로 관리하고 제어하며 복제 리소스의 하위의 개념으로 운영합니다. 

각 제어 명령들은 다음과 같습니다.


지원 확인

먼저, 현재 환경이 스냅샷 기능을 지원하는지 확인합니다.

λ fsradm status -v
r2:node1 role:secondary file:up_to_date fs-type:ntfs pending:0 lock:off
  last-promoted:2022-11-25T14:06:36+09:00 snapshot:available
  node2 state:established peer-state:established role:secondary file:outdated pending:0
    repl-started:2022-11-25T14:06:36+09:00 last-synced:2022-11-25T14:06:37+09:00 out-of-sync:none

상태 출력 명령에서 위와 같이 리소스의 스냅샷 상태(snapshot 항목)가 unavailable이 아니라면 사용 가능한 환경입니다.


생성과 삭제

복제 리소스를 구성하고 메타 초기화(meta-create), 기동(up)한 이후부터 스냅샷을 생성할 수 있습니다. 생성한 스냅샷은 FSR 의 메타 정보에 포함되어 관리되고 메타정보가 삭제되기 전 까지 FSR 리소스와 연관됩니다. 리소스가 삭제되었다고 스냅샷 이미지가 삭제되지는 않습니다. 명시적으로 스냅샷을 삭제하거나 메타를 초기화하면 리소스와 스냅샷의 연관이 끊어집니다.


스냅샷 생성 시 리소스와 스냅샷 ID가 필요합니다. 스냅샷 ID는 사용자가 결정합니다.

λ fsradm snapshot create r2 test
done

스냅샷 생성은 비동기적으로 수행되며 상태 조회를 통해 진행 상황을 확인 할 수 있습니다.

λ fsradm status -v
r2:node1 role:secondary file:up_to_date fs-type:ntfs pending:0 lock:off
  last-promoted:2022-11-25T14:06:36+09:00 snapshot:creating
  doing snapshot set...
  node2 state:established peer-state:established role:secondary file:outdated pending:0
    repl-started:2022-11-25T14:06:36+09:00 last-synced:2022-11-25T14:06:37+09:00 out-of-sync:none

생성이 완료되면 스냅샷 상태가 다시 available로 변경됩니다.

불필요한 스냅샷은 다음의 명령으로 삭제합니다.

λ fsradm snapshot delete r2 test
done


조회

λ fsradm snapshot list r2
r2:node1 count:1
  snapshot-id:test created:2022-11-28T14:37:59+09:00 state:available

목록 조회를 통해 생성된 스냅샷을 확인 할 수 있으며, 각 스냅샷 이미지가 유효한지 여부를 state 항목에서 출력합니다. 스냅샷 이미지 중 삭제된 것이 있다면 not_exists로 출력하고, 상세 출력 옵션을 사용하거나 개별 조회를 통해 추가적인 정보를 확인 할 수 있습니다.

λ fsradm snapshot show r2 test
created:2022-11-28T14:37:59+09:00 state:available
directories:
  C:\r2
    recursive:true
images:
  index:0
    guid:{09DFE010-BAE8-4581-BC9E-836A9F556ACA}
    mount-path:C:\
    volume:\\?\Volume{d0c8016a-dc90-11ec-80b3-806e6f6e6963}\
    shadow-volume:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8
    created:2022-11-28T14:37:54+09:00


복구

복구

스냅샷 복구는 다음의 작업이 선행되어야 합니다.

  • 강등: 운영 중인 노드는 스냅샷 복구를 수행 할 수 없습니다.

  • 연결 종료: 타깃 노드가 되는 것을 피하기 위해 연결을 종료하여 Standalone 상태로 전환해야 합니다.

  • 파일 잠금: 복구 중 파일 변경을 방지하기 위해 읽기 전용 이상의 파일 잠금이 수행되어야 합니다.

λ fsradm snapshot recovery r2 test
done

복구 명령은 스냅샷 생성과 같이 비동기적으로 수행되므로 상태 조회를 통해 진행 상황을 확인해야 합니다.

내보내기

λ fsradm snapshot export r2 test e:\test
done

위 명령을 실행하면 스냅샷의 내용을 지정된 경로로 복사합니다. 복제 대상 경로가 여러 개인 경우에는 대상 경로를 여러 개 지정하여 내보낼 수 있으며, 하나의 경로에 모든 복제 대상 경로를 내보낼 경우 --combine 옵션을 지정하고 대상 경로를 하나만 작성하면 됩니다.

연결

생성된 스냅샷을 지정 경로에 연결하여 직접 파일에 접근 할 수 있습니다. 단, 스냅샷에 이미지가 2개 이상일 수 있으므로 이미지의 인덱스(번호)를 입력해야 합니다. 이미지 목록은 스냅샷 조회 명령을 통해 확인 할 수 있습니다.

λ fsradm snapshot expose r2 test 0 y:
done

사용을 다 하면 다음과 같이 경로와의 연결을 끊을 수 있습니다.

λ fsradm snapshot unexpose r2 test 0
done

어느 스냅샷을 연결 했는지 기억나지 않을 경우 연결된 스냅샷만 조회 할 수 있습니다.

λ fsradm snapshot list-exposed
r2:node1 count:1
  snapshot-id:test created:2022-11-28T14:37:59+09:00 state:available
  directories:
    C:\r2
      recursive:true
  images:
    index:0
      guid:{09DFE010-BAE8-4581-BC9E-836A9F556ACA}
      mount-path:C:\
      volume:\\?\Volume{d0c8016a-dc90-11ec-80b3-806e6f6e6963}\
      shadow-volume:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8
      created:2022-11-28T14:37:54+09:00
      expose-path:y:\


정리

스냅샷 이미지가 삭제되어 더 이상 유효하지 않게 된 스냅샷은 다음의 명령으로 일괄 삭제할 수 있습니다.

λ fsradm snapshot cleanup r2
done


문제 해결


Windows

지원하지 않는 백업 유형 오류

구성 파일에 지정한 백업 유형을 운영체제에 설치 된 VSS 작성자가 지원하지 않는 경우 생성 과정에서 오류가 발생 할 수 있습니다. 다음은 MS SQL의 VSS 작성자인 SqlServerWriter에서 증분 백업을 지원하지 않지만 FSR에서 증분 백업을 수행하도록 지정한 경우에 발생하는 오류입니다.

writer "SqlServerWriter" only supports (full, copy, differential): backup type not available

오류 내용에 출력 된 백업 유형 중 하나로 변경하고 스냅샷을 생성해야 합니다.


작성자 오류

스냅샷 생성 중 VSS 작성자에서 오류가 발생하면 FSR(VSS 요청자)에 자세한 내용이 전달되지 않습니다. 예를 들어, MS SQL의 VSS 작성자에서 오류가 발생하면 다음과 같은 오류가 출력 됩니다.

writer "SqlServerWriter": VSS_E_WRITERERROR_NONRETRYABLE

발생할 수 있는 오류 유형은 다음과 같습니다.

  • VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT

    • 볼륨의 일부만 백업 되었습니다. 복원에 사용 할 수 없는 상황으로 판단하여 실패로 처리합니다. 이벤트 로그 또는 해당 VSS 작성자의 로그를 통해 원인을 파악해야 합니다.

  • VSS_E_WRITERERROR_OUTOFRESOURCES

    • 메모리 또는 다른 시스템 리소스가 부족한 상황입니다. 자원을 확보 한 뒤 다시 시도해야 합니다.

  • VSS_E_WRITERERROR_TIMEOUT

    • 작성기의 동작에서 시간 초과가 발생했습니다. 다른 애플리케이션이 자원을 과다 사용 중일 수 있습니다.

  • VSS_E_WRITERERROR_RETRYABLE

    • 이 오류가 발생하면 FSR은 자동으로 작업을 다시 시도합니다. 이 오류가 반환 되었다면 총 다섯 번의 재 시도를 수행하였으나 동일한 오류가 반환 된 경우입니다. 이벤트 로그 또는 해당 VSS 작성자의 로그를 통해 원인을 파악해야 합니다.

  • VSS_E_WRITERERROR_NONRETRYABLE

    • 작성자의 작업이 실패했습니다. 이벤트 로그 또는 해당 VSS 작성자의 로그를 통해 원인을 파악해야 합니다.






  • No labels