• Aucun résultat trouvé

Tout d abord les pré-requis : Au menu un certain nombre de KB

N/A
N/A
Protected

Academic year: 2022

Partager "Tout d abord les pré-requis : Au menu un certain nombre de KB"

Copied!
17
0
0

Texte intégral

(1)

Sauvegarde automatisée de VM sous HyperV !!!

Un sujet plutôt obscur …

La solution de virtualisation de Microsoft, HyperV (aujourd’hui en v1) est très puissante et rivalise avec les ténors comme la solution ESXi de VMWare.

Ici pas de débat sur les produits, mais des astuces.

Pour ceux qui s’y sont essayé … HyperV n’offre pas de solutions de sauvegarde automatisée des Machines Virtuelles qui tournent (je mens un peu … car il possible d’utiliser WSB (Windows Server Backup) en modifiant le registre, cependant les possibilités sont restreintes et contraignantes ! (je ne citerai que la réservation d’un disque pour que la solution fonctionne…))

La seul solution officielle est bien sur DPM 2007 SP1 (+ RollUP) : très puissant mais surdimensionné pour la PME PMI.

Nous allons donc voir ici comment remédier à cela en utilisant tous les outils fournis par Microsoft en standard dans Windows Serveur 2008 (notamment DiskShadow et le VSS Writer d’Hyper-V …)

Allé c’est parti !

Tout d’abord les pré-requis :

Au menu un certain nombre de KB …

1 - KB967902 (elle n’a pas l’air comme ca mais en faite si elle n’est pas appliqué 1 an après l’installation d’HyperV on ne peut plus lancer les VM … le certificat SSL devient périmé !) http://support.microsoft.com/?scid=kb;en-us;967902&x=17&y=15

2 - KB958316 (règle les problèmes lors de la manipulation des GUID des VM) http://support.microsoft.com/?scid=kb;en-us;958316&x=18&y=9

3 - KB960038 (pour ceux qui auraient un plantage pendant les sauvegardes ou des erreurs avec vds.exe (à appliquer au cas ou …))

http://support.microsoft.com/?scid=kb;en-us;960038&x=11&y=8

(2)

4 - KB959962 (LA PLUS IMPORTANTE … celle que l’ont attendait depuis l’année dernière (et qui est arrivée le 16 Janvier))

http://support.microsoft.com/?scid=kb;en-us;959962&x=12&y=13

Note 1

Juste pour information sans cette KB d’appliquée même DPM 2007 SP1 n’est pas capable de sauvegarder les VM à chaud … (et oui DPM 2007 SP1 était disponible depuis le 19 Décembre 2008 mais n’a été complètement opérationnel qu’à partir du 16 Janvier …)

Cette KB met à jour Vmms.exe (ainsi que les dll associées) mais surtout met à jour le VMGuest.iso (Les services d’intégration pour les VM (Integration Services))

Note 2

Si jamais ces KB ne sont pas installées vous aurez ce type d’erreurs dans les journaux d’événements (erreurs avec lesquelles je me suis battu pendant 1 an …)

ID 1000

Application défaillante vmms.exe, version 6.0.6001.18016, horodatage 0x484fc22e, module défaillant unknown, version 0.0.0.0, horodatage 0x00000000, code d’exception 0x00000000, décalage d’erreur 0x0000000000000000, ID du processus 0x6c4, heure de début de l’application 0x01c9773af7d5cdc4.

ID 4354

Le système d'événements de COM+ n'a pas pu déclencher la méthode PostSnapshot de l'abonnement {82294CA2-FD15-4A52-A8BB-1C071A653B31}-{00000000-0000-0000-0000- 000000000000}-{00000000-0000-0000-0000-000000000000}. L'abonné a renvoyé HRESULT 80010105.

Ou

Le système d'événements de COM+ n'a pas pu déclencher la méthode RequestWriterInfo de l'abonnement {E8F22499-7157-4AE9-B40B-4946B6A158C5}-{00000000-0000-0000-0000- 000000000000}-{00000000-0000-0000-0000-000000000000}. L'abonné a renvoyé HRESULT 80042318.

