Najwyraźniej Robocopy nie rozumie deduplikacji systemu Windows Server 2016. Czy istnieje sposób, aby działał bez uszkadzania głośności?

13

Scenariusz:

  • Przeprowadzanie migracji serwera ze starego Server 2008 R2 na nowy Server 2016, zgodnie z tym przewodnikiem po błędzie serwera: Migracja serwera plików za pomocą Robocopy

  • Po zakończeniu Robocopy włącz deduplikację na serwerze 2016 dla skopiowanego woluminu, a następnie użyj programu PowerShell, aby ręcznie rozpocząć deduplikację. Po wielu godzinach uzupełnia i odzyskuje około 25% miejsca na dysku.

  • Uruchom ponownie Robocopy, aby skopiować wszystko, co mogło zostać pominięte w początkowej kopii, jako ostateczne sprawdzenie nowego serwera.

.... ale Robocopy (uruchamiany z serwera 2016) nie rozumie deduplikacji, więc zamiast tego przystępuje do niszczenia magazynu fragmentów deduplikacji ..

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Sunday, July 8, 2018 12:10:02 PM
   Source : \\SERVER-2008\e$\
     Dest : \\SERVER-2016\e$\

    Files : *.*

  Options : *.* /TEE /S /E /COPYALL /PURGE /MIR /ZB /NP /MT:32 /R:1 /W:10 

------------------------------------------------------------------------------

    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\
      *EXTRA File         253504    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.1
      *EXTRA File         253504    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.2
      *EXTRA File             28    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\stamp.dat
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\
    *EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\
      *EXTRA File         196608    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000046.00.RB
      *EXTRA File         106496    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000048.00.RB

[.......]

*EXTRA File           30.3 m    \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\Stream\000f0000.00000002.ccc
*EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\
  *EXTRA File         29.7 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\00000001.kmchange.log
  *EXTRA File        999.8 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.10.archive.etl
  *EXTRA File       1000.0 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.11.archive.etl
  *EXTRA File        735.5 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.12.archive.etl
  *EXTRA File        999.8 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.9.archive.etl
  *EXTRA File          1.3 m    \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.2.1.archive.etl
*EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\
  *EXTRA File             76    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.00.cfg
  *EXTRA File             76    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.01.cfg
  *EXTRA File           2228    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.01.xml
  *EXTRA File           2228    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.02.xml
  *EXTRA File              0    \\SERVER-2016\e$\System Volume Information\Dedup\Settings\VolumeJobLock.bin
*EXTRA Dir        -1    \\SERVER-2016\e$\System Volume Information\Dedup\State\
  *EXTRA File           2982    \\SERVER-2016\e$\System Volume Information\Dedup\State\chunkStoreStatistics.xml
  *EXTRA File           2592    \\SERVER-2016\e$\System Volume Information\Dedup\State\dedupStatistics.xml
  *EXTRA File         11.5 m    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceBitmap.tmp
  *EXTRA File          1.0 g    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceContainer.ccc
  *EXTRA File         46.0 m    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceDeleteLogs.tmp
  *EXTRA File          1.0 m    \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceFileList.tmp
  *EXTRA File           4096    \\SERVER-2016\e$\System Volume Information\Dedup\State\GroupCommitFlushControl0.bin
  *EXTRA File           2066    \\SERVER-2016\e$\System Volume Information\Dedup\State\optimizationState.xml

[......]

Przerwałem to chwilę po tym, jak zobaczyłem tego latającego w dzienniku i rozpoznałem, co się dzieje. Ale szkody już zostały wyrządzone, dane na zduplikowanym nowym serwerze zostały natychmiast uszkodzone przez Robocopy, gdy szturmował \ System Volume Information. Nowa partycja dysku serwera została sformatowana i ponownie utworzona ponownie od wersji Server 2008.

Czy istnieje bezpieczny sposób korzystania z Robocopy, aby nie dotykał danych woluminu deduplikacji?

Mam też nowe obawy ... jeśli Robocopy może zniszczyć deduplikowany wolumin, czego jeszcze nie można bezpiecznie używać z deduplikowanym woluminem, który przejrzy go i może zniszczyć podstawowe dane, które powinny być dostępne tylko dla serwera? (prawdopodobnie powinno być osobnym pytaniem ..)

