web-dev-qa-db-fra.com

Apparemment, Robocopy ne comprend pas la déduplication Windows Server 2016. Existe-t-il un moyen de le faire fonctionner sans corrompre le volume?

Scénario:

  • Faire une migration de serveur de l'ancien Server 2008 R2 vers le nouveau Server 2016, en suivant ce guide de panne de serveur: Migration du serveur de fichiers à l'aide de Robocopy

  • Une fois Robocopy terminé, activez la déduplication sur Server 2016 pour le volume copié, puis utilisez PowerShell pour démarrer la déduplication manuellement. Après plusieurs heures, il se termine et récupère environ 25% de l'espace disque.

  • Exécutez à nouveau Robocopy pour copier tout ce qui peut avoir été manqué dans la copie initiale, comme vérification finale du nouveau serveur.

.... mais Robocopy (exécuté à partir de Server 2016) ne comprend pas la déduplication et procède donc à la place à la corbeille du chunkstore de déduplication ..

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

[......]

Je l'ai avorté quelques instants après avoir vu ce vol dans le journal et reconnu ce qui se passait. Mais le dommage est déjà fait, les données sur le nouveau serveur dédupliqué ont été instantanément corrompues par Robocopy alors qu'il se précipitait sur\System Volume Information. La nouvelle partition de lecteur de serveur a été formatée et recopiée à nouveau à partir de Server 2008.

Existe-t-il un moyen sûr d'utiliser Robocopy pour qu'il ne touche pas les données du volume de déduplication?

De plus, j'ai une nouvelle préoccupation ... si Robocopy peut détruire un volume dédupliqué, quoi d'autre n'est pas sûr à utiliser avec un volume dédupliqué, qui voit à travers et peut détruire les données sous-jacentes qui ne devraient être accessibles que par le serveur? (devrait probablement être une question distincte ..)

13
Dale Mahalko

Le System Volume Information le répertoire doit être exclu à l'aide du commutateur/XD. Probablement une bonne idée d'exclure d'autres répertoires cachés/système tels que $RECYCLE.BIN.

16
Greg Askew

Deux commutateurs de ligne de commande qui ont été utilisés conduisent à ceci: /MIR et /ZB. Comme la documentation (robocopy /???) décrit:

/ MIR :: MIRror une arborescence de répertoires (équivalent à/E plus/PURGE).
/ZB :: utilise le mode redémarrable; si l'accès est refusé, utilisez le mode de sauvegarde.

C'est la combinaison qui vous a fait dans: /MIR supprimera (comme indiqué lorsque vous exécutez robocopy sans arguments) et le "Mode de sauvegarde" annule la plupart des autorisations afin de pouvoir lire les fichiers "normalement" illisibles afin de réaliser des sauvegardes complètes.

Le "mode de sauvegarde" n'est notamment pas défini dans la description "aide". Vous devez savoir que l'API Windows CreateFile prend en charge un indicateur appelé FILE_FLAG_BACKUP_SEMANTICS, qui en combinaison avec un certain droit d'accès SE_BACKUP_NAME (qui est donné au groupe Administrateur par défaut - également le groupe Opérateurs de sauvegarde, duh) contourne la sécurité normale des fichiers.

Tu ne le savais pas? Ensuite, vous ne savez peut-être pas non plus que robocopy ne faisait pas du tout partie de Windows à l'origine - il faisait partie d'un supplément appelé "Kit de ressources Windows" qui était utilisé principalement par les programmeurs et les administrateurs système durs dans la journée, et bien qu'il a été protégé dans la distribution Windows dans Windows Server 2008, il n'a jamais reçu d'attention - à l'exception des options de performances supplémentaires, woot! En particulier, aucune attention des gestionnaires de programme dédiés à l'interface utilisateur ou à la convivialité . C'est donc un peu d'énergie brute qui peut être utilisée - ou mal utilisée! - à vos risques et périls.

(Une bonne règle d'or: n'utilisez pas les options de ligne de commande que vous ne comprenez pas vraiment.)

Informations que vous aimeriez connaître sur l'accès aux fichiers en "mode de sauvegarde":

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

5
davidbak

Voici les résultats du suivi en utilisant les autres réponses fournies et les tests avec une destination dédupliquée. ( Méta: je ne sais pas si je devrais l'inclure en tant que modification au bas de ma question d'origine. )

La ligne de commande Robocopy a évolué pour finalement ressembler à ceci:

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"

Options et objectif:

  • / MIR - Miroir de la source vers la destination, et supprimez les fichiers et répertoires de la destination, s'ils ne sont plus présents sur la source
  • / COPYALL - Copiez toutes les informations sur les fichiers: données, attributs et horodatages, ACL de sécurité NTFS, informations sur le propriétaire, informations d'audit (toutes ne sont pas incluses par défaut)
  • / DCOPY: DAT - Copier toutes les informations du répertoire - données, attributs, horodatages (l'horodatage de création d'origine n'est pas copié par défaut; normalement, cela change la date à laquelle il a été copié par Robocopy)
  • / NP - Ne pas afficher la progression
  • / Z - Utiliser le mode redémarrable
  • / B - Copier des fichiers en mode sauvegarde (je ne sais pas si cela est nécessaire pour les répertoires utilisateur dont ils sont le propriétaire exclusif, à l'exclusion de l'administrateur. Cette option détruira un volume de destination dédupliqué sans exclure les "Informations sur le volume système")
  • / J - Copie à l'aide d'E/S sans tampon (copie plus rapide de gros fichiers multi-gig)
  • / SL - Copie des liens symboliques plutôt que la cible
  • / MT: 128 - Utilisez un maximum de threads CPU (meilleure utilisation de 10 gigabit Ethernet et de nombreux cœurs CPU)
  • / R: 1 - En cas d'erreur d'accès au fichier, réessayez 1 fois
  • / W: 10 - En cas d'erreur d'accès au fichier, attendez 10 secondes avant de réessayer
  • / LOG + - Enregistre la sortie dans un fichier texte, ajoute si le fichier journal existe déjà
  • / TEE - Imprimer les résultats à l'écran et dans le fichier journal
  • / XD - Exclut les répertoires et tout ce qu'ils contiennent. Les noms contenant des espaces doivent être placés entre guillemets: "Recycler" "Recycled" "$ Recycle.bin" "System Volume Information"
  • / XF - Exclure les fichiers: la mémoire virtuelle et les fichiers d'hibernation s'ils se trouvent sur la source: "pagefile.sys" "swapfile.sys" "hiberfil.sys"

Re-run final:

            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

Deuplication report

,

En outre, je ne connais pas les canaux appropriés pour signaler des bogues à Microsoft, mais j'ai lié à cette discussion au bas de la documentation de déduplication de Microsoft, sur leur Windows IT Pro Center site web:

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

1
Dale Mahalko

je pense que vous ne savez pas de quoi il s'agit robocopy/Robocopy - c'est une commande de copie de fichiers robuste pour la ligne de commande Windows qui vous permet de copier des fichiers, des répertoires et même des lecteurs d'un emplacement à un autre. Si vous souhaitez plus d'informations, consultez cet article https://rocketfiles.com/articles/what-is-robocopy-in-windows

0
ANTROGOR