Visão geral da inicialização de backup
Esse estágio do backup inicializa o gravador e o solicitante, preenchendo suas estruturas de dados internas, especificando o backup e estabelece a comunicação de gravador/solicitante por meio da chamada necessária para IVssBackupComponents::GatherWriterMetadata. Para obter mais informações, consulte Visão geral do processamento de um backup no VSS.
A tabela a seguir mostra a sequência de ações e eventos necessários para a inicialização do backup.
Ação do solicitante | Evento | Ação do gravador |
---|---|---|
Cria uma interface IVssBackupComponents e a inicializa para gerenciar um backup (consulte CreateVssBackupComponents, IVssBackupComponents::InitializeForBackup) e, opcionalmente, habilite ou desabilite gravadores no sistema. | Nenhum | Nenhum |
Opcionalmente, defina o contexto para operações de cópia de sombra e, opcionalmente, consulte o sistema sobre os provedores e cópias de sombra compatíveis (consulte IVssBackupComponents::SetContext, IVssBackupComponents::Query). | Nenhum | Nenhum |
O solicitante pode fornecer informações adicionais sobre como lidar com operações de backup e restauração (consulte IVssBackupComponents::SetBackupState) | Nenhum | Nenhum |
Inicia o contato assíncrono com gravadores (consulte IVssBackupComponents::GatherWriterMetadata) | Identificar | Cria um documento de metadados do gravador (consulte Trabalhando com o documento de metadados do gravador, CVssWriter::OnIdentify, IVssCreateWriterMetadata) |
Ações do solicitante durante a inicialização do backup
Um objeto IVssBackupComponents pode ser usado para apenas um backup. Portanto, um solicitante deve prosseguir até o final do backup, incluindo a liberação da interface IVssBackupComponents . Se o backup precisar ser encerrado prematuramente, o solicitante precisará chamar IVssBackupComponents::AbortBackup e liberar o objeto IVssBackupComponents (consulte Anulando operações do VSS para obter mais informações). Não tente retomar a interface IVssBackupComponents .
Normalmente, o Documento de Componentes de Backup de um solicitante é inicializado como vazio. Um Documento de Componentes de Backup armazenado pode ser carregado quando IVssBackupComponents::InitializeForBackup é chamado, normalmente em suporte a volumes copiados de sombra transportáveis. Nesse caso, a comunicação gravador-solicitante será um pouco diferente da descrita abaixo. (Consulte Importando volumes copiados de sombra transportável para obter mais informações.)
Para adicionar volumes ao conjunto de cópias de sombra, um solicitante deve primeiro definir o contexto para a operação de cópia de sombra chamando IVssBackupComponents::SetContext. Se esse método não for chamado, o contexto padrão para cópias de sombra, VSS_CTX_BACKUP, será usado. Para obter informações sobre como definir o contexto de cópia de sombra, consulte Configurações de contexto de cópia de sombra.
Para iniciar a conclusão de sua instalação antes do backup, um solicitante deve chamar IVssBackupComponents::SetBackupState. Ao fazer isso, um solicitante indica aos gravadores:
- O tipo de backup (conforme definido em VSS_BACKUP_TYPE)
- Se o backup inclui um estado de sistema inicializável
- Se o solicitante dá suporte à seleção de componentes individuais ou faz backup de volumes inteiros.
Todos os solicitantes que participam de operações de backup e restauração devem sempre chamar IVssBackupComponents::GatherWriterMetadata. Esse método inicia a comunicação gravador-solicitante gerando um evento vss identificá-lo , em resposta ao qual um gravador cria seu documento de metadados.
Antes de chamar IVssBackupComponents::GatherWriterMetadata, um solicitante tem a oportunidade de habilitar ou desabilitar explicitamente determinadas classes de gravador e gravador específicas usando IVssBackupComponents::EnableWriterClasses, IVssBackupComponents::D isableWriterInstances e IVssBackupComponents::D isableWriterClasses (por padrão, todas as classes estão habilitadas). Depois que IVssBackupComponents::GatherWriterMetadata for chamado, essas chamadas não terão efeito.
Como não há como obter uma lista de gravadores no sistema antes de chamar IVssBackupComponents::GatherWriterMetadata, os solicitantes podem considerar criar e excluir uma segunda instância de IVssBackupComponents para obter a lista.
Não é necessário chamar IVssBackupComponents::GatherWriterStatus após a conclusão de IVssBackupComponents::GatherWriterMetadata. Gravadores que não processam o evento Identifique gerado pelas chamadas não farão parte da lista de gravadores que fornecem metadados encontrados por IVssBackupComponents::GetWriterMetadataCount e IVssBackupComponents::GetWriterMetadata (consulte Determining Writer Status).
Ações do gravador durante a inicialização do backup
Em resposta ao evento Identify, o VSS chama o método de manipulador virtual de cada gravador, CVssWriter::OnIdentify. Um gravador cria seu Documento de Metadados do Gravador substituindo a implementação padrão de CVssWriter::OnIdentify e usando a interface IVssCreateWriterMetadata .
Observe que aplicativos diferentes do solicitante atual (por exemplo, aplicativos do sistema) podem gerar identificar eventos que devem ser manipulados pelo gravador. Além disso, não há como um gravador determinar de dentro de CVssWriter::OnIdentify qual aplicativo gerou o evento Identify.
Sendo esse o caso, considerando que um gravador pode receber vários eventos de Identificação durante o processamento de uma operação de backup, um gravador nunca deve definir informações de estado no manipulador CVssWriter::OnIdentify .
Em vez disso, CVssWriter::OnIdentify deve executar um algoritmo consistente para criar o Documento de Metadados do Gravador do gravador, especialmente porque depois que um gravador cria o documento, nem o solicitante nem o gravador podem modificá-lo. Desse ponto em diante, é um documento somente leitura.
Isso significa que o número e o tipo de componentes associados a um gravador, quais arquivos fazem parte de cada componente e a exclusão explícita de arquivos de operações de backup ou restauração não podem ser alterados depois que um gravador retorna do processamento do evento Identifi.
Todos os gravadores que participam do VSS são obrigados a fazer o seguinte:
- Indique um método de restauração para todos os componentes gerenciados pelo gravador usando IVssCreateWriterMetadata::SetRestoreMethod.
- Adicione pelo menos um componente usando IVssCreateWriterMetadata::AddComponent (consulte Definição de componentes por gravadores para obter mais informações sobre a especificação do componente).
Um gravador indica os arquivos para participar de uma operação de backup ou restauração adicionando conjuntos de arquivos — uma combinação de um caminho, especificação de arquivo e um sinalizador de recursão — para um determinado componente usando IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFiles ou IVssCreateWriterMetadata::AddDatabaseLogFiles, dependendo do tipo (consulte Adicionando arquivos a componentes.)
Um gravador também pode ter um ou mais componentes vazios, componentes aos quais nenhum arquivo foi adicionado. Eles são muito úteis na organização dos componentes do gravador. (Consulte Caminho lógico dos componentes.)
Um gravador usa IVssCreateWriterMetadata::AddExcludeFiles para impedir explicitamente que arquivos sejam incluídos no backup. Essa exclusão explícita é útil porque caracteres curinga podem ser usados para especificar arquivos para inclusão (consulte Excluir Especificação da Lista de Arquivos). Observe que a lista de arquivos de exclusão tem precedência sobre listas de arquivos de componente.
IVssCreateWriterMetadata::AddAlternateLocationMapping é usado para criar mapeamentos de localização alternativos para conjuntos de arquivos especificados que foram adicionados a um dos componentes do gravador. Esses mapeamentos são usados durante a restauração de arquivo quando a restauração para o local original de um arquivo não é possível ou desejável. (Confira Visão geral da restauração de arquivo real e locais de backup e restauração não padrão.)
Como o conjunto de arquivos de backup é especificado no Documento de Metadados do Gravador, ele não pode ser modificado posteriormente. Portanto, um gravador deve ser codificado para que a definição do conjunto de arquivos inclua todos os arquivos necessários no backup, seja por nome ou por caracteres curinga. Possivelmente, isso pode incluir alguns arquivos que podem ser criados após o evento Identify.