どうやらRobocopyはWindows Server 2016の重複排除を理解していないようです。ボリュームを破損せずに機能させる方法はありますか?


13

シナリオ:

  • このサーバーフォールトガイド:Robocopyを使用したファイルサーバーの移行に従って、古いサーバー2008 R2から新しいサーバー2016 へのサーバー移行を行う

  • 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スイッチで何が起こると思って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がそこに入る方法はないはずです。同じサーバー2016で手動でアクセスしてみてください:[スタート]-> [コマンドプロンプト]-> [管理者として実行]。CD \システムボリューム情報。アクセスが拒否されました。
デールマハルコ

それは本当だ。また/ZB :: use restartable mode; if access denied use Backup mode、完全バックアップを作成するためにファイルを「通常」読み取れないようにするために、バックアップモードがほとんどの権限を無効にする場所を使用したことも指摘しておきます。それがあったので、組み合わせ/B/MIR。Robocopyの中であなたをしたという強力です...私は上記のように...
davidbak

Gregのすばらしい答えをフォローアップします。選択があれば、移行が完了するまで重複排除をオフにしておきます。
ティムブリガム

回答:


16

System Volume Informationディレクトリは、/ XDスイッチを使用して除外すべきです。おそらく、などの他のhidden / systemディレクトリを除外することをお勧めし$RECYCLE.BINます。


5

2つのコマンドラインこのリードを使用したスイッチ:/MIR/ZB。ドキュメント(robocopy /???)に記載されているとおり:

/ MIR ::ディレクトリツリーをミラー化します(/ Eと/ PURGEに相当)。
/ ZB ::再起動可能なモードを使用します。アクセスが拒否された場合、バックアップモードを使用します。

それはあなたがした組み合わせです: 引数なしで/MIR実行するときに指摘したように削除しrobocopy、「バックアップモード」は完全なバックアップを作成するために「通常」読み取り不可能なファイルを読み取ることができるようにほとんどの権限を無効にします。

「バックアップモード」は、「ヘルプ」の説明では特に定義されていません。Windows CreateFileAPIがというフラグをサポートしていることを知っておく必要がありますFILE_FLAG_BACKUP_SEMANTICS。このフラグは、特定のアクセス権SE_BACKUP_NAMEデフォルトで管理者グループに与えられ、バックアップオペレータグループにも与えられます)と通常のファイルセキュリティをバイパスします。

知らなかった?また、ロボコピーが元々Windowsの一部ではなかったことも知らないかもしれません。これは、主にプログラマやハードコアのシステム管理者が主に使用していた「Windowsリソースキット」と呼ばれるサプリメントの一部でしたが、 Windows Server 2008でWindowsディストリビューションに祖父として加わりましたが、追加のパフォーマンスオプションを除き、注目を浴びたことはありません。特に、UIまたはユーザビリティ専用のプログラムマネージャーからの注意はありません。したがって、使用できるのは生のビットです。- ご自身の責任で。

(良い経験則:あまり理解していないコマンドラインオプションを使用しないでください。)

「バックアップモード」ファイルアクセスについて知りたい情報:

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
ところで、/Z「再起動可能なモード」について危険なことは何もありません(AFAIK)。それはB問題のあることです
...-davidbak

/ Bを使用せずに、管理者アカウントを使用して、各アカウントディレクトリに別々の所有者とセキュリティデータを持つファイルサーバードメインアカウントを完全に(/ COPYALLまたは/ COPY:DATSOU)コピーできますか?
デールマハルコ

@DaleMahalko-TBH私は知りません。私は数十年にわたってWindowsをプログラミングしてきましたが、避けるべき側面があります。そのため、必要なときにくっつかないようにするのに十分なWindowsセキュリティについて知っているだけです...私は常にとしてログインしている人です管理者のメンバーである私は、グループポリシーに移動し、すべてを完全に強制しないようにします。
-davidbak

1

以下に、提供された他の回答を使用したフォローアップ結果と、重複排除された宛先でのテストを示します。(メタ:元の質問の下部に編集としてこれを含めるべきかどうかわかりません。

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ギガビットイーサネットと多くのCPUコアのより良い使用)
  • / R:1-ファイルアクセスエラーの場合、1回再試行
  • / W:10-ファイルアクセスエラーの場合、10秒待ってから再試行します
  • / LOG +-出力をテキストファイルに記録し、ログファイルが既に存在する場合は追加します
  • / TEE-結果を画面およびログファイルに出力します
  • / XD-ディレクトリとその中のすべてを除外します。スペースを含む名前は引用符で囲む必要があります:「Recycler」「Recycled」「$ Recycle.bin」「System Volume Information」
  • / 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の重複排除ドキュメントの下部にあるWindows IT Pro Center Webサイトでこの議論にリンクしています

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


/MT:128かなり高いようです。高い値に設定することは非常に効果的でした(低い値を超えると逆効果ではありません)。
-davidbak

1
PSコマンドラインでの作業が大好きです。この正確な機能を実現するために、ゆっくりと作業しなければならない厄介なタブ付きダイアログボックスを想像してください。また、これらのUIには「保存」モードがないため、毎回行う必要があります。
-davidbak

スレッドコントロールをエンドユーザーに公開するのが面倒な理由はわかりません。最終的には、1分間で1.5TBのデータを変更せずに一気に処理するため、最大スレッドを使用した「影響」が何であれ、それは問題ではないようです。このパフォーマンスは私にはまったく受け入れられます。
デールマハルコ

@DaleMahalko-私は個人的に、最大スレッドを制御できると便利だと感じました。MT:2を設定すると、コピーに10個のファイルがあり、それぞれに数時間かかる場合、一度にアクティブにできるファイルコピースレッドは2つだけです。中断が発生する信頼性の低いインフラストラクチャまたは複雑なインフラストラクチャでは、MT:2を使用すると、MT:10(すべてのファイルが同時にコピーされる)の場合、10ではなく2つのファイルコピーのみが中止されます。この場合、10個のうちの最後の2個のファイルで中断が発生した場合、すべてのファイルではなく、それらのファイルのみを再起動する必要があります(他の8個が既にコピーされています)。
ロッド

Robocopyを最後に使用してから長い時間が経ちましたが、限られた数のスレッドが2つのサーバー間のネットワークリンクを飽和させることはなく、より多くのスレッドが飽和することを思い出すようです。そして、これが本当に焦点になるはずです。最大スレッド数の指定は役に立ちませんが、「帯域幅Xを超えるまでコピースレッドをゆっくり追加し、しきい値を超えた場合、コピーの終了時にスレッドを追加しない」ことが実際に役立ち、両方のニーズを満たします。
デールマハルコ

0

robocopy / Robocopyが何なのかわからないと思います。Windowsコマンドライン用の堅牢なファイルコピーコマンドで、ファイル、ディレクトリ、ドライブをある場所から別の場所にコピーできます。詳細については、この記事をチェックしてください https://rocketfiles.com/articles/what-is-robocopy-in-windows


2
これが質問に対する明確な答えかどうかはわかりません。この回答は重複排除の問題にどのように関連していますか?
トッドウィルコックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.