Export automat de mașini virtuale în hyper. Exportarea și importul de mașini virtuale Hyper-V

11.02.2012 - 18:26

Să ne uităm la un script pentru exportul de VM pe un server Hyper-V.
Scopul este de a automatiza procesul cu o logică maximă fără a compromite productivitatea. Drept urmare, am scris un scenariu pe care l-am trimis mai devreme. Situația se schimba în fiecare zi, sistemul funcționa deja în producție, așa că era necesar să se reducă riscul de a sparge ceva la minimum. Ca urmare, am modificat scriptul, al cărui concept nu s-a schimbat:

  1. Găsirea unui VM
  2. Opriți VM-ul
  3. Exportarea VM-ului
  4. Porniți VM

Au fost adăugate doar „volante” și „monograme”.
Cerința principală este să salvați 2 copii ale VM, cea actuală și cea anterioară. Când se formează o copie nouă, cea anterioară este ștearsă, iar cea actuală este redenumită cu cea anterioară. Totul este implementat folosind exemplul cataloagelor Today și Yesterday.

Principalele caracteristici ale scriptului:

  1. Verifică prezența VM-ului necesar în lista de VM. Toate acțiunile sunt înregistrate într-un fișier jurnal.
  2. Dacă VM-ul este găsit - Șterge directorul din ultima postare, redenumește directorul curent cu cel anterior, creează un director pentru intrarea curentă.
  3. Verifică starea mașinii virtuale. Dacă VM rulează - Oprește VM-ul. Exportă VM în directorul desemnat. Lansări.
  4. Dacă VM-ul este oprit, exportă VM-ul în directorul desemnat.
  5. Dacă VM-ul este într-o stare diferită, scrie în jurnal.
  6. Dacă VM-ul nu este găsit, acesta scrie în jurnal.
  7. După export - elimină toate informațiile despre VHD, testează VHD-ul. Scrie în jurnal.
  8. Trimite e-mail-uri destinatarilor despre operațiunile finalizate, stabilind importanța scrisorii în caz de eșec.

Există câteva caracteristici:

  1. Când trimiteți o scrisoare, jurnalul care este planificat să fie trimis ca atașament nu poate fi localizat într-o cale UNC. Cu alte cuvinte, dacă doriți să trimiteți jurnalul ca atașament, trebuie să îl plasați disc local sau conectați directorul de rețea cu un disc separat.
  2. Scenariul funcții suplimentare colectează informații despre disc VHD. Pentru a implementa cu succes funcțiile de audit, discul nu ar trebui să fie din nou situat pe o cale UNC, va trebui să conectați o unitate de rețea.
  3. Pentru a controla execuția exporturilor de mașini conform programului, s-a încercat introducerea parametrului „Nume VM”.

Pentru munca de succes script, trebuie să instalați acest modul. Cred că nu vor fi dificultăți.
Scenariul:

param ($VM) # Parametrul de intrare al mașinii virtuale (VM)

dacă (! (Get-Module -Name hyperv) )
{
# Activați modulul
import-modul hiperv
}
dacă ($VM -eq $null )
{
Scrie-gazdă „Introduceți numele mașinii virtuale”.
}

# ==== Parametri inițiali
$ComputerName = Get-Content env:COMPUTERNAME
# Conectați unitatea R: pentru a obține informații despre VHD
Invocare-Expresie -Comandă " utilizare net R:\\Server/y"
# Resetați contoarele
$număr = $fals # Declanșarea VM găsită
$export_count = $false # Contor de export de succes VM
# Definiți numele/adresa fișierului jurnal
$log = "\\Server\backup\Jurnale \$VM\" + (Get-Date -Format " aaa-LL") +" .log "
# Determinați calea către folder cu RK
$BackupDir = "
\\Server\backup\" +$VM
# Calea către folderul cu RK pentru a elimina informațiile din VHD
$InfoDir = "R:\backup \" +$VM
# Date pentru e-mail
$Sender = "
[email protected]"
$SMTP = " smtp.contoso.com"
$Destinatari = @(" [email protected] ") # grup de distribuție cu destinatarii care monitorizează backup-ul
$AttachePath = "
R:\backup\Logs\$VM \" + (Get-Date -Format "aaa-LL" ) +".log"

