Jakiś czas temu wprowadziliśmy możliwość tworzenia migawek dysku. To bardzo przydatna funkcja, która pozwala szybko i wydajnie zapisywać stany dysków nawet na działających systemach.
Dzięki ZFS, automatyczne migawki będą zużywać tylko deltę między stanem bieżącym a momentem wykonania migawki. Oznacza to, że jeśli Twój oryginalny dysk miał 15 GB, a między migawką a stanem bieżącym zmienił się tylko 1 MB danych, rozmiar migawki wyniesie 1 MB. Jeśli zapiszesz kolejny megabajt na dysku, migawka powiększy się o kolejny megabajt.
Kolejną zaletą tego systemu jest to, że każdą migawkę można przekształcić (sklonować) w pełny dysk. Oznacza to, że można utworzyć niezależną kopię, którą można zamontować na serwerze, potencjalnie w zupełnie innym systemie pamięci masowej. W ten sposób stanowi to podstawę strategii zarządzania pamięcią masową (w zależności od obciążenia pracą).
Słowo ostrzeżenia
Chociaż korzystanie z okresowych migawek może być częścią strategii tworzenia kopii zapasowych, nierozsądne jest poleganie na migawkach jako jedynej strategii.
Istnieje również wiele sytuacji, w których korzystanie z tych migawek nie zadziała, np. tworzenie migawki działającego serwera bazy danych. Funkcja migawek może być nadal przydatna na zatrzymanych serwerach baz danych (w celu przywrócenia stanu z określonego momentu), ale ponownie, nie powinna to być jedyna strategia tworzenia kopii zapasowych.
Tworzenie automatycznych migawek
Korzystając z naszej biblioteki Pythona, automatyzacja migawek jest naprawdę prosta. Jednak biorąc pod uwagę, że musimy przechowywać dane uwierzytelniające CloudSigma w systemie, który wyzwala migawki, zdecydowanie odradzamy niebezpieczne ujawnianie danych uwierzytelniających usług produkcyjnych. Jeśli chcesz uruchomić to na przykład na serwerze chmurowym, upewnij się, że jest on odizolowany od reszty infrastruktury (na przykład za pomocą naszej funkcji zasad sieciowych) i w pełni zabezpieczony.
Po zainstalowaniu biblioteki Pythona, możesz pobrać i uruchomić skrypt w następujący sposób:
[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot.py$ python snapshot.py drive-uuid my-snapshot
[/bash]
snapshot.py przyjmuje dwa argumenty:
- UUID dysku, którego migawkę chcesz utworzyć
- Przyjazną nazwę dla migawki
Po ręcznym utworzeniu migawki i zweryfikowaniu, że działa (możesz to zobaczyć w sekcji ‘snapshot’ dysku), możemy teraz to zautomatyzować.
Najbardziej odpowiednim i standaryzowanym sposobem uruchamiania takiego zadania byłoby użycie crontab (zakładając, że korzystasz z systemu Linux lub Mac OS X).
Uruchom jako ten sam użytkownik, dla którego utworzyłeś powyższą migawkę:
[bash light=”true”]
$ crontab -e
[/bash]
Jeśli chcesz tworzyć migawkę każdej nocy o 1:00, dodaj następującą linię:
|
1 |
0 1 * * * python /path/to/snapshot.py drive-uuid my-snapshot >> $HOME/snapshot.log 2>&1 |
Zauważysz również, że skrypt będzie zapisywał logi do pliku o nazwie snapshot.log w katalogu domowym użytkownika uruchamiającego skrypt.
Automatyczne usuwanie migawek
Ponieważ migawki z czasem rosną, prawdopodobnie będziesz chciał je po pewnym czasie usunąć. Aby rozwiązać ten problem, stworzyliśmy kolejny skrypt, który może to zrobić za Ciebie. Skrypt nazywa się snapshot_purge.py i przyjmuje dwa argumenty:
- UUID dysku
- Liczbę dni, z których migawki chcesz zachować
Na przykład, jeśli chcesz zachować migawki z ostatnich 30 dni, możesz po prostu uruchomić:
[bash light=”true”]
$ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot_purge.py
$ python snapshot_purge.py drive-uuid 30
[/bash]
Możesz oczywiście to również zautomatyzować. Na przykład, jeśli chcemy usunąć migawki starsze niż 30 dni, możemy dodać do naszego crontaba następujący wpis (który zostanie uruchomiony o 1:30):
|
1 |
30 1 * * * python /path/to/snapshot_purge.py dysk-uuid 30 >> $HOME/snapshot_purge.log 2>&1 |
Podsumowanie
To już wszystko, moi drodzy. Korzystając z tych dwóch skryptów, będziesz w stanie zautomatyzować migawki swoich dysków. Jeśli chcesz tworzyć migawki wielu dysków, po prostu dodaj więcej linii snapshot.py do swojego crontaba z różnymi UUID.
Oczywiście jedynie muskamy powierzchnię tego, co możemy zrobić z migawkami, ale mam nadzieję, że posłuży to jako szybki kurs korzystania z migawek w procedurach zarządzania pamięcią masową.
Jeśli masz bardziej zaawansowane potrzeby w zakresie retencji danych, miejmy nadzieję, że uda Ci się ponownie wykorzystać część kodu z powyższych skryptów.
Komentarze
Brak komentarzy. Bądź pierwszy.