(3)

ID 12366

Une exception non gérée a été rencontrée lors du traitement du rappel d’événement d’un enregistreur VSS. L’infrastructure de l’enregistreur VSS est dans un état instable. Le processus d’hébergement de l’enregistreur doit être redémarré en vue de récupérer la fonctionnalité VSS.

Maintenant passons à l’installation :

On install dans cet ordre, une fois les 4 KB d’installées on redémarre le serveur.

Coté Windows Serveur 2008 HyperV on est à jour.

Il faut maintenant réinstaller les services d’intégration (vmguest.iso) dans chaque VM hébergées sur le serveur concerné, puis redémarrer chaque VM.

Nous sommes à jour ! Nous allons pouvoir mettre en place nos sauvegardes.

(4)

Du coté des VM, rien à faire, il faut juste que les composants d’intégration soient à jour, tout va se faire sur le Windows Serveur 2008 avec le rôle Hyper-V.

Notre procédure de sauvegarde repose sur DiskShadow.exe (l’équivalent de vshadow.exe présent dans SDK de VSS pour ceux qui faisaient déjà des sauvegardes scriptées avec Virtual Serveur 2005 R2) Alors regardons un peu comment ca se passe, nous allons lancer un cmd en tant qu’administrateur et taper diskshadow

(5)

LIST WRITERS : listes tous les Writers VSS disponibles (équivalent de la commande VSSAdmin List Writers) mais ici c’est la version ultra détaillée !!

Ci-dessous la liste des Writers que vous devriez avoir par default de disponibles (sans applications tierces d’installées)

(6)

Vous l’aurez compris, celui qui nous intéresse c’est Microsoft Hyper-V VSS Writer ! Les autres commandes vont nous permettre de gérer nos sauvegardes.

La procédure de sauvegarde

Elle se compose de 4 batch et d’1 script diskshadow.

Le tout se trouve dans le répertoire C:\HyperV (ce répertoire sera pris pour base dans l’explication des batch suivant)

Nous allons avoir :

1) Un batch pour l’exécution générale qui fera appel aux autres batch (et au script diskshadow)

2) Un batch pour la gestion de la maintenance a. Suppression d’anciennes sauvegardes

b. Gestion d’un jeu de roulement de sauvegardes c. Etc

3) Un batch pour la gestion des exports des sauvegardes des VMvers une destination choisie

4) Un batch pour la l’export de la partition système hyperV à l’aide d’imagex Détail des batch :

(7)

1 - HyperV.cmd

FOR /F "TOKENS=1* DELIMS= " %%A IN ('echo %date%') DO SET CDATE=%%B FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('echo %date%') DO SET mm=%%B FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B FOR /F "TOKENS=2,3 DELIMS=/ eol= " %%A IN ('echo %CDATE%') DO SET yyyy=%%B SET dateStamp=%mm%%dd%%yyyy%

c:

cd HyperV

Echo %date% %time% >>c:\HyperV\logs\%dateStamp%_%computername%_HyperV.log diskshadow /s c:\HyperV\HyperV_step.dsh

>>c:\HyperV\logs\%dateStamp%_%computername%_HyperV.log

Echo %date% %time% >>c:\HyperV\logs\%dateStamp%_%computername%_HyperV.log

Explications :

La première partie reformate la date pour pouvoir être exploité dans le nom des fichiers de logs générés pendant la sauvegarde.

La deuxième nous positionne dans le répertoire correct ou se trouve nos batch.

La troisième et cinquième partie injecte dans les logs l’heure de début et de fin de notre sauvegarde et tag correctement nos fichiers de logs.

La quatrième partie appel le script diskshadow et envoi les étapes effectuées par le script dans les logs.

2 - HyperV_STEP.DSH

DELETE SHADOWS ALL SET CONTEXT PERSISTENT

SET METADATA c:\HyperV\cab\Backup.cab SET VERBOSE ON

