locked
Suite à une migration de VM Hyper-V, problème réseau RRS feed

  • Question

  • Bonjour,

    Nous avons dans ma société l'architecture suivante :

    Il y a 2 serveurs :
    Hyperv01 : dit "de prod", qui fait tourner des VM Hyper-V.
    Hyperv02 : dit "de backup", qui contient des copies des VM, au cas ou les vm de prod ou le serveur physique de prod se plante.

    Les VM sont recopiées régulièrement du serveur 1 au 2 par script, et sont bien sur éteintes.

    Notre problème est le suivant :
    Quand on allume une VM du serveur 2 (avec son homologue du 01 éteinte), il y a un soucis sur la carte réseau de l'OS virtuel.
    L'adresssage IP fixe a sauté, on se retrouve en DHCP, et la carte réseau n'est plus la même qu'à l'origine.
    CAD sur la VM1, on a "connexion au réseau local" avec une IP fixe
    sur la VM de backup, on a "connexion au réseau local 2" avec une IP dynamique.

    Le chiffre à côté de connexion au réseau local s'incrémente, on peut avoir 2, 3, 4, etc...
    En gros c'est comme si l'OS perdait la carte d'origine et en ajoutait une nouvelle.


    Sur les VM linux, le problème est pire, il n'y a plus de carte réseau du tout, et pire encore, le mdp root ne suit pas dans la copie, il ne fonctionne plus. (ubuntu et SME ont été testé jusque la, pas d'autres distributions).

     

    si quelqu'un a une petite idée, votre aide sera la bienvenue.

     

    Zedd

    mercredi 12 octobre 2011 08:09

Réponses

  • Bonjour,

    Pour ceux qui seraient intéressés, voici la solution au problème de clonage, à savoir les étapes qui doivent se dérouler dans l'ordre :

    Il y a dans le script l'option -RunAsynchronously.
    Une fois cette option supprimée, le redémarrage de" la VM attend bien que le clonage soit terminé avant de démarrer.

    Cette option Spécifie que le travail s'exécute de manière asynchrone, de sorte que le contrôle retourne immédiatement à l'interface de commande.


    Pour l'instant il reste un problème de perf réseau (25 à 50% utilisé au lieu de 100% de bande passante, sur un câble croisé direct entre les 2 serveurs), mais je suis sur une piste.

    Cdt,

    Zedd
    mardi 18 octobre 2011 11:17

