Partager via


Vue d’ensemble de l’initialisation de sauvegarde

Cette étape de la sauvegarde initialise à la fois l’enregistreur et le demandeur, en remplissant leurs structures de données internes, en spécifiant la sauvegarde et en établissant la communication enregistreur/demandeur via l’appel requis à IVssBackupComponents::GatherWriterMetadata. Pour plus d’informations, consultez Vue d’ensemble du traitement d’une sauvegarde sous VSS.

Le tableau suivant montre la séquence d’actions et d’événements requis pour l’initialisation de sauvegarde.

Action du demandeur Événement Action d’écriture
Crée une interface IVssBackupComponents et l’initialise pour gérer une sauvegarde (voir CreateVssBackupComponents, IVssBackupComponents::InitializeForBackup) et éventuellement activer ou désactiver les enregistreurs sur le système. None Aucune
Définissez éventuellement le contexte des opérations de cliché instantané et interrogez éventuellement le système sur les fournisseurs et les clichés instantanés qu’il prend en charge (voir IVssBackupComponents::SetContext, IVssBackupComponents::Query). None Aucune
Le demandeur peut fournir des informations supplémentaires sur la gestion des opérations de sauvegarde et de restauration (voir IVssBackupComponents::SetBackupState) Aucune Aucune
Initie un contact asynchrone avec des rédacteurs (voir IVssBackupComponents::GatherWriterMetadata) Identifier Crée un document de métadonnées writer (voir Utilisation du document de métadonnées writer, CVssWriter::OnIdentify, IVssCreateWriterMetadata)

 

Actions du demandeur pendant l’initialisation de la sauvegarde

Un objet IVssBackupComponents ne peut être utilisé que pour une seule sauvegarde. Par conséquent, un demandeur doit poursuivre jusqu’à la fin de la sauvegarde, notamment en libérant l’interface IVssBackupComponents . Si la sauvegarde doit s’arrêter prématurément, le demandeur doit appeler IVssBackupComponents::AbortBackup, puis libérer l’objet IVssBackupComponents (voir L’abandon des opérations VSS pour plus d’informations). N’essayez pas de reprendre l’interface IVssBackupComponents .

En règle générale, le document des composants de sauvegarde d’un demandeur est initialisé comme vide. Un document de composants de sauvegarde stocké peut être chargé lorsque IVssBackupComponents::InitializeForBackup est appelé, généralement en prise en charge des volumes copiés en ombre transportables. Dans ce cas, la communication auteur-demandeur sera quelque peu différente de ce qui est décrit ci-dessous. (Pour plus d’informations, consultez Importation de volumes copiés instantanés transportables .)

Pour ajouter des volumes au jeu de clichés instantanés, un demandeur doit d’abord définir le contexte de l’opération de cliché instantané en appelant IVssBackupComponents::SetContext. Si cette méthode n’est pas appelée, le contexte par défaut des clichés instantanés, VSS_CTX_BACKUP, est utilisé. Pour plus d’informations sur la définition du contexte de cliché instantané, consultez Configurations de contexte de cliché instantané.

Pour commencer l’achèvement de son installation avant la sauvegarde, un demandeur doit appeler IVssBackupComponents::SetBackupState. Ce faisant, un demandeur indique aux rédacteurs :

  • Type de sauvegarde (tel que défini dans VSS_BACKUP_TYPE)
  • Indique si la sauvegarde inclut un état système de démarrage
  • Indique si le demandeur prend en charge la sélection de composants individuels ou sauvegarde des volumes entiers.

Tous les demandeurs participant aux opérations de sauvegarde et de restauration doivent toujours appeler IVssBackupComponents::GatherWriterMetadata. Cette méthode initie la communication auteur-demandeur en générant un événement VSS Identifier , en réponse à laquelle un rédacteur crée son document de métadonnées.

Avant d’appeler IVssBackupComponents::GatherWriterMetadata, un demandeur a la possibilité d’activer ou de désactiver explicitement certains rédacteurs et classes d’enregistreurs spécifiques à l’aide d’IVssBackupComponents::EnableWriterClasses, IVssBackupComponents::D isableWriterInstances et IVssBackupComponents::D isableWriterClasses (par défaut, toutes les classes sont activées). Une fois que IVssBackupComponents::GatherWriterMetadata est appelé, ces appels n’ont aucun effet.

Étant donné qu’il n’existe aucun moyen d’obtenir une liste d’écrivains sur le système avant d’appeler IVssBackupComponents::GatherWriterMetadata, les demandeurs peuvent envisager de créer puis de supprimer une deuxième instance d’IVssBackupComponents pour obtenir la liste.

