Deepdive – Veeam backup & réplication

veeam

 

Nous allons dans un premier temps étudier comment Veeam transporte les données à sauvegarder (les VMs) de son emplacement source (datastores des VMs) à la destination (stockage des sauvegardes Veeam) en fonction du mode de transport configuré dans le composant proxy.

Nous étudierons ensuite en profondeur comment les blocs de données sont déplacés en fonction du mode de sauvegarde et comment agit la période de rétention en fonction du mode de sauvegarde.

Il existe 3 modes de transport que nous allons parcourir rapidement afin d’étudier les interactions entre les différents composants

En mode « Direct SAN Access »

Pour récupérer des blocs de données à partir d’un LUN, le composant proxy de Veeam utilise les métadonnées des disques de la VM sur le SAN.

La récupération de données dans le mode de transport direct SAN comprend les étapes suivantes :

  1. Le proxy envoi une requête à l’hôte ESXi pour localiser la VM sur le datastore.
  2. L’ESXi hôte localise la VM.
  3. L’ESXi hôte récupère les métadonnées des disques de la VM sur le stockage (les adresses physiques des blocs de données).
  4. L’ESXi hôte envoi des métadonnées au proxy.
  5. Le proxy utilise les métadonnées pour copier les blocs de données de la VM directement à partir du stockage SAN.
  6. Le proxy copie les blocs de données et les envoie à la cible.

En mode « Virtual Appliance »

La récupération de données en mode virtual appliance comprend les étapes suivantes :

  1. Le proxy envoi une requête à l’hôte ESXi pour localiser la VM sur le datastore.
  2. L’ESXi hôte localise la VM.
  3. Veeam Backup & Replication déclenche un snapshot sur la VM.
  4. L’ESXi hôte créé un linked clone de la VM à partir du snapshot VM.
  5. Les disques du linked clone de la VM sont ajoutés à chaud sur le proxy ou la VM helper.
  6. Veeam Backup & Replication lit directement les données à partir des disques attachés au proxy ou à la vm helper (Linux) à travers la pile I/O de ESXi.

Lorsque le traitement est terminé, les disques sont détachés du proxy ou de la VM helper.

En mode « Network Mode »

Le procédé de récupération de données dans le mode en réseau comprend les étapes suivantes :

  1. Le proxy envoi une requête à l’hôte ESXi pour localiser la VM sur le datastore.
  2. L’ESXi hôte localise la VM sur le datastore.
  3. Les blocs de données de la VM sont copiés à partir du stockage de production et envoyés au proxy sur le réseau local.
  4. Le proxy envoi les données à la cible.

Les différents modes de sauvegarde avec Veeam

Il existe 3 modes de sauvegarde et 2 méthodes de création de sauvegarde complète.

Les 3 modes

  • Forever forward incremental backup
  • Forward incrementale backup
  • Reverse incremental backup

Les 2 méthodes de création de sauvegarde complète

  • Periodic Active Full
  • Synthetic Full Backup

Avant d’étudier en détail les différents modes et méthodes de sauvegarde, jetons un œil sur les différents types de fichier résultant d’une sauvegarde avec Veeam :

 

 

 

 

 

 

Le mode de sauvegarde « Forever Forward Incrémentale » produit toujours une chaîne de sauvegarde qui se compose d’une première sauvegarde complète et d’un ensemble de sauvegardes incrémentales.

Veeam créé une « Forever Forward Incrémental » de la manière suivante :

Lors de la première exécution du job de sauvegarde, Veeam Backup & Replication crée un fichier de sauvegarde complète « .VBK » sur le stockage de destination des sauvegardes.

Pendant le job de sauvegarde, Veeam copie uniquement les blocs de données des VM qui ont changé depuis la dernière sauvegarde effectuée (complète ou incrémentale) et enregistre ces blocs comme un fichier de sauvegarde incrémentale « .VIB » dans la chaîne de sauvegarde.


Les blocs de données d’origine A, B, C, D compose la sauvegarde complète du dimanche.

Mise à jour du bloc de données A en A1 en récupérant uniquement les modifications apportées depuis l’état A.

Mise à jour du bloc de données C en C1 en récupérant uniquement les modifications apportées depuis l’état C.

Mise à jour du bloc de données A1 en A2 en récupérant uniquement les modifications apportées depuis l’état A1 (delta entre A1 et A2).



