13 votes

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 ?

Szenario:

  • Migration d'un serveur de l'ancien Server 2008 R2 vers le nouveau Server 2016, en suivant le guide Server Fault : Migration de serveurs 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 lancer la déduplication manuellement. Après plusieurs heures, elle se termine et récupère environ 25% de l'espace disque.

  • Exécutez à nouveau Robocopy pour copier tout ce qui a pu être oublié lors de la copie initiale, afin de procéder à une vérification finale du nouveau serveur.

....mais Robocopy (exécuté depuis Server 2016) ne comprend pas la déduplication et procède plutôt à la mise à la poubelle 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 interrompu quelques instants après avoir vu ce survol dans le journal et avoir compris ce qui se passait. Mais le mal est déjà fait, les données du nouveau serveur dédupliqué ont été instantanément corrompues par Robocopy lors de son passage en trombe \System Informations sur le volume. La nouvelle partition du lecteur du serveur doit être 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 aux données du volume de déduplication ?

De plus, j'ai une nouvelle préoccupation si Robocopy peut détruire un volume dédupliqué, qu'est-ce qui est dangereux d'utiliser avec un volume dédupliqué, qui voit à travers lui et peut détruire les données sous-jacentes qui ne devraient être accessibles que par le serveur ? (cela devrait probablement être une question distincte )

6 votes

Que pensiez-vous qu'il allait se passer avec le /MIR qui est MIRror a directory tree (equivalent to /E plus /PURGE donde /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 : De grands pouvoirs impliquent de grandes responsabilités !

0 votes

" \System Le "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 Robocopy d'y accéder, même lorsqu'il est exécuté depuis une invite de commande Administrateur. Essayons d'y accéder manuellement sur ce même serveur 2016 : Démarrer -> Invite de commande -> Exécuter en tant qu'administrateur. CD \System Informations sur le volume. L'accès est refusé.

0 votes

C'est vrai. J'aurais également dû souligner que vous avez utilisé /ZB :: use restartable mode; if access denied use Backup mode où le mode Sauvegarde défait la plupart des permissions afin de pouvoir lire des fichiers "normalement" illisibles afin de faire des sauvegardes complètes. C'était donc le combinaison de /B et /MIR qui t'a fait plonger. La photocopie est puissante... comme je l'ai dit plus haut...

18voto

Thecamelcoder Points 11

Le site System Volume Information doit être exclu en utilisant le commutateur /XD. C'est probablement une bonne idée d'exclure d'autres répertoires cachés/système tels que $RECYCLE.BIN .

8voto

Alex Cage Points 41

Deux commutateurs de ligne de commande utilisés ont conduit à cela : /MIR y /ZB . Comme la documentation ( robocopy /??? ) décrit :

/MIR : : MIRror un arbre de répertoire (équivalent à /E plus /PURGE).
/ZB : : utiliser le mode redémarrable ; si l'accès est refusé, utiliser le mode Backup.

C'est la combinaison qui t'a fait plonger : /MIR supprimera (comme indiqué lorsque vous exécutez robocopy sans arguments) et "Backup mode" défait la plupart des permissions afin de pouvoir lire des fichiers "normalement" illisibles afin d'effectuer des sauvegardes complètes.

"Mode de sauvegarde" est notamment non défini dans la description de l'"aide". Il faut savoir que le système Windows CreateFile API supporte un drapeau appelé FILE_FLAG_BACKUP_SEMANTICS qui, en combinaison avec un certain droit d'accès SE_BACKUP_NAME (qui est donné au groupe des administrateurs par défaut - également le groupe Backup Operators, duh) contourne la sécurité normale des fichiers.

Vous ne le saviez pas ? Alors 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é "Windows Resource Kit" qui était utilisé principalement par les programmeurs et les sysadmins purs et durs à l'époque, et bien qu'il ait été intégré à la distribution de Windows à partir de Windows Server 2008, il n'a jamais fait l'objet d'une quelconque attention - à l'exception d'options de performance supplémentaires, wouhou ! En particulier, aucune attention de la part des gestionnaires de programme consacrée à l'interface utilisateur ou à la convivialité . Il s'agit donc d'une puissance brute qui peut être utilisée - ou mal utilisée ! - à vos risques et périls.

