Visão geral das tarefas de pré-backup

As tarefas de pré-backup no VSS se concentram na criação de uma cópia de sombra dos volumes que contêm dados para backup. O aplicativo de backup salvará os dados da cópia de sombra, não do volume real. Para obter mais informações, consulte Visão geral do processamento de um backup no VSS.

Os solicitantes normalmente esperam que os gravadores se preparem para backup e criem a cópia de sombra. O gravador deve determinar se ele deve participar do backup e, se for, configurar seus arquivos e a si mesmo para estar pronto para backup e cópia de sombra. A tabela a seguir mostra a sequência de ações e eventos necessários para se preparar para uma operação de backup.

Ação do solicitante Evento Ação do gravador
O solicitante pode definir opções de backup (consulte IVssBackupComponents::SetBackupOptions) Nenhum Nenhum
Dê suporte a operações de backup incrementais e diferenciais examinando quaisquer carimbos de backup armazenados (consulte IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp) Nenhum Nenhum
Notificar gravadores para se prepararem para uma operação de backup usando IVssBackupComponents::P repareForBackup PrepareForBackup As preparações do gravador incluem determinar se os arquivos devem ser copiados em backup, se o gravador participará do congelamento da cópia de sombra, bem como a criação de metadados específicos do gravador (consulte CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponent::GetBackupOptions, CVssWriter::AreComponentsSelected, IVssComponent::SetBackupMetadata e IVssComponent:: GetPreviousBackupStamp.
O solicitante aguarda que os gravadores configurem o backup usando IVssAsync. Ele também deve verificar status de gravador (consulte IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus) Nenhum Nenhum
O solicitante solicita uma cópia de sombra usando IVssBackupComponents::D oSnapshotSet Nenhum Nenhum
Nenhum PrepareForSnapshot CVssWriter::OnPrepareSnapshot: coloque o gravador em um estado pronto para cópia de sombra.
Nenhum Congelamento CVssWriter::OnFreeze: configuração final antes da cópia de sombra.
Nenhum Descongelar CVssWriter::OnThaw: o funcionamento normal (incluindo E/S) pode ser retomado.
Nenhum PostSnapshot CVssWriter::OnPostSnapshot: final limpo ups de preparações de cópia de sombra. Consulte IVssComponent::AddDifferencedFilesByLastModifyTime e IVssComponent::SetBackupStamp.
O solicitante aguarda a conclusão da cópia de sombra usando: IVssAsync, ele também deve verificar o gravador status (consulte IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus
Nenhum Nenhum

 

Tarefas de pré-backup do solicitante

Além disso, antes de criar um evento IVssBackupComponents::P repareForBackup , um solicitante também pode definir opções de backup para gravadores individuais usando IVssBackupComponents::SetBackupOptions , dependendo das especificidades de cada gravador e se um solicitante está ciente deles.

Para dar suporte a operações incrementais e diferenciais, os solicitantes podem neste momento optar por examinar os componentes para carimbos de data/hora da operação de backup anterior (usando IVssComponent::GetBackupStamp) e usar essas informações para definir um carimbo de data/hora anterior para um gravador processar (usando IVssBackupComponents::SetPreviousBackupStamp). Confira Backups incrementais e diferenciais para obter mais informações.

Um solicitante agora pode direcionar os gravadores do sistema para concluir os preparativos de pré-backup e lidar com a criação de uma cópia de sombra.

Primeiro, o solicitante gera um evento PrepareForBackup chamando IVssBackupComponents::P repareForBackup.

Depois que todos os gravadores participantes retornarem da manipulação do evento PrepareForBackup (que um solicitante determina usando a instância da interface IVssAsync retornada por PrepareForBackup), o solicitante pode iniciar a cópia de sombra chamando os eventos IVssBackupComponents::D oSnapshotSet, que, à medida que progride, gerará os eventos PrepareForSnapshot, Freeze, Thaw e PostSnapshot para os gravadores lidarem.

Há alguns casos em que um solicitante pode não precisar criar uma cópia de sombra. Especificamente, cada conjunto de arquivos gerenciado por um dos componentes de um determinado gravador tem uma máscara de Backup de Especificação de Arquivo (indicada por um OR bit a bit de valores VSS_FILE_SPEC_BACKUP_TYPE ) definida durante o evento Identifique . Essa máscara especifica, entre outras coisas, se um conjunto de arquivos requer que o sistema seja copiado para sombra antes que seu backup seja executado.

Se nenhum conjunto de arquivos a ser copiado em backup em volumes exigir uma cópia de sombra, IVssBackupComponents::D oSnapshotSet não precisará ser chamado.

Tarefas de pré-backup do gravador

Ao manipular o evento PrepareForBackup , o VSS chamará o método CVssWriter::OnPrepareBackup de cada gravador, um método virtual que, por padrão, simplesmente retorna true.

Os gravadores podem substituir essa implementação padrão e usar o tratamento para encontrar informações sobre o backup futuro e tomar medidas.

Um gravador pode determinar informações sobre o tipo de operação de backup contemplada usando os seguintes métodos:

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

Um gravador determina se os arquivos gerenciados estarão envolvidos na cópia de sombra usando CVssWriter::IsPathAffected.

Mais importante, quando o VSS chama o método CVssWriter::OnPrepareBackup , ele passa uma instância da interface IVssWriterComponents , que permite o acesso direto por meio da interface IVssComponent aos de seus componentes explicitamente incluídos no Documento de Componentes de Backup do solicitante. O gravador usou as instâncias da interface IVssComponent que definem conjuntos de componentes para obter acesso ao componente incluído implicitamente (consulte Selectability and working with Component Properties).

Durante a manipulação do evento PrepareForBackup , os gravadores usam a interface IVssComponent para executar operações componente por componente (ou conjunto de componentes por conjunto de componentes), incluindo:

  1. Adicionando arquivos parciais (se houver suporte) chamando IVssComponent::AddPartialFile.
  2. Definindo os metadados privados de que o gravador precisará para lidar com a restauração.
  3. Se o gravador der suporte a backups incrementais e diferenciais (consulte Backups incrementais e diferenciais), faça o seguinte:
  4. Iniciar operações assíncronas muito demoradas, como sincronizar dados em vários discos. Isso permitirá que o gravador continue trabalhando enquanto a operação é processada, incluindo o tratamento de outros eventos vss. Essas operações devem ser encerradas antes do evento Freeze .

A chamada do solicitante para IVssBackupComponents::D oSnapshotSet inicia a cópia de sombra e gera os seguintes eventos para os gravadores manipularem:

Três manipuladores do gravador – CVssWriter::OnPrepareSnapshot, CVssWriter::OnFreeze e CVssWriter::OnThaw – são métodos virtuais puros e cada gravador deve implementá-los em vez de depender de padrões. Dependendo das necessidades de um gravador, eles podem ser codificados como métodos fictícios, simplesmente retornando TRUE.

Como normalmente há uma janela de tempo estreita entre a emissão de um evento Freeze e a emissão de um evento Thaw , a maior parte do trabalho principal na preparação para a cópia de sombra, como desligar processos, criar arquivos temporários ou esvaziar filas de E/S, seria tratada em CVssWriter::OnPrepareSnapshot.

Como um gravador pode usar CVssWriter::OnPrepareSnapshot para lidar com sua E/S antes que a criação de uma cópia de sombra seja altamente dependente da própria arquitetura do gravador.

Os gravadores que podem se dar ao luxo de manter todas as gravações e manter os dados em um estado consistente absoluto antes de Congelar, devem fazê-lo.

Se o gravador não puder congelar sua E/S, ele deverá executar ações para criar uma fonte estável para backup e reduzir o tempo de recuperação de uma cópia de sombra. Exemplos disso podem incluir o enfileiramento de solicitações de E/S de entrada ou a geração de um conjunto duplicado de arquivos em um caminho alternativo a ser usado como a origem de um backup.

O método CVssWriter::OnFreeze executa tarefas simples e curtas, como verificar se o CVssWriter::OnPrepareSnapshot deixou a E/S no estado correto e se todas as tarefas assíncronas iniciadas por CVssWriter::OnPrepareBackup foram concluídas. Esse método é a última chance de um gravador vetar uma cópia de sombra se houver problemas (consulte Erros e vetos do gravador).

Geralmente, é possível que um gravador retome a operação normal após um evento Thaw : uma cópia de sombra pode não estar pronta imediatamente para backup após o Thaw, mas um gravador deve ser capaz de retomar a operação normal. Portanto, normalmente , CVssWriter::OnThaw é usado por gravadores para retornar a um estado de pré-congelamento. No entanto, todos os arquivos temporários criados para dar suporte à cópia de sombra devem ser deixados no local até o evento PostSnapshot . Normalmente, você usaria CVssWriter::OnPostSnapshot para esse tipo de limpeza. Como muitos aplicativos não exigem esse tipo de limpeza, CVssWriter::OnPostSnapshot é um método virtual com uma implementação padrão que simplesmente retorna TRUE. Se um backup incremental ou diferencial estiver sendo executado, o gravador poderá chamar IVssComponent::GetPreviousBackupStamp e IVssComponent::SetBackupStamp. Para obter mais informações, consulte Função de gravador no backup de repositórios complexos. Outro método que pode ser chamado no momento é IVssComponent::AddDifferencedFilesByLastModifyTime.