백업 전 작업 개요

VSS의 사전 백업 작업은 백업할 데이터가 포함된 볼륨의 섀도 복사본을 만드는 데 중점을 줍니다. 백업 애플리케이션은 실제 볼륨이 아니라 섀도 복사본의 데이터를 저장합니다. 자세한 내용은 VSS에서 백업 처리 개요를 참조하세요.

요청자는 일반적으로 기록기가 백업을 준비하고 섀도 복사본을 만들 때까지 기다립니다. 작성기는 백업에 참여할지 여부를 결정해야 하며, 이 경우 백업 및 섀도 복사본을 준비하도록 파일과 자체를 구성해야 합니다. 다음 표에서는 백업 작업을 준비하는 데 필요한 작업 및 이벤트 시퀀스를 보여 줍니다.

요청자 작업 이벤트 작성기 작업
요청자는 백업 옵션을 설정할 수 있습니다( IVssBackupComponents::SetBackupOptions 참조). 없음 없음
저장된 백업 스탬프를 검사하여 증분 및 차등 백업 작업을 지원합니다( IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp 참조) 없음 없음
IVssBackupComponents::P repareForBackup을 사용하여 백업 작업을 준비하도록 작성자에게 알립니다. PrepareForBackup 작성기 준비에는 파일을 백업할지 여부, 기록기가 섀도 복사본 고정에 참여할지 여부, 작성기별 메타데이터 만들기뿐만 아니라( CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponent::GetBackupOptions, CVssWriter::AreComponentsSelected, IVssComponent::SetBackupMetadataIVssComponent:: 참조) GetPreviousBackupStamp.
요청자는 기록기가 IVssAsync를 사용하여 백업을 설정할 때까지 기다립니다. 또한 기록기 상태 확인해야 합니다(IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus 참조). 없음 없음
요청자가 IVssBackupComponents::D oSnapshotSet을 사용하여 섀도 복사본을 요청합니다. 없음 없음
없음 PrepareForSnapshot CVssWriter::OnPrepareSnapshot: 기록기를 섀도 복사본 준비 상태로 전환합니다.
없음 중지 CVssWriter::OnFreeze: 섀도 복사본 이전의 최종 설정입니다.
없음 재개 CVssWriter::OnThaw: 정상 작동(I/O 포함)을 다시 시작할 수 있습니다.
없음 PostSnapshot CVssWriter::OnPostSnapshot: 섀도 복사본 준비의 최종 클린. IVssComponent::AddDifferencedFilesByLastModifyTimeIVssComponent::SetBackupStamp를 참조하세요.
요청자는 IVssAsync를 사용하여 섀도 복사본이 완료될 때까지 기다립니다. 또한 기록기 상태 확인해야 합니다(IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus 참조).
없음 없음

 

요청자 사전 백업 작업

또한 IVssBackupComponents::P repareForBackup 이벤트를 만들기 전에 요청자는 각 기록기의 세부 사항 및 요청자가 알고 있는지 여부에 따라 IVssBackupComponents::SetBackupOptions 를 사용하여 개별 작성기에 대한 백업 옵션을 설정할 수도 있습니다.

증분 및 차등 작업을 지원하기 위해 요청자는 이 시점에서 이전 백업 작업의 타임스탬프에 대한 구성 요소( IVssComponent::GetBackupStamp 사용)를 검사하고 해당 정보를 사용하여 기록기가 처리할 이전 타임스탬프를 설정할 수 있습니다( IVssBackupComponents::SetPreviousBackupStamp 사용). 자세한 내용은 증분 및 차등 백업을 참조하세요.

이제 요청자는 시스템의 기록기에 사전 백업 준비를 완료하고 섀도 복사본 만들기를 처리하도록 지시할 수 있습니다.

먼저 요청자는 IVssBackupComponents::P repareForBackup을 호출하여 PrepareForBackup 이벤트를 생성합니다.

모든 참여 기록기가 PrepareForBackup 이벤트 처리에서 반환된 후(요청자가 PrepareForBackup에서 반환한 IVssAsync 인터페이스의 instance 사용하여 결정함) 요청자는 IVssBackupComponents::D oSnapshotSet을 호출하여 섀도 복사본을 시작할 수 있습니다. 그러면 PrepareForSnapshot, Freeze, ThawPostSnapshot이 생성됩니다. 처리할 기록기에 대한 이벤트입니다.

요청자가 섀도 복사본을 만들 필요가 없는 경우도 있습니다. 특히 지정된 기록기의 구성 요소 중 하나에서 관리되는 각 파일 집합에는 Identify 이벤트 중에 설정된 파일 사양 백업 마스크(비트 OR VSS_FILE_SPEC_BACKUP_TYPE 값으로 표시됨)가 있습니다. 이 마스크는 무엇보다도 파일 집합에서 백업을 수행하기 전에 시스템을 섀도 복사해야 하는지 여부를 지정합니다.

모든 볼륨에 백업할 파일 집합이 섀도 복사본이 필요한 경우 IVssBackupComponents::D oSnapshotSet 을 호출할 필요가 없습니다.

기록기 사전 백업 작업

PrepareForBackup 이벤트를 처리할 때 VSS는 각 작성기의 CVssWriter::OnPrepareBackup 메서드를 호출합니다. 가상 메서드는 기본적으로 true를 반환합니다.

기록기는 이 기본 구현을 재정의하고 처리를 사용하여 예정된 백업에 대한 정보를 찾고 작업을 수행할 수 있습니다.