(Une bonne règle de base : N'utilisez pas les options de la ligne de commande que vous ne comprenez pas vraiment).

Informations que vous aimeriez connaître sur l'accès aux fichiers en "mode 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

1 votes

BTW il n'y a rien de dangereux (AFAIK) à propos de /Z "mode redémarrable". C'est le B c'est problématique ...

0 votes

Les comptes de domaine de serveur de fichiers, avec leurs propriétaires et leurs données de sécurité distincts dans chaque répertoire de compte, peuvent-ils être copiés entièrement et complètement (/COPYALL ou /COPY:DATSOU) en utilisant le compte administrateur, sans utiliser /B ?

0 votes

@DaleMahalko - TBH Je ne sais pas. Bien que je programme sous Windows depuis une vingtaine d'années, il y a des aspects que j'évite, et je ne connais donc que suffisamment la sécurité de Windows pour me débarrasser de moi si nécessaire... Je suis le genre de gars qui se connecte toujours en tant que membre de l'administrateur, je vais dans la stratégie de groupe et je fais en sorte que tout ne soit pas forcé, etc. Peut-être que quelqu'un d'autre le sait ?

1voto

bron Points 497

Voici les résultats du suivi en utilisant les autres réponses fournies, et en testant avec une destination dédupliquée. ( Méta : Je ne sais pas si je dois inclure ceci comme une modification au bas de ma question originale. )

La ligne de commande de 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 - Créer un miroir de la source vers la destination, et supprimer les fichiers et les répertoires sur la destination, s'ils ne sont plus présents sur la source.
  • /COPYALL - Copie toutes les informations sur les fichiers : données, attributs et horodatages, ACLs de sécurité NTFS, informations sur le propriétaire, informations d'audit (pas toutes incluses par défaut).
  • /DCOPY:DAT - Copie toutes les informations du répertoire - données, attributs, horodatages (l'horodatage de la création originale n'est pas copié par défaut ; normalement, il est remplacé par la date à laquelle il a été copié par Robocopy).
  • /NP - Ne pas afficher la progression
  • /Z - Utiliser le mode redémarrable
  • /B - Copie les fichiers en mode Backup (je ne sais pas si cela est nécessaire pour les répertoires d'utilisateurs où ils sont le propriétaire exclusif, à l'exclusion de l'administrateur. Cette option détruira un volume de destination dédupliqué sans exclure "System Volume Information")
  • /J - Copie en utilisant des E/S non tamponnées (copie plus rapide de gros fichiers de plusieurs gigas)
  • /SL - Copie les liens symboliques plutôt que la cible
  • /MT:128 - Utiliser le maximum de threads du CPU (meilleure utilisation de l'Ethernet 10 gigabits et de nombreux cœurs de CPU)
  • /R:1 - Si erreur d'accès au fichier, réessayer 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, l'ajoute si le fichier journal existe déjà.
  • /TEE - Imprimer les résultats à l'écran et dans un fichier journal
  • /XD - Exclure les répertoires, et tout ce qu'ils contiennent. Les noms comportant des espaces doivent être mis entre guillemets : "Recycler" "Recyclé" "$Recycle.bin" "Informations sur le volume du système"
  • /XF - Exclure les fichiers : mémoire virtuelle et fichiers d'hibernation s'ils sont présents sur la source : "pagefile.sys" "swapfile.sys" "hiberfil.sys"

Répétition 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

Deuplication report

,

Par ailleurs, je ne connais pas les canaux appropriés pour signaler les bogues à Microsoft, mais j'ai créé un lien vers cette discussion au bas de la documentation de Microsoft sur la déduplication, sur leur site Web. Centre IT Pro Windows site web :

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

0 votes

/MT:128 semble plutôt élevé ; avez-vous découvert qu'il était vraiment efficace de le fixer aussi haut (et qu'il n'était pas contre-productif de passer à une valeur inférieure) ?

1 votes

P.S. J'adore travailler en ligne de commande. Imaginez la méchante boîte de dialogue à onglets que vous devriez parcourir lentement pour accéder à cette fonctionnalité précise. Et aucune de ces interfaces n'a de mode "sauvegarde", donc il faudrait le faire à chaque fois !

0 votes

Je ne sais pas pourquoi ils se donnent la peine d'exposer le contrôle du threading à l'utilisateur final. En fin de compte, il parcourt 1,5 To de données en une minute sans montrer de changement, donc quel que soit "l'impact" de l'utilisation du nombre maximum de threads, il ne semble pas avoir d'importance. Cette performance est tout à fait acceptable pour moi.

1voto

user949690 Points 421

Le problème est que vous ne copiez pas les dossiers dont vous avez besoin mais le volume entier, qui contient le dossier système caché "System Volume Information" qui est utilisé pour tout ce qui concerne le système de fichiers. La déduplication et le gestionnaire de ressources du serveur de fichiers y stockent également leurs données. En copiant le volume sur un autre et en utilisant le /MIR*, ainsi qu'en utilisant le /B**, vous utilisez le mode de sauvegarde qui peut copier des dossiers que votre compte administrateur ne peut pas copier, vous remplacez en fait les informations du volume système sur le disque dur. Cible et cela détruit le magasin de chunk du Dedup. Je déconseille ce type de copie, il est préférable de le faire par dossier OU d'exclure complètement le dossier "System Volume Information" (cela évitera beaucoup d'arrachage de cheveux et de jurons à court/long terme).

"*" Miroir du contenu de la source vers la cible, supprime de la cible les fichiers n'existant pas dans la source. ** Mode sauvegarde, copie les fichiers qui ne sont pas accessibles par un compte administrateur (utilise le SeBackupPrivilege pour la lecture de la source et le SeRestorePrivilege pour copier dans le dossier cible).

0voto

Mike Walker Points 1

Peut-être que c'est juste moi, mais ma première pensée a été - n'essayez jamais de copier le lecteur lui-même "e$". Je ne ferais une Robocopie que des dossiers spécifiques créés pour le contenu utilisateur, et non des dossiers système créés par Windows lui-même.

0 votes

Comme le lecteur n'est "pas C :", il n'est normalement pas du tout utilisé par Windows, qui stocke uniquement les fichiers système et les programmes sur le lecteur C :. Dans ce cas, l'intégralité du lecteur E : est destinée aux données de l'utilisateur et n'est accessible que via des partages réseau. L'utilisateur se voit normalement refuser l'accès à " \System Volume Information", même à partir d'une invite de commande élevée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X