Jest to gościnny wpis autorstwa Vladimira Eremina, kierownika produktu w firmie Veeam.Vladimir aktywnie udziela się na forach Veeam,
Rozwiązanie Veeam Backup Free Edition cieszy się największą popularnością wśród bezpłatnych narzędzi firmy Veeam. Głównym powodem jest funkcja VeeamZIP, która umożliwia samodzielne wykonywanie pełnych kopii zapasowych nieograniczonej liczby maszyn wirtualnych. Jednak funkcja ta zawsze miała drobne, ale denerwujące ograniczenie: nie pozwalała zaplanować regularnego tworzenia kopii zapasowych. Ponieważ VeeamZIP można uruchomić tylko ręcznie, interfejs użytkownika rzeczywiście po prostu nie zawiera opcji umożliwiającej zaplanowanie regularnych zadań backupu. Wszystkich użytkowników, którzy dobrze znają tę sytuację, ucieszy informacja, że w wersji Update 2 ta niedogodność została wyeliminowana! Wyszliśmy naprzeciw zastrzeżeniom zgłaszanym na forum Veeam, na Twitterze oraz w innych miejscach i udostępniliśmy we Free Edition polecenie cmdlet PowerShell o nazwie Start-VBRZip.
Zasada działania
Jak wspomnieliśmy, główną zaletą rozwiązania Veeam Backup Free Edition jest możliwość tworzenia kopii zapasowych maszyn wirtualnych przy użyciu funkcji VeeamZIP (a także oczywiście odzyskiwania maszyn, plików gości i elementów aplikacji z tych kopii zapasowych). Funkcja VeeamZIP zawsze tworzy plik pełnej kopii zapasowej (.vbk), który stanowi niezależny punkt przywracania. Free Edition umożliwia zapisanie pliku kopii zapasowej w repozytorium kopii zapasowych, w folderze lokalnym lub udziale sieciowym.
W przypadku korzystania z funkcji VeeamZIP operację backupu wybranej maszyny wirtualnej można rozpocząć natychmiast. Tego typu operacja wymaga minimalnej liczby ustawień i dlatego jej ręczne uruchamianie jest wyjątkowo łatwe.
Nowa wersja Update 2 umożliwia napisanie prostego skryptu PowerShell (tutaj w wersji dla VMware, a tutaj dla Hyper-V), który uruchamia funkcję VeeamZIP dla wybranej maszyny wirtualnej i ustawia dla niej wybrany przez użytkownika harmonogram za pośrednictwem Harmonogramu Windows. Opracowaliśmy nawet poniższy przykładowy skrypt, który nie tylko uruchamia tworzenie kopii zapasowych VeeamZIP określonych maszyn wirtualnych, ale również powoduje wysłanie pocztą e-mail czytelnego raportu z wynikami tych operacji!
Parametry skryptu
Skrypt wykonuje kopię zapasową ad hoc wybranych maszyn wirtualnych znajdujących się na autonomicznym hoście lub klastrze albo na serwerze vCenter. Przed uruchomieniem skryptu należy podać trzy obowiązkowe parametry: nazwy maszyn wirtualnych do uwzględnienia w kopii zapasowej, host, na którym znajdują się maszyny, oraz docelowy katalog zapisu plików kopii zapasowych. Uwaga: skrypt został zaktualizowany 18 maja na podstawie opinii użytkowników.##################################################################
# Zmienne definiowane przez użytkownika
##################################################################
# Rozdzielone przecinkami nazwy maszyn wirtualnych do uwzględnienia w kopii zapasowej (obowiązkowo). Przykładowo: $VMNames = “VM1”,”VM2”
$VMNames = ""
# Nazwa serwera vCenter lub autonomicznego hosta, na którym znajdują się maszyny do uwzględnienia w kopii zapasowej (obowiązkowo)
$HostName = ""
# Katalog, w którym mają zostać zapisane kopie zapasowe maszyn (obowiązkowo, na przykład C:\Backup)
$Directory = ""
Opcjonalnie można zmienić stopień kompresji i okres przechowywania, wyłączyć przełączanie maszyn VMware w stan spoczynku (quiescence), włączyć szyfrowanie i określić ustawienia powiadomień:
# Żądany stopień kompresji (opcjonalnie, możliwe wartości: 0 — brak, 4 — stopień uwzględniający deduplikację, 5 — optymalny, 6 — wysoki, 9 — ekstremalny)
$CompressionLevel = "5"
# Przełączenie maszyny wirtualnej w stan spoczynku na czas wykonywania migawki (opcjonalnie; w tym przypadku w systemie operacyjnym gościa wymagane są narzędzia VMware lub składniki integracji Hyper-V; możliwe wartości: $True/$False)
$EnableQuiescence = $True
# Zabezpieczenie utworzonej kopii zapasowej kluczem szyfrującym (opcjonalnie, $True/$False)
$EnableEncryption = $False
# Klucz szyfrujący (opcjonalnie, ścieżka do bezpiecznego ciągu znaków)
$EncryptionKey = ""
# Ustawienia przechowywania (opcjonalnie; domyślne pliki VeeamZIP nie są usuwane i pozostają w określonej lokalizacji bezterminowo;
# możliwe wartości: Never, Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = "Never"
Jeśli po utworzeniu kopii zapasowej chcemy otrzymać raport pocztą e-mail, dodatkowo określamy poniższe ustawienia powiadomień.
##################################################################
# Ustawienia powiadomień
##################################################################
# Włączenie powiadomień (opcjonalnie)
$EnableNotification = $True
# Serwer pocztowy SMTP
$SMTPServer = ""
# Nadawca e-maila
$EmailFrom = ""
# Adresat e-maila
$EmailTo = ""
# Temat e-maila
$EmailSubject = ""
Wygenerowany raport w postaci wiadomości e-mail będzie wyglądał następująco:
Name | Start Time | End Time | Result | Details |
CentOS-tiny_2015-03-26T180459 | 3/26/2015 6:04:59 PM | 3/26/2015 6:07:17 PM | Warning | Processing finished with warnings at 3/26/2015 6:07:13 PM Cannot use VMware Tools quiescence because VMware Tools are not found. |
CentOS-tiny_replica_2015-03-26T180720 | 3/26/2015 6:07:20 PM | 3/26/2015 6:11:20 PM | Success | Processing finished at 3/26/2015 6:11:18 PM |
Wszystkie powyższe ustawienia można skonfigurować przez wprowadzenie odpowiedniej wartości określonych zmiennych. Jeśli na przykład chcemy włączyć szyfrowanie, w zmiennej $EnableEncryption należy ustawić wartość $True (logiczną) i podać klucz szyfrujący (zobacz następną sekcję). Ponadto, jeśli pliki kopii zapasowych mają być usuwane po dwóch tygodniach, należy w zmiennej $Retention ustawić wartość „In2Weeks” (ciąg znaków). Nie trzeba pamiętać zastosowania każdej zmiennej i jej dopuszczalnych wartości — dla wygody przykładowy skrypt zawiera krótki opis każdej zmiennej.
Szyfrowanie
Jeśli chodzi o szyfrowanie, to bezpieczeństwo danych jest kluczowym elementem strategii backupu. Dane zawarte w kopiach zapasowych muszą być chronione przed nieautoryzowanym dostępem, zwłaszcza w przypadku, gdy dane ze szczególnie ważnych maszyn wirtualnych są w postaci kopii zapasowych przesyłane do lokalizacji zewnętrznej lub archiwizowane na taśmach. Aby zabezpieczyć firmowe dane, kopie zapasowe utworzone przy użyciu funkcji VeeamZIP można szyfrować. Jak już wspomniano, wymaga to wybrania pliku zawierającego hasło szyfrowania.
Oczywiście hasło można by podać w skrypcie w postaci zwykłego ciągu tekstowego. Jednak normalne ciągi tekstowe nie są bezpieczne (oględnie mówiąc), ponieważ są przechowywane w pamięci w postaci zwykłego tekstu. Dlatego polecenia cmdlet w interfejsie PowerShell nie akceptują haseł w tej postaci.
Lepszym rozwiązaniem jest bezpieczny ciąg znaków. Zawartość takiego ciągu jest szyfrowana w pamięci. Stosowane szyfrowanie ma charakter odwracalny, a więc hasło może w razie potrzeby zostać odszyfrowane, ale wyłącznie przez podmiot, który je zaszyfrował. Chcąc utworzyć bezpieczny ciąg znaków, należy otworzyć konsolę PS i wpisać poniższe dwa wiersze. Po wykonaniu tego kodu pojawi się monit o wpisanie hasła, po czym hasło zostanie zapisane jako bezpieczny ciąg w pliku:
$SecurePassword =
Read-Host -Prompt
"Wprowadź hasło" -AsSecureString
$SecurePassword |
ConvertFrom-SecureString
> “Katalog, w którym ma być przechowywany bezpieczny ciąg, na przykład C:\SecureString.txt”
Następnie należy określić w głównym skrypcie ścieżkę do nowo utworzonego pliku:# Zabezpieczenie utworzonej kopii zapasowej kluczem szyfrującym (opcjonalnie, $True/$False)
$EnableEncryption = $True
# Klucz szyfrujący (opcjonalnie, ścieżka do bezpiecznego ciągu znaków)
$EncryptionKey = "C:\SecureString.txt"
Planowanie skryptu
Zanim zaplanujemy wykonywanie skryptu, musimy uruchomić go ręcznie i sprawdzić, czy działa zgodnie z oczekiwaniami.
Najlepszym sposobem na zaplanowanie skryptu, który okresowo automatycznie wykonuje kopię zapasową, jest użycie Harmonogramu zadań systemu Windows. W tym celu przechodzimy do narzędzia Harmonogram zadań i tworzymy nowe zadanie podstawowe:
Podajemy nazwę i wprowadzamy opis, który ułatwi zapamiętanie jego przeznaczenia.
Następna strona to Wyzwalacz zadania. Nie wymaga ona szczególnych wyjaśnień. Dostępne opcje zapewniają dużą elastyczność (tworzenie kopii zapasowych od kilku razy dziennie do jednego razu w miesiąc). Wybieramy tutaj opcję odpowiadającą wymaganej wartości RPO. Większość użytkowników decyduje się codzienne tworzenie kopii zapasowej:
Czas uruchamiania zadania ustawiamy poza godzinami pracy. W tym przykładzie zadanie będzie uruchamiane co wieczór o 22:00 od 22 kwietnia 2015 r.
Na kolejnej stronie Akcja określamy, że zaplanowane zadanie powinno uruchamiać program, i klikamy Dalej.
Na stronie Uruchamianie programu w polu Program/skrypt wpisujemy następujące polecenie:
Powershell -file [ścieżka do pliku Veeamzip.ps1]
To wszystko! Jednak po utworzeniu zadania możemy je otworzyć, aby wprowadzić kilka dodatkowych zmian. W tym celu zaznaczamy opcję „Otwórz okno dialogowe Właściwości dla tego zadania, kiedy kliknę Zakończ” (na przedstawionym zrzucie: Open the Properties dialog for this task when I click Finish):
Ponieważ zadanie ma być uruchamiane na serwerze, a użytkownik może nie być zalogowany o zaplanowanej godzinie wykonywania zadania, warto umożliwić jego uruchamianie niezależnie od zalogowania użytkownika. W tym celu należy skojarzyć poświadczenia użytkownika z zadaniem.
Na zakończenie klikamy zadanie prawym przyciskiem myszy i wybieramy Uruchom, aby sprawdzić, czy zostanie wykonane prawidłowo:
Interfejs PowerShell daje użytkownikom rozwiązania Veeam Backup Free Edition możliwości, o których zawsze marzyli.
Dzięki nim użytkownicy będą mogli zrealizować bardzo ważny cel: tworzyć zaplanowane kopie zapasowe przy użyciu rozwiązania Veeam Backup Free Edition, które udostępnia znacznie więcej funkcji backupu i odzyskiwania niż inne korzystające ze skryptów bezpłatne narzędzia do backupu.