In un ambiente Veeam Backup & Replication che presenta un numero elevato di job, garantire che le loro configurazioni siano omogenee può essere talvolta complicato. Sebbene vengano definite delle procedure di creazione dei vari job e assegnate al personale che gestisce il prodotto, l’errore umano è sempre dietro l’angolo.
Prendiamo un esempio. Si utilizzano una serie di backup repository disponibili sulla rete, e si decide quindi che la migliore configurazione per la deduplica è “LAN target”, ovvero l’uso di un block size di 512KB. Quando i job tuttavia vengono creati in momenti successivi, da persone differenti, può capitare che questo parametro non venga rispettato (non essendo oltretutto il default in fase di creazione di un job). Se i job da controllare sono pochi, si può visualizzare i parametri e verificare questi valori, ma al crescere del numero di job questa attività è difficilmente gestibile.
In assenza di un tool di IT automation come potrebbe essere Puppet, che permetta di controllare e in caso correggere le discrepanze, è comunque possibile utilizzare il supporto completo per PowerShell che Veeam Backup & Replication offre.
Per prima cosa, carichiamo come sempre lo snap-in di Veeam in powershell:
#Initialize Veeam PS Snapin asnp VeeamPSSnapin -ErrorAction Continue
Scegliendo uno qualsiasi dei job esistenti, da usare come parametro dei nostri script, otteniamo per prima cosa quali opzioni sono disponibili:
#Get the list of available Job Options Get-VBRJobOptions -Job "Job Name"
Da qui, è possibile ottenere le ulteriori sub-options di una opzione primaria:
#Get the list of sub-options of a given Option $job = Get-VBRJob -Name "Job Name" $option = $job.GetOptions() $option.SanIntegrationOptions
In questo esempio abbiamo verificato se il Job abbia o meno abilitata l’integrazione con le Storage Snapshots. Lo stesso metodo è utilizzabile per ottenere molte altre informazioni, con la stessa procedura. Ad esempio, potremmo voler sapere le opzioni di retention, compressione e deduplica come accennato all’inizio dell’articolo:
#Get the list of sub-options of a given Option $job = Get-VBRJob -Name "Job Name" $option = $job.GetOptions() $option.BackupStorageOptions
Scoperto quale parametro dobbiamo invocare per avere una determinata informazione, possiamo costruire una tabella che ci mostri i parametri desiderati per tutti i job di backup che possediamo:
#Get Desired Job options from all your Backup Jobs Get-VBRJob | ? {$_.jobtype -eq "Backup"} | Select-Object -Property @{N="Job Name"; E={$_.name}}, @{N = "Compression Level" ; E = {$_.GetOptions().BackupStorageOptions.CompressionLevel}}, @{N = "Dedup Block Size" ; E = {$_.GetOptions().BackupStorageOptions.StgBlockSize}}, @{N = "SAN Integration" ; E = {$_.GetOptions().SanIntegrationOptions.UseSanSnapshots}} | Format-Table -AutoSize
In questo modo, è facile ad esempio vedere come alcuni job abbiano un livello di compressione differente (5 corrisponde alla voce di menu Optimal, mentre 6 è High), oppure differenze nel Dedup Block Size, o ancora se stiamo usando la Storage Acceleration o meno. Da qui, allineare i vari job in modo che presentino configurazioni uniformi risulta molto più semplice.