Snapshot (informatyka)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Migawka - (ang. snapshot) jest sposobem zapewniania dostępu do starszych wersji danych przechowywanych w pamięci masowej, zwłaszcza dyskowej.

Spis treści

Sposób realizacji [edytuj]

Zazwyczaj, migawki (snapshoty) danych wykonywane są w taki sposób, że realizujący je obiekt (dysk, baza danych, system plików itp.) zaczyna zapisywać nowe dane w miejscu niezajętym dotąd przez starsze informacje. Równocześnie, zapewniony jest sposób odczytu zarówno danych współczesnych jak i starszych.

Podczas odczytu danych współczesnych, dane starsze, zastąpione już nowszymi są ignorowane, mimo że fizycznie nadal znajdują się na nośniku. W efekcie, użytkownik nawet nie musi być świadomy, że takie starsze dane nadal przechowywane są na przykład na dysku twardym.

Podczas odczytu danych starszych, dane nowsze są ignorowane, a starsze (nienadpisane) dane są udostępniane aplikacjom.

Większość współczesnych realizacji funkcjonalności snapshotów umożliwia tworzenie wielu migawek i w efekcie dostęp do wielu wersji historycznych.

Aby móc zrealizować funkcjonalność snapshotów, należy zagwarantować:

  • odpowiednią ilość miejsca w pamięci masowej. Ponieważ starsze dane są przechowywane na dyskach, ilość zajętego miejsca jest większa niż byłaby gdyby dostępne były wyłącznie dane aktualne. Należy przy tym zwrócić uwagę, że przyrost ilości danych zajętych przez migawkę jest bezpośrednio zależny od ich zmienności po wykonaniu migawki.
  • API umożliwiające dostęp zarówno do danych starszych jak i bieżących. Często dostęp taki realizowany jest poprzez tworzenie wirtualnych obiektów o właściwościach analogicznych do obiektu rzeczywistego. Na przykład migawka katalogu może z punktu widzenia sięgającego do niej użytkownika wyglądać jak katalog a migawka bazy danych – jak baza danych.
  • spójność danych. Przykładowo, aby cała funkcjonalność miała sens, aplikacja pracująca na serwerze musi umieć przeczytać i poprawnie zinterpretować dane z migawki. Oznacza to, że zazwyczaj nie wystarczy utworzenie migawki w dowolnym momencie i że potrzebny jest ze strony aplikacji jakiś rodzaj sygnału, informującego pamięć masową, że w danym momencie dane są spójne i że na pewno zostaną zrozumiane.

Implementacje [edytuj]

Funkcjonalność snapshotów realizowana może być na kilku warstwach stosu związanego z zapisywaniem danych w pamięci masowej. W szczególności, mogą być to:

Macierze dyskowe [edytuj]

Niektóre macierze dyskowe umożliwiają wykonanie migawki (snapshotu). Starsze dane mogą być udostępniane na przykład przy pomocy specjalnego LUN.

System plików [edytuj]

Systemy plików (na przykład ZFS, UFS i NTFS) realizują funkcjonalność snapshotów, rezerwując na nie część przestrzeni dyskowej. Użytkownik systemu ma możliwość sięgnięcia do starszych wersji danych, na przykład, gdy w systemie Windows Vista nadpisze lub skasuje pliki. W systemach Microsoft Windows migawki często określane są nazwą Shadow Copy, a usługa odpowiedzialna za ich obsługę nazywa się VSS.

Bazy danych [edytuj]

Microsoft SQL Server w edycji Enterprise umożliwia tworzenie migawek przy pomocy polecenia CREATE DATABASE xxx AS SNAPSHOT OF yyy. W takiej sytuacji oryginalna baza yyy nadal jest dostępna i normalnie pracuje, podczas gdy użytkownik uzyskuje dostęp tylko do odczytu do bazy xxx będącej migawką. W prosty sposób można zarówno skasować migawkę (gdy nie jest już potrzebna) jak i powrócić do zachowanego w migawce stanu danych.

Dyski maszyn wirtualnych [edytuj]

Jednym z praktycznych zastosowań migawek jest "zamrożenie" stanu dysków maszyn wirtualnych. Dzięki takiej funkcjonalności możliwe jest przywrócenie stanu maszyny do zapamiętanego wcześniej punktu. Umożliwia to proste odtwarzanie w przypadku niektórych rodzajów awarii lub problemów związanych z konfiguracją. Praktyczna realizacja takich migawek może opierać się zarówno na mechanizmach udostępnianych przez system plików jak i na wirtualnych dyskach, zapisywanych w wielu plikach na dysku twardym.