Il n’est pas nécessaire d’appeler IVssBackupComponents::GatherWriterStatus après l’achèvement de IVssBackupComponents::GatherWriterMetadata. Les rédacteurs qui ne parviennent pas à traiter l’événement Identifier généré par les appels ne feront pas partie de la liste des rédacteurs fournissant des métadonnées trouvées par IVssBackupComponents::GetWriterMetadataCount et IVssBackupComponents::GetWriterMetadata (voir Détermination de l’état de l’enregistreur).

Actions de l’enregistreur pendant l’initialisation de la sauvegarde

En réponse à l’événement Identifier, VSS appelle la méthode de gestionnaire virtuel de chaque enregistreur, CVssWriter::OnIdentify. Un enregistreur crée son document de métadonnées writer en remplaçant l’implémentation par défaut de CVssWriter::OnIdentify et à l’aide de l’interface IVssCreateWriterMetadata .

Notez que les applications autres que le demandeur actuel (pour instance, les applications système) peuvent générer des événements Identifier qui doivent être gérés par l’enregistreur. En outre, il n’existe aucun moyen pour un rédacteur de déterminer à partir de CVssWriter::OnIdentify quelle application a généré l’événement Identifier.

Dans ce cas, étant donné qu’un enregistreur peut recevoir plusieurs événements Identifier lors du traitement d’une opération de sauvegarde, un enregistreur ne doit jamais définir les informations d’état dans le gestionnaire CVssWriter::OnIdentify .

Au lieu de cela, CVssWriter::OnIdentify doit effectuer un algorithme cohérent pour créer le document de métadonnées de l’enregistreur, en particulier parce qu’une fois qu’un rédacteur a créé le document, ni le demandeur ni l’enregistreur ne peuvent le modifier. À partir de là, il s’agit d’un document en lecture seule.

Cela signifie que le nombre et le type de composants associés à un enregistreur, les fichiers faisant partie de chaque composant et l’exclusion explicite des fichiers des opérations de sauvegarde ou de restauration ne peuvent pas être modifiés après le retour d’un enregistreur après le traitement de l’événement Identifier.

Tous les rédacteurs participant à VSS doivent effectuer les opérations suivantes :

  1. Indiquez une méthode de restauration pour tous les composants gérés par l’enregistreur à l’aide d’IVssCreateWriterMetadata::SetRestoreMethod.
  2. Ajoutez au moins un composant à l’aide d’IVssCreateWriterMetadata::AddComponent (pour plus d’informations sur la spécification des composants, consultez Définition des composants par des enregistreurs ).

Un enregistreur indique que les fichiers doivent participer à une opération de sauvegarde ou de restauration en ajoutant des jeux de fichiers (combinaison d’un chemin d’accès, d’une spécification de fichier et d’un indicateur de récursion) à un composant donné à l’aide d’IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseLogFiles, selon le type (voir Ajout de fichiers à des composants).

Un enregistreur peut également avoir un ou plusieurs composants vides, composants auxquels aucun fichier n’a été ajouté. Ils sont très utiles pour organiser les composants de l’enregistreur. (Consultez Chemin d’accès logique des composants.)

Un enregistreur utilise IVssCreateWriterMetadata::AddExcludeFiles pour empêcher explicitement les fichiers d’être inclus dans la sauvegarde. Cette exclusion explicite est utile, car des caractères génériques peuvent être utilisés pour spécifier des fichiers à inclure (voir Exclure la spécification de liste de fichiers). Notez que la liste des fichiers d’exclusion est prioritaire sur les listes de fichiers de composants.

IVssCreateWriterMetadata::AddAlternateLocationMapping est utilisé pour créer d’autres mappages d’emplacements pour des jeux de fichiers spécifiés qui ont été ajoutés à l’un des composants de l’enregistreur. Ces mappages sont utilisés lors de la restauration d’un fichier lorsque la restauration à l’emplacement d’origine d’un fichier n’est pas possible ou souhaitable. (Consultez Vue d’ensemble de la restauration réelle des fichiers et des emplacements de sauvegarde et de restauration non par défaut.)

Étant donné que le jeu de fichiers de sauvegarde est spécifié dans le document de métadonnées writer, il ne peut pas être modifié ultérieurement. Par conséquent, un enregistreur doit être codé de sorte que la définition du jeu de fichiers inclue tous les fichiers nécessaires dans la sauvegarde, soit par nom, soit par le biais de caractères génériques. Il peut s’agir de certains fichiers qui peuvent être créés après l’événement Identifier.