Apparentemente Robocopy non capisce la deduplicazione di Windows Server 2016. C'è un modo per farlo funzionare senza corrompere il volume?


13

Scenario:

  • Esecuzione di una migrazione del server dal vecchio Server 2008 R2 al nuovo Server 2016, seguendo questa Guida ai guasti del server: Migrazione del file server tramite Robocopy

  • Al termine di Robocopy, abilitare la deduplicazione su Server 2016 per il volume copiato, quindi utilizzare PowerShell per avviare la dedpolazione manualmente. Dopo molte ore completa e recupera circa il 25% dello spazio su disco.

  • Esegui di nuovo Robocopy per copiare tutto ciò che potrebbe essersi perso nella copia iniziale, come controllo finale del nuovo server.

.... ma Robocopy (eseguito da Server 2016) non capisce la deduplicazione e quindi procede quindi nel cestino del deposito di deduplicazione ..

-------------------------------------------------------------------------------
   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

[......]

L'ho interrotto pochi istanti dopo aver visto questa mosca nel registro e aver riconosciuto cosa stava succedendo. Ma il danno è già stato fatto, i dati sul nuovo server deduplicato sono stati immediatamente danneggiati da Robocopy mentre infuriava attraverso \ System Volume Information. La nuova partizione dell'unità server è stata formattata e ricopiata di nuovo da Server 2008.

Esiste un modo sicuro per utilizzare Robocopy in modo che non tocchi i dati del volume di deduplicazione?

Inoltre, ho una nuova preoccupazione ... se Robocopy è in grado di distruggere un volume deduplicato, cos'altro non è sicuro usare con un volume deduplicato, che vede attraverso di esso e può distruggere i dati sottostanti che dovrebbero essere accessibili solo dal server? (probabilmente dovrebbe essere una domanda separata ..)


5
Cosa ti aspettavi che succedesse con l' /MIRinterruttore che è MIRror a directory tree (equivalent to /E plus /PURGEdove /PURGE :: delete dest files/dirs that no longer exist in source? "Specchio" significa rendere la destinazione una copia della fonte. Robocopy è potente ... e ovviamente sappiamo cosa significa: da un grande potere derivano grandi responsabilità!
davidbak,

"\ Informazioni sul volume del sistema" è normalmente inaccessibile e tutti i programmi normalmente non possono accedervi. Non dovrebbe esserci alcun modo in cui Robocopy sia in grado di entrare anche se eseguito dal prompt dei comandi dell'amministratore. Proviamo ad accedervi manualmente sullo stesso Server 2016: Start -> Prompt dei comandi -> Esegui come amministratore. CD \ Informazioni sul volume del sistema. L'accesso è negato.
Dale Mahalko,

È vero. Avrei anche sottolineato che hai usato la /ZB :: use restartable mode; if access denied use Backup modemodalità di backup in cui la maggior parte delle autorizzazioni viene annullata per poter leggere i file "normalmente" illeggibili per eseguire backup completi. Quindi è stata la combinazione di /Be /MIRche ti ha coinvolto. Robocopy è potente ... come ho già detto ...
davidbak,

Seguendo la grande risposta di Greg, data la scelta, lascia la deduplicazione fino a quando non hai terminato la migrazione.
Tim Brigham,

Risposte:


16

La System Volume Informationdirectory dovrebbe essere esclusa usando l'opzione / XD. Probabilmente è una buona idea escludere altre directory nascoste / di sistema come $RECYCLE.BIN.


5

Due opzioni della riga di comando utilizzate portano a questo: /MIRe /ZB. Come robocopy /???descrive la documentazione ( ):

/ MIR :: MIRror un albero di directory (equivalente a / E plus / PURGE).
/ ZB :: usa la modalità riavviabile; se l'accesso è negato, utilizzare la modalità di backup.

È la combinazione che hai fatto: /MIReliminerà (come sottolineato quando si esegue robocopysenza argomenti) e "Modalità backup" sconfigge la maggior parte delle autorizzazioni per poter leggere i file "normalmente" illeggibili per eseguire backup completi.

La "modalità di backup" non è definita nella descrizione della "guida". Devi sapere che l' CreateFileAPI di Windows supporta un flag chiamato FILE_FLAG_BACKUP_SEMANTICS, che in combinazione con un determinato diritto di accesso SE_BACKUP_NAME(che viene assegnato al gruppo Amministratore per impostazione predefinita - anche il gruppo Operatori di backup, duh) bypassa la normale sicurezza dei file.

Non lo sapevi? Quindi potresti anche non sapere che originariamente robocopy non faceva parte di Windows: faceva parte di un supplemento chiamato "Windows Resource Kit" che veniva utilizzato principalmente dai programmatori e dagli amministratori di sistema hard nel corso della giornata, e sebbene è stato nonno nella distribuzione di Windows in Windows Server 2008 e non ha mai ricevuto alcuna attenzione - fatta eccezione per le opzioni di prestazioni aggiuntive, woot! In particolare, nessuna attenzione da parte dei gestori di programmi dedicati all'interfaccia utente o all'usabilità . Quindi è un po 'di potere grezzo che può essere usato - o fuorviato! - a tuo rischio.

(Una buona regola empirica: non usare le opzioni della riga di comando che non capisci davvero.)

Informazioni che potresti conoscere sull'accesso ai file "Modalità backup":

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


1
A proposito, non c'è nulla di pericoloso (AFAIK) nella /Z"modalità riavviabile". È quello Bche è problematico ...
davidbak,

Gli account di dominio del file server, con il loro proprietario separato e i dati di sicurezza su ciascuna directory dell'account, possono essere copiati completamente (/ COPYALL o / COPY: DATSOU) utilizzando l'account amministratore, senza utilizzare / B?
Dale Mahalko,