Dale Mahalko
źródło
5
Czego się spodziewałeś z /MIRprzełącznikiem, który jest MIRror a directory tree (equivalent to /E plus /PURGEgdzie /PURGE :: delete dest files/dirs that no longer exist in source? „Mirror” oznacza, że ​​miejsce docelowe jest kopią źródła. Robocopy jest potężny ... i oczywiście wiemy, co to znaczy: z wielką mocą wiąże się wielka odpowiedzialność!
davidbak
„\ Informacje o woluminie systemowym” jest zwykle niedostępne, a wszystkie programy są zwykle blokowane przed dostępem do niego. Nie powinno być żadnego sposobu, aby Robocopy mógł się tam dostać, nawet gdy jest uruchamiany z wiersza polecenia administratora. Spróbujmy uzyskać dostęp do niego ręcznie na tym samym serwerze 2016: Start -> Wiersz polecenia -> Uruchom jako administrator. CD \ System Volume Information. Odmowa dostępu.
Dale Mahalko,
To prawda. Powinienem również zauważyć, że /ZB :: use restartable mode; if access denied use Backup modeużywałeś, gdy tryb Kopia zapasowa pokonuje większość uprawnień, aby móc czytać pliki „normalnie” nieczytelne w celu tworzenia pełnych kopii zapasowych. Więc to była kombinacja od /Bi /MIRże prawda w Robocopy jest potężny ... jak wspomniałem powyżej ....
davidbak
Kontynuując wspaniałą odpowiedź Grega - biorąc pod uwagę wybór, porzuć deduplikację, dopóki nie zakończysz migracji.
Tim Brigham

Odpowiedzi:

16

System Volume InformationKatalogu powinny być wyłączone za pomocą przełącznika / xD. Prawdopodobnie dobrym pomysłem jest wykluczenie innych ukrytych / systemowych katalogów, takich jak $RECYCLE.BIN.

Greg Askew
źródło
5

Prowadzą do tego dwa przełączniki wiersza poleceń: /MIRi /ZB. Jak robocopy /???opisuje dokumentacja ( ):

/ MIR :: MIRror drzewo katalogów (równoważne / E plus / PURGE).
/ ZB :: użyj trybu restartowalnego; w przypadku odmowy dostępu użyj trybu Kopia zapasowa.

Jest to kombinacja, w której zostałeś: /MIRusunie się (jak wskazano, gdy uruchamiasz robocopybez argumentów), a „Tryb kopii zapasowej” pokona większość uprawnień, aby móc odczytać pliki „normalnie” nieczytelne w celu wykonania pełnych kopii zapasowych.

„Tryb tworzenia kopii zapasowych” jest wyraźnie niezdefiniowany w opisie „pomocy”. Musisz wiedzieć, że Windows CreateFileAPI obsługuje flagę o nazwie FILE_FLAG_BACKUP_SEMANTICS, która w połączeniu z pewnym prawem dostępu SE_BACKUP_NAME(które jest domyślnie przyznane grupie Administratora - także grupie Operatorów kopii zapasowych, duh) omija normalne bezpieczeństwo plików.

Nie wiedziałeś tego? Wtedy możesz również nie wiedzieć, że robocopy nie była początkowo częścią systemu Windows - była to część dodatku o nazwie „Windows Resource Kit”, który był używany głównie przez programistów i hardkorowych administratorów w przeszłości, i chociaż został wprowadzony do dystrybucji Windows w systemie Windows Server 2008 i nigdy nie otrzymał żadnej uwagi - poza dodatkowymi opcjami wydajności, woot! W szczególności brak uwagi ze strony menedżerów programów poświęconych interfejsowi użytkownika lub użyteczności . Więc jest to surowa moc, którą można wykorzystać - lub wprowadzić w błąd! - na własne ryzyko.

(Dobra zasada: nie używaj opcji wiersza poleceń, których tak naprawdę nie rozumiesz.)

Informacje, które możesz chcieć wiedzieć o dostępie do plików w trybie kopii zapasowej:

https://isc.sans.edu/forums/diary/Use+The+Privilege/20483/

https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea

https://docs.microsoft.com/en-us/windows/desktop/FileIO/file-security-and-access-rights

Davidbak
źródło
1
BTW nie ma nic niebezpiecznego (AFAIK) w /Z„trybie restartu”. To jest Bproblematyczne ...
davidbak,
Czy konta domeny serwera plików, wraz z oddzielnymi danymi właściciela i bezpieczeństwa w każdym katalogu kont, mogą być w pełni i całkowicie kopiowane (/ COPYALL lub / COPY: DATSOU) przy użyciu konta administratora, bez użycia / B?
Dale Mahalko,
@DaleMahalko - TBH Nie wiem. Chociaż programuję system Windows od kilku dziesięcioleci, mam pewne aspekty, których unikam, więc wiem tylko tyle o zabezpieczeniach systemu Windows, że w razie potrzeby mogę się uwolnić ... Jestem typem faceta, który zawsze jest zalogowany jako członek Administratora, wchodzę w Zasady Grupy i czynię wszystko całkowicie niewymuszonym itp. Może ktoś inny wie?
davidbak
1

Oto wyniki dalszych badań z wykorzystaniem innych podanych odpowiedzi i testowania z deduplikowanym miejscem docelowym. ( Meta: Nie wiem, czy powinienem dołączyć to jako edycję na dole mojego pierwotnego pytania. )

Linia poleceń Robocopy ewoluowała, aby w końcu wyglądać tak:

robocopy \\OLD-SERVER\e$\ \\NEW-SERVER\e$\ /MIR /COPYALL /DCOPY:DAT /NP /Z /B /J /SL /MT:128 /R:1 /W:10 /LOG+:robocopy-log.txt /TEE /XD "Recycler" "Recycled" "$Recycle.bin" "System Volume Information" /XF "pagefile.sys" "swapfile.sys" "hiberfil.sys"

Opcje i cel:

  • / MIR - Wykonaj kopię lustrzaną źródła do miejsca docelowego oraz usuń pliki i katalogi w miejscu docelowym, jeśli nie są już obecne w źródle
  • / COPYALL - Skopiuj wszystkie informacje o pliku: dane, atrybuty i znaczniki czasu, listy ACL zabezpieczeń NTFS, informacje o właścicielu, informacje o inspekcji (nie wszystkie są domyślnie uwzględnione)
  • / DCOPY: DAT - Skopiuj wszystkie informacje o katalogu - dane, atrybuty, znaczniki czasu (znacznik czasu oryginalnego tworzenia nie jest domyślnie kopiowany; zwykle zmienia się na datę skopiowania przez Robocopy)
  • / NP - Nie wyświetlaj postępu
  • / Z - Użyj trybu ponownego uruchamiania
  • / B - Kopiuj pliki w trybie kopii zapasowej (nie wiem, czy jest to potrzebne w przypadku katalogów użytkowników, w których są wyłącznym właścicielem, wyłączając administratora. Ta opcja zniszczy deduplikowany wolumin docelowy bez wykluczenia „Informacji o woluminie systemowym”)
  • / J - Kopiuj przy użyciu niebuforowanych operacji we / wy (szybsza kopia dużych plików z wieloma koncertami)
  • / SL - Kopiuj dowiązania symboliczne zamiast celu
  • / MT: 128 - Użyj maksymalnej liczby wątków procesora (lepsze wykorzystanie 10 gigabitowego Ethernetu i wielu rdzeni procesora)
  • / R: 1 - Jeśli błąd dostępu do pliku, spróbuj ponownie 1 raz
  • / W: 10 - Jeśli wystąpi błąd dostępu do pliku, poczekaj 10 sekund przed ponowną próbą
  • / LOG + - Zaloguj dane wyjściowe do pliku tekstowego, dołącz, jeśli plik dziennika już istnieje
  • / TEE - Wydrukuj wyniki na ekranie i do pliku dziennika
  • / XD - wyklucz katalogi i wszystko w nich zawarte. Nazwy ze spacjami muszą być ujęte w cudzysłów: „Recycler” „Recycled” „$ Recycle.bin” „System Volume Information”
  • / XF - Wyklucz pliki: pamięć wirtualna i pliki hibernacji, jeśli są one obecne w źródle: „pagefile.sys” „swapfile.sys” „hiberfil.sys”

Ostateczne ponowne uruchomienie:

            Total    Copied   Skipped  Mismatch    FAILED    Extras 
 Dirs :    158189    153466    158186         0         0         0
Files :   1116292         0   1116296         0         0         0
Bytes :   1.350 t         0   1.350 t         0         0         0
Times :   0:01:04   0:00:00                       0:00:00   0:01:04

Raport o deuplikacji

,

Ponadto nie znam odpowiednich kanałów zgłaszania błędów do firmy Microsoft, ale odsyłam do tej dyskusji na dole dokumentacji deduplikacji firmy Microsoft w witrynie Windows IT Pro Center :

https://docs.microsoft.com/en-us/windows-server/storage/data-deduplication/overview

Dale Mahalko
źródło
/MT:128wydaje się raczej wysoki; czy odkryłeś, że naprawdę skuteczne było ustawienie go tak wysoko (i nie przyniosło efektu przeciwnego do zamierzonego, aby przekroczyć niższą wartość)?
davidbak
1
PS Uwielbiam pracować w wierszu poleceń. Wyobraź sobie nieprzyjemne okno dialogowe z kartami, przez które trzeba będzie powoli pracować, aby uzyskać tę precyzyjną funkcjonalność. I żaden z tych interfejsów użytkownika nie ma trybu „zapisywania”, więc musisz to robić za każdym razem!
davidbak
Nie wiem, dlaczego zadają sobie trud ujawnienia kontroli wątków użytkownikowi końcowemu. W końcu przeszukuje 1,5 TB danych w ciągu jednej minuty, nie wykazując żadnych zmian, więc jakikolwiek „wpływ” przy użyciu maksymalnej liczby wątków wydaje się nie mieć znaczenia. Ten występ jest dla mnie całkiem do zaakceptowania.
Dale Mahalko,
@DaleMahalko - Osobiście uważam, że użyteczne jest kontrolowanie maksymalnej liczby wątków. Jeśli mam 10 plików do skopiowania, z których każdy zajmuje kilka godzin, ustawienie MT: 2 pozwala mi mieć tylko 2 wątki kopiowania plików jednocześnie. Na niewiarygodnej lub złożonej infrastrukturze, w której występują przerwy, MT: 2 zapewni, że tylko 2 kopie plików zostaną przerwane, a nie 10, gdybym miał MT: 10 (wszystkie pliki kopiowane w tym samym czasie). W takim przypadku, jeśli wystąpi przerwa na ostatnich 2 plikach z 10, tylko te będą musiały zostać zrestartowane (z innymi 8 już skopiowanymi), a nie wszystkie.
Rod
Minęło sporo czasu, odkąd ostatnio używałem Robocopy, ale pamiętam, że ograniczona liczba wątków nie nasyca łącza sieciowego między dwoma serwerami, ale robi to więcej wątków. I to naprawdę powinno być najważniejsze. Określanie maksymalnej liczby wątków jest nieprzydatne, ale „powoli dodawaj więcej wątków kopiowania aż do przekroczenia przepustowości X, a jeśli przekroczysz próg, nie dodawaj więcej wątków po zakończeniu kopiowania” jest w rzeczywistości użyteczny i spełniałby obie nasze potrzeby.
Dale Mahalko,
0

myślę, że nie wiesz, co to jest robocopy / Robocopy - to solidne polecenie kopiowania plików dla wiersza poleceń systemu Windows, które pozwala kopiować pliki, katalogi, a nawet dyski z jednej lokalizacji do drugiej. Jeśli chcesz uzyskać więcej informacji, sprawdź ten artykuł https://rocketfiles.com/articles/what-is-robocopy-in-windows

ANTROGOR
źródło
2
Nie jestem pewien, czy jest to jednoznaczna odpowiedź na pytanie. Jak ta odpowiedź wiąże się z problemem deduplikacji?
Todd Wilcox