# Funcție pentru trimiterea unui mesaj, la momentul scrierii nu știam despre funcția Send-MailMessage și am scris propria mea funcție. Nu vreau să o refac, „Funcționează - nu-l atingeți!”
funcția Trimite e-mail($Subiect ,$Body ,$Priority )
{
$Message = New-Object System.Net.Mail.MailMessage
$Server = New-Object System.Net.Mail.SMTPClient
$Attache = New-Object System.Net.Mail.Attachment($AttachePath )
# ==== Mesaj
$Destinatari | Pentru fiecare obiect ($Message .To.Add($_ ) )
$Message .From = $Sender
$Message .Subject = $Subject
$Message .Body = $Body
$Message .Atașamente.Adăugați($Atașare )
$Message .Priority = [ System.Net.Mail.MailPriority] ::$Priority
# ==== Se trimite
$Server.Host = $SMTP
$Server.Send($Message)
}

# =========================================
# Începeți înregistrarea
(Get-Date) + " `r` n Pornirea scriptului de export VM "+$VM + " server: " + $ComputerName + " `r` n Obținerea unei liste de mașini virtuale... `r` n"

# Obțineți o listă de VM
$VMArray = Get-VM | Select-Object -Property VMElementName
foreach($element în $VMArray )
{
# Căutați o anumită VM
dacă ($VM -eq $element .VMElementName)
{
$log_string = $log_string + "Mașina virtuală a fost găsită. Efectuez acțiunile specificate... `r` n"
$număr = $adevărat
# ========== Operații cu foldere ===============

# Ștergeți folderul Ieri
Remove-Item -Path ($BackupDir + "\Yesterday" ) -Recurse -ErrorVariable err
dacă ($err)
{
# Dacă există o eroare de ștergere, opriți execuția.
`r`n"
" Eliminarea directorului Ieri a eșuat, exportul $VM a fost anulat. Eroare: "+ $err
}
altfel
{
$log_string = $log_string + „Ștergerea directorului de ieri a avut succes. `r` n”
# Redenumiți folderul Azi
Redenumiți-Item -Cale ($BackupDir + " \Astăzi") -NewName ($BackupDir + "\Yesterday" ) -Force -ErrorVariable err
dacă ($err)
{
# Dacă există o eroare de redenumire, opriți execuția.
$log_string = $log_string + $err + " `r`n"
" Redenumirea directorului Ieri a eșuat, exportul $VM a fost anulat. Eroare: "+ $err
}
altfel
{
$log_string = $log_string + „Redenumirea dosarului a fost finalizată cu succes. `r` n”
# Creați un folder Today
Calea articolului nou ($BackupDir + " \Astăzi") -ItemType Directory -Force -ErrorVariable err
dacă ($err)
{
# Dacă există o eroare de creare, opriți execuția.
$log_string = $log_string + $err + " `r`n"
$MailBody = $Mailbody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Crearea directorului Ieri a eșuat, exportul $VM a fost anulat. Eroare: „+ $err
}
altfel
{
$log_string = $log_string + „Crearea folderului Today a avut succes. `r` n”
#========== Sfârșitul lucrului cu folderele

#========== Lucrul cu VM
# Dacă starea mașinii este „Running”, atunci
if ((Get-VMSummary $VM ) .enabledstate -eq „În rulare” )
{
# Începeți oprirea
$log_string = $log_string + ((Get-Date -Format "(aaaa-LL-zz) hh:mm:ss" ) + „Mașina virtuală rulează. O opresc. `r` n”)
invoke-vmshutdown -VM $VM -Motiv „Export VM”. -Force -ErrorVariable err
dacă ($err)
{
$log_string = $log_string + $err + " `r`n"
$MailBody = $Mailbody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Maiul virtual nu a fost oprit, exportul $VM a fost întrerupt. Eroare: „+ $err
}
altfel
{

„Mașina virtuală s-a oprit. Se exportă.`r`n”
$MailBody = $MailBody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Mașina virtuală s-a oprit.`r`n”
$MailBody = $MailBody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Se exportă o mașină virtuală.`r`n”
\Astăzi"
dacă ($err)
{
$log_string = $log_string + $err + " `r`n"
$MailBody = $Mailbody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Exportul VM a fost finalizat cu eroare, exportul $VM a fost întrerupt. Eroare: „+ $err
}
altfel
{
$log_string = $log_string + (Get-Date -Format "(aaaa-LL-zz) hh:mm:ss" ) + "Mașina virtuală a fost exportată cu succes. O pornesc.`r`n"
$MailBody = $MailBody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) +
$export_count = $true
}
# Porniți VM-ul confirmând pornirea timp de 300 de secunde înainte de a executa următoarea comandă
Start-VM -vm $VM -HeartBeatTimeOut 300 -ErrorVariable err
dacă ($err)
{
$log_string = $log_string + $err + " `r`n"
$MailBody = $Mailbody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „VM nu a pornit. Eroare: „+ $err
}
altfel
{
$log_string = $log_string + (Get-Date -Format "(aaaa-LL-zz) hh:mm:ss" ) +
$MailBody = $MailBody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Mașina virtuală rulează.`r`n”
}
}
}
elseif((Get-VMSummary $VM ) .enabledstate -eq „Oprit” )
{
# Exportați VM fără confirmare cu toate fișierele (xml, vhd, etc.) și așteptați până când este gata
$log_string = $log_string + (Get-Date -Format "(aaaa-LL-zz) hh:mm:ss" ) + „Mașina virtuală este în modul oprit. Se exportă.`r`n”
$MailBody = $MailBody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Mașina virtuală este în modul oprit.`r`n”
export-VM -VM $VM -cale ($backupDir + " \Astăzi") -force -copystate -wait -ErrorVariable err
dacă ($err)
{
$log_string = $log_string + $err + " `r`n"
$MailBody = $Mailbody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Exportul VM a eșuat, exportul $VM a fost întrerupt. Eroare: „+ $err
}
altfel
{
$log_string = $log_string + (Get-Date -Format "(aaaa-LL-zz) hh:mm:ss" ) + „Mașina virtuală a fost exportată cu succes.`r`n”
$MailBody = $MailBody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Mașina virtuală a fost exportată cu succes.`r`n”
$export_count = $true
}
}
altfel
{
$vm_state = (Get-VMSummary -VM $VM ) .EnabledState
$log_string = $log_string + (Get-Date -Format "(aaaa-LL-zz) hh:mm:ss" ) +
$MailBody = $MailBody + (Get-Date -Format „(aaaa-LL-zz) hh:mm:ss” ) + „Mașina virtuală nu a fost exportată, starea $VM = $vm_state .`r` n”
}
}
}
}
}
}
dacă ($ număr) # Dacă VM-ul este găsit
{
dacă (! ($export_count) ) # Dacă VM-ul nu este exportat
{
$log_string = $log_string + „Exportul mașinii virtuale $VM a fost finalizat cu erori. Procesul a fost întrerupt. `r` n”
$MailBody = $MailBody + „Exportul mașinii virtuale $VM a fost finalizat cu erori. Procesul a fost întrerupt.`r` n”
}
altfel # Dacă VM-ul este exportat
{
$log_string = $log_string + "Caut *.VHD pentru $VM ... `r` n"
# Căutați *.vhd în directorul specificat
if (Get-Item -Path ($InfoDir + " \Azi\" + $VM + "\Virtual Hard disk s\* ") -Include *.*vhd | Select-Object -Property Name)
{
#$VHDInfo = "
Informații VHD:`r`n"
pentru fiecare( $element în (Get-Item -Path ($InfoDir + "\Azi\" + $VM + " \Harddiskuri virtuale\*") -Include * .* vhd | Select-Object-Property Name) )
{
# Pentru fiecare element găsit, obținem informații și le scriem în jurnal și o linie pentru scriere
$log_string = $log_string + "Informatii pentru"+ $element .Nume + ": `r`n"
$SomeVHDInfo = Get-VHDInfo -VHDPaths ($InfoDir + " \Azi\" + $VM + "\Virtual Hard Disks\" + $element .Nume)
$log_string = $log_string + "Cale: " + $SomeVHDInfo .Path + " `r`n"
$log_string = $log_string + "Dimensiunea fișierului: " + ([ System.Math] ::Round(($SomeVHDInfo .FileSize/ 1Gb) ,2 ) ) + "Gb `r`n"
$log_string = $log_string + "Legarea VM: " + $SomeVHDInfo .InSavedState + " `r`n"
$log_string = $log_string + "Montat: " + $SomeVHDInfo .InUse + " `r`n"
$log_string = $log_string + "Volumul maxim fisier: "+ ([ System.Math] ::Round(($SomeVHDInfo .MaxInternalSize/ 1Gb) ,2 ) ) + "Gb `r`n"
$log_string = $log_string + "Tipul de imagine: " + $SomeVHDInfo .TypeName + " `r`n"
# Validăm VM-ul VHD
$TestVHD = "VHD: " + $element .Name + ": " + (Test-VHD -VHDPaths ($InfoDir + " \Azi\" + $VM + "\Virtual Hard Disks\" + $element .Nume) )
$log_string = $log_string + $TestVHD + " `r`n"
$MailBody = $Mailbody + $TestVHD + " `r`n"
}
}
altfel # Brusc, VHD-ul nu se află în acest director O_O
{
$log_string = $log_string + "*.VHD pentru $VM nu a fost găsit.`r`n"
$MailBody = $MailBody + "*.VHD pentru $VM nu a fost găsit.`r`n"
}
}
}
altfel # VM nu a fost găsit pe server
{
$log_string = $log_string +
$MailBody = $MailBody + „Mașina virtuală $VM nu a fost găsită. Procesul s-a încheiat.`r`n”
}

$log_string = $log_string + (Get-Date -Format "(aaaa-LL-zz) hh:mm:ss" ) + „Lucrul la $VM s-a terminat.`r`n”
$log_string = $log_string + „======================== `r` n”

$MailSubject = " Raport de export $VM."
# Trimis o scrisoare:
Trimite e-mail -Subject $MailSubject -Body $MailBody -Priority $MailPriority

#net use R: /delete /y Această funcție nu este necesar să alergi.

Iată, de fapt, întregul scenariu. Pentru a lucra cu un cluster, creăm o sarcină pentru fiecare VM pe fiecare nod al cluster-ului cu o diferență de minut la pornire, deoarece scriptul de la orice nod accesează același fișier jurnal și, în același timp, poate exista o coliziune de acces. Dacă nu există nicio VM pe unul dintre nodurile clusterului, scriptul va afișa un mesaj că VM-ul nu a fost găsit și se va ieși.
Scriptul a fost deja implementat la mai multe întreprinderi cu modificări minore pentru un anumit client. Toată lumea este fericită și îți doresc același lucru.

3 iunie 2011 la 20:40

PowerShell+Hyper-V

  • Virtualizare

nu mai pot folosi gui...

Cam așa a început conversația mea cu un prieten care, într-o perioadă scurtă de timp, a fost nevoit să exporte mașini virtuale din Hyper-V de mai multe ori la rând. Folosit de obicei pentru asta Manager Hyper-V(HVM), care este instalat împreună cu rolul Hyper-V sub Windows Server 2008 R2. Trebuie să recunosc că interfața acestui program nu trezește în mine nicio emoție negativă. Dintre toate programele de management pe care Microsoft le furnizează pentru Server, acesta mi se pare cel mai convenabil și de înțeles (compar, de exemplu, cu IIS Manager, care provoacă confuzie în rândul utilizatorilor noi și indignare violentă în rândul celor care au folosit IIS 6 în 2003 Server) . Cu toate acestea, dacă trebuie să exportați sau să importați o mașină virtuală în cantitate de N bucăți într-o perioadă de timp de t, atunci folosind Hyper-V Manager puteți rupe butonul mouse-ului și urâți îngrozitor Hyper-V. Aici vine PowerShell în ajutor.
Import-Modul HyperV
... Și implicit nu există un astfel de modul în PowerShell. Microsoft a decis că nimeni nu va scrie cmdleturi pentru a gestiona Hyper-V (o idee cu adevărat sălbatică). Pe de altă parte, această lume este plină de oameni care știu cum și sunt gata să simplifice viața pentru ei înșiși și pentru alți utilizatori. Așa s-a născut Biblioteca de management PowerShell pentru Hyper-V.
Primul lucru pe care trebuie să-l faci este să descarci acest modul + documentație, după gustul tău. (Ambele disponibile la: http://pshyperv.codeplex.com/releases)
Apoi, trebuie să instalați acest modul. Procesul nu este complicat (run fișier de instalare se dă pe sine).
Acum poți lucra. Lansăm PowerShell, importăm modulul (ce este scris în subtitrare).
Și avem acces la toate funcțiile pe care le-am putea folosi prin HVM, iată câteva dintre ele:

Conectarea la o mașină virtuală
New-VMConnectSession

Manipularea statului mașini virtuale
Obține-VMState, Set-VMState, Convert-VmState,
Ping-VM, Test-VMHeartBeat, Shutdown-VM, Start-VM, Stop-VM, Suspend-VM
Obțineți-VMKVP, Adăugați-KVP, Eliminați-KVP, Obțineți-VMJPEG

Abilitatea de a face copii de rezervă, de a exporta mașini virtuale și de a face instantanee
Export-VM, Import-VM, Obține-VMSnapshot, Alege-VMSnapshot, Aplica-VMSnapshot, Nou-VMSnapshot ,Elimină-VMSnapshot, Redenumire-VMSnapShot, Actualizare-VMSnapshot, Get-VMSnapshotTree, Get-VmBackupScript

Adăugarea și eliminarea virtualului. mașini, stabilindu-le proprietățile
New-VM, Remove-VM, Set-VM, Get-VMCPUCount, Set-VMCPUCount, Get-VMMemory, Set-VMMemory, Set-VMSerialPort

Gestionarea controlerelor de disc
Get-VMDiskController
Adăugați-VMSCSIcontroller, Eliminați-VMSCSIcontroller
Get-VMDriveByController, Add-VMDRIVE, Remove-VMdrive
Get-VMDiskByDrive, Add-VMDISK, Set-VMDisk, Get-VMDisk
Obțineți-VMFloppyDisk, Adăugați-VMFloppyDisk
Adăugați-VMNewHardDisk

Managementul interfeței de rețea
Get-VMNIC, List-VMNic, Choose-VMNIC, Add-VMNIC, Remove-VMNIC, Set-VMNICAddress, Set-VMNICConnection, Get-VMNICport,
Get-VMnicSwitch, Alege-VMSwitch, New-VMSwitchPort, Get-VMByMACaddress, Alege-VMExternalEthernet,
New-VMExternalSwitch, New-VMInternalSwitch, New-VmPrivateSwitch

Lucrul cu fișiere VHD
Get-VHDDefaultPath, Get-VHDInfo, New-VHD, Compact-VHD, Test-VHD, Convert-VHD, Merge-VHD, Mount-VHD, Unmount-VHD

Toate comenzile date vorbesc de la sine.
De exemplu, pentru a obține starea unei mașini virtuale, trebuie doar să introduceți:
Listă-VMState nume virt. mașini
si ca urmare:

În exemplul meu, există o singură mașină virtuală => nu am specificat niciun parametru, dar dacă aveți mulți dintre ei, atunci probabil că ar trebui să specificați în mod explicit numele acesteia dacă nu doriți să treceți prin ieșirea consolei mai târziu.
De asemenea, este ușor, de exemplu, să aflați despre cel folosit interfețe de rețea pentru mașinile virtuale, trebuie doar să introduceți:
Ia-VMNic
și obținem:

Ei bine, și cel mai important, ceea ce avea nevoie prietenul meu era capacitatea de a exporta în fundal, într-un program. Pentru a face acest lucru, puteți scrie un cmdlet pe care apoi îl puteți introduce în Scheduler. De exemplu, pentru mine acest cmdlet oprește mașina virtuală, o exportă, o pornește din nou și îmi trimite o scrisoare despre eroarea sau succesul cmdlet-ului. După aceasta, controlul este transferat către un alt script care arhivează și trimite o copie de rezervă la un ftp la distanță.
Export: export-vm -vm MyVM1 -path D:\backups\VM -copystate -wait -force
Parametrul -copystate spune că totul trebuie copiat (inclusiv discul virtual => dimensiunea exportului de ieșire poate fi foarte mare)

În loc de o concluzie
După cum puteți vedea, gestionarea dvs mașini virtuale de la PowerShell poate fi foarte convenabil și fără stres. Trebuie doar să citiți parametrii comenzilor de care aveți nevoie și să vă scrieți scriptul.

P.S. Nu pretind deloc că „descoperă America” doar am decis că cineva va găsi utile informațiile despre acest modul util. Am descris doar cele mai multe opțiuni simple pentru care puteți utiliza biblioteca de gestionare PowerShell pentru Hyper-V. Dacă cineva știe sau și-a scris mai multe instrumente convenabile pentru a optimiza lucrul cu Hyper-V, voi fi bucuros să aflu despre ele.

Adnotare: Scopul acestui lucru munca practica este o discuție detaliată a proceselor de export și import de mașini virtuale mijloace standard Hyper-V și conceptul unui instantaneu al unei mașini virtuale.

Exportarea unei mașini virtuale

Notă. Materialul de practică se bazează pe secțiunea „Virtualizarea desktopului local” a cărții „Înțelegerea soluțiilor de virtualizare Microsoft” de M. Tulloch (Capitolul 2).

Procesul de exportare a unei mașini virtuale folosind Hyper-V este ușor. Singurul parametru care trebuie definit este calea pentru salvarea fișierelor mașinii virtuale. Pentru a exporta un VM aveți nevoie de:

Nu numai un volum logic poate fi specificat ca locație de stocare a fișierelor local greu disc, dar și un director de pe un hard disk extern sau un server la distanță.

Următoarea figură arată conținutul folderului mașinii virtuale exportate:


Orez. 10.3.

Config.xml- un fișier care conține informații despre locația originală a fișierelor virtuale hard disk-uri mașină exportată.

În dosar Mașină virtuală s există un fișier .exp care conține informații despre mașina virtuală exportată. În timpul importului acest fișier convertit într-un fișier xml de configurare.

În dosar Hard disk-uri virtuale sunt dosare virtual hard discurile mașinii exportate.

În dosar Instantanee conține informații despre instantaneele mașinilor virtuale (.avhd, .vsv, .bin).

Importul unei mașini virtuale

Să notăm caracteristicile importului virtual Hyper mașini-V:

  1. Puteți importa numai mașini virtuale de pe un alt server Hyper-V în Hyper-V. Import virtual Mașini virtuale PC sau Virtual Server nu este posibilă deoarece configurația mașinilor virtuale create de aceste soluții este diferită de Hyper-V, în ciuda faptului că toate soluțiile folosesc fișiere de hard disk virtual .vhd.
  2. O mașină virtuală poate fi exportată o singură dată. După cum sa menționat deja, fișierul .exp cu informații despre mașina virtuală creat în timpul exportului este convertit într-un fișier de configurare xml în timpul procesului de import. Prin urmare, dacă apar erori de import singura cale Pentru a continua să lucrați cu o mașină virtuală importată, puteți crea una nouă cu o configurație similară bazată pe fișierele de hard disk virtuale existente.

Pentru a importa o mașină virtuală aveți nevoie de:

Să remarcăm încă o dată că, dacă apare o eroare de import, pentru a continua lucrul cu mașina virtuală, trebuie să creați una nouă, iar în etapa de conectare virtual hard fișier de specificare a discului hard disk mașină importată (vezi Fig. 10.6)

Instantanee ale mașinii virtuale

Un instantaneu este starea unei mașini virtuale la un anumit moment în timp. Instantaneele sunt folosite pentru a stoca informații despre stări și pentru a reveni la acestea dacă este necesar (anulând modificările făcute de când a fost creat instantaneul).

Nu puteți crea un instantaneu al unei mașini virtuale suspendate. La crearea mai multor imagini, se poate forma secvența lor cronologică - un arbore de imagini.

Pentru a crea un instantaneu, trebuie să selectați elementul Instantaneu din meniul derulant.


Orez. 10.7.

Odată realizată instantaneul, va apărea o pictogramă în panoul Instantanee din Hyper-V Manager.

Pentru a readuce mașina virtuală la starea de instantaneu, trebuie să o aplicați mașinii virtuale (vezi Figura 10.9).


Orez. 10.9.

După cum se arată în Fig. 10.9, sunt disponibile următoarele acțiuni pentru lucrul cu imagini:

  • aplica- copiați starea mașinii virtuale din instantaneul selectat în mașina virtuală activă. Aceasta readuce mașina virtuală la starea descrisă în instantaneul selectat. Toate datele nesalvate din mașina virtuală activă se vor pierde.
  • Redenumiți- comanda vă permite să schimbați numele instantaneului.
  • Șterge fotografia- comanda de ștergere a fișierelor asociate cu imaginea selectată nu va fi afectată; Când este șters, starea curentă a mașinii virtuale active nu se schimbă.
  • Ștergeți arborele instantaneu- vă permite să ștergeți instantaneul selectat și toate instantaneele subordonate ierarhic acestuia. Când este șters, starea curentă a mașinii virtuale active nu se schimbă.

Rezumat scurt.

Ca parte a acestei practici, au fost revizuite capacitățile Hyper-V pentru exportul și importul de mașini virtuale, precum și pentru crearea de instantanee ale stării unei mașini virtuale. Funcțiile de export și import sunt folosite pentru a transfera o mașină virtuală de la un server Hyper-V la altul.

Instantaneele sunt utilizate de obicei în timpul dezvoltării, testării și implementării aplicațiilor. Instantaneele vă permit să readuceți starea unei mașini virtuale la momentul în care a fost creată, dar toate modificările făcute de la acel moment se vor pierde.

Windows Server 2008 Hyper-V nu are opțiunea de a crea o clonă a unei mașini virtuale existente. Totuși, asta nu înseamnă că este imposibil sau că este dificil de făcut. De fapt, există o astfel de posibilitate și este destul de simplu de utilizat.

Există două moduri de a clona o mașină virtuală în Hyper-V.

1. Utilizați funcția de export/import a mașinilor virtuale
2. Copiați virtual HDDși creați o nouă mașină virtuală cu acest disc.

1. Utilizați funcția de export/import în Hyper-V

Această metodă este cea mai simplă și mai accesibilă modalitate de a clona o mașină virtuală.

Exportarea unei mașini virtuale

În timp ce sunteți în Hyper-V Manager, faceți clic Click dreapta la mașina virtuală dorită și selectați Export. Specificați unde va fi importată mașina virtuală. Este important să știți că atunci când importați înapoi mașina virtuală, chiar locația mașinii virtuale și a acesteia disc virtual va indica această locație.

În timpul exportului, puteți alege ce să exportați: întreaga mașină virtuală sau doar configurația mașinii virtuale.

Importul unei mașini virtuale

Pentru a importa o mașină virtuală, faceți clic pe „Importați mașină virtuală” din meniul Acțiune. Specificați directorul cu mașina virtuală exportată și faceți clic pe Import.

Este important să indicați exact directorul mașinii exportate și nu unul dintre subdirectoarele acestuia.

Odată importată mașina virtuală, îi puteți modifica setările, cum ar fi adresa IP, numele de gazdă etc.

2. Copiați VHD-ul și creați o nouă mașină virtuală

Pur și simplu copiați fișierul VHD al mașinii virtuale originale și apoi creați o nouă mașină virtuală, dar specificați fișierul copiat ca hard disk. În meniu, când ajungeți la fereastra „Conectați hard disk virtual”, selectați opțiunea „Utilizați un hard disk virtual existent” și specificați locația acestuia.

gardian

Chineză nu înseamnă întotdeauna rău. Aici Încărcătoare frontale chinezești de vânzare la preturile producatorului.

Ai nevoie de un gard pentru casa ta, cabana sau casa ta? Contact "Profzabor" - confectionarea gardului a comanda din orice materiale.