작성기는 다음 방법을 사용하여 고려된 백업 작업의 종류에 대한 정보를 확인할 수 있습니다.

  1. CVssWriter::GetBackupType
  2. CVssWriter::IsBootableStateBackedUp
  3. CVssWriter::AreComponentsSelected

작성기는 관리하는 파일이 CVssWriter::IsPathAffected를 사용하여 섀도 복사본에 포함되는지 여부를 결정합니다.

더 중요한 것은 VSS가 CVssWriter::OnPrepareBackup 메서드를 호출할 때 IVssWriterComponents 인터페이스의 instance 전달하므로 IVssComponent 인터페이스를 통해 요청자의 백업 구성 요소 문서에 명시적으로 포함된 구성 요소에 직접 액세스할 수 있습니다. 작성기는 구성 요소 집합을 정의하는 IVssComponent 인터페이스의 인스턴스를 사용하여 암시적으로 포함된 구성 요소에 대한 액세스 권한을 얻었습니다( 선택 가능성 및 구성 요소 속성 작업 참조).

PrepareForBackup 이벤트를 처리하는 동안 작성기는 IVssComponent 인터페이스를 사용하여 다음을 포함하여 구성 요소별(또는 구성 요소 집합에 의해 설정된 구성 요소) 작업을 수행합니다.

  1. IVssComponent::AddPartialFile을 호출하여 부분 파일(지원되는 경우)을 추가합니다.
  2. 작성기에서 복원을 처리하는 데 필요한 모든 프라이빗 메타데이터를 설정합니다.
  3. 기록기가 증분 및 차등 백업을 지원하는 경우( 증분 및 차등 백업 참조) 다음을 수행합니다.
  4. 여러 디스크에서 데이터 동기화와 같이 시간이 많이 걸리는 비동기 작업을 시작합니다. 이렇게 하면 다른 VSS 이벤트 처리를 포함하여 작업이 처리되는 동안 작성기가 작업을 계속할 수 있습니다. 이러한 작업은 Freeze 이벤트 전에 종료되어야 합니다.

요청자가 IVssBackupComponents::D oSnapshotSet을 호출하면 섀도 복사본이 시작되고 기록기에서 처리할 다음 이벤트가 생성됩니다.

작성기의 처리기 중 세 가지(CVssWriter::OnPrepareSnapshot, CVssWriter::OnFreezeCVssWriter::OnThaw)는 순수한 가상 메서드이며, 각 작성기는 기본값에 의존하지 않고 구현해야 합니다. 작성자의 요구 사항에 따라 더미 메서드로 코딩되어 단순히 TRUE를 반환할 수 있습니다.

일반적으로 Freeze 이벤트 발급과 Thaw 이벤트 발급 사이에는 시간이 좁기 때문에 프로세스 종료, 임시 파일 만들기 또는 I/O 큐 드레이닝과 같은 섀도 복사본을 준비하는 대부분의 주요 작업은 CVssWriter::OnPrepareSnapshot에서 처리됩니다.

섀도 복사본을 만들기 전에 작성기가 CVssWriter::OnPrepareSnapshot 을 사용하여 해당 I/O를 처리하는 방법은 작성기의 아키텍처에 따라 크게 달라집니다.

모든 쓰기를 유지하고 데이터를 고정 전에 절대 일관성 상태로 유지할 수 있는 기록기는 이렇게 해야 합니다.

기록기가 I/O를 고정할 수 없는 경우 백업을 위한 안정적인 원본을 만들고 섀도 복사본의 복구 시간을 줄이기 위한 작업을 수행해야 합니다. 이 예제에는 들어오는 I/O 요청을 큐에 대기하거나 백업 원본으로 사용할 대체 경로 에 중복된 파일 집합을 생성하는 것이 포함될 수 있습니다.

CVssWriter::OnFreeze 메서드는 CVssWriter::OnPrepareSnapshot이 올바른 상태로 I/O를 남겼고 CVssWriter::OnPrepareBackup에서 시작한 비동기 작업이 완료되었는지 확인하는 것과 같은 간단하고 짧은 작업을 수행합니다. 이 메서드는 문제가 있는 경우 기록기에서 섀도 복사본을 거부할 수 있는 마지막 기회입니다(기록기 오류 및 Vetoes 참조).

일반적으로 기록기는 Thaw 이벤트 이후 정상 작업을 다시 시작할 수 있습니다. 섀도 복사본은 해동 후 즉시 백업할 준비가 되지 않을 수 있지만 기록기는 정상 작업을 다시 시작할 수 있어야 합니다. 따라서 일반적으로 CVssWriter::OnThaw 는 기록기에서 사전 동결 상태로 돌아가는 데 사용됩니다. 그러나 섀도 복사본을 지원하기 위해 만든 임시 파일은 PostSnapshot 이벤트까지 남아 있어야 합니다. 일반적으로 이러한 정리에는 CVssWriter::OnPostSnapshot 을 사용합니다. 많은 애플리케이션에서 이러한 종류의 정리가 필요하지 않으므로 CVssWriter::OnPostSnapshotTRUE를 반환하는 기본 구현을 사용하는 가상 메서드입니다. 증분 또는 차등 백업이 수행되는 경우 작성기는 IVssComponent::GetPreviousBackupStampIVssComponent::SetBackupStamp를 호출할 수 있습니다. 자세한 내용은 복합 저장소 백업의 기록기 역할을 참조하세요. 현재 호출할 수 있는 또 다른 메서드는 IVssComponent::AddDifferencedFilesByLastModifyTime입니다.