CIBE backup script

Het maken van backups is 1 van de belangrijkste taken van een systeem beheerder en dat is in een virtuele omgeving niet anders.

Bij mijn werkgever gebruiken we NETAPP als file storage en VMware ESXi voor de virtualisatie laag.

Als backup oplossing zijn hiervoor eigenlijk maar een paar tools geschikt namelijk NATAPP SnapManager for Virtual Infrastructure of de voorloper VIBE.

De SnapManager for Virtual Infrastructure is de mooiste oplossing en ondersteund door NETAPP zelf alleen kost deze tool net als met alles van netapp erg veel geld.

Het alternatief zou dan VIBE zijn wat een script is dat gemaakt is door netapp in de tijd dat SnapManager for Virtual Infrastructure nog niet bestond.

Nadeel is van dit script is dat het regelmatig snapshots achter laat en als de omgeving groeit gaat VIBE alleen maar meer problemen geven ook wordt VIBE niet meer ontwikkeld en kan het niet overweg met bijvoorbeeld Fault Tolerance servers of servers waarbij iSCSI in de VMware Guest wordt aangeboden.

Maar er is een oplossing namelijk CIBE, dit is eigenlijk niets meer dan een powershell versie van VIBE maar met extra's zoals herkenning van Fault Tolerance servers (die krijgen geen snapshots) en omdat men werkgever iSCSI in VMware Guest gebruikt kijkt het script ook of VM guests gekoppeld zijn aan een iSCSI vLAN.

Natuurlijk is alles makkelijk aan te passen naar eigen wensen en ook te gebruiken voor andere merken storage, zolang je storage oplossing iets van scripting ondersteund zou je het werkbaar moeten kunnen krijgen.

CIBE draait nu bij men werkgever om 255 virtuele servers te back-uppen verdeelt over 3 VMware clusters en uitwijk over 2 locaties.

CIBE bestaat uit 3 scripts namelijk een batch file die je aan kan roepen met een scheduled task en deze batchfile roept vervolgens 2 powershel scripts aan waarvan 1 CIBE is en de ander een script om logs te controleren op fouten.

Voor het gemak ga ik er vanuit dat je de bestanden plaatst in de folder

C:\scripts\Cibe een ander pad kan natuurlijk ook alleen moet je het dan zelf aanpassen in de scripts.

Het script is nu gemaakt dat het op de netapp de volgende zaken uitvoerd

  1. Maken snapshot van de NFS export (ja CIBE is net als VIBE bedoelt voor NFS, gebruik je iSCSI of Fiber voor VMware storage dan moet je mogelijk de netapp commando's aanpassen.
  2. Bewaren van 3 Snapshots op de netapp filer
  3. Kopiƫren data naar een backup netapp filer (Snapvault)

De batch file heeft 2 regels

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -command "C:\Scripts\cibe\cibe.ps1" > C:\Scripts\cibe\cibelastrun.log

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -command "C:\Scripts\cibe\cibelog.ps1"

De eerste roept CIBE aan en output van CIBE word bewaard in de log C:\Scripts\cibe\cibelastrun.log.

De tweede regel roept een script aan die de file C:\Scripts\cibe\cibelastrun.log doorleest op fouten en een kopie van de log cibelastrun.log maakt onder de naam V2-backup <datum>.txt.

De rede waarom een kopie gemaakt wordt is omdat cibelastrun.log altijd overschreven wordt als er weer een CIBE backup gemaakt wordt.

cibe.ps1 is het CIBE script

De regels die je aan moet passen zijn

# "NFSShare" , NetappFiler ,Snapshot naam ,Snapvault location

$NetappTable = "NL_EXPORT00001","NetappFiler3","CIBE_ds_snap.0","/vol/sv_nfs_dail01/NL_EXPORT01"

$NetappTable += "NL_EXPORT00002","NetappFiler4","CIBE_ds_snap.0","/vol/sv_nfs_dail02/NL_EXPORT02"

$NetappTable += "NL_EXPORT00003","NetappFiler3","CIBE_ds_snap.0","/vol/sv_nfs_dail03/NL_EXPORT03"

$NetappTable += "NL_EXPORT00004","NetappFiler4","CIBE_ds_snap.0","/vol/sv_nfs_dail04/NL_EXPORT04"

$NetappTable += "NL_EXPORT00005","NetappFiler4","CIBE_ds_snap.0","/vol/sv_nfs_dail04/NL_EXPORT05"

Voor elke NFS export is een regel opgenomen zodat je per NFS export kan instellen op welke filer deze staat en welke snapfault locatie hierbij hoort.

Een andere belanrijkee regel is

Connect-VIServeR -Server:"nl-vcenterserver"

Hier moet je opgeven wat de vCenter server is, CIBE zal hiermee communiceren om VMware snapshots van servers te laten maken.

Als je net NFS gebruikt voor je VMware servers maar bijvoorbeeld iSCSI dan moet je ook deze regel aanpassen

foreach ($datastore in (Get-Datastore|where {$_.type -eq "NFS"}))

Nu rest alleen nog het netapp gedeelte

Mocht je geen NETAPP in metro cluster hebben met een apparte snapvault oplossing of wil je liever meer snapshots bewaren, dan moet de onderstaande code worden aangepast naar eigen wens.

Connect-NaController -Name $NetappFiler >> $logfile

remove-nasnapshot -Volume (Get-NaVol $netappDatastore) -SnapName "CIBE_ds_snap.2" -Confirm:$false |fl >> $logfile

Rename-NaSnapshot -SnapName "CIBE_ds_snap.1" -NewSnapName "CIBE_ds_snap.2" -Volume (Get-NaVol $netappDatastore) |fl >> $logfile

Rename-NaSnapshot -SnapName "CIBE_ds_snap.0" -NewSnapName "CIBE_ds_snap.1" -Volume (Get-NaVol $netappDatastore) |fl >> $logfile

New-NaSnapshot -Name (Get-NaVol $netappDatastore) -SnapName "CIBE_ds_snap.0" |fl >> $logfile

Connect-NaController -Name "NetappFiler5" |ft >> $logfile

Start-NaSnapvaultSecTransfer -SecondaryPath $Snapfaultlocation -PrimarySnapshot "CIBE_ds_snap.0" -ErrorVariable $snaperror >> $logfile

Nadat het cibe script is aangepast rest alleen nog het controle script cibelog.ps1

Aanpassingen die je hier kan doen zijn

De locatie van de cibelastrun.log deze moet gelijk zijn aan het geen je in de batch file hebt ingevuld.

$BatchLog="C:\Scripts\cibe\cibelastrun.log"

En natuurlijk het mail adres waar je eventuele foutmeldingen op wil ontvangen

if ($error -eq 1) {Mail "afzender@domein.nl" "je email@adres.nl" "<je mail server>" "CIBE Backup Fout" "API foutmelding gevonden in log"}

Dat is het

Onderaan deze site staan alle scripts die je nodig hebt, ik zou zeggen heel veel plezier er mee.