显然,Robocopy无法理解Windows Server 2016重复数据删除。有没有一种方法可以使其在不损坏音量的情况下正常工作?


13

场景:

  • 按照此服务器故障指南,将服务器从旧的Server 2008 R2迁移到新的Server 2016:使用Robocopy进行文件服务器迁移

  • Robocopy完成后,在Server 2016上为复制的卷启用重复数据删除,然后使用PowerShell手动启动重复数据删除。数小时后,它完成并恢复了大约25%的磁盘空间。

  • 再次运行Robocopy以复制初始副本中可能遗漏的所有内容,作为对新服务器的最终检查。

....但是Robocopy(从Server 2016运行)不了解重复数据删除,因此会继续删除重复数据删除存储块。

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

[......]

在日志中看到这条苍蝇并认识到发生了什么之后,我立刻中止了它。但是损坏已经造成,经过重复数据删除的新服务器上的数据在进入\ System Volume Information时被Robocopy立即破坏。从Server 2008重新格式化并重新复制了新的服务器驱动器分区。

是否有使用Robocopy的安全方法,以使其不影响重复数据删除卷数据?

另外,我有一个新的问题。.如果Robocopy可以销毁重复数据删除的卷,那么使用重复数据删除的卷可以正确查看并销毁只能由服务器访问的基础数据还有什么不安全的地方?(可能应该是一个单独的问题。)


5
您期望在哪里/MIR切换将发生什么?“镜像”是指将目标复制为源。Robocopy功能强大……当然,我们知道这意味着什么:强大的力量带来巨大的责任!MIRror a directory tree (equivalent to /E plus /PURGE/PURGE :: delete dest files/dirs that no longer exist in source
davidbak

通常无法访问“ \ System Volume Information”,并且通常禁止所有程序对其进行访问。即使从管理员命令提示符运行,Robocopy也不应该能够进入那里。让我们尝试在同一台Server 2016上手动对其进行访问:开始->命令提示符->以管理员身份运行。CD \系统卷信息。访问被拒绝。
Dale Mahalko '18

确实如此。我还应该指出,您/ZB :: use restartable mode; if access denied use Backup mode在“备份”模式下使用了大多数权限,以便能够“通常”读取不可读的文件以进行完整备份。因此,它是结合/B,并/MIR说没有你的Robocopy是强大的...正如我上面提到...
davidbak

遵循Greg的绝妙答案-给出选择之后,就不要重复数据删除,直到完成迁移为止。
蒂姆·布里格姆

Answers:



5

使用了两个命令行开关导致:/MIR/ZB。如文档(robocopy /???)中所述:

/ MIR :: MIRror目录树(等同于/ E加/ PURGE)。
/ ZB ::使用可重启模式;如果访问被拒绝,则使用备份模式。

您所使用的正是这种组合: /MIR将删除(如robocopy无参数运行时所指出的),并且“备份模式”会破坏大多数权限,以便能够“正常”读取文件,从而进行完整的备份。

在“帮助”说明中,“备份模式”没有明显定义。您已经知道Windows CreateFileAPI支持称为的标志FILE_FLAG_BACKUP_SEMANTICS,它与特定的访问权限SE_BACKUP_NAME默认情况下授予Administrator组-也是Backup Operators组duh)结合使用,可以绕过正常的文件安全性。

你不知道吗 然后,您可能还不知道robocopy最初根本不是Windows的一部分-它是称为“ Windows Resource Kit”的补充的一部分,该补充主要在当时由程序员和核心系统管理员使用,尽管它早在Windows Server 2008中就成为Windows发行版的祖父,它从未受到任何关注-除了其他性能选项外,加油!特别是,程序管理人员不会专注于UI或可用性。因此,这是可以使用的原始功率,或者被误用了!-风险自负。

(一个好的经验法则:不要使用您不太了解的命令行选项。)

您可能想了解有关“备份模式”文件访问的信息:

https://isc.sans.edu/forums/diary/Use+The+Privilege/20483/

https://docs.microsoft.com/zh-cn/windows/desktop/api/FileAPI/nf-fileapi-createfilea

https://docs.microsoft.com/zh-cn/windows/desktop/FileIO/file-security-and-access-rights


1
顺便说一句,/Z“可重启模式” 没有任何危险(AFAIK)。这是B这是有问题的...
davidbak

是否可以使用管理员帐户在不使用/ B的情况下完全和完全复制文件服务器域帐户及其各自的所有者和每个帐户目录上的安全性数据?
Dale Mahalko '18