Toutes les réponses

  • Bonsoir,

     

    Une question me vient en lisant votre post :
    Pourquoi ne mettez-vous pas de cluster afin de palier à une éventuelle panne d'un hôte ?

    Par ailleurs, pourquoi n'utilisez-vous pas de logiciel de sauvegarde comme Data Protection Manager 2010 afin de disposer d'une
    véritable infrastructure de sauvegarde ?

    Enfin, faites-vous un export/import des VM par script ? Pour garder la configuration réseau, il vous faut créer le ou les mêmes réseaux
    virtuels sur chaque hôte. De plus, si vous faites un import/export des VM, veillez vérifier la présence du fichier de configuration XML.

    Bon courage ... 


    David LACHARI
    MVP Virtual Machine - VCP et VTSP vSphere 4.1
    Blog DansTonCloud
    Auteur du livre Hyper-v v2 sous Windows Server 2008 R2
    jeudi 13 octobre 2011 20:56
  • Bonsoir,

    ceci est relativement logique... chaque HyperV affecte des Adresses Mac différentes à partir d'un "pool" différent!

    Adresse Mac différente veut dire carte réseau différente pour HyperV et Windows

    Ce que je vous conseille, c'est de fixer l'adresse Mac dans la configuration de chaque machine virtuelle... et de définir la même adresse sur le 2ème serveur HyperV pour chaque machine virtuelle.

    On peut aussi fixer l'adresse Mac à l'intérieur de la machine virtuelle, mais je ne pense pas que cela soit conseillé.

    A bientôt, 


    Thierry DEMAN. Exchange MVP. https://www.mcpvirtualbusinesscard.com/VBCServer/MVPtdeman/profile (68 MCPs) http://base.faqexchange.info
    jeudi 13 octobre 2011 21:00
  • Bonjour,

    Merci à tous les deux pour vos réponses.
    Voici un peu plus de détails sur notre architecture :

    Pour faire un cluster, si je ne me trompe pas, il faut un SAN, que nous n'avons pas. Et pour seulement 2 machines, est-ce vraiment nécessaire ?
    Nous ne connaissions pas du tout Hyper-V, powershell, vmm etc. quand nous nous sommes lancés la dedans (cet été...), aussi nos choix ne sont sûrement pas les plus judicieux, et nous corrigeons le tir à chaque problème rencontré.


    Il y a donc 2 serveurs :
    Hyperv01 : dit "de prod", qui fait tourner des VM Hyper-V.
    Hyperv02 : dit "de backup", qui contient des copies des VM, au cas ou les vm de prod ou le serveur physique de prod se plante.

    Sur chacun des serveurs, le rôle Hyper-V a été installé.
    Il y a 4 cartes réseaux qui ont été configurées.

    1-> Vlan de la société
    2-> cable croisé direct sur le second serveur, pour faire transiter les backups.
    3-> carte utilisée pour les VM
    4-> non utilisée pour l'instant.

    Niveau disques durs, nous avons 2 disques SAS en RAID1 de 150go qui contient 2 partirions, un C pour le système, et un D qui est une zone "tampon" dont l'utilisation est décrite plus bas.
    Puis 3 disques SAS de 300Go en RAID5, en un seul volume, le E, qui héberge les VM. (550go dispo environ)

    Nous devions utiliser DPM pour faire des copies à chaud du serveur 1 et rebalancer le tout sur le serveur 2. DPM n'a finalement pas été exploité, il n'est pas adapté à notre situation (de ce qu'on en a trouvé).

     - On veut sauver nos VM indépendamment les unes des autres. Certaines importantes sont sauvées plus régulièrement que d'autres.
    Lorsqu'on crée un groupe de protection pour une machine, on va sauver par exemple E:\hyper-v\machines virtuelles\VM01 -> ça fonctionne bien.
    Si maintenant on veut rajouter un second groupe pour la VM02, pas possible.. Le E étant utilisé dans notre premier groupe de protection, les cases à cocher de sélection à la création du groupe de protection ne sont plus disponibles.
    En gros, soit on sauve tout notre "E" d'un bloc, donc toutes nos VM, soit on n'en sauve qu'une.

     - Nous avons une carte réseau avec un câble croisé pour faire transiter les backups, et éviter de saturer notre "réseau principal". DPM ne la prend pas en compte.
    Il passe par la carte réseau reliée au domaine

     - Les restaurations automatiques ne se font qu'avec scripts et taches planifiées, et il n'est pas possible de restaurer aussi régulièrement que nous le souhaiterions.

     - Il a fallu un gros espace disque supplémentaire puisque DPM nécessite un volume non partitionné et non formaté pour lui tout seul.
    A la base c n'était pas prévu dans notre budget, et après une "petite plainte" à Dell (notre fournisseur), il nous ont envoyé gracieusement 3 disques SAS de 450Go. Placé en RAID5, on a environ 800Go dispo

    DPM a donc été mis de côté, et nous avons creusé pour trouver une solution de sauvegarde.


    Première étape, créer un réseau virtuel :
    Dans le gestionnaire Hyper-v, clic droit sur le serveur, puis choisir "Gestionnaire de réseaux virtuels".
    L'opération a été faite à l'identique sur les 2 serveurs.
    Un petit coup aussi juste à côté, dans "Paramètres Hyper-v", où au final nous n'avons pas fait grand chose.

    Seconde étape, nous avons créé une arborescence de sous répertoires sur "LE" gros disque de chaque serveur, destinée à recevoir les VM.
    Par exemple pour notre VM Kaspersky, ça donne ceci :
    pour le XML : E:\Hyper-V\Machines_Virtuelles\Virtual Machines\nvkaspersky\nvkaspersky\Virtual Machines
    pour le VHD : E:\Hyper-V\Virtual Hard Disks\nvkaspersky
    (pour le XML, une légère incompréhension vis à vis de l'interface explique les "doublons" de répertoires inutiles, on aurait pu faire plus court)

    Jusque la, les 2 serveurs sont strictements identiques

    La, nous créons une VM. Je reviendrai en détail la dessus juste après, car nous avons eu pas mal de contraintes à contourner.
    Disons qu'une VM soit créée, il faut en faire la sauvegarde sur notre serveur 02
    Pour la sauvegarde, nous avons imaginé le script suivant :

    un .bat qui appelle PowerShell de VMM (le powershell "de base" n'interpretait pas nos commandes...) :
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile 
    "C:\Program Files\Microsoft System Center Virtual Machine Manager 2008 R2\bin\cli.psc1" c:\scripts\nvkaspersky.ps1 exit

    un .ps1 avec les instructions :
    echo "début du travail"  > c:\scripts\nvkaspersky.txt
    get-date >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "Lecture de l'estat" >> c:\scripts\nvkaspersky.txt
    $VMList = Get-WmiObject -Namespace root\virtualization Msvm_ComputerSystem -ComputerName nvhyperv01
    $VMList = $VMList | Where-Object {$_.ElementName -eq 'nvkaspersky'}
    $VMList | Format-Table ElementName,EnabledState -Autosize >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "arret de la machine" >> c:\scripts\nvkaspersky.txt
    get-VMMServer "nvhyperv02"
    $VmName = "nvkaspersky"
    $VM = Get-Vm $VmName
    Shutdown-VM $VM >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "copie du vhd sur le disque D" >> c:\scripts\nvkaspersky.txt
    xcopy "E:\Hyper-V\Virtual Hard Disks\nvkaspersky\nvkaspersky.vhd" "d:\temp\" /C /Y >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "demarrage de la machine" >> c:\scripts\nvkaspersky.txt
    Start-VM $VM >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "Heure de remise en service du serveur"  >> c:\scripts\nvkaspersky.txt
    get-date >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "copie du vhd sur le serveur distant" >> c:\scripts\nvkaspersky.txt
    xcopy "d:\temp\nvkaspersky.vhd" "\\10.10.10.2\e$\Hyper-V\Virtual Hard Disks\nvkaspersky\" /C /Y >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "suppression du vhd du disque D" >> c:\scripts\nvkaspersky.txt
    erase "D:\temp\nvkaspersky.vhd" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvkaspersky.txt
    echo "fin du travail" >> c:\scripts\nvkaspersky.txt
    get-date >> c:\scripts\nvkaspersky.txt
    exit
    

    le .ps1 fait ceci :
    SI la VM est éteinte, alors on ne fait rien. (ça veut potentiellement dire que la VM1 a un soucis et qu'on travaille avec la VM1_bk, qu'il ne faut donc pas écraser)
    SI la VM est allumée, alors on l'éteint, on copie son VHD du disque E au D, puis on la rallume.
    Ensuite, on copie du D vers le serveur 2, pour écraser le VHD du backup, puis on purge le D.

    Le .bat est lancé par une tache planifiée la nuit, à une heure où il n'est pas grave de couper la VM.
    Pur info et avec notre matériel, l'arrêt, la copie du VHD et le redémarrage d'une VM avec un VHD de 25Go prend 2 minutes :) Le tout en ajoutant le déplacement du D vers le serveur 02 prend 5 minutes.

    Voila, notre système de copie mis en place, nous avons renommé sur le serveur 2 les VM en les appelant "VM_BK", pour éviter les noms en double sur VMM, et surtout car le script powershell interprette mal les doublons.


    Création d'une VM :

    Nous avons eu plusieurs soucis avec la mise en place des VM dans notre architecture. Au final, voici ce que nous avons fait :

    Création d'une VM identique sur chaque hôte (identique veut dire même proc, même ram, même taille de HD, etc...)
    Le nom diffère cependant.
    sur le serveur 1, la vm sera "VM1", sur le serveur 2 elle sera "VM1_bk"
     -> le script powershell de copie se connecte à VMM pour tirer la liste des VM dispos. Avoir 2 vm avec un même nom, sur 2 serveurs différents, mais référencés tout 2 dans VMM, ça pose problème.

    ATTENTION : on installe un OS que sur la VM1, on laisse la VM1_bk vierge (on va pas faire le travail 2 fois non plus^^)

    Sur le système installé, modif de la base de registre pour mettre en place un login automatique.
    Les applis tournant sur les VM ne sont pas toutes des services et nécessitent qu'une session Windows soit ouverte, on a donc modifié ceci :
    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/windows NT/CurrentVersion/Winlogon
    DefaultDomainName : nom de domaine ou nom de l'ordinateur par défaut
    DefaultUserName : nom d'utilisateur par défaut
    DefaultPassword : mot de passe par défaut (pas desoin de cette chaine si vide)
    AutoAdminLogon : 1

    Enfin, LE problème réseau.
    Mon collègue regarde actuellement l'histoire de MAC adresse, je vous tiendrai informé si ça a résolu notre problème.




    Seconde option, on a envisagé le clone de VM par script. (mieux que l'export/import)
    C'est une opération qui prend plus de temps (environ 10-15 minutes contre 5), mais qui garde la config réseau pour les machines Windows. (Linux est source de problème, mais c'est un problème secondaire pour l'instant)
    Le script est le suivant :

    # ------------------------------------------------------------------------------
    # Nouvel ordinateur virtuel Script
    # ------------------------------------------------------------------------------
    # Script généré sur jeudi 13 octobre 2011 09:26:23 par Virtual Machine Manager
    #
    # Pour une aide supplémentaire sur l'utilisation des cmdlets, tapez get-help <nom de la cmdlet>
    # ------------------------------------------------------------------------------
    
    
    Set-VirtualFloppyDrive -RunAsynchronously -VMMServer nvhyperv02 -NoMedia -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d
    
    Set-VirtualCOMPort -NoAttach -VMMServer nvhyperv02 -GuestPort 1 -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d
    
    Set-VirtualCOMPort -NoAttach -VMMServer nvhyperv02 -GuestPort 2 -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d
    
    New-VirtualNetworkAdapter -VMMServer nvhyperv02 -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d 
    -PhysicalAddressType Dynamic -VirtualNetwork "Carte Physique VM - Réseau virtuel" -VLanEnabled $false
    -Synthetic -VMNetworkOptimizationEnabled $false -MACAddressesSpoofingEnabled $false New-VirtualSCSIAdapter -VMMServer nvhyperv02 -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d -AdapterID 255 -Shared $false New-VirtualDVDDrive -VMMServer nvhyperv02 -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d -Bus 1 -LUN 0 $CPUType = Get-CPUType -VMMServer nvhyperv02 | where {$_.Name -eq "1.00 GHz Pentium III Xeon"} New-HardwareProfile -VMMServer nvhyperv02 -Owner "NOVAOPHT\novanet" -CPUType $CPUType
    -
    Name "Profil2d184b1e-e89d-49e9-91bd-ccad0a951be4"
    -Description "Configuration matérielle temporaire utilisée pour créer un ordinateur virtuel/modèle"
    -
    CPUCount 1 -MemoryMB 1024 -ExpectedCPUUtilization 20 -DiskIO 0 -CPUMax 100 -CPUReserve 0
    -
    NetworkUtilization 0 -RelativeWeight 100 -HighlyAvailable $false -NumLock $false
    -BootOrder "CD", "IdeHardDrive", "PxeBoot", "Floppy" -LimitCPUFunctionality $false
    -
    LimitCPUForMigration $false -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d $VirtualNetworkAdapter = Get-VirtualNetworkAdapter -VMMServer nvhyperv02 -All | where
    {$_.ID -eq "2936386c-fb12-40ad-afb2-1b0f31f7aa36"} Set-VirtualNetworkAdapter -VirtualNetworkAdapter $VirtualNetworkAdapter -VirtualNetwork "Carte Physique VM - Réseau virtuel"
    -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d $VM = Get-VM -VMMServer nvhyperv02 -Name "nvcontapharm_bk" | where {$_.VMHost.Name -eq "nvhyperv02.novacel.local"} $VMHost = Get-VMHost -VMMServer nvhyperv02 | where {$_.Name -eq "10.10.10.1"} $HardwareProfile = Get-HardwareProfile -VMMServer nvhyperv02 | where
    {$_.Name -eq "Profil2d184b1e-e89d-49e9-91bd-ccad0a951be4"} New-VM -VM $VM -Name "nvcontapharm_bk" -Description "" -Owner "NOVAOPHT\novanet" -VMHost $VMHost
    -
    Path "e:\Hyper-V\Machines_Virtuelles\Virtual Machines" -JobGroup c240ed7b-35ed-4eb9-b31d-1dd81ededc5d
    -RunAsynchronously -HardwareProfile $HardwareProfile -RunAsSystem -StartAction NeverAutoTurnOnVM -StopAction SaveVM

    Nous avons eu une difficulté sur la fin du script.
    Si on utilise VMM pour le clone, il passe apr notre lan principal, en 172.16.0.0.
    Or nous voulons qu'il passe par notre carte de backup, en 10.10.10.x

    Pour faire marcher l'avant dernière ligne du script : $VMHost = Get-VMHost -VMMServer nvhyperv02 | where {$_.Name -eq "10.10.10.1"}
    Nous avons du "désinscrire" nos serveurs hôtes dans VMM, et les réinscrire avec les adresses IP de backup. (nvhyperv01 correspond à 172.16.0.78 sur le lan principal, et à 10.10.10.1 sur le lan de backup)

    Problème rencontré -> impossible d'inscrire 10.10.10.2, qui est en fait la machine sur laquelle est installée VMM.
    -> pour palier à ça, on a du désinstaller VMM de nvhyperv02 et l'installer sur le 01
    Du coup, il est impossible d'inscrire 10.10.10.1,(ce n'est pas si grave car si tout va bien, les restaurations de backups devraient être rares), mais on a pu inscrire 10.10.10.2.
    • Modifié Zedd02 vendredi 14 octobre 2011 09:09
    vendredi 14 octobre 2011 09:07
  • Bonjour,

    Au final, après avoir testé la mise en place d'une MAC address fixe sur les 2 VM, le résultat est identique.
    La VM de backup se retrouve toujours avec une carte "connexion réseau local + un chiffre incrémenté", et avec une config en DHCP.

    On a bien la possibilité de remettre une IP Fixe avec un script et NetSH, mais le problème reste entier puisqu'on doit pour ça renommer la carte réseau "proprement" (le script NetSH fait appel au nom de la carte).


    Variante de solution, on a poussé un peu plus loin le scripting de clonage. Ci-dessous un exemplaire du script (j'avais oublié la commande IF dans mon précédent post).

    Ce script doit faire ceci DANS L'ORDRE :

    suppression de la VM de backup (il n'aime pas si elle est déjà en place)
    Arrêt de la VM d'origine
    Clonage de l'original vers le backup
    Démarrage de l'original.

    Le problème avec ce script, le démarrage final n'attend pas que le clonage soit terminé.
    Pourtant, tout le début se passe sans encombre.
    La suppression se fait jusqu'au bout, puis seulement lorsqu'elle est terminée, l'arrêt se lance.
    La VM s'arrête proprement, et seulement lorsqu'elle est terminée, le clonage débute.
    On s'attendait à ce que le démarrage attende que le clonage soit fini pour commencer, mais non.
    Il tente de démarrer tout de suite, et du coup la commande plante, et la VM ne redémarre pas après clonage.

    Autre soucis (secondaire, ça ne semble pas poser de pb), on a une erreur durant le clonage qu'on arrive pas à comprendre, et donc à résoudre :

    "
    Erreur (802)
    Le fichier HardwareProfile Profil1890305d-44dc-430f-af86-273ac5eae6ca est déjà utilisé par un autre HardwareProfile.
    Action recommandée
    Attendez que l'objet devienne disponible, puis recommencez l'opération.
    "


    Script de clonage :

    echo "début du travail"  > c:\scripts\nvcontapharm.txt
    get-date >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt

    echo "Lecture de l'etat" >> c:\scripts\nvcontapharm.txt
    $VMList = Get-WmiObject -Namespace root\virtualization Msvm_ComputerSystem -ComputerName nvhyperv01
    $VMList = $VMList | Where-Object {$_.ElementName -eq 'nvcontapharm'}
    $VMList | Format-Table ElementName,EnabledState -Autosize >> c:\scripts\nvcontapharm.txt

    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt

    if ($VMList | Where-Object {$_.EnabledState -eq 2})
    {
    echo "suppression de la machine de backup" >> c:\scripts\nvcontapharm.txt
    get-VMMServer "nvhyperv01"
    $VmName = "nvcontapharm_bk"
    $VM = Get-Vm $VmName
    Remove-VM $VM
    rd "\\10.10.10.2\e$\Hyper-V\Machines_Virtuelles\nvcontapharm_bk"
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt

    echo "arret de la machine" >> c:\scripts\nvcontapharm.txt
    get-VMMServer "nvhyperv01"
    $VmName = "nvcontapharm"
    $VM = Get-Vm $VmName
    Shutdown-VM $VM >> c:\scripts\nvcontapharm.txt

    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt

    echo "Debut du clonage de la machine" >> c:\scripts\nvcontapharm.txt
    get-date >> c:\scripts\nvcontapharm.txt

    Set-VirtualFloppyDrive -RunAsynchronously -VMMServer localhost -NoMedia -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41
    Set-VirtualCOMPort -NoAttach -VMMServer localhost -GuestPort 1 -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41
    Set-VirtualCOMPort -NoAttach -VMMServer localhost -GuestPort 2 -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41
    New-VirtualNetworkAdapter -VMMServer localhost -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41 -PhysicalAddress "00:0C:76:E3:DF:9D" -PhysicalAddressType Static -VirtualNetwork "Carte Physique VM - Réseau virtuel" -VLanEnabled $false -Synthetic -VMNetworkOptimizationEnabled $false -MACAddressesSpoofingEnabled $false
    New-VirtualDVDDrive -VMMServer localhost -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41 -Bus 0 -LUN 1
    $CPUType = Get-CPUType -VMMServer localhost | where {$_.Name -eq "1.00 GHz Pentium III Xeon"}
    New-HardwareProfile -VMMServer localhost -Owner "NOVAOPHT\novanet" -CPUType $CPUType -Name "Profil1890305d-44dc-430f-af86-273ac5eae6ca" -Description "Configuration matérielle temporaire utilisée pour créer un ordinateur virtuel/modèle" -CPUCount 1 -MemoryMB 1024 -ExpectedCPUUtilization 20 -DiskIO 0 -CPUMax 100 -CPUReserve 0 -NetworkUtilization 0 -RelativeWeight 100 -HighlyAvailable $false -NumLock $false -BootOrder "CD", "IdeHardDrive", "PxeBoot", "Floppy" -LimitCPUFunctionality $false -LimitCPUForMigration $false -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41
    $VirtualNetworkAdapter = Get-VirtualNetworkAdapter -VMMServer localhost -All | where {$_.ID -eq "ebe76bfb-8bf2-49b4-9d2b-5d4cd5609d3f"}
    Set-VirtualNetworkAdapter -VirtualNetworkAdapter $VirtualNetworkAdapter -VirtualNetwork "Carte Physique VM - Réseau virtuel" -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41

    $VM = Get-VM -VMMServer localhost -Name "nvcontapharm" | where {$_.VMHost.Name -eq "nvhyperv01.novacel.local"}
    $VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "10.10.10.2"}
    $HardwareProfile = Get-HardwareProfile -VMMServer localhost | where {$_.Name -eq "Profil1890305d-44dc-430f-af86-273ac5eae6ca"}
    $OperatingSystem = Get-OperatingSystem -VMMServer localhost | where {$_.Name -eq "Windows XP Professional"}

    New-VM -VM $VM -Name "nvcontapharm_bk" -Description "" -Owner "NOVAOPHT\novanet" -VMHost $VMHost -Path "e:\Hyper-V\Machines_Virtuelles" -JobGroup f00aba00-fa48-4d91-8161-66ae04ecfb41 -RunAsynchronously -HardwareProfile $HardwareProfile -OperatingSystem $OperatingSystem -RunAsSystem -StartAction TurnOnVMIfRunningWhenVSStopped -DelayStart 0 -UseHardwareAssistedVirtualization $true -StopAction SaveVM

    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt

    echo "Fin du clonage de la machine" >> c:\scripts\nvcontapharm.txt
    get-date >> c:\scripts\nvcontapharm.txt

    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt
    echo "-----------------------------------------------------------------------------" >> c:\scripts\nvcontapharm.txt

    }

    else
    {
    echo "La VM est arretee, on ne fait rien." >> c:\scripts\nvcontapharm.txt
    exit
    }
    vendredi 14 octobre 2011 13:57
  • Bonjour,

    Pour ceux qui seraient intéressés, voici la solution au problème de clonage, à savoir les étapes qui doivent se dérouler dans l'ordre :

    Il y a dans le script l'option -RunAsynchronously.
    Une fois cette option supprimée, le redémarrage de" la VM attend bien que le clonage soit terminé avant de démarrer.

    Cette option Spécifie que le travail s'exécute de manière asynchrone, de sorte que le contrôle retourne immédiatement à l'interface de commande.


    Pour l'instant il reste un problème de perf réseau (25 à 50% utilisé au lieu de 100% de bande passante, sur un câble croisé direct entre les 2 serveurs), mais je suis sur une piste.

    Cdt,

    Zedd
    mardi 18 octobre 2011 11:17
  • Bonjour ZEdd,

    Décidément on arrête pas de se croiser et d'avoir les même problèmes.

    Je recherche une solution également concernant l'adresse IP. As-tu trouver une solution?

    As-tu essayer de la rentrer manuellement? Car il me semble qu'il refuse de remettre la même adresse IP que la VM source. Il dit que l'adresse est déjà utilisé par une autre carte. D'après moi il garde en mémoire l'adresse IP (ou plutôt dans la base de registre).

    Je ne pense pas que la solution soit dans l'adresse MAC. Après clonage, lorsque tu démarres la VM clone, tu remarqueras que Windows installe divers pilotes dont celle de la carte réseau. Lors du clonage Windows sent un changement malgrès qu'il soit dans un environnement virtualisé. Du coup c'est comme si tu changeais physiquement de carte réseau.  (c'est mon raisonnement peut-être que je me trompe)

    Pour ton problème de profile Hardware je t'ai répondu sur powershell ...

    Cdt,

    Merovingien

    mardi 25 octobre 2011 21:28