web-dev-qa-db-ja.com

どうやらRobocopyはWindows Server 2016の重複排除を理解していません。ボリュームを壊すことなく機能させる方法はありますか?

シナリオ:

  • このサーバー障害ガイドに従って、古いサーバー2008 R2から新しいサーバー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が重複排除されたボリュームを破棄できる場合、重複排除されたボリュームを使用して安全に確認でき、サーバーからしかアクセスできないはずの基になるデータを破壊してしまう可能性があります。 (おそらく別の質問であるべきです。)

13
Dale Mahalko

/ XDスイッチを使用して、System Volume Informationディレクトリを除外する必要があります。おそらく、$RECYCLE.BINなどの他の非表示/システムディレクトリを除外することをお勧めします。

16
Greg Askew

使用された2つのコマンドラインスイッチ:/MIRおよび/ZB。ドキュメント(robocopy /???)は次のように説明しています:

/ MIR ::ディレクトリツリーのミラーリング(/ E plus/PURGEと同等)。
/ZB ::再起動可能モードを使用します。アクセスが拒否された場合は、バックアップモードを使用してください。

/MIRは(引数なしでrobocopyを実行したときに指摘されたように)削除され、ファイルを「正常に」読み取ることができるようにするために、ほとんどの権限を無効にします。完全なバックアップを作成するために読み取ることができません。

「バックアップモード」は、「ヘルプ」の説明では特に未定義です。 WindowsのCreateFile AP​​IがFILE_FLAG_BACKUP_SEMANTICSと呼ばれるフラグをサポートしていることを知っている必要があります。これは、特定のアクセス権SE_BACKUP_NAME(管理者グループデフォルトで-Backup Operatorsグループduh)も通常のファイルセキュリティをバイパスします。

知らなかったの?次に、robocopyが元々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

5
davidbak

次に、提供された他の回答を使用したフォローアップ結果と、重複排除された宛先でのテストを示します。 (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ギガビットイーサネットと多くの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

Deuplication report

また、Microsoftにバグを報告する適切なチャネルはわかりませんが、Microsoftの重複排除ドキュメントの下部にあるこの議論にリンクしていますWindows IT Pro Centerウェブサイト:

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

1
Dale Mahalko

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

0
ANTROGOR