Usługa kopiowania woluminów w tle (Volume Shadow Copy Service, VSS) firmy Microsoft to podstawowy mechanizm umożliwiający aplikacjom do tworzenia kopii zapasowych wykonywanie migawek zablokowanych, używanych plików (takich jak aktywne bazy danych SQL czy gałęzie Rejestru) w określonym punkcie w czasie.
Choć podstawowa architektura StateWarden opiera się na naszym autorskim silniku CBT działającym na poziomie bloków, niektóre starsze środowiska lub konkretne scenariusze awaryjne nadal korzystają z VSS. Gdy VSS zawodzi, kopia zapasowa również zawodzi.
Oto jak zdiagnozować i rozwiązać najczęstsze błędy architektury VSS na maszynach z systemem Windows.
1. Objawy awarii VSS
Jeśli agent StateWarden napotka błąd VSS, zadanie kopii zapasowej zostanie przerwane, a panel wyświetli błąd SNAPSHOT_FAILED.
W logach agenta na dotkniętej maszynie (C:\ProgramData\StateWarden\logs\) zazwyczaj znajdziesz błędy podobne do:
VSS Error: VSS_E_WRITERERROR_RETRYABLE (0x800423f3)Failed to CoCreateInstance for IVssBackupComponentsClass Not Registered (0x80040154)
2. Podstawowe kroki diagnostyczne
VSS to złożona maszyna stanów na poziomie systemu operacyjnego. Często zawiesza się, gdy oprogramowanie innych firm zachowuje się nieprawidłowo lub gdy systemowi brakuje zasobów.
Kontrola 1: Stan modułów zapisujących VSS
VSS polega na „modułach zapisujących" (writers) - niewielkich wtyczkach dostarczanych przez aplikacje takie jak SQL Server, Exchange lub sam system operacyjny - które chwilowo zamrażają dane. Jeśli choć jeden moduł zapisujący jest w stanie błędu, cały proces tworzenia migawki zostanie przerwany.
- Otwórz wiersz polecenia z podniesionymi uprawnieniami (Uruchom jako administrator).
- Wykonaj polecenie:
vssadmin list writers - Przeanalizuj dane wyjściowe. Każdy moduł zapisujący powinien pokazywać
State: [1] StableorazLast error: No error. - Rozwiązanie: jeśli któryś moduł pokazuje stan taki jak
[8] Failedlub[9] Timed out, uruchom ponownie konkretną usługę systemu Windows skojarzoną z tym modułem (np. usługę „SQL Server VSS Writer") albo zrestartuj cały serwer, aby zresetować maszynę stanów VSS.
Kontrola 2: Stan dostawców VSS
Wiele aplikacji do tworzenia kopii zapasowych instaluje własnych „dostawców" (providers) VSS. Dostawcy ci często wchodzą ze sobą w konflikt.
- Wykonaj polecenie:
vssadmin list providers - Rozwiązanie: w idealnym przypadku powinien być widoczny wyłącznie
Microsoft Software Shadow Copy provider. Jeśli widzisz dostawców pozostałych po starszym oprogramowaniu do kopii zapasowych (np. po dawnych instalacjach Acronis lub Veeam), prawdopodobnie przechwytują oni i uszkadzają żądania utworzenia migawki. Musisz dokładnie odinstalować te starsze produkty i ponownie uruchomić system.
Kontrola 3: Wolne miejsce na woluminie magazynu kopii w tle
VSS potrzebuje fizycznego miejsca na dysku do przechowywania danych różnicowych (zmian wprowadzanych w plikach w czasie, gdy migawka jest aktywna). Jeśli dysk jest zapełniony w 99%, VSS ulegnie awarii bez wyraźnego komunikatu.
- Wykonaj polecenie:
vssadmin list shadowstorage - Rozwiązanie: upewnij się, że wolumin objęty kopią zapasową ma co najmniej 10-15% wolnego miejsca na potrzeby pamięci podręcznej kopii w tle. Możesz też ręcznie zwiększyć przydzielony limit magazynu kopii w tle za pomocą polecenia
vssadmin resize shadowstorage.
3. Błąd architektury „Class Not Registered"
Agent StateWarden uzyskuje dostęp do VSS przez interfejs COM vssapi.dll systemu Windows.
Jeśli w logach StateWarden występuje konkretnie błąd Class Not Registered (0x80040154), oznacza to, że podstawowe składniki COM usługi VSS są uszkodzone w rejestrze systemu operacyjnego hosta.
Rozwiązanie: Musisz ponownie zarejestrować biblioteki DLL usługi VSS. Otwórz wiersz polecenia z podniesionymi uprawnieniami i wykonaj kolejno poniższe polecenia, ignorując ewentualne niegroźne okna błędów:
cmdcd /d %windir%\system32 net stop vss net stop swprv regsvr32 /s ole32.dll regsvr32 /s oleaut32.dll regsvr32 /s vss_ps.dll vssvc /register regsvr32 /s /i swprv.dll regsvr32 /s /i eventcls.dll regsvr32 /s es.dll regsvr32 /s stdprov.dll regsvr32 /s vssui.dll regsvr32 /s msxml.dll regsvr32 /s msxml3.dll regsvr32 /s msxml4.dll net start vss net start swprv
Po wykonaniu tej procedury spróbuj uruchomić ręczną kopię zapasową z poziomu panelu StateWarden.
StateWarden: Resilience Engineered.