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

13

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 de 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 lors de sa traversée de \ 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 ..)

Dale Mahalko
la source
5
À quoi vous attendiez-vous avec le /MIRcommutateur qui est MIRror a directory tree (equivalent to /E plus /PURGE/PURGE :: delete dest files/dirs that no longer exist in source? "Miroir" signifie faire de la destination une copie de la source. Robocopy est puissant ... et bien sûr, nous savons ce que cela signifie: avec une grande puissance vient une grande responsabilité!
davidbak
"\ System Volume Information" est normalement inaccessible et tous les programmes sont normalement bloqués pour y accéder. Il ne devrait y avoir aucun moyen pour que Robocopy puisse y accéder même lorsqu'il est exécuté à partir d'une invite de commandes administrateur. Essayons d'y accéder manuellement sur ce même serveur 2016: Démarrer -> Invite de commandes -> Exécuter en tant qu'administrateur. CD \ Informations sur le volume du système. L'accès est refusé.
Dale Mahalko
C'est vrai. J'aurais également dû souligner que vous avez utilisé /ZB :: use restartable mode; if access denied use Backup modeoù le mode Sauvegarde défait la plupart des autorisations afin de pouvoir lire des fichiers "normalement" illisibles afin de faire des sauvegardes complètes. C'était donc la combinaison de /Bet /MIRqui vous a fait entrer. Robocopy est puissant ... comme je l'ai mentionné ci-dessus ...
davidbak
Suivi de l'excellente réponse de Greg - si vous avez le choix, laissez la déduplication désactivée jusqu'à ce que vous ayez terminé la migration.
Tim Brigham

Réponses:

16

Le System Volume Informationré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.

Greg Askew
la source
5

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

/ 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: /MIRsupprimera (comme indiqué lors de l'exécutionrobocopy sans arguments) et le "mode de sauvegarde" défait la plupart des autorisations afin de pouvoir lire les fichiers "normalement" illisibles afin de faire des sauvegardes complètes.

Le "mode de sauvegarde" n'est notamment pas défini dans la description "aide". Vous devez savoir que l' CreateFileAPI Windows 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 accordé 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 à l'époque, 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

davidbak
la source
1
BTW il n'y a rien de dangereux (AFAIK) à propos du /Z"mode redémarrable". C'est Bça qui pose problème ...
davidbak
Les comptes de domaine du serveur de fichiers, avec leur propriétaire séparé et les données de sécurité sur chaque répertoire de compte, peuvent-ils être entièrement et complètement copiés (/ COPYALL ou / COPY: DATSOU) en utilisant le compte administrateur, sans utiliser / B?
Dale Mahalko
@DaleMahalko - TBH Je ne sais pas. Bien que je programme Windows depuis quelques décennies, il y a des aspects que j'évite, et donc je n'en connais que suffisamment sur la sécurité Windows pour me protéger si nécessaire ... Je suis le genre de gars qui est toujours connecté en tant que membre de l'administrateur, j'entre dans la stratégie de groupe et rend tout totalement inapplicable, etc. Peut-être que quelqu'un d'autre le sait?
davidbak
1

Voici les résultats du suivi en utilisant les autres réponses fournies et les tests avec une destination dédupliquée. ( Meta: Je ne sais pas si je devrais inclure cela 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 - Mettre en miroir la source vers la destination et supprimer les fichiers et répertoires de la destination, s'ils ne sont plus présents sur la source
  • / COPYALL - Copiez toutes les informations du fichier: 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 - Copier les 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: fichiers de mémoire virtuelle et 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

Rapport de duplication

,

De plus, 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 site Web Windows IT Pro Center :

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

Dale Mahalko
la source
/MT:128semble assez élevé; avez-vous découvert qu'il était vraiment efficace de le fixer à un niveau aussi élevé (et non contre-productif de dépasser une valeur inférieure)?
davidbak
1
PS J'adore travailler sur la ligne de commande. Imaginez la méchante boîte de dialogue à onglets que vous devrez parcourir lentement pour accéder à cette fonctionnalité précise. Et aucune de ces interfaces utilisateur ne dispose d'un mode "enregistrer", vous devrez donc le faire à chaque fois!
davidbak
Je ne sais pas pourquoi ils prennent la peine d'exposer le contrôle de threading à l'utilisateur final. En fin de compte, il absorbe 1,5 To de données en une minute sans aucun changement, donc quel que soit l '"impact" en utilisant le nombre maximal de threads, cela ne semble pas avoir d'importance. Cette performance est tout à fait acceptable pour moi.
Dale Mahalko
@DaleMahalko - J'ai personnellement trouvé utile de pouvoir contrôler le nombre maximal de threads. Si j'ai 10 fichiers à copier où chacun prend quelques heures, le réglage MT: 2 me permet d'avoir seulement 2 threads de copie de fichiers à activer à la fois. Sur une infrastructure peu fiable ou complexe où des interruptions se produisent, MT: 2 garantira que seules 2 copies de fichiers seront abandonnées au lieu de 10 si j'avais MT: 10 (tous les fichiers copiant en même temps). Dans ce cas, si une interruption se produit sur les 2 derniers fichiers sur 10, seuls ceux-ci devront être redémarrés (8 autres étant déjà copiés) plutôt que tous.
Rod
Cela fait maintenant longtemps que je n'ai pas utilisé Robocopy pour la dernière fois, mais je semble me rappeler qu'un nombre limité de threads ne saturent pas la liaison réseau entre deux serveurs, mais plus de threads le font. Et cela devrait vraiment être l'objectif. Il n'est pas utile de spécifier le nombre maximal de threads, mais "ajoutez lentement plus de threads de copie jusqu'à ce que la bande passante X soit franchie, et si au-dessus du seuil, n'ajoutez pas plus de threads à la fin des copies" est en fait utile et répondrait à nos deux besoins.
Dale Mahalko
0

je pense que vous ne savez pas ce que c'est 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

ANTROGOR
la source
2
Je ne suis pas sûr que ce soit une réponse claire à la question. Comment cette réponse est-elle liée au problème de déduplication?
Todd Wilcox