Błąd podczas używania usługi kopiowania woluminów w tle? VSS nie działa? Podczas wywoływania przystawki VSS pojawia się komunikat błędu: Error 0x80042304: The volume shadow copy provider is not registered in the system. A może wykonanie migawki volumenu nie działa?
Narzędzie konsolowe vssadmin wyświetla jednak listę dostawców VSS? Sprawdźmy jak sobie poradzić z takim problemem na przykładzie środowiska Windows Server 2019.
Usługa kopiowania voluminów w tle została wprowadzona do systemów rodziny Windows już w wersji Windows Server 2003. Funkcja VSS pozwala systemowi operacyjnemu oraz innym aplikacją na wykonywanie snapshoota/migawki volumenu z określonego w punktu w czasie. Kopie w tle to kopie wykonywane na poziomie bloków volumenu (przechowują tylko zmienione bity danych), dzięki temu pozwalają na zaoszczędzenie powierzchni dyskowej? Gdzie są zapisywane? Na tym samym dysku – konfigurując usługę wyznaczamy procent przestrzeni jaki chcemy przekazać na użycie VSS, Zazwyczaj nie więcej niż 30% wolnej przestrzeni. Kopie VSS zazywaczaj używane są do przechowywania danych użytkowników (profile, czy udostępnione pliki), używa jej też Microsoft SQL Server a najczęściej używane są przez wszelkiego rodzaju aplikacje tworzące kopie zapasowe czy hypervisory.
W naszym przykładzie administrator nie może skonfigurować Volume Shadow Copy ze względu na pojawiający się błąd podczas wywoływania samej przystawki VSS:
Zacznijmy od weryfikacji samej usługi – czy nie jesto ona czasem wyłączona, otwórzmy przystawkę services.msc
Usługa VSS jest włączona i w naszym wypadku działa. Sprawdźmy więc listę zarejestrowanych dostawców usługi używając wbudowanego narzędzia konsolowego vssadmin. Otwórzmy wiersz poleceń i sprawdźmy jakie komendy możemy wydać:
Lista poleceń narzędzia nie jest długa, my użyjemy polecenia:
vssadmin list providers
Zatem komunikat błędu 0x80042304 raczej nam nie pomógł – usługa ma zarejestrowanych dostawców, sprawdźmy jeszcze listę zarejestrowanych narzędzi które mają zapisywać kopie VSS:
vssadmin list writers
Zależnie od systemu lista może być dość długa (np jeżeli mamy zainstalowanego MS SQL czy narzędzie do backupu). Nas jednak interesuje aby pozycje istniały, a każda z nich miała State: [ 1] Stable ani nie wykazywała błedów Last error: No error.
W naszym wypadu nie wiemy nic więcej, wszystkie writery również działają poprawnie.
Zweryfikujmy jak wygląda sytuacja na innej maszynie, na takiej na której nie ma błedu VSS.
Zacznijmy od wylistowania zrejestrowanych dostawców usługi. Bingo! Zamiast trzech pojawiły się aż cztery zatem jednego nam brakuje a mianowicie:
Dobrze ale gdzie znajdują się providery w systemie? Wszystkie dostępne dla systemu są zapisywane rejestrze a dokładnie w kluczu:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Providers\
Spróbujmy weeksportować brakującą pozycje z działającego środowiska i dodać ją do maszyny która jej nie ma:
Plik z eksportem zapisujemy z dowolną nazwą, ważne aby posiadał rozszerzenie .reg, sprawdźmy jeszcze jego zawartość przed kopiowaniem:
Nasz plik vss.reg kopiujemy na maszyne docelową (tą która wskazuje błąd i nie posiada akurat tego provider’a), następnie dodajmy wpis do rejestru:
Otwórzmy edytor rejestru, sprawdźmy czy wpis został poprawnie dodany:
Musimy jeszcze zrestartować nasze środowisko, a po ponownym zalogowaniu sprawdzić czy przystawka otwiera się poprawnie:
W ten prosty i sprawdzony sposób możemy ponownie używać VSS w naszym środowisku. Aplikacje backupu czy hypervisory nie będą zgłaszać błędów a my będziemy mieli bezpieczniejsze środowisko.