Jak zeswatać xcopy z shadow copy

Z racji, iż jestem wielkim zwolennikiem systemów w wersji Core to opiszę problem z jakim się ostatnio spotkałem. Wyobraźmy sobie sytuację – serwer Windows 2008 Core z działającą rolą Hyper-V. Chcemy sklonować do testów jedną z maszyn wirtualnych, niemniej nie posiadamy żadnych specjalistycznych narzędzi do tego celu, a tym bardziej już SCVMM.
Jak w takim razie przeprowadzić taką operację ?? Najprościej by było wyeksportować konfigurację wirtualnej maszyny oraz skopiować pliki z dyskami VHD. Niemniej rodzi się tu drobny problem, gdyż maszyna wciąż pracuje, pliki są używane, a polecenie linii komend xcopy samoistnie nie skorzysta z usługi Volume Shadow Copy.
Na ratunek przychodzi nam narzędzie diskshadow pozwalające na ręczną konfigurację Shadow Copy. Zanim jednak przystąpimy do konfiguracji musimy się upewnić czy odpowiednie usługi (VSS oraz SWPRV) nie są przypadkiem wyłączone. Możemy to sprawdzić zdalnie w konsoli services.msc.
Sprawdzamy również czy dostępny jest odpowiedni dostawca:

vssadmin list providers

oraz czy jest dostępny moduł zapisujący Hyper-V VSS Writer:

vssadmin list writers

Następnie najlepiej sobie uruchomić nową konsolę specjalnie do celów aplikacji diskshadow:

start cmd

I w niej:

diskshadow

Zanim uruchomimy shadow copy musimy ustawić kilka parametrów. Mianowicie konfigurujemy jak ma się zachować shadow copy po zamknięciu diskshadow:

set context <parametr>
set context persistent

Przydatne parametry:
persistent
– nie usuwaj po zamknięciu diskshadow
volatile – usuń po zamknięciu diskshadow

Dodajemy alias do woluminu, dla którego ma być włączony shadow copy:

add volume <wolumin>: alias <MojAlias>
add volume D: alias MyVolume

Włączamy wyświetlanie dodatkowych informacji:

set verbose {on|off}
set verbose on

Dla tak ustawionej konfiguracji uruchamiamy proces tworzenia shadow copy:

create

Następnym krokiem jest „podmontowanie” shadow copy np. do aktualnie wolnej litery dysku:

Expose %<MojAlias>% <ID, wolna litera dysku:, udział sieciowy lub punkt montowania>
Expose %MyVolume% V:

Nie jest wskazane zamykanie diskshadow, co prawda dzięki zastosowaniu parametru persistent, shadow copy będzie nadal działać, niemniej zostaną usunięte wcześniej stworzone aliasy, co może przysporzyć nieco problemów przy usuwaniu shadow copy. Dlatego dzięki celowemu uruchomieniu diskshadow w nowej konsoli, możemy teraz zauważyć pojawienie się nowego woluminu shadow copy. Jest to wolumin będący migawką wskazanego przez nas dysku z używanymi danymi. Możemy wykonywać na nim dowolne operacje tylko do odczytu, tak jak na normalnym woluminie jak np. xcopy. 

Możliwe jest również wywołanie wcześniej spreparowanego skryptu cmd lub bat bezpośrednio z poziomu diskshadow:

exec <lokalizacja skryptu.cmd>

Gdy już zakończyliśmy operacje kopiowania powinniśmy „odmontować” wolumin shadow copy:

unexpose <element gdzie podmontowaliśmy shadow copy>
unexpose V:

I następnie go usunąć:

delete shadows id %<MojAlias>%
delete shadows id %MyVolume%

Lub gdy straciliśmy aliasy możemy usunąć shadow copy dzięki wskazaniu na odpowiednie ID:

delete shadows id {ID}

Aby sprawdzić ID odpowiedniego shadow copy można użyć polecenia wylistowania:

list shadows all

Oczywiście cały powyższy proces możemy zautomatyzować przy pomocy skryptu w pliku tekstowym, który uruchamiamy następującą metodą:

diskshadow -s <lokalizacja scryptu.txt>

źródła:
http://technet.microsoft.com/pl-pl/library/cc772172(WS.10).aspx

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s