Buckup Hyper V


WSS.pl | Articles | ZarzÄ…dzanie backupem Hyper-V Strona 1 z 7
ZarzÄ…dzanie backupem Hyper-V
Data publikacji: 2009-09-16 19:30| Odsłon: 289| Dodał: Karol Stilger| Komentarze (3)
Wirtualizacja stała się integralną częscią środowisk
Autor:
informatycznych. W ferworze minimalizacji ilości maszyn
fizycznych bardzo często zapomina się o tym, \e hosty,
na których działają wirtualizatory, to równie\ maszyny
fizyczne i tak samo jak standardowe serwery mogÄ… ulec
uszkodzeniu, a dane utraceniu (nawet mimo tego, \e
krytyczne dane są trzymane na bezpiecznej zewnętrznej
macierzy dyskowej).
Karol Stilger (AaaA)
Backup maszyn wirtualnych z pozycji maszyny, na której
Microsoft MVP Setup & Deployment,
odbywa się wirtualizacja, jest dość skomplikowaną
MCTS, MCSA
operacją, jeśli zało\ymy, \e chcemy, \eby był
wykonywany automatycznie, downtime powinien dą\yć In\ynier IT pracujący w
międzynarodowej
do zera i co oczywiste, \eby dało się z niego odzyskać
korporacji. Członek zespołu
dane jeśli pojawi się taka potrzeba. Nale\y dobrze
redakcyjnego WSS.pl.
przemyśleć i zaplanować to zadanie łącznie ze
Prowadzi techniczny blog.
scenariuszami odtwarzania na tym samym bÄ…dz innym
sprzęcie. Jednak przy ogólniejszym spojrzeniu jest
znacznie mniej czaso- i zasobochłonny ni\ zarządzanie
backupami wewnętrznie na ka\dej wirtualnej maszynie z osobna.
W dalszej częsci artykułu zaproponuję dwa rozwiązania backupów wirtualnych maszyn
działających na Hyper-V. Pierwsza działa w oparciu o skrypty w PowerShellu uruchamiane przez
Task Scheduler. Druga wykorzystuje Windows Server Backup wykonywujÄ…cy kopie systemu
operacyjnego wirtualizatora oraz maszyn wirtualnych. Obie metody mo\na z sobą łączyć dla
uzyskania optymalnego dla naszego środowiska rozwiązania.
Backup i snapshoty wykonywane za pomocÄ… PowerShell
PowerShell jest wymarzonym narzędziem do skryptowania. Wspierają go Hyper-V Server R2 oraz
Windows Server 2008 R2 w wersji Core - podobnie jak wszystkie pełne instalacje Windows Server
2008/2008 R2. Dzieki temu PowerShell stał się bardzo uniwersalnym narzędziem do zarządzania
systemami w tym hostami Hyper-V.
Poni\ej znajduje się pięć skryptów PS umo\liwających zarządzanie backupami (export) i
snapshotami maszyn działających na Hyper-V. Skrypty przygotowałem jakiś czas temu wspólnie z
Norweskim MVP, Tore Lervikiem. Dwa z nich słu\ą do backupu, kolejne dwa do wykonywania
snapshotów, a ostatni do utrzymywania porządku w folderach z backupami. Świetnie nadają się do
okresowego uruchamiania przez Task Scheduler, mo\na na ich podstawie zbudować kompletne
rozwiązanie do backupu maszyn działających na Hyper-V.
Wszystkie skrypty zostały wielokrotnie przetestowane i z tego co wiem, działają w kilku
produkcyjnych środowiskach. Jeśli jednak znajdziesz coś, co mo\na w nich usprawnić proszę o
informacjÄ™ w komentarzu.
Backup wszystkich maszyn - HVbackupAll
Skrypt HVbackupAll wykonuje siÄ™ kolejno dla wszystkich wirtualnych maszyn. Ka\dÄ… z nich
zatrzymuje, dokonuje pełnego eksportu do wskazanego dla backupu folderu ($dest), zmienia jego
nazwę zgodnie z datą i czasem wykonywania skryptu, a następnie wznawia działanie maszyny.
Zawartość wyeksportowanych folderów to kompletny backup wirtualnego systemu: jego
konfiguracja, plik dysku, stan pamięci oraz wszystkie snapshoty.
W przypadku konieczności przywrócenia stanu maszyny z backupu nale\y wykonać jej import na
tę samą bądz inną maszynę (przy imporcie do Hyper-V działającego na systemie o odmiennej
architekturze mo\e być konieczny restart wirtualnego komputera).
## HVbackupAll.ps1
## Create a backup of all the VM's
## to edit: $dest
##
## last edit: 8:41 PM 9/13/2009 by Karol Stilger
$dest = "F:\HVbackup\machines"
$datetime = get-date -f yyMMdd_HHmmss
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementSe
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter "E
foreach ($VM in [array] $ListOfVMs)
{
$VMReturnState = $VM.EnabledState
$VMName = $VM.ElementName
if (($VM.EnabledState -eq 2) -or ($VM.EnabledState -eq 32768) -or ($VM.EnabledState
{
$VM.RequestStateChange(32769)
http://wss.pl/Articles/11230.aspx 2009-09-17
WSS.pl | Articles | ZarzÄ…dzanie backupem Hyper-V Strona 2 z 7
echo "Saving the state of $VMName"
}
while (!($VM.EnabledState -eq 32769) -and !($VM.EnabledState -eq 3))
{
Start-Sleep(1)
$VM = get-wmiobject -namespace root\virtualization -Query "Select * From Msvm_
}
if ([IO.Directory]::Exists("$dest\TmpDir\$VMName"))
{
[IO.Directory]::Delete("$dest\TmpDir\$VMName", $True)
}
echo "Exporting the VM"
$status = $VM_Service.ExportVirtualSystem($VM.__PATH, $True, "$dest\TmpDir")
if ($status.ReturnValue -eq 4096)
{
$job = [Wmi]$status.Job
while (!($job.PercentComplete -eq 100) -and ($job.ErrorCode -eq 0))
{
Start-Sleep(5)
$job = [Wmi]$status.Job
echo $job.PercentComplete
}
}
##Store the files on in a temp directory before moving them to their location an
if ([IO.Directory]::Exists("$dest\$VMName"))
{
[IO.Directory]::Move("$dest\$VMName", "$dest\$VMName-OldTmpDir")
[IO.Directory]::Move("$dest\TmpDir\$VMName", "$dest\$VMName")
[IO.Directory]::Delete("$dest\$VMName-OldTmpDir", $True)
}
else
{
[IO.Directory]::Move("$dest\TmpDir\$VMName", "$dest\$VMName")
}
echo "Done with $VMName"
$VM.RequestStateChange($VMReturnState)
}
rename-item $dest -newname ("$datetime All")
Backup pojedyńczej maszyny - HVbackupOne
Skrypt HVbackupOne jest modyfikacjÄ… HVbackupAll i wykonywany jest tylko dla maszyny
$VMsystemName.
## HVbackupOne.ps1
## Create a backup of one VM
## to edit: $dest and $VMsystemName
##
## last edit: 12:33 PM 9/13/2009 by Karol Stilger
$dest = "F:\HVbackup\machines"
$VMsystemName = 'MyFavoriteMachine'
$datetime = get-date -f yyMMdd_HHmmss
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementSe
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter "El
foreach ($VM in [array] $ListOfVMs)
{
$VMReturnState = $VM.EnabledState
$VMName = $VM.ElementName
if (($VM.EnabledState -eq 2) -or ($VM.EnabledState -eq 32768) -or ($VM.EnabledState
{
$VM.RequestStateChange(32769)
echo "Saving the state of $VMName"
}
while (!($VM.EnabledState -eq 32769) -and !($VM.EnabledState -eq 3))
{
Start-Sleep(1)
$VM = get-wmiobject -namespace root\virtualization -Query "Select * From Msvm_
}
http://wss.pl/Articles/11230.aspx 2009-09-17
WSS.pl | Articles | ZarzÄ…dzanie backupem Hyper-V Strona 3 z 7
if ([IO.Directory]::Exists("$dest\TmpDir\$VMName"))
{
[IO.Directory]::Delete("$dest\TmpDir\$VMName", $True)
}
echo "Exporting the VM"
$status = $VM_Service.ExportVirtualSystem($VM.__PATH, $True, "$dest\TmpDir")
if ($status.ReturnValue -eq 4096)
{
$job = [Wmi]$status.Job
while (!($job.PercentComplete -eq 100) -and ($job.ErrorCode -eq 0))
{
Start-Sleep(5)
$job = [Wmi]$status.Job
echo $job.PercentComplete
}
}
##Store the files on in a temp directory before moving them to their location an
if ([IO.Directory]::Exists("$dest\$VMName"))
{
[IO.Directory]::Move("$dest\$VMName", "$dest\$VMName-OldTmpDir")
[IO.Directory]::Move("$dest\TmpDir\$VMName", "$dest\$VMName")
[IO.Directory]::Delete("$dest\$VMName-OldTmpDir", $True)
}
else
{
[IO.Directory]::Move("$dest\TmpDir\$VMName", "$dest\$VMName")
}
echo "Done with $VMName"
$VM.RequestStateChange($VMReturnState)
}
rename-item $dest -newname ("$datetime $VMsystemName")
Snapshot wszystkich maszyn - HVsnapshotAll
Wykonywanie migawek nie jest backupem (snapshot jest trzymany na tym samym dysku co pliki
konfiguracyjne wirtualnej maszyny, co mo\e powodować problem w przypadku próby odzyskania
go po awarii hosta Hyper-V), ale świetnie sprawdza się przy wprowadzaniu testowych zmian na
wirtualnych hostach. Skrypt wykonuje snapshot wszystkich wirtualnych hostów, jednocześnie
usuwajÄ…c migawki starsze ni\ 6 dni.
## HVsnapshotAll.ps1
## Take a snapshot of all the VM's and delete snapshots older than 6 days
##
## last edit: 12:31 PM 9/13/2009 by Karol Stilger
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementSe
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter "E
foreach ($VM in [array] $ListOfVMs)
{
$VM_service.CreateVirtualSystemSnapShot($VM.__PATH)
}
##
## Giving Hyper-V 30 sec to take the snapshots
##
Start-Sleep(30)
##
## Remove snapshots older than 6 days (except Sundays)
##
$VSVR = get-wmiobject -namespace root\virtualization -class Msvm_ComputerSystem
$VSSNAP = get-wmiobject -namespace root\virtualization -class Msvm_VirtualSystemSettingDa
5"
if (!($VSSNAP -eq $null))
{
foreach ($SS in [array] $VSSNAP)
http://wss.pl/Articles/11230.aspx 2009-09-17
WSS.pl | Articles | ZarzÄ…dzanie backupem Hyper-V Strona 4 z 7
{
if ($SS.ConvertToDateTime($SS.CreationTime) -le [DateTime]::Now.AddDays(-6).Da
{
if (!($SS.ConvertToDateTime($SS.CreationTime).DayOfWeek -eq 0))
{
$VM_Service.RemoveVirtualSystemSnapshot($SS)
Start-Sleep(3)
}
}
}
}
Snapshot pojedyńczej maszyny - HVsnapshotOne
Skrypt HVsnapshotOne jest modyfikacjÄ… HVsnapshotAll i wykoywany jest tylko dla maszyny
$VMsystemName.
## HVsnapshotOne.ps1
## Take a snapshot of one VM and delete snapshots older than 6 days
## to edit: $VMsystemName
##
## last edit: 12:31 PM 9/13/2009 by Karol Stilger
$VMsystemName = 'MyFavoriteMachine'
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementSe
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter "El
foreach ($VM in [array] $ListOfVMs)
{
$VM_service.CreateVirtualSystemSnapShot($VM.__PATH)
}
##
## Giving Hyper-V 30 sec to take the snapshots
##
Start-Sleep(30)
##
## Remove snapshots older than 6 days (except Sundays)
##
$VSVR = get-wmiobject -namespace root\virtualization -class Msvm_ComputerSystem
$VSSNAP = get-wmiobject -namespace root\virtualization -class Msvm_VirtualSystemSettingDa
if (!($VSSNAP -eq $null))
{
foreach ($SS in [array] $VSSNAP)
{
if ($SS.ConvertToDateTime($SS.CreationTime) -le [DateTime]::Now.AddDays(-6).Da
{
if (!($SS.ConvertToDateTime($SS.CreationTime).DayOfWeek -eq 0))
{
$VM_Service.RemoveVirtualSystemSnapshot($SS)
Start-Sleep(3)
}
}
}
}
Usuwanie backupów starszych ni\ X dni - HVcleanBackup
Aby zadbać o miejsce niezbędne do wykonywania nowych backupów, warto pozbyć się tych ju\
nieaktualnych. Skrypt HVbackupClean usuwa z folderu $CleanPath wszystkie pliki i katalogi starsze
ni\ $Old dni.
## HVcleanBackup.ps1
## Deletes backup older than $Old days
## to edit: $CleanPath and $Old
##
## last edit: 12:30 PM 9/13/2009 by Karol Stilger
$CleanPath = "F:\HVbackup"
$Old = 10
http://wss.pl/Articles/11230.aspx 2009-09-17
WSS.pl | Articles | ZarzÄ…dzanie backupem Hyper-V Strona 5 z 7
gci $CleanPath -recurse | where {$_.lastWriteTime -le (Get-Date).addDays(-$Old)} | Remove
Backup z u\yciem Windows Server Backup
Windows Server Backup (WSB) współpracuje z usługą Volume Shadow Copy (VSS), dzięki czemu
mo\na za jego pomocą wykonywać kopie zapasowe uruchomionych maszyn wirtualnych bez
konieczności ich zatrzymywania. To spora zaleta, poniewa\ minimalizuje przestoje przewidziane na
czynności administracyjne środowiska.
Konfiguracja i uruchomienie WSB dla backupowanie Hyper-V
Aby skorzystać WSB do onlinowego backup Hyper-V, nale\y:
% Upewnić się czy na maszynach wirtualnych nie są wykorzystywane dyski dynamiczne, jeśli są
to backup tych maszyn będzie przeprowadzany offline - maszyny zostaną na czas backupu
zatrzymane (saved). W razie potrzeby nale\y przekonwertować dyski na Fixed.
% Upewnić się czy maszyny wirtualne mają zainstalowane Integration Services (jeśli ich nie ma
maszyna będzie backupowana jako saved).
% Upewnić się czy maszny wirtualne wspierają VSS i czy ich dyski są sformatowane w NTFS
(Windows 2000 nie wspiera VSS - te maszyny będą backupowane jako saved).
% Zainstalować na serwerze z Hyper-V Windows Server Backup features: Windows Server
Backup oraz Command-line Tools.
% Do rejestru dodać następujący wpis:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WindowsServerBackup\
"Application Identifier"="Hyper-V"
% Mo\na przystąpić do planowania tego jak będą wykonywane backupy. Przechodzimy do panelu
Start -> Administratine tools (Narzędzia administracyjne) -> Windows Server Backup (Kopia
zapasowa systemu Windows Server). Konsolę MMC mo\emy podłaczyć do innego hosta
(przydatne przy planowaniu backupów na wersji Core lub Hyper-V Server).
% Z kreatora backupu wybieramy typ: Full Backup lub Custom Backup. MinimalnÄ… opcjÄ…
(Custom) backupu niezbędną do odzyskania działającego servera z Hyper-V na innym sprzęcie
wraz działającymi maszynami jest wybranie - Bare metal recovery (wykonuje on backup:
System State, System Reserverd oraz partycji systemowej) oraz wskazanie woluminu, na
którym znajdują się wirtualne dyski twarde oraz pliki konfiguracyjne maszyn (jeśli znajdują się
poza partycjÄ… systemowÄ…).
Rys. 1. - Windows Server Backup - wybór elementów do przeprowadzenie kopii zapasowej.
% Planujemy czas wykonywania backupu wybierajÄ…c Backup Once (Jednorazowa kopia
zapasowa) lub Backup Schedule (Harmonogram tworzenia kopii zapasowej).
% Wybieramy miejsce przechowywania backupu (sugerujÄ™ u\ycie dedykowanego dysku do
składowania backupu).
% Po zatwierdzeniu wszystkich opcji zamykamy kreator, wybierajÄ…c Close.
Odtwarzanie Hyper-V z kopii wykonanej przez WSB
Aby przywrócić stan Hyper-V do stanu z sprzed awarii, nale\y:
% Uruchomić kreator odzyskiwania w Windows Server Backup.
% Z panelu Actions (Akcje) wybrać Recover (Przywróć).
http://wss.pl/Articles/11230.aspx 2009-09-17
WSS.pl | Articles | ZarzÄ…dzanie backupem Hyper-V Strona 6 z 7
% Wybrać serwer, z którego mają być odtwarzane dane.
% Wybrać datę i godzinę backupu, który ma być przywrócony.
% Wybrać Applications (Przywracanie aplikacji).
Rys. 2. - Windows Server Backup, odtwarzanie - wybór typu odtwarzania.
% Wybrać Hyper-V.
Rys. 3. - Windows Server Backup, odtwarzanie wybór aplikacji do odtwarzania.
% Wybrać Recover to original location.
% Zatwierdzić wybór wciśnięciem Recover.
% Wyświetlony zostaje wskaznik postępu odzyskiwania, po odzyskaniu backupu mamy
poprawnie działający Hyper-V wraz wirtualnymi maszynami.
Uwaga: W przypadku kiedy maszyna wirtualna ma dwa i więcej snapshotów nie zostanie
przywrócona za pomocą powy\szej metody. Aby ją przywrócić nale\y po przeprowadzeniu
powy\szych operacji:
% Podłaczyć się do hosta Hyper-V za pomocą Hyper-V managera.
% Skasować maszynę wirtualną której nie udało się odzyskać.
% Przywrócić zawartość folderów ze snapshotami, domyślnie znajdują się one:
C:\ProgramData\Microsoft\Windows\Hyper-V\Snapshots.
% Po przywróceniu zawartości snapshotów nale\y jeszcze raz wykonać procedurę odtwarzania
Hyper-V (poprzedni opis).
http://wss.pl/Articles/11230.aspx 2009-09-17
WSS.pl | Articles | ZarzÄ…dzanie backupem Hyper-V Strona 7 z 7
W razie potrzeby mo\na odzyskać np. sam plik VHD za pomoca opcji odzyskiwania pojedyńczych
plików i podmienić go, jeśli konfiguracja systemu wirtualnego nie uległa zmianie.
W przypadku uszkodzenia całego systemu lub wszystkich danych mo\emy odzyskać z backupu
system operacyjny na hoście Hyper-V łacznie ze wszystkimi uruchamianymi tam maszynami
wirtuanymi. Aby to osiągnąć, nale\y uruchomić Windows Recovery - np. z płyty instalacyjnej
Windows Server 2008 R2 - i z niego wykonać dalszą część odtwarzania.
Backup za pomocÄ… Data Protection Manager
Pisząc o backupie Hyper-V wypada choć wspomnieć o Microsoft System Center Data Protection
Manager (DPM). W tym artykule będzie to tylko symboliczne, bo bardziej chciałem się skupić tym
co w kwestii backupuów Hyper-V ma do zaoferowania sam system operacyjny. Poprzednie
rozwiązania które przedstawiłem są dedykowane do małych organizacji ze względnie niewielką
ilością wirtualnej inftrastruktury. Przy większej ilości systemów nie sposób obejść się bez
rozwiązania do globalnego zarządzania backupem systemów i aplikacji i tu świetnie sprawdza się
DPM.
DPM wykorzystuje równie\ VVS do przeprowadzania onlinowych backupów Hyper-V. Mo\na za jego
pomocą zarządzać tworzeniem kopii zapasowych i odtwarzaniem wybranych maszyn. Wspiera
ciągłą ochronę danych za pomocą migawek. Rozpoznaje klaster Hyper-V i pozwala na podą\anie
kopii zapasowej za wirtualną maszyną na aktualny węzeł klastra. Zapewnia wsparcie dla nośników
taśmowych w konfiguracjach: disk to disk, disk to tape oraz disk to disk to tape.
Poza wsparciem dla Hyper-V, Data Protection Manager potrafi zarzÄ…dzac kopiami zapasowymi
Virtual Server, SQL Server, Exchange oraz SharePointa.
Podsumowanie
Backup i odzyskiwanie Hyper-V i maszyn wirtualnych nie jest tak trudne jak mo\e się wydawać na
początku. Warto jednak przemyśleć metody przeprowadzania kopii zapasowych i procedury ich
odtwarzania. Oczywiście lepiej zrobić to przed awarią:)
Ocena: 87,50% 12,50% (głosów: 8)
Autor Komentarz
ZarzÄ…dzanie backupem Hyper-V 2009-09-16 (Åšr) 23:51
d.mateusz
Junior Dobra robota ! Przyda się, dzięki.
wypowiedzi: 230
od: 2005-11-06 Zaloguj się, \eby odpowiedzieć
ZarzÄ…dzanie backupem Hyper-V 2009-09-17 (Cz) 00:31
Grimlock_
Czegoś takiego potrzebowałem - dzięki! :)
Junior
___________________
Pozdrawiam
Grzegorz Ayszkowski
| LinkedIn | MCITP: EST, MCTS: Vista, Windows Server 2008 AD, Windows 7 :)
|
wypowiedzi: 389
od: 2007-10-30
Zaloguj się, \eby odpowiedzieć
ZarzÄ…dzanie backupem Hyper-V 2009-09-17 (Cz) 08:12
AaaA
CieszÄ™ siÄ™, \e siÄ™ przyda.
Redakcja
Wiem, \e w tej dziedzinie sporo ludzi jest nieco zagubionych. Ostatnio
przyjeliśmy kogoś do pracy kto zajmował się Hyper-V w swojej poprzedniej
firmie i ta tematyka była mu całkiem obca (co prawda robił kopie zapasowe -
ręcznie kopiował VHD po wyłączeniu hypervisora). Stąd pomysł na
usystematyzowanie tego zagadnienia.
wypowiedzi: 3138 Pisząc zastanawiałem się czy nie dodać prostego how to jak uruchamiać
od: 2003-10-12
PowerShelowe skrypty (w tym jak to zrobić na Core/Hyper-V Server). Myślę,
Będę na MTS 2009
\e opiszÄ™ to odzielnie i zlinkujÄ™ razem.
Karol Stilger Microsoft MVP
itblogs.pl grupa.szczecin.pl
Zaloguj się, \eby odpowiedzieć
Witryna udoskonalana i prowadzona dla Microsoft przez Centuria Sp. z o.o..
©2009 Microsoft Sp. z o.o. Wszelkie prawa zastrze\one. Zasady u\ytkowania | Znaki towarowe | Ochrona prywatnoÅ›ci
http://wss.pl/Articles/11230.aspx 2009-09-17


Wyszukiwarka

Podobne podstrony:
hyper
Intel Hyper Threading Technology
Hyper Terminal

więcej podobnych podstron