BEGIN BACKUP

ADD VOLUME C: ALIAS Shadow1 ADD VOLUME D: ALIAS Shadow2 ADD VOLUME E: ALIAS Shadow3 ADD VOLUME F: ALIAS Shadow4

WRITER VERIFY {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}

CREATE

EXEC C:\HyperV\backup_maintenance.cmd EXPOSE %Shadow1% X:

EXEC C:\HyperV\ backup_imagex.cmd UNEXPOSE X:

EXPOSE %Shadow2% X:

EXEC C:\HyperV\ backup_export.cmd UNEXPOSE X:

EXPOSE %Shadow3% X:

EXEC C:\HyperV\ backup_export.cmd UNEXPOSE X:

EXPOSE %Shadow4% X:

EXEC C:\HyperV\ backup_export.cmd UNEXPOSE X:

END BACKUP

(8)

Explications :

DELETE SHADOWS ALL : on supprime toutes les shadows copy précédentes (on ne le fait pas à la fin, comme ca on garde les shadows copy jusqu’à la prochaine sauvegarde (si jamais on doit manipuler les shadows copy au moins elles seront déjà sur le système))

Note : votre serveur Hyper-V ne gère que des VM, attention s’il est serveur de fichiers et que vous utilisez les clichés instantanés sur vos partages réseaux (pour le vertioning) (tous les clichés seront supprimés à l’exécution de cette commande)

SET CONTEXT PERSISTENT

SET METADATA c:\HyperV\cab\Backup.cab SET VERBOSE ON

BEGIN BACKUP

Ces commandes préparent l’environnement de sauvegarde

ADD VOLUME C: ALIAS Shadow1 ADD VOLUME D: ALIAS Shadow2 ADD VOLUME E: ALIAS Shadow3 ADD VOLUME F: ALIAS Shadow4

Ici nous ajoutons les volumes que nous voulons sauvegarder (mon système est sur le C et j’ai une VM sur chaque partition D E et F)

WRITER VERIFY {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}

Nous vérifions que le VSS Writer d’Hyper-V est bien disponible (vous vous souvenez il était dans la list VSSAdmin list writers) s’il n’est pas disponible la sauvegarde sera annulée.

CREATE : c’est parti, on lance la création de tous les volumes ajoutés précédemment.

EXEC c:\HyperV\backup_maintenance.cmd : on fait appel au batch de maintenance pour la suppression des anciennes sauvegardes etc etc

EXPOSE %Shadow1% X:

EXEC c:\HyperV\backup_imagex.cmd UNEXPOSE X:

On expose la shadow copy du système C : et on fait appel au batch d’export au format wim vers la destination choisie.

EXPOSE %Shadow2% X:

EXEC c:\HyperV\backup_export.cmd UNEXPOSE X:

Et maintenant on expose la shadow copy sur un lecteur disponible (dans l’exemple X:\ ), puis on fait appel au batch d’export vers la destination choisie et enfin on retire l’exposition de la shadow copy pour passer à la VM suivante.

Vous l’avez compris ces 3 lignes sont exécutées autant de fois qu’il y a de VM à sauvegarder (si vos VM sont bien cloisonnées sur une partition indépendante à chaque fois) (si vos VM sont sur une seule partition (déjà renvoyé votre implémentation) mais tout sera sauvegardé en une fois).

END BACKUP : pour terminer la sauvegarde et libérer les divers locks lancés par diskshadow 3 - BACKUP_MAINTENANCE.cmd

FOR /F "TOKENS=1* DELIMS= " %%A IN ('echo %date%') DO SET CDATE=%%B FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('echo %date%') DO SET mm=%%B

(9)

FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B FOR /F "TOKENS=2,3 DELIMS=/ eol= " %%A IN ('echo %CDATE%') DO SET yyyy=%%B SET dateStamp=%mm%%dd%%yyyy%

Echo %date% %time% >> c:\HyperV\logs\%dateStamp%_%computername%_maint.log rd /s /q s:\%computername%-OLD

