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 ..)
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
.
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
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:
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
,
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
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