@DaleMahalko-我不知道TBH。尽管我从事Windows编程已有几十年了,但我还是避免了某些方面的工作,因此,我对Windows安全性只有足够的了解,以便在必要时避免涉猎……我是那种总是以Windows身份登录的人。管理员成员,我进入了组策略,使所有内容完全不执行,等等。也许其他人知道吗?
davidbak

1

以下是使用提供的其他答案的后续结果,以及在重复数据消除的目的地进行测试。(Meta:我不知道是否应该将此内容作为我的原始问题底部的编辑内容。

Robocopy命令行演变为最终如下所示:

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"

选项和目的:

  • / MIR-将源镜像到目标,并删除目标上的文件和目录(如果源中不再存在这些文件和目录)
  • / COPYALL-复制所有文件信息:数据,属性和时间戳,NTFS安全ACL,所有者信息,审核信息(默认情况下不全部包含)
  • / DCOPY:DAT-复制所有目录信息-数据,属性,时间戳(默认情况下,不复制原始创建时间戳;通常,这会更改为Robocopy复制日期)
  • / NP-不显示进度
  • / Z-使用可重启模式
  • / B-在备份模式下复制文件(我不知道这些文件是否是用户的唯一所有者,而管理员除外)
  • / J-使用无缓冲的I / O复制(大型多重演出文件的快速复制)
  • / SL-复制符号链接而不是目标
  • / MT:128-使用最大的CPU线程(更好地使用10 GB以太网和许多CPU内核)
  • / R:1-如果文件访问错误,请重试1次
  • / W:10-如果文件访问错误,请等待10秒钟,然后重试
  • / LOG +-将输出记录到文本文件,如果日志文件已经存在,则追加
  • / TEE-将结果打印到屏幕和日志文件
  • / XD-排除目录及其中的所有内容。其中带有空格的名称必须用引号引起来:“ Recycler”“ Recycled”“ $ Recycle.bin”“系统卷信息”
  • / XF-排除文件:虚拟内存和休眠文件(如果它们恰好出现在源文件中):“ pagefile.sys”“ swapfile.sys”“ hiberfil.sys”

最终重播:

            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

重复数据删除报告

另外,我不知道向Microsoft报告错误的适当渠道,但我已在Microsoft重复数据删除文档底部的Windows IT Pro Center网站上链接到此讨论:

https://docs.microsoft.com/zh-CN/windows-server/storage/data-deduplication/overview


/MT:128似乎很高;您是否发现将其设置为较高值确实非常有效(超过较低值不会适得其反)?
davidbak

1
PS我喜欢在命令行上工作。想象一下,您必须缓慢地浏览讨厌的选项卡式对话框才能获得此精确功能。而且这些UI都没有“保存”模式,因此您每次都必须这样做!
davidbak

我不知道他们为什么要麻烦将线程控制暴露给最终用户。最后,它在一分钟内读取1.5TB数据,没有任何变化,因此,使用max线程的任何“影响”似乎都没有关系。这种表现对我来说是可以接受的。
Dale Mahalko '18

@DaleMahalko-我个人发现能够控制最大线程很有用。如果要复制10个文件,每个文件要花费几个小时,则设置MT:2可使我一次只有2个文件复制线程处于活动状态。在发生中断的不可靠或复杂的基础架构上,如果我使用MT:10(所有文件同时复制),MT:2将确保仅放弃2个文件副本,而不是10个。在这种情况下,如果中断中断发生在10个文件中的最后2个文件中,则仅需要重新启动(已经复制了另外8个文件),而不是全部重新启动。
Rod

自从我上次使用Robocopy以来已经有很长时间了,但我似乎还记得,有限数量的线程不会使两台服务器之间的网络链接饱和,但是更多的线程会饱和。这确实应该成为重点。指定最大线程是无济于事的,但是“慢慢地添加更多的副本线程,直到带宽X超过为止,并且如果超过阈值,则在副本完成时不要添加更多线程”实际上是有用的,并且可以满足我们的两个需求。
Dale Mahalko

0

我认为您不知道它是什么robocopy / Robocopy-这是Windows命令行的强大文件复制命令,它使您可以将文件,目录甚至驱动器从一个位置复制到另一个位置。如果您想了解更多信息,请查看此文章 https://rocketfiles.com/articles/what-is-robocopy-in-windows


2
我不确定这是否是问题的明确答案。这个答案与重复数据删除问题有什么关系?
Todd Wilcox
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.