Le mode de sauvegarde « Forward Incremental » produit une chaîne de sauvegarde qui se compose de la première sauvegarde Full « .VBK » et d’un ensemble de sauvegardes incrémentales « .VIB ». De plus, une « Forward Incremental » contient des sauvegardes Full et/ou synthétiques Full qui « split » la chaîne de sauvegarde en séries de fichier plus court.

Veeam créé une « Forward Incremental » de la manière suivante :

  • Lors de la première exécution d’un job de sauvegarde, Veeam crée un fichier de sauvegarde Full (.VBK) sur le stockage de destination des sauvegardes
  • Pendant le job de sauvegarde, Veeam copie uniquement les blocs de données VM qui ont changé depuis la dernière sauvegarde effectuée (complète ou incrémentale) et enregistre ces blocs dans un fichier de sauvegarde incrémentale « .VIB » dans la chaîne de sauvegarde.
  • Le jour où la sauvegarde Full ou Full synthétique est prévue,
    • Veeam crée un fichier de sauvegarde Full (.VBK) et l’ajoute à la chaîne de sauvegarde. Les points de restauration incrémentaux produits après ce fichier utilisent la sauvegarde Full comme nouveau point de départ.


Les blocs de données d’origine A, B, C, D compose la sauvegarde complète du dimanche.


Mise à jour du bloc de données A en A1 en récupérant uniquement les modifications apportées depuis l’état A.


Mise à jour du bloc de données C en C1 en récupérant uniquement les modifications apportées depuis l’état C.


Mise à jour du bloc de données A1 en A2 en récupérant uniquement les modifications apportées depuis l’état A1 (delta entre A1 et A2).

Une sauvegarde Active Full est créé en relisant entièrement les blocs A,B,C,D depuis le stockage source des VMs. Veeam ajoute le delta journalier via un snapshot déclenché par le job de sauvegarde.

La Synthetic Full est créé en relisant les blocs A,B,C,D de la dernière Full et en ajoutant les modifications des blocs A1,C1 et A2 le tout depuis le stockage de destination des sauvegardes. Veeam ajoute le delta journalier via le snapshot déclenché par le job de sauvegarde depuis le stockage source des VMs.


Le mode de sauvegarde « Reverse Incremental » produit une chaîne de sauvegarde qui se compose de la dernière sauvegarde complète et d’un ensemble de sauvegardes incrémentales « précédentes ».

Veeam créé une « Reverse Incrémental » de la manière suivante :

  • Lors de la première exécution d’un job de sauvegarde, Veeam crée un fichier de sauvegarde Full (.VBK) sur le stockage de destination des sauvegardes.
  • Pendant le job de sauvegarde suivant, Veeam copie uniquement les blocs de données de VM qui ont changé depuis la dernière sauvegarde effectuée.
  • Veeam « injecte » les blocs modifiés dans le fichier de la sauvegarde complète pour reconstruire le fichier à l’état le plus récent des données (VMs).
  • Puis, Veeam créé un fichier de sauvegarde « reverse Incremental » (.VRB) contenant uniquement les blocs avant modification de la sauvegarde complète. Veeam ajoute cette sauvegarde « reverse incremental » avant la sauvegarde complète dans la chaine de sauvegarde. Le but étant de revenir sur un état antérieur.


Création de la sauvegarde Full


Mise à jour du bloc A vers A1 avec injection des modifications dans la sauvegarde Full.

Création du Delta inverse « A » .VBR représentant l’image des blocs avant la modification entre dimanche et lundi


Mise à jour du bloc C vers C1 avec injection des modifications dans la sauvegarde Full

Création du Delta inverse « C » .VBR représentant l’image des blocs avant la modification entre lundi et mardi


Mise à jour du bloc A vers A2 avec injection des modifications dans la sauvegarde Full

Création du Delta inverse « A1 » .VBR représentant l’image des blocs avant la modification entre mardi et mercredi.

Le point de restauration le plus récent est toujours la sauvegarde complète mise à jour après chaque cycle de sauvegarde.

Ce mode de sauvegarde permet une restauration rapide de la VM à l’état le plus récent sans reconstruction depuis la sauvegarde complète + les incrémentales. En revanche, pour revenir à un état J-1, Veeam nécessite de retravailler avec la sauvegarde complète ainsi que les sauvegardes reverse .VRB.


La méthode de sauvegarde complète « Full Buckup » produit une sauvegarde complète d’une VM comme un job exécuté pour la 1ère fois. Veeam récupère les données pour l’ensemble des VMs à sauvegarde à la source (le datastore des VMs), les compresses, les dédupliques et stocke la sauvegarde dans un fichier (.VBK).

