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 snapshot jest bezpośrednio zależny od ich zmienności po wykonaniu snapshotu. 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 snapshot katalogu może z punktu widzenia sięgającego do niego użytkownika wyglądać jak katalog, a snapshot 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 ze snapshotu. Oznacza to, że zazwyczaj nie wystarczy utworzenie snapshotu 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 Funkcjonalność snapshotów realizowana może być na kilku warstwach stosu związanego z zapisywaniem danych w pamięci masowej.