Gravadores
Os gravadores são aplicativos ou serviços que armazenam informações persistentes em arquivos em disco e que fornecem os nomes e locais desses arquivos aos solicitantes usando a interface de cópia de sombra.
Durante as operações de backup, os gravadores garantem que seus dados sejam quiescentes e estáveis, adequados para cópia de sombra e backup. Os gravadores colaboram com restaurações desbloqueando arquivos quando possível e indicando locais alternativos quando necessário.
Se nenhum gravador estiver presente durante uma operação de backup do VSS, uma cópia de sombra ainda poderá ser criada. Nesse caso, todos os dados no volume copiado por sombra estarão no estado consistente com falhas.
Estado do Gravador
Os gravadores mantêm seu estado em um objeto de metadados baseado em XML, o Documento de Metadados do Gravador.
Esses metadados de gravador são a única estrutura de dados que contém o conjunto de arquivos — caminho, especificação de arquivo e sinalizador de recursão — dos dados a serem copiados e restaurados.
O Documento de Metadados do Gravador organiza os conjuntos de arquivos do gravador em grupos ou componentes. A relação de um desses componentes durante operações de backup e restauração para os outros componentes gerenciados pelo gravador é descrita no Documento de Metadados do Gravador pela selebilidade do componente para backup, sua selebilidade para restauração e seus caminhos lógicos. (Para obter mais informações, consulte Configurando a organização do componente e trabalhando com selebilidade e caminhos lógicos.)
Informações adicionais que regem a restauração de arquivos e outros problemas também estão contidas neste documento.
O solicitante precisa que os metadados do gravador, em conjunto com seu próprio Documento de Componentes de Backup, processem um backup ou uma restauração.
Ao contrário do Documento de Componentes de Backup, o Documento de Metadados do Gravador deve ser considerado como uma estrutura somente leitura. Depois que um gravador o cria, o documento não é alterado.
Tratamento de eventos de gravador
As operações VSS de um gravador são iniciadas por meio do recebimento de eventos COM.
Quando nenhum evento está presente, um gravador não executa operações vss (como um backup ou restauração do VSS). Em vez disso, ele executa seu trabalho normal, como responder a consultas de banco de dados, gerenciar dados do usuário ou fornecer outros serviços.
Para garantir que o tratamento de erros para várias sessões paralelas de backup e restauração seja executado corretamente e para garantir que uma sessão de backup ou restauração não corrompa outra, você deve fazer o seguinte:
- Se o manipulador de eventos de um gravador (como CVssWriter::OnFreeze) chamar o método CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure ou CVssWriterEx2::SetWriterFailureEx , o manipulador de eventos deverá chamar o método no mesmo thread que chamou o manipulador de eventos.
- A implementação do gravador de um manipulador de eventos como OnFreeze pode descarregar o trabalho para threads de trabalho, se desejado, desde que cada thread de trabalho faça marshaling de todos os relatórios de erros necessários de volta para o thread do manipulador de eventos original.
Manipulando eventos de identificação
Com exceção do evento Identifi, o tipo e a ordem dos eventos que um gravador recebe dependem exclusivamente do tipo de operações VSS que estão em andamento no momento.
O evento Identifi requer que os gravadores forneçam ao sistema informações sobre sua configuração e os arquivos que eles gerenciam por meio do documento de metadados do gravador. Um evento Identifi é gerado com suporte de quase qualquer operação vss, incluindo consultas do sistema, bem como operações de cópia de sombra e backup e restauração. Portanto, a implementação de qualquer gravador do manipulador de eventos Identifi event CVssWriter::OnIdentify deve ser capaz de lidar com um evento Identifi a qualquer momento, inclusive no meio do processamento de outra operação vss, como um backup ou restauração. Um evento Identifi nunca deve ser considerado como parte do ciclo de vida de uma operação vss, embora sua geração possa ser esperada e necessária antes do início dessa operação.
É particularmente importante que as informações de estado sobre uma operação vss não sejam modificadas em CVssWriter::OnIdentify, pois o recebimento de um evento fora de ordem redefiniria essas informações.
Eventos de backup e restauração
Dependendo se ele estiver participando de um backup ou restauração, um gravador receberá entre dois e sete eventos, além de um evento inicial identificá-lo.
Lidar com esses eventos constitui (do ponto de vista de um gravador) o ciclo de vida de uma operação de backup ou restauração.
Em uma operação de backup típica (consulte Visão geral do processamento de um backup em VSS), um gravador trataria os seguintes eventos (além de um evento de Identificação inicial):
- PrepareForBackup
- PrepareForSnapshot
- Congelamento
- Descongelar
- PostSnapshot
- BackupComplete
- BackupShutdown
Em uma operação de restauração típica (consulte Visão geral do processamento de uma restauração em VSS), um gravador trataria os seguintes eventos:
- PreRestore
- PostRestore