@DaleMahalko - TBH Non lo so. Anche se sto programmando Windows da un paio di decenni, ci sono aspetti che evito, e quindi conosco abbastanza bene la sicurezza di Windows da farmi incustodito quando necessario ... Sono il tipo di ragazzo che è sempre connesso come un membro dell'amministratore, vado in Criteri di gruppo e rendo tutto completamente non forzato, ecc. Forse qualcun altro lo sa?
davidbak,

1

Ecco i risultati del follow-up usando le altre risposte fornite e test con una destinazione deduplicata. ( Meta: non so se dovrei includerlo come modifica in fondo alla mia domanda originale. )

La riga di comando di Robocopy si è evoluta per assomigliare finalmente a questo:

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"

Opzioni e scopo:

  • / MIR: esegue il mirroring della sorgente sulla destinazione ed elimina i file e le directory sulla destinazione, se non sono più presenti sulla sorgente
  • / COPYALL - Copia tutte le informazioni sui file: dati, attributi e timestamp, ACL di sicurezza NTFS, informazioni sul proprietario, informazioni di controllo (non tutte incluse per impostazione predefinita)
  • / DCOPY: DAT - Copia tutte le informazioni sulla directory - dati, attributi, timestamp (il timestamp di creazione originale non viene copiato per impostazione predefinita; normalmente questo cambia alla data in cui è stato copiato da Robocopy)
  • / NP - Non visualizzare i progressi
  • / Z: utilizza la modalità riavviabile
  • / B - Copia i file in modalità Backup (non so se questo è necessario per le directory degli utenti in cui sono il proprietario esclusivo, escluso l'amministratore. Questa opzione distruggerà un volume di destinazione deduplicato senza escludere "Informazioni sul volume del sistema")
  • / J - Copia utilizzando I / O senza buffer (copia più veloce di file multi-gig di grandi dimensioni)
  • / SL: copia i collegamenti simbolici anziché la destinazione
  • / MT: 128 - Usa i thread della CPU massima (uso migliore di Ethernet da 10 gigabit e molti core della CPU)
  • / R: 1 - Se si verifica un errore di accesso al file, riprovare 1 volta
  • / W: 10 - Se si verifica un errore di accesso al file, attendere 10 secondi prima di riprovare
  • / LOG + - Registra l'output in un file di testo, aggiungi se il file di registro esiste già
  • / TEE - Stampa i risultati sullo schermo e nel file di registro
  • / XD: escludi le directory e tutto ciò che contiene. I nomi che contengono spazi devono essere racchiusi tra virgolette: "Riciclatore" "Riciclato" "$ Recycle.bin" "Informazioni sul volume del sistema"
  • / XF - Escludi file: memoria virtuale e file di ibernazione se presenti sull'origine: "pagefile.sys" "swapfile.sys" "hiberfil.sys"

Riesecuzione finale:

            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

Rapporto di deuplicazione

,

Inoltre, non conosco i canali corretti per segnalare bug a Microsoft, ma ho collegato a questa discussione alla fine della documentazione di deduplicazione di Microsoft, sul sito Web Windows IT Pro Center :

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


/MT:128sembra piuttosto alto; hai scoperto che era davvero efficace impostarlo così in alto (e non controproducente per superare un valore inferiore)?
davidbak,

1
PS Adoro lavorare dalla riga di comando. Immagina la brutta finestra di dialogo a schede che dovresti esaminare lentamente per arrivare a questa precisa funzionalità. E nessuna di queste interfacce utente ha una modalità "salva", quindi dovresti farlo ogni volta!
davidbak,

Non so perché si preoccupino di esporre il controllo del threading all'utente finale. Alla fine analizza 1,5 TB di dati in un minuto senza mostrare alcun cambiamento, quindi qualsiasi "impatto" con i thread max ha, sembra non avere importanza. Questa performance è abbastanza accettabile per me.
Dale Mahalko,

@DaleMahalko - Personalmente ho trovato utile poter controllare il numero massimo di thread. Se ho 10 file da copiare dove ognuno richiede alcune ore impostando MT: 2 mi permette di avere solo 2 thread di copia file per essere attivi alla volta. Su un'infrastruttura inaffidabile o complessa in cui si verificano interruzioni MT: 2 assicurerà che vengano interrotte solo 2 copie di file anziché 10 se avessi MT: 10 (copia di tutti i file contemporaneamente). In questo caso, se si verifica un'interruzione sugli ultimi 2 file su 10, sarà necessario riavviare solo quelli (ne hanno già copiati altri 8) anziché tutti.
Rod,

Ormai è passato molto tempo dall'ultima volta che ho usato Robocopy, ma mi sembra di ricordare che un numero limitato di thread non saturi il collegamento di rete tra due server, ma più thread lo fanno. E questo dovrebbe davvero essere al centro. Specificare il numero massimo di thread non è utile, ma "aggiungere lentamente più thread di copia fino a quando la larghezza di banda X non viene attraversata, e se sopra la soglia, non aggiungere più thread al termine delle copie" è effettivamente utile e soddisferebbe entrambe le nostre esigenze.
Dale Mahalko,

0

penso che non sai cosa sia robocopy / Robocopy - è un robusto comando di copia di file per la riga di comando di Windows che ti consente di copiare file, directory e persino unità da una posizione a un'altra. Se vuoi maggiori informazioni consulta questo articolo https://rocketfiles.com/articles/what-is-robocopy-in-windows


2
Non sono sicuro che questa sia una risposta chiara alla domanda. In che modo questa risposta è correlata al problema della deduplicazione?
Todd Wilcox,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.