Sauvegarde 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 …)
La mise en page n’étant pas très aisé sous Wordpress je vous joint le .doc et le .pdf avec tout l’article ![]()
Bonne lecture à tous.
Sauvegarde Automatisée de VM sous HyperV version pdf
Sauvegarde Automatisée de VM sous HyperV version doc
Notes :
Toute la première partie sur les KB n’est plus à réaliser à partir de Windows Server 2008 SP2.
La procédure est compatible sous Windows Server 2008 R2 et HyperV Server 2008 R2 !
Pour le détail sur la restauration dans un environnement HyperV, c’est par ici :
http://diskshadow.fr/microsoft/restauration-de-vms-hyperv.html
Bonjour,
Dans votre document (très bien réalisé) je n’arrive pas à comprendre 2 petites choses :
- La shadow copy est faite sur X:\ mais peux on la faire sur la même partition que le système hôte (dans votre cas sur le C:\) pour éviter l’utilisation d’un 5ème disque.
- Qu’elle sera la taille des fichiers de sauvegarde générés et des fichiers temporaires (taille de disque utilisé ou taille de la partition) car cela aura une impacte très importante sur la taille du disque externe de sauvegarde.
merci d’avance pour votre aide et bravo pour ce tutoral.
Le lecteur X:\ est en faite un lecteur virtuel qui se mappe lors du EXPOSE et qui disparaitra lors du UNEXPOSE, il ne correspond donc à aucun lecteur physique (il ne doit d’ailleurs pas y avoir de lecteur physique sur la lettre utilisée pour l’exposition de la shadow copy)
Ce lecteur fait juste le lien entre la shadow copy crée et notre procédure du sauvegarde pour pouvoir extraire les fichiers de la VM et les envoyer où l’on veut.
La taille des fichiers de sauvegarde sera égale à la taille originale de la(les) VMs (il n’y a ici aucun mécanisme de compression (à part pour le IMAGEX qui lui peut compresser plus ou moins, mais il est optionnel pour la sauvegarde du système))
La compression peut être ajoutée dans les scripts (mais attention la manipulation de fichiers aussi volumineux peut générer des problèmes, en effet l’utilisation d’un rar par exemple demande, lors de sa génération, de travailler dans un répertoire temp défini par défaut sur le disque du système (par defaut C:\…) avant d’être stocké à l’endroit voulu…
Bonjour,
le lecteur X est un mappage reseau ? et lecteur S aussi.
Pour lancer la sauvegarde , il faut arreter les VMs ?
Le lecteur X est un lien vers un snapshot. (l’icône qui apparait lors du montage est celle d’un lecteur classique (pas un lecteur réseau)).
Le lecteur S lui est un mappage de l’endroit où vas se faire la sauvegarde (sur le réseau).
Non.
Tout l’intérêt est là ! les sauvegardes se font à chaud grâce au writer VSS d’hyperv.
bonsoir,
merci pour explication.
autre question :
lors de creation du VSS , il se fait sur quel partition?:
ex: c: systeme en raid 1(hyperv), d: les vm sur raid 5
les scripts de sauvegarde se trouvent sur c:
lors de sauvegarde du systeme hyperv (vim), ds le log il me dit ‘erreur open file’
merci pour ton aide
Je viens de faire un poste pour le stockage des Shadow Copy.
http://diskshadow.fr/microsoft/volume-shadow-copy-service-vss-details.html
pour le wim j’ai besoin de plus d’informations.
(attention pour utiliser la sauvegarde du système avec imagex, il faut que le waik soit installé ou au moins le rep qui contient tous les fichiers pour le fonctionnement d’imagex)
WAIK : http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34
Bonjour,
voici un bout du log concernant le imagex
**************************
C:\HyperV\ImageX>imagex /capture X: s:\PREF26-SHV02\SystemeHyperV.wim “SVG Disque Systeme Serveur HyperV” /compress fast /check
ImageX Tool for Windows
Copyright (C) Microsoft Corp. 1981-2005. All rights reserved.
Files/folders excluded from image capture by default:
\WINDOWS\CSC
\RECYCLER
\System Volume Information
\pagefile.sys
\hiberfil.sys
\$ntfs.log
Turning on VERIFY option for network share
Error setting XML information.
Error imaging drive [X:\]
**************
merci pour ton aide.
Bonjour,
Un grand bravo pour ce superbe document, pédagogique et très complet.
En effet DPM est un mastodonte pour une PME et l’application du VSS d’hyper-v dans ce document en aideront plus d’un
merci pour le boulot et la mise à dispo
ludo : après avoir fait des tests (moi je fais le .wim sur un disque local et après je le backup avec arcserv) j’obtiens aussi une erreur lorsque je sauvegarde le .wim sur un mappage réseau ou en passant par un chemin UNC !
Exemple :
C:\HyperV\ImageX\imagex /capture Z: \\filer\svgt$\SystemeHyperV.wim “SVG Disque Systeme Serveur HyperV” /compress fast /check
Il faut faire le wim en local et ensuite le copier sur le réseau avec un robocopy.
Wilfried : merci.
Bonjour,
modification et test –> ok
en grand merci pour la réalisation de ce script et pour le partage.
Merci ça marche super bien ^^
Par contre je ne vois pas l’intérêt d’utiliser IMAGEX … alors je l’ai remplacé par un robocopy du répertoire monté où se trouvent les VHD.
IMAGEX est là pour la sauvegarde du serveur physique (sa partition système) (le serveur HyperV en lui même).
Bonjour,
je mets actuellement en place un Hyper-V server R2. Je possède qu’une seule partition, j’aurai, a priori, qu’un seul shadow (shadow1). le script BACKUP_EXPORT.cmd ne m’est donc pas utile?
Pour le AIK ca fonctionne sur HyperV server?
merci en tout cas pour ton travail sur les scripts, c’est du bon boulot^^
tout d’abord stocker les VMs sur le même disque que le système est déconseillé pour des problèmes de performances. Mais dans votre cas effectivement il n’y aura qu’un seul snapshot a réaliser et il ne restera qu’a tuner un peu le script d’export :
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
Où il faudra compléter X:\ avec le path complet où se trouve les VMs (disons C:\Hyper-V\VMs, cela donnera X:\Hyperv-V\VMs (si X: est bien la lettre de montage des snapshots))
Je n’ai pas trouvé comment on restaure dans ta procédure.
As-t-on le choix de restauration? restaurer hyper-v? tous les VM? une VM? une partition? un dossier? un fichier? Est-ce possible? Merci.
Bonjour,
http://diskshadow.fr/microsoft/restauration-de-vms-hyperv.html
Pour répondre à votre question.
Pour toutes questions n’hésitez pas.
@Anthony
merci de ta réponse, ça marche nikel, bonne année
Bonjour,
Est-il possible à partir d’un seul script, de copier simplement une VM vers un disque externe ? Tout en laissant la vm en ligne ?
Merci beaucoup.
Oui c’est possible.
Je vous invite à lire la procédure que j’ai fournie, elle répondra complètement à votre question.
Bonjour
Quand je lance l’exe , rien ne se passe , ou est spécifié les vms que l’on souhaite sauvegarder ? il prend obligatoirement tout ce qui y’ a dans c:\hyperv?
Ou se trouve le fichier backup.cab ?
Merci bcp !!
Je vous invite à lire la documentation entièrement
Tout est expliqué en détail.
Bonjour,
Le fichier de log me renvoie l’erreur ci-dessous. Avez-vous une idée ?
Pourquoi deux enregistreurs sont-ils exclus ? Le composant HyperV vss writer est bien présent sur le système.
Merci de votre aide.
-> DELETE SHADOWS ALL
Aucun clich‚ instantan‚ n’a ‚t‚ trouv‚ sur le systŠme.
-> SET CONTEXT PERSISTENT
-> SET METADATA c:\HyperV\cab\Backup.cab
-> SET VERBOSE ON
-> BEGIN BACKUP
-> ADD VOLUME C: ALIAS Shadow1
-> ADD VOLUME E: ALIAS Shadow2
-> WRITER VERIFY {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}
-> CREATE
L’enregistreur ®ÿShadow Copy Optimization Writerÿ¯ est exclu, car tous ses composants le sont aussi.
L’enregistreur ®ÿBITS Writerÿ¯ est exclu, car tous ses composants le sont aussi.
Le composant ®ÿ\D40053A5-282D-4FE9-952A-8939CC6918C5ÿ¯ provenant de l’enregistreur ®ÿMicrosoft Hyper-V VSS Writerÿ¯ est exclu de la sauvegarde,
car il n‚cessite un volume introuvable sur le systŠme.
Le composant ®ÿMicrosoft Hyper-V VSS Writerÿ¯ÿ est introuvable dans la liste des composants
de l’enregistreur. Abandon de la sauvegarde…
V‚rifiez la syntaxe du nom du composant.
Bonjour,
Merci pour cet excellent document. Cependant j’aurais aimé savoir si il était possible de sauvegarder un serveur Sharepoint Foundation en utilisant cette méthode? N’y aura-t’il pas de souci au niveau des logs et autres timers?
Merci par avance !
Desolé pour le retard, j’ai du mal a traiter le volume de données auquel je suis confronté en ce moment.
Les 2er exclusions peuvent s’expliquer par contre l’exclusion du writer hyperv est anormal si C et E sont bien des volumes NTFS !
Pouvez vous me fournir le retour de la commande “vssadmin list writers” sur votre serveur HyperV ?
Il est possible de sauvegarder SharePoint de cette facon mais il faudra utiliser un autre writer (celui de sharepoint) mon article concerne le writer HyperV.
Le writer permetra de mettre le(s) volume(s) utiliser par le sharepoint dans un etat “application consistent” (et non le “crash consistent” habituel).
très intéressante. mais je me pose une question concernant les snapshot vss générer. il faut que la VM soi arrêter pour les delete
ou je me trompe ? merci d’avance
Bonjour,
Les snapshot dont vous parlez sont au niveau de la VM.
Si on génère un snapshot au niveau de la VM un disque de delta va se créer, et à la suppression de ce snap plus tard il faudra arrêter la VM (complètement) pour permettre à HyperV de consolider les disques (virtuelles).
Mon script fait des snapshot au niveau disque physique (aucun disque de delta n’est généré) c’est la snapshot reserve de VSS qui prend le delta (c’est caché) et une fois la suppression du snap faite tout est libérée instantanément à chaud sans que les VMs ne voient rien.
Anthony
Bonjour,
Voici le résultat de la commande VSSAdmin List writers
C:\Users\administrateur.PDL>vssadmin list writers
vssadmin 1.1 - Outil ligne de commande d’administration du service
de cliché instantané de volume
(C) Copyright 2001-2005 Microsoft Corp.
En attente de réponses.
Elles pourraient être retardées si un cliché instantané
est en cours de préparation.
Nom du rédacteur : ‘Microsoft Hyper-V VSS Writer’
ID du rédacteur : {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}
ID de l’instance du rédacteur : {cff449dc-d01f-4369-9a80-161c97c0423b}
État : [1] Écurie
Dernière erreur : Aucune erreur
Nom du rédacteur : ‘System Writer’
ID du rédacteur : {e8132975-6f93-4464-a53e-1050253ae220}
ID de l’instance du rédacteur : {a96bdad4-5d6d-43dd-836b-be45ae9c2ade}
État : [1] Écurie
Dernière erreur : Aucune erreur
Nom du rédacteur : ‘ASR Writer’
ID du rédacteur : {be000cbe-11fe-4426-9c58-531aa6355fc4}
ID de l’instance du rédacteur : {130ee253-dffe-4be8-9edb-d28c1ec565ac}
État : [1] Écurie
Dernière erreur : Aucune erreur
Nom du rédacteur : ‘Shadow Copy Optimization Writer’
ID du rédacteur : {4dc3bdd4-ab48-4d07-adb0-3bee2926fd7f}
ID de l’instance du rédacteur : {c1925ca3-8924-49fa-9a49-41e1b4d57396}
État : [1] Écurie
Dernière erreur : Aucune erreur
Nom du rédacteur : ‘Registry Writer’
ID du rédacteur : {afbab4a2-367d-4d15-a586-71dbb18f8485}
ID de l’instance du rédacteur : {a6cd1279-5e8b-4591-85d0-20f553517191}
État : [1] Écurie
Dernière erreur : Aucune erreur
Nom du rédacteur : ‘COM+ REGDB Writer’
ID du rédacteur : {542da469-d3e1-473c-9f4f-7847f01fc64f}
ID de l’instance du rédacteur : {36aa73f3-6b06-47b4-a2fb-01c04a310932}
État : [1] Écurie
Dernière erreur : Aucune erreur
Nom du rédacteur : ‘BITS Writer’
ID du rédacteur : {4969d978-be47-48b0-b100-f328f07ac1e0}
ID de l’instance du rédacteur : {509cf56c-8034-4452-9c2b-6f64d21b2b01}
État : [1] Écurie
Dernière erreur : Aucune erreur
Nom du rédacteur : ‘WMI Writer’
ID du rédacteur : {a6ad56c2-b509-4e6c-bb19-49d8f43532f0}
ID de l’instance du rédacteur : {5adfd3ab-fef4-4a69-bf77-3d8dc857eef1}
État : [1] Écurie
Dernière erreur : Aucune erreur
Merci pour votre aide.
@Thierry
Bonjour,
J’ai contourner l’erreur en écrivant :
SET CONTEXT PERSISTENT nowriters et supprimant la ligne WRITER VERIFY {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}
Cela fonctionne.
Merci
@Thierry
J’ai contourné et non pas “contourner”
Merci pour ce document bien pratique et qui fonctionne nikel pour les VM, par contre j’ai un problème avec imagex pour la creation du fichier systemehyperv.wim
ci joint un passage du log
C:\HYPERV>C:\HyperV\ImageX\imagex /capture X: S:\SRV-HYPERV\SystemeHyperV.wim “SVG Disque Systeme Serveur HyperV” /compress fast /check
ImageX Tool for Windows
Copyright (C) Microsoft Corp. All rights reserved.
Version: 6.1.7600.16385
Files/folders excluded from image capture by default:
\$windows.~bt
\$windows.~ls
\winpepge.sys
\Windows\CSC
\Recycled
\Recycler
\$Recycle.Bin\*
\System Volume Information
\pagefile.sys
\hiberfil.sys
Error opening file [S:\SRV-HYPERV\SystemeHyperV.wim].
Le chemin d’accès spécifié est introuvable.
merci pour ton aide
@jean marc
j’ai changé la lettre x par z pour la sauvegarde du systeme hyperv et tout est rentré dans l’ordre
En production il est conseillé de travailler avec des disques fixes, imaginons que le total de mes VM fasse 2to de disque fixe, alors qu’il n’y aurait à peine 20% de données réels. je me vois mal faire des sauvegardes de 2to tout les jours sans parler des disques de sauvegarde à mettre en place. N’y aurait-il pas un moyen de faire une sauvegarde des VM mais seulement de l’espace disque pris, un peu une transformation en disque dynamique.
Cela n’est pas possible.
Cela reviendrait à faire une sauvegarde au niveau de la VM plus au niveau de l’hyperviseur.
Bonjour et merci pour ce partage, par contre j’ai un petit problème concernant la gestion des backups, en exécutant votre script j’ai des backup en cascade, je m’explique, dans mon lecteur D: par exemple voila comment ça passe les backups :
D:\ NOM-DE-MON-PC
Bonjour et merci pour ce partage, par contre j’ai un petit problème concernant la gestion des backups, en exécutant votre script j’ai des backup en cascade, je m’explique, dans mon lecteur D: par exemple voila comment ça passe les backups :
D:\ NOM-DE-MON-PC — >\NOM-DE-MON-PC–>NOM-DE-MON-PC–> NOM-DE-MON-PC
VM (Mes VMs) VM VM NOM-DE-MON-PC-OLD
VM
Ainsi de suite quelqu’un aurait eu ce genre de problème ?
Merci d’avance
Merci pour ce très beau document qui est très bien expliqué , j’ai par contre du mal avec le nombre de sauvegarde que l’on veut conserver.J’aurais souhaiter garder une sauvegarde d’une semaine des VMs , qui est pour le moment limité à deux jours dans votre document, mais je dois avouer ne pas comprendre la logique pour en faire perdurer pendant 1 semaine.
Quelqu’un aurais un exemple a me donner ? (désolé si ma questions semble bête mais je débute en administration de server et scripting
Merci
Bonjour à tous,
Tout d’abord merci pour ce magnifique script qui marche parfaitement, mais je rencontre un problème concernant la sauvegarde sur plusieurs jours, le roulement ne se fait pas, je pense que l’erreur vient de mon bricolage du script existant :s . Je vous mets mon script pour le roulement (je debute dans tut ce qui est script donc ne m’enterrer pas s’il vous plait
) :
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:\V\logs\%dateStamp%_%computername%-0_maint.log
rd /s /q E:\%computername%-5 (la sauvegarde 5 est supprimée)
ren E:\%computername%-0 %computername%-1 (la sauvegarde portant le n°1 devient N° 2 )
ren E:\%computername%-1 %computername%-2 (ainsi de suite)
ren E:\%computername%-2 %computername%-3
ren E:\%computername%-3 %computername%-4
ren E:\%computername%-4 %computername%-5
Echo %date% %time% >> c:\V\logs\%dateStamp%_%computername%-0_maint.log
Mon bricolage est-il correct ?
Merci d’avance
Bonjour,
Désolé pour le retard :/
Pour moi cela doit fonctionner juste que le rep de base %computername% est devenu %computername%-0
donc dans BACKUP_EXPORT.cmd il faut mettre à jour
robocopy X:\ s:\%computername%\ /E /V /NP en :
robocopy X:\ s:\%computername%-0\ /E /V /NP
Cordialement,
Anthony
Bonjour Anthony et merci pour votre réponse.
Mais malheureusement mon petit bricolage ne fonctionne pas en effet lors d’un backup seulement la %computername%-6 devient %computername%-7 on drait que les “ren” de 1 à 5 ne sont pas pris en compte et surtout ils sont supprimés quand le roulement s’effectue, il faudrait faire une sorte “pause” entre chaque renommage pour que la backup suivante soit bien renommé et non supprimé. Aurais-tu une solution pour ce probleme ?
Avez-vous déjà fait tourner votre script sur une durée de roulement supérieur à celui que vous proposez dans ce tutos , 1 semaine de suavegarde par exemple au lieu des deux jours actuellement ?
Un grand merci encore pour ce tuto qui m’a vraiment facilité la vie pour mes sauvegardes d’HyperV
c’est normal que cela ne marche pas il faut envoyer les rename dans le sens inverse
rd /s /q E:\%computername%-5 (le rep 5 est supp)
ren E:\%computername%-4 %computername%-5 (5 n’existe plus donc ca passe)
ren E:\%computername%-3 %computername%-4
ren E:\%computername%-2 %computername%-3
ren E:\%computername%-1 %computername%-2
ren E:\%computername%-0 %computername%-1
à partir de la %computername%-0 n’existe plus et il peut être crée par la nouvelle sauvegarde
Et merde j’y avais pas pensé à l’ordre de suppression des sauvegardes va falloir que j’essaie en inversant l’ordre des suppressions
Merci pour ta réponse Anthony .