Une sauvegarde complète réinitialise la chaîne des incrémentales et toutes les sauvegardes incrémentales ultérieures se baseront sur la dernière sauvegarde Active Full comme nouveau point de départ.

Un fichier de sauvegarde Full précédemment utilisé reste sur le disque jusqu’à ce qu’il soit automatiquement supprimé conformément à la politique de rétention de sauvegarde.


Dimanche, une sauvegarde Full existe déjà ainsi que 3 sauvegardes incrémentales (lundi,mardi, mercredi)


Lors de la création de la prochaine sauvegarde Full de jeudi, nous allons récupérer les blocs de données depuis le stockage source des VMs (le datastore)

Une sauvegarde active Full est recrée en relisant la totalité des blocs des VMs depuis les datastores


Suite à la création de la sauvegarde Active Full, la prochaine sauvegarde incrémentale se basera sur la dernière sauvegarde Full comme nouveau point de départ. (pour vérifier les modifications blocs)


La méthode de sauvegarde « Synthetic Full Backup » produit une sauvegarde complète en se basant sur les sauvegardes précédentes. Veeam récupère les données à sauvegarder depuis les sauvegardes précédentes (depuis le stockage ou sont les sauvegardes), les compresses, les dédupliques et stocke la sauvegarde dans un fichier (.VBK).

La différence entre le mode « Active Full bakup » et « Synthetic Full Backup » vient de comment la donnée est récupérée pour créer la sauvegarde complète.

Dans le cas d’une sauvegarde complète, Veeam récupère les données à sauvegarder depuis le volume de stockage des VMs (datastore), il relit chaque bloc des VMs, les compresses et les dédupliques. Le tout est stocké dans un fichier .VBK placé sur un volume dédié au stockage des sauvegardes.

Dans le cas d’une sauvegarde « synthetic full backup », veeam ne va pas récupérer les données à sauvegarder depuis le volume de stockage des VMs (datastore). Il va tout simplement créer une sauvegarde complète en synthétisant les sauvegardes du volume dédié au stockage des sauvegardes. Il va accéder à la précédente sauvegarde complète ainsi qu’à la chaine complète des incrémentales et va consolider le tout dans un seul fichier puis l’écrire dans un nouveau fichier .VBK. Une « Synthetic Full Backup » contient les mêmes données qu’une « Active Full bakup ».

Une fois la « Synthetic Full Backup » crée, Veeam va réinitialiser la chaine d’incrémentale ainsi la prochaine sauvegarde incrémentale va utiliser la nouvelle sauvegarde « full synthétic » comme nouveau point de départ. Les sauvegardes « Synthetic Full Backup » vont rester sur le volume de stockage des sauvegardes en fonction de la politique de rétention configurée.


Une sauvegarde Full de dimanche existe déjà ainsi que 4 sauvegardes incrémentales


Afin de construire un Full Synthetic, veeam récupère les blocs de données de la sauvegarde complète précédente.


Veeam récupère aussi les blocs de données modifiés des précédentes sauvegardes incrémentales et consolide le tout.


Nous obtenons une sauvegarde « Full Synthetic » basée sur la précédente sauvegarde complète + les précédentes incrémentales. Le tout forme un nouveau fichier .VBK

La politique de rétention des sauvegardes


Comment agit la politique de rétention sur le mode de sauvegarde « Forever Forward Incremental » ? Certes ce mode fabrique une première sauvegarde complète puis continuellement des sauvegardes incrémentales mais il est faux de penser que ce mode de sauvegarde n’intervient jamais sur la sauvegarde Full.

Nous allons montrer par un exemple simple comme se comporte Veeam sur une politique conservant 3 points de rétention

Nous avons une 1ere sauvegarde complète le jeudi + 2 incrémentales le vendredi et samedi (la sauvegarde complète compte comme un point de rétention)


Au-delà de la rétention définie (le bloc A2)


Veeam injecte le plus ancien .VIB (sauvegarde incrémentale) dans la sauvegarde complète.


Veeam supprime le plus ancien .VIB (sauvegarde incrémentale)


Veeam libère le slot occupé par A1


Veeam conserve à nouveau 3 points de rétentions


Au-delà de la rétention définie (A3)


De nouveau, injection du plus ancien .VIB dans la Full


Suppression du plus ancien .VIB et libération du slot.


Suppression du plus ancien VIB


Comment agit la politique de rétention sur le mode de sauvegarde « Forward Incremental » ?

Ce mode créé une première sauvegarde complète puis des sauvegardes incrémentales. Une sauvegarde Full est planifié par l’utilisateur tous les X jours, X mois ou/et X années.

Nous allons montrer par un exemple simple comme se comporte Veeam sur une politique conservant 3 points de rétention à raison d’une sauvegarde incrémentale par jour et une sauvegarde complète programmée les Lundi.


Nous avons une 1ere sauvegarde complète + 2 incrémentales (la sauvegarde complète compte comme un point de rétention)


La sauvegarde continue en incrémentale le dimanche avec les données (A2).


Nous avons maintenant les 4 points de sauvegarde


Arrivé lundi, création d’une nouvelle sauvegarde Full. Veeam va conserver la Full et les incrémentales précédentes. En effet, pour revenir 3 jours en arrière (état A1), Veeam a besoin de l’ancienne sauvegarde Full + de l’incrémentale A1 pour reconstruire la donnée.


Pour remplir les conditions de 3 points de rétention, il nous faut 2 points de rétention minimum après la nouvelle sauvegarde Full (1 sauvegarde Full + 2 sauvegardes Incrémentale)


La suppression de l’ancienne sauvegarde Full et des incrémentales est maintenant possible car nous avons nos 3 points de rétention (1 Full + 2 incrémentales)


Suppression de la précédente sauvegarde Full et des Incrémentales attachées à cette Full


Libération de l’espace de la précédente Full et des Incrémentales attachées à cette Full


Veeam peut alors continuer son Job de sauvegarde incrémentale.

Conclusion : Il est uniquement possible de supprimer la précédente chaîne de sauvegarde (ancienne full + anciennes incrémentales) lorsque veeam est en mesure d’assurer une rétention de 3 jours (Lundi-Full, Mardi-incrémentale, Mercredi-incrémentale). C’est pour cette raison qu’il faut prévoir suffisamment d’espace sur le volume de dépôt des sauvegardes pour conserver les anciennes chaines de sauvegarde qui nous permette de revenir en arrière jusqu’à ce que veeam puisse garantir de nouveau les points de rétention configurés.


Comment agit la politique de rétention sur le mode de sauvegarde « Reverse Incremental Backup » ? Ce mode crée une première sauvegarde complète puis à chaque sauvegarde suivante Veeam capture le delta par rapport à la sauvegarde précédente, injecte ce delta dans la sauvegarde complète et laisse une image des blocs antérieurs derrière la sauvegarde complète (.VRB).

Nous allons montrer par un exemple simple comme se comporte Veeam sur une politique conservant 4 points de rétention à raison d’une sauvegarde reverse incrémentale par jour.


Les sauvegardes ont débuté le Dimanche et la sauvegarde Full a été constamment mise à jour en laissant derrière elle à chaque fois l’état J-1


La période de rétention dépassée le .VRB le plus ancien est supprimé

Vendredi une nouvelle sauvegarde est déclenchée qui pousse à avoir de nouveau 4 points de rétention + 1 temporaire. A la fin de la création et de la mise à jour du .VBK le 5ème .VRB sera supprimé.


Suppression du plus ancien point afin de respecter la rétention

Bien que cela soit un peu transparent, il faut prendre en compte que le mode de sauvegarde « Reverse incrémental » génère énormément de déplacement de blocs de données sur la destination de stockage des sauvegardes. En effet, pour réussir à supprimer sans cesse les points de rétention les plus anciens cela implique une chaine de déplacement des .VRB.

En prenant l’exemple précèdent. A chaque sauvegarde, la full est mise à jour avec les nouveaux blocs de données mais les anciennes sauvegardes « .VRB » doivent être chacune déplacée à J-1. Nous voyons très clairement dans les schémas ci-dessous que le bloc « D » est déplacé à chaque sauvegarde effectuée et il en est de même pour les autres blocs de données. C’est ce mécanisme qui permet d’éjecter la plus ancienne sauvegarde pour répondre à la politique de rétention configurée.

Enjoy 😉

twitterlinkedin
Publié dans Sauvegarde Tagués avec : , , , , , , , , , , ,
3 commentaires sur “Deepdive – Veeam backup & réplication
  1. Francis dit :

    tres bon article. bien expliquer.

    felicitation

  2. Ahmed dit :

    très bonne explication

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*