Accueil > Astuce, Hyper-V, Microsoft, Windows 2008 > Sauvegarde VM sous HyperV

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

Anthony Astuce, Hyper-V, Microsoft, Windows 2008 , , ,

  1. desnoues
    07/07/2009 à 15:06 | #1

    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.

  2. 07/07/2009 à 15:59 | #2

    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…

  3. ludoo
    14/09/2009 à 17:01 | #3

    Bonjour,
    le lecteur X est un mappage reseau ? et lecteur S aussi.

  4. ludoo
    14/09/2009 à 18:16 | #4

    Pour lancer la sauvegarde , il faut arreter les VMs ?

  5. 14/09/2009 à 21:46 | #5

    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).

  6. 14/09/2009 à 21:47 | #6

    Non.
    Tout l’intérêt est là ! les sauvegardes se font à chaud grâce au writer VSS d’hyperv.

  7. ludoo
    15/09/2009 à 18:51 | #7

    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

  8. 16/09/2009 à 02:01 | #8

    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

  9. ludoo
    17/09/2009 à 12:01 | #9

    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.

  10. Wilfried
    18/09/2009 à 22:27 | #10

    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

  11. 18/09/2009 à 23:32 | #11

    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.

  12. ludoo
    21/09/2009 à 13:59 | #12

    Bonjour,
    modification et test –> ok
    en grand merci pour la réalisation de ce script et pour le partage.

  13. 23/11/2009 à 09:54 | #13

    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.

  14. 26/11/2009 à 20:47 | #14

    IMAGEX est là pour la sauvegarde du serveur physique (sa partition système) (le serveur HyperV en lui même).

  15. squall
    30/12/2009 à 11:37 | #15

    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^^

  16. 30/12/2009 à 20:00 | #16

    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))

  17. Alexis
    31/12/2009 à 12:35 | #17

    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.

  18. 04/01/2010 à 11:09 | #18

    Bonjour,
    http://diskshadow.fr/microsoft/restauration-de-vms-hyperv.html
    Pour répondre à votre question.
    Pour toutes questions n’hésitez pas.

  19. squall
    07/01/2010 à 14:41 | #19

    @Anthony
    merci de ta réponse, ça marche nikel, bonne année ;)

  20. Jérémie B.
    24/02/2010 à 07:56 | #20

    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.

  21. 12/03/2010 à 16:53 | #21

    Oui c’est possible.
    Je vous invite à lire la procédure que j’ai fournie, elle répondra complètement à votre question.

  22. kao
    03/09/2010 à 14:23 | #22

    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 !!

  23. 06/09/2010 à 09:11 | #23

    Je vous invite à lire la documentation entièrement :) Tout est expliqué en détail.

  24. Thierry
    11/05/2011 à 10:10 | #24

    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.

  25. RaceX
    13/06/2011 à 17:09 | #25

    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 !

  26. 06/07/2011 à 23:45 | #26

    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 ?

  27. 06/07/2011 à 23:48 | #27

    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).

  28. flexmoon
    14/09/2011 à 17:15 | #28

    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

  29. flexmoon
    14/09/2011 à 17:25 | #29

    ou je me trompe ? merci d’avance

  30. 14/09/2011 à 19:02 | #30

    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

  31. Thierry
    23/09/2011 à 09:49 | #31

    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.

  32. Thierry
    29/09/2011 à 12:59 | #32

    @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

  33. Thierry
    29/09/2011 à 13:00 | #33

    @Thierry
    J’ai contourné et non pas “contourner”

  34. jean marc
    31/10/2011 à 14:32 | #34

    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

  35. jean marc
    31/10/2011 à 17:11 | #35

    @jean marc

    j’ai changé la lettre x par z pour la sauvegarde du systeme hyperv et tout est rentré dans l’ordre

  36. kevin
    11/11/2011 à 08:04 | #36

    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.

  37. 22/11/2011 à 18:56 | #37

    Cela n’est pas possible.
    Cela reviendrait à faire une sauvegarde au niveau de la VM plus au niveau de l’hyperviseur.

  38. Fab
    05/12/2011 à 09:41 | #38

    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

  39. Fab
    05/12/2011 à 09:45 | #39

    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

  40. clement
    10/01/2012 à 10:04 | #40

    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

  41. clement
    17/01/2012 à 14:55 | #41

    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 :D ) :

    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

  42. 17/01/2012 à 23:08 | #42

    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

  43. clement
    18/01/2012 à 19:49 | #43

    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 :D

  44. 19/01/2012 à 10:34 | #44

    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 :)

  45. clement
    21/01/2012 à 18:36 | #45

    Et merde j’y avais pas pensé à l’ordre de suppression des sauvegardes va falloir que j’essaie en inversant l’ordre des suppressions :D
    Merci pour ta réponse Anthony .

  1. 16/09/2009 à 01:55 | #1
  2. 04/01/2010 à 11:05 | #2