ren s:\%computername% %computername%-OLD

Echo %date% %time% >> c:\HyperV\logs\%dateStamp%_%computername%_maint.log

La première partie formate la date comme vu tout à l’heure.

La deuxième et quatrième partie gèrent les fichiers de logs comme vu tout à l’heure.

La troisième partie gère ici un roulement sur 2 jours, la sauvegarde d’il y a 2 jours est supprimée, celle de la veille est renommée en –OLD et nous sommes prêt à ajouter la sauvegarde du jour.

Ici vous pouvez créer votre roulement sur le nombre de jours que vous désirez.

4 - BACKUP_EXPORT.cmd

FOR /F "TOKENS=1* DELIMS= " %%A IN ('echo %date%') DO SET CDATE=%%B FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('echo %date%') DO SET mm=%%B FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B FOR /F "TOKENS=2,3 DELIMS=/ eol= " %%A IN ('echo %CDATE%') DO SET yyyy=%%B SET dateStamp=%mm%%dd%%yyyy%

Echo %date% %time% >> c:\HyperV\logs\%dateStamp%_%computername%_xcopy.log if not exist s:\%computername% md s:\%computername%

robocopy X:\ s:\%computername%\ /E /V /NP

/LOG+:"C:\HyperV\logs\%dateStamp%_%computername%_xcopy.log" /ZB /R:2 /W:30 /XJD /XJF /XD

$RECYCLE.BIN SYSTEM* MP* /XA:SHO attrib -R -A -S -H -I s:\%computername%

Echo %date% %time% >> c:\HyperV\logs\%dateStamp%_%computername%_xcopy.log

La première partie formate la date comme vu tout à l’heure.

La deuxième et quatrième partie gèrent les fichiers de logs comme vu tout à l’heure.

La troisième partie gère ici un export à l’aide de l’utilitaire RoboCopy, nous vérifions tout d’abord si le répertoire de destination existe si non nous le créons ensuite on exécute la commande robocopy (la source est X:\ (La lettre sur laquelle est exposé notre shadow copy) et la destination est notre répertoire de sauvegarde (ici sur le lecteur S:\ (Dans le répertoire qui porte le nom de notre serveur)))

Les paramètres de robocopy sont : /E -> Copie tous les sous dossiers

/V -> passe en mode verbose pour les logs /NP -> pas d’affichage de l’état de progression

/LOG+:"c:\HyperV\logs\%dateStamp%_%computername%_xcopy.log" -> envoi le résultat dans le fichier de log desiré

/ZB -> utilisation du mode restartable (si un accès refuse passage en mode backup) /R:2 -> nombre de tentatives si échec

/W:30 -> temps d’attente entre les tentatives

/XJD -> exclusion des points de jonctions pour les répertoires /XJF -> exclusion des points de jonctions pour les fichiers

/XD $RECYCLE.BIN SYSTEM* MP* -> exclusion des répertoires désirés

/XA:SHO -> exclusion des fichiers avec les attributs désirés (S : fichier système, H : fichier caché et O : fichier offline)

On fini avec l’exécution de attrib -R -A -S -H -I s:\%computername% si non notre répertoire de destination passe en répertoire caché (ça par contre je n’ai pas encore compris pourquoi …)

(10)

5 - BACKUP_IMAGEX.cmd

FOR /F "TOKENS=1* DELIMS= " %%A IN ('echo %date%') DO SET CDATE=%%B FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('echo %date%') DO SET mm=%%B FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B FOR /F "TOKENS=2,3 DELIMS=/ eol= " %%A IN ('echo %CDATE%') DO SET yyyy=%%B SET dateStamp=%mm%%dd%%yyyy%

Echo %date% %time% >> C:\HyperV\logs\%dateStamp%_%computername%_imagex.log C:\HyperV\ImageX\imagex /capture X: S:\%computername%\SystemeHyperV.wim "SVG Disque Systeme Serveur HyperV" /compress fast /check

Echo %date% %time% >> C:\HyperV\logs\%dateStamp%_%computername%_imagex.log

La première partie formate la date comme vu tout à l’heure.

La deuxième et quatrième partie gèrent les fichiers de logs comme vu tout à l’heure.

La troisième partie gère ici un export à l’aide de l’utilitaire ImageX (de la suite Windows AIK (Automated Installation Kit))

Note : Pour pouvoir utiliser ImageX il vous faudra récupérer le répertoire ou il est installer par défaut avec le Windows AIK (Automated Installation Kit) (par défaut il se trouve dans program

files\Windows AIK\Tools\amd64 (bien prendre la version d’imagex pour 64 bits)

Récapitulons :

Un petit schéma de l’exécution globale de la sauvegarde

Début

On appel HyperV.cmd

Diskshadow /s HyperV_STEP.DSH

BACKUP_MAINTENANCE.cmd BACKUP_IMAGEX.cmd BACKUP_EXPORT.cmd Fin

Au final j’aurai au niveau des fichiers générés

• Le répertoire des batch contient C:\HyperV

Cab (répertoire) ImageX (répertoire) Logs (répertoire) BACKUP_IMAGEX.CMD BACKUP_EXPORT.CMD BACKUP_MAINTENANCE.CMD HyperV.CMD

HyperV_STEP.DSH

• Logs (3 fichiers) dans le répertoire C:\HyperV\logs 01_SRV-HYPERV01_HyperV.txt

01_SRV-HYPERV01_imagex.txt 01_SRV-HYPERV01_maint.txt

(11)

01_SRV-HYPERV01_xcopy.txt

01 pour le mois de janvier (change en fonction du mois concernée) SRV-HYPERV01 (ici mon serveur s’appel comme ca)

HyperV la partie concernée par le log

• Fichiers de sauvegardes S:\SRV-HYPERV01

VM1

Snapshots

Virtual Hard Disks Virtual Machines VM2

VM3

SystemeHyperV.wim S:\SRV-HYPERV01-OLD

Mise en place de l’automatisation du lancement de la sauvegarde avec le gestionnaire des taches planifiées de Windows :

Dans la console de gestion du serveur

Configuration > Planificateur de taches > bibliothèque du planificateur de taches

Nous allons crées une nouvelle tache

(12)
(13)
(14)
(15)

Ici j’utilise le compte admin pour l’exécution (il est recommandé d’utiliser un compte dédié aux sauvegardes)

(16)
(17)

On valide les modifications.

Et voilà votre sauvegarde est maintenant opérationnelle !!

Bonne continuation à tous et bon scripting :)

Références

Documents relatifs

Patanjali, vers 200 avant Jésus-Christ (cette date n’est pas précise), a écrit les Yoga Sutras – 195 sutras qui expliquent les huit membres du yoga ashtanga, à ne pas confondre

Éric Marty, comédien, auteur et metteur en scène basé à Verneuil-sur-Seine (Yvelines) finalise avec ses comédiens, sa 3e comédie à découvrir en mars à l’espace

Des prospections systématiques dans la partie occidentale du massif des Maures et notamment sur la commune de Collobrières et ses proches environs (fig. 1, page suivante) ont

Soient p un nombre premier et q un nombre rationnel

Énoncer puis démontrer un résultat général concernant le produit cartésien de deux (sous) groupes (de G ).. Justifier que le complémentaire d’un sous groupe de G n’est jamais

Pour tout cela (pour les vignettes, pour l’insigne, pour les Jolis Contes, pour les Merveilles du Monde, pour Charlot surtout) : merci, merci, merci, messieurs Nestlé, Peter,

Le coût total de la sortie (bus, hébergement et nourriture, activités…) s’élève à 120€ par élève. 1°) Le FSE (Foyer Socio Educatif) du collège propose de prendre en charge

Pour raccourcir le support, prendre la hauteur mesurée (H) moins 8 mm Coupez la cassette avec une scie.. Assurez-vous avant de scier que le store de protection anti-insectes se