veeam

Kostenloses Hyper-V-Backup mit Veeam

Veröffentlicht von

Wer seine Hyper-V-Maschinen sichern möchte, findet am Markt für Backupsoftware mittlerweile eine große Auswahl vor. Gerade für kleinere Unternehmen mit wenigen virtuellen Diensten kann das je nach Lizenzierungsmodell schnell ein kostspieliges Unterfangen werden.

Dabei bietet sich Microsoft Hyper-V als günstiger Einstieg in die Welt der Virtualisierung an. Der reine Hyper-V-Server wird von Microsoft als Hypervisor kostenlos angeboten. Soll Windows Server auf einem virtuellen Host zum Einsatz kommen, muss lediglich das Gastbetriebssystem lizenziert werden. Bei Windows Server 2012 R2 erlaubt die Lizenzpolitik sogar den Einsatz von zwei virtuellen Windows-Servern mit einer einzelnen Lizenz.

Verständlich also, dass die Sicherung einer virtuellen Infrastruktur den Kostenrahmen an dieser Stelle nicht sprengen sollte. Mit kostenloser Backup-Software lassen sich üblicherweise nur private Anforderungen abdecken, von der Verwaltung virtueller Maschinen auf Host-Basis ganz zu schweigen.

Hyper-V-Server – Sicherung auf Hostebene

Der Hersteller Veeam jedoch bietet mit Veeam Backup and Replication eine Software an, die im eingeschränkten Funktionsumfang kostenlos genutzt werden kann. Für eine kleine bis mittelgroße Hyper-V-Landschaft völlig ausreichend. Die Sicherung der Maschinen findet dabei auf Hostebene statt, sodass eine virtuelle Maschine als Ganzes gesichert und wiederhergestellt werden kann.

Veeam Backup and Replication kann dazu auf dem VM-Host selbst oder auf einem dedizierten Server installiert und konfiguriert werden. Da die Software auf einem Windows-Server installiert werden muss, lassen sich Lizenzkosten einsparen, wenn der Hyper-V-Host diese Aufgabe übernimmt – unter Berücksichtigung der Auslastung des VM-Hosts im regulären Betrieb und während eines Backups. Dies kann in der Konsole von Veeam and Recovery aber nachvollzogen werden.

Funktionsumpfang in der kostenlosen Variante

Wird die Veeam-Software ohne Lizenzschlüssel installiert, steht der freie Funktionsumfang im GUI zur Verfügung. Für die Erstellung von spontanen Backups von Hyper-V-VMs ist das GUI auch ausreichend. Hier lässt sich bequem mit der sogenannten VeeamZIP-Methode per Klick ein Backup einer virtuellen Maschine anfertigen.

veeam_backup
AdHoc-Backup mit VeeamZIP

So lassen sich VMWare oder Hyper-V-Maschinen kostenlos sichern, klonen oder wiederherstellen. Eine Automatisierung bzw. Planung von Backups ist in der GUI von Veeam Backup and Recovery 9.5 in der kostenlosen Variante nicht vorgesehen.

Vorteile gegenüber Gast-Backup

Ein Backup auf Hostebene hat gegenüber der Sicherung innerhalb der VM selbst einige Vorteile. Grundsätzlich empfiehlt sich in einer virtualisierten IT-Landschaft die virtuellen Maschinen als Ganzes zu sichern, um die Vorzüge der VM-Kapselung beibehalten zu können.

  • Sicherung im laufenden Betrieb, keine Downtime notwendig
  • Beschleunigung des Backups und der Wiederherstellung
  • Einfaches Management des Backups außerhalb der VM, Ablage auf unterschiedlichen Speichermedien
  • Schnelle Wiederherstellung auf anderem VM-Host
  • Keine hardware- und partitionsspezifischen Probleme bei der Wiederherstellung
  • Zugang zu VM-Dateisystem auch ohne vollständigen Restore der Maschine

Automatisierte Backups mit PowerShell

Für die einfache Sicherung von virtuellen Maschinen fehlt also erst einmal nur noch die Planbarkeit und automatische Ausführung von entsprechenden Sicherungen mit Veeam Backup and Recovery 9.5. Die Verwaltungskonsole bzw. die GUI bringt diese Möglichkeit (wahrscheinlich bewusst) nicht mit.

Aber es gibt Abhilfe: Veeam lässt sich nämlich auch per PowerShell ansteuern und bringt dazu einige nützliche cmdlets mit. Dazu gibt es im Blog des Herstellers einen Artikel, in dem ein PowerShell-Skript mit entsprechenden Konfigurationsparametern erläutert wird.

Das folgende Skript sichert drei virtuelle Maschinen auf einen Netzwerkspeicher und versendet eine E-Mail-Berichtigung nach Abschluss der Aufgabe.

# Updated: 01.06.2016

# Variablen
##################################################################

# Namen der VMs, die gesichert werden sollen (Mit Komma trennen)
$VMNames = "PGSRV01", "PGSRV02","PGSRV03"

# Erforderlich: HyperV-Host
$HostName = "XXXHYPERV"

# Erforderlich: Speicherpfad für Backups
$Directory = "Y:\"

# Optional: Kompressionslevel (0 - Keine, 4 - Normal, 5 - Optimal, 6 - Hoch, 9 - Extrem)
$CompressionLevel = "5"

# Optional: VM anhalten für Backup
$EnableQuiescence = $False

# Verschlüsselung (Optional; $True/$False)
$EnableEncryption = $False

# Optional: Pfad zum Schlüssel für Verschlüsselung
$EncryptionKey = ""

# Aufbewahrung - Werte: Never , Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = "In3days"
# Benachrichtigung
##################################################################

# Optional: Benachrichtigung einschalten
$EnableNotification = $True

# SMTP-Server
$SMTPServer = "PGxxxx.xxxx.local"

# E-Mail-Absender
$EmailFrom = "admin@xxx.local"

# E-Mail
$EmailTo = "post@mail.de"

# E-Mail-Betreff
$EmailSubject = "VM-Backup-Information"
# E-Mail-Format
##################################################################

$style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + "</style>"

#################### PS-BACKUP-Script #####################
Asnp VeeamPSSnapin

$Server = Get-VBRServer -name $HostName
$MessageBody = @()

foreach ($VMName in $VMNames)
{
$VM = Find-VBRHvEntity -Name $VMName -Server $Server

If ($EnableEncryption)
{
$EncryptionKey = Add-VBREncryptionKey -Password (cat $EncryptionKey | ConvertTo-SecureString)
$ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention -EncryptionKey $EncryptionKey
}

Else
{
$ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention
}

If ($EnableNotification)
{
$TaskSessions = $ZIPSession.GetTaskSessions().logger.getlog().updatedrecords
$FailedSessions = $TaskSessions | where {$_.status -eq "EWarning" -or $_.Status -eq "EFailed"}

if ($FailedSessions -ne $Null)
{
$MessageBody = $MessageBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={$FailedSessions.Title}})
}

Else
{
$MessageBody = $MessageBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={($TaskSessions | sort creationtime -Descending | select -first 1).Title}})
}

}
}
If ($EnableNotification)
{
$Message = New-Object System.Net.Mail.MailMessage $EmailFrom, $EmailTo
$Message.Subject = $EmailSubject
$Message.IsBodyHTML = $True
$Message.Body = $MessageBody | ConvertTo-Html -head $style | Out-String
$SMTP = New-Object Net.Mail.SmtpClient($SMTPServer)
$SMTP.Send($Message)
}

Wie am Parameter $EnableEncryption = $False zu erkennen ist, verwende ich das Veeam Backup ohne Verschlüsselung, um Overhead und benötigte Zeit für das Backup auf einem Minimum zu halten. Da die Backup-Datei nur interne Wege geht und an einem für klassische Benutzer nicht zugänglichen Speicherort abgelegt wird, bewerte ich die fehlende Verschlüsselung als unkritisch.

Planung mit der Windows-Aufgabenplanung

Das vorgestellte Skript startet sich nicht selbstständig. Für die geplante Ausführung zu wiederkehrenden Zeitpunkten kann der Windows-Aufgabenplaner herhalten. Hier wird das PowerShell-Skript in einer Aufgabe als auszuführende Aktion hinterlegt.

veeam_backup_aufgabenplanung
Veeam PowerShell-Script in Aufgabenplanung

Im Feld für den Programmpfad wird der Pfad zur Windows PowerShell angegeben, welcher als Argument mit -command““ das Skript übergeben wird. Diese Aufgabe sollte dann im Benutzerkontext mit ausreichend Rechten ausgeführt werden.

veeam_backup_gui
Durchgeführte Backups in Veeam GUI

In der Konsole bzw. dem GUI von Veeam Backup and Recovery kann nun nachvollzogen werden, dass die Backups der virtuellen Maschinen wie geplant ausgeführt werden. Dies passiert in meiner Konfiguration jede Nacht, wobei die Maschinen-Backups dann auf einem schnell angebundenen Storage landen. Nach Abschluss der Backup-Aufgabe wird die im Skript konfigurierte E-Mail versandt.

veeam_e-mail_benachrichtigung
E-Mail über Ergebnis des geplanten Backups

So wird auch ohne Prüfung gelaufener Jobs in Veeam direkt ersichtlich, ob es beim automatischen Backup Probleme gab.

Passende Beiträge

Dienste mit fail2ban absichern Jeder Administrator wird die Problematik kennen: über das Internet erreichbare Ports von Serverdiensten sind notwendig und bergen gleichzeitig ein Ris...
Freie Routerwahl – pfSense am VDSL-Anschluss Der deutschlandweite Vormarsch von VDSL und IP-basierten Anschlüssen wirft leider auch Probleme auf, was die Verwendbarkeit von vorhandenen Routern un...

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.