Rupanya Robocopy tidak mengerti deduplikasi Windows Server 2016. Apakah ada cara untuk membuatnya berfungsi tanpa merusak volume?

13

Skenario:

  • Melakukan migrasi server dari Server 2008 R2 ke Server 2016 yang baru, mengikuti panduan Kesalahan Server ini: Migrasi server file menggunakan Robocopy

  • Setelah Robocopy selesai, aktifkan deduplication pada Server 2016 untuk volume yang disalin, dan kemudian gunakan PowerShell untuk mulai dedpulicating secara manual. Setelah berjam-jam selesai dan pulih sekitar 25% dari ruang disk.

  • Jalankan Robocopy lagi untuk menyalin apa pun yang mungkin terlewatkan dalam salinan awal, sebagai pemeriksaan terakhir dari server baru.

.... tetapi Robocopy (dijalankan dari Server 2016) tidak memahami deduplikasi dan karenanya mulai membuang chunkstore deduplikasi ..

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

[......]

Saya membatalkannya beberapa saat setelah melihat lalat ini lewat di log dan mengenali apa yang terjadi. Tetapi kerusakan sudah dilakukan, data pada server baru yang didupuplikasi langsung rusak oleh Robocopy karena menyerbu melalui \ System Volume Information. Partisi drive server baru telah diformat dan dibuka kembali dari Server 2008.

Apakah ada cara yang aman untuk menggunakan Robocopy sehingga tidak menyentuh data volume deduplikasi?

Juga, saya mempunyai keprihatinan baru .. jika Robocopy dapat menghancurkan volume deduplicated, apa lagi yang tidak aman untuk digunakan dengan volume deduplicated, yang melihat menembusnya dan dapat menghancurkan data yang mendasarinya yang hanya dapat diakses oleh server? (mungkin harus menjadi pertanyaan terpisah ..)

Dale Mahalko
sumber
5
Apa yang Anda harapkan terjadi dengan /MIRsakelar yang ada di MIRror a directory tree (equivalent to /E plus /PURGEmana /PURGE :: delete dest files/dirs that no longer exist in source? "Cermin" berarti menjadikan tujuan sebagai salinan sumber. Robocopy sangat kuat ... dan tentu saja kita tahu apa artinya: Dengan kekuatan besar datang tanggung jawab besar!
davidbak
"\ System Volume Information" biasanya tidak dapat diakses dan semua program biasanya diblokir untuk mengaksesnya. Seharusnya tidak ada cara yang Robocopy bisa masuk ke sana bahkan ketika dijalankan dari prompt perintah Administrator. Mari kita coba mengaksesnya secara manual pada Server 2016 yang sama: Mulai -> Prompt perintah -> Jalankan sebagai Administrator. Informasi Volume Sistem CD \. Akses ditolak.
Dale Mahalko
Itu benar. Saya juga harus menunjukkan bahwa Anda menggunakan /ZB :: use restartable mode; if access denied use Backup modemode Cadangan yang mengalahkan sebagian besar izin untuk dapat membaca file "biasanya" tidak dapat dibaca untuk membuat cadangan lengkap. Jadi itu adalah kombinasi dari /Bdan /MIRitulah yang Anda lakukan. Robocopy sangat kuat ... seperti yang saya sebutkan di atas ...
davidbak
Menindaklanjuti jawaban hebat Greg - diberi pilihan biarkan saja deduplication dimatikan sampai Anda selesai bermigrasi.
Tim Brigham

Jawaban:

16

The System Volume Informationdirektori harus dikeluarkan menggunakan XD switch /. Mungkin ide yang bagus untuk mengecualikan direktori tersembunyi / sistem lainnya seperti $RECYCLE.BIN.

Greg Askew
sumber
5

Dua sakelar baris perintah yang digunakan mengarah ke ini: /MIRdan /ZB. Seperti yang robocopy /???dijelaskan dalam dokumentasi ( ):

/ MIR :: MIRror pohon direktori (setara dengan / E plus / PURGE).
/ ZB :: gunakan mode yang dapat di-restart; jika akses ditolak, gunakan mode Cadangan.

Kombinasi yang Anda gunakan: /MIRakan menghapus (seperti yang ditunjukkan saat Anda menjalankan robocopytanpa argumen) dan "Mode cadangan" mengalahkan sebagian besar izin untuk dapat membaca file "biasanya" yang tidak dapat dibaca untuk membuat cadangan lengkap.

"Mode cadangan" khususnya tidak ditentukan dalam deskripsi "bantuan". Anda harus tahu bahwa Windows CreateFileAPI mendukung flag yang disebut FILE_FLAG_BACKUP_SEMANTICS, yang dikombinasikan dengan hak akses tertentu SE_BACKUP_NAME(yang diberikan kepada grup Administrator secara default - juga grup Operator Cadangan, ya) memintas keamanan file normal.

Kamu tidak tahu itu? Maka Anda mungkin juga tidak tahu bahwa robocopy pada awalnya bukan bagian dari Windows - itu adalah bagian dari suplemen yang disebut "Windows Resource Kit" yang digunakan terutama oleh programmer dan sysadmin hard-core pada masa itu, dan meskipun adalah kakek ke distribusi Windows kembali di Windows Server 2008 tidak pernah menerima perhatian - kecuali untuk opsi kinerja tambahan, woot! Khususnya, tidak ada perhatian dari manajer program yang didedikasikan untuk UI atau kegunaan . Jadi sedikit kekuatan mentah yang bisa digunakan - atau salah sasaran! - dengan risiko Anda sendiri.

(Aturan praktis yang bagus: Jangan gunakan opsi baris perintah yang tidak benar-benar Anda pahami.)

Informasi yang mungkin ingin Anda ketahui tentang akses file "Mode cadangan":

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

davidbak
sumber
1
BTW tidak ada yang berbahaya (AFAIK) tentang /Z"mode restartable". Itu Byang bermasalah ...
davidbak
Apakah file server domain, dengan pemilik terpisah dan data keamanan pada setiap direktori akun, dapat sepenuhnya dan sepenuhnya disalin (/ COPYALL atau / COPY: DATSOU) menggunakan akun administrator, tanpa menggunakan / B?
Dale Mahalko
@DaleMahalko - TBH saya tidak tahu. Meskipun saya telah memprogram Windows selama beberapa dekade, ada beberapa aspek yang saya hindari, dan jadi saya hanya cukup tahu tentang keamanan Windows untuk membuat saya tidak siap ketika diperlukan ... Saya tipe orang yang selalu masuk sebagai anggota Administrator, saya masuk ke Kebijakan Grup dan membuat semuanya benar-benar tidak diperkuat, dll. Mungkin orang lain tahu?
davidbak
1

Berikut adalah hasil tindak lanjut menggunakan jawaban lain yang disediakan, dan pengujian dengan tujuan yang didupuplikasi. ( Meta: Saya tidak tahu apakah saya harus memasukkan ini sebagai suntingan di bagian bawah pertanyaan awal saya. )

Baris perintah Robocopy berevolusi untuk akhirnya terlihat seperti ini:

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"

Opsi dan tujuan:

  • / MIR - Sumber mirror ke tujuan, dan menghapus file dan direktori pada tujuan, jika mereka tidak lagi ada di sumber
  • / COPYALL - Menyalin semua info file: data, atribut, dan cap waktu, NTFS Security ACLs, Info pemilik, Info audit (tidak semua disertakan secara default)
  • / DCOPY: DAT - Salin semua info direktori - data, atribut, stempel waktu (stempel waktu pembuatan asli tidak disalin secara default; biasanya ini berubah pada tanggal saat itu disalin oleh Robocopy)
  • / NP - Jangan tampilkan kemajuan
  • / Z - Gunakan mode mulai ulang
  • / B - Salin file dalam mode Cadangan (Saya tidak tahu apakah ini diperlukan untuk direktori pengguna di mana mereka adalah pemilik eksklusif, tidak termasuk administrator. Opsi ini akan menghancurkan volume tujuan yang didupuplikasi tanpa mengecualikan "Informasi Volume Sistem")
  • / J - Salin menggunakan I / O tanpa buffer (salinan lebih cepat dari file multi-gig besar)
  • / SL - Salin tautan simbolik daripada target
  • / MT: 128 - Gunakan utas CPU maksimum (lebih baik menggunakan Ethernet 10 gigabit dan banyak inti CPU)
  • / R: 1 - Jika kesalahan akses file, coba lagi 1 kali
  • / W: 10 - Jika kesalahan akses file, tunggu 10 detik sebelum coba lagi
  • / LOG + - Log output ke file teks, tambahkan jika file log sudah ada
  • / TEE - Mencetak hasil ke layar dan untuk mencatat file
  • / XD - Kecualikan direktori, dan semua yang ada di dalamnya. Nama dengan spasi di dalamnya harus dilampirkan dalam tanda kutip: "Pendaur Ulang" "Daur Ulang" "$ Recycle.bin" "Informasi Volume Sistem"
  • / XF - Kecualikan file: memori virtual dan file hibernasi jika mereka ada pada sumber: "pagefile.sys" "swapfile.sys" "hiberfil.sys"

Final re-run:

            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

Laporan deuplikasi

,

Juga, saya tidak tahu saluran yang tepat untuk melaporkan bug ke Microsoft, tetapi saya telah menautkan ke diskusi ini di bagian bawah dokumentasi deduplikasi Microsoft, di situs web Windows IT Pro Center mereka :

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

Dale Mahalko
sumber
/MT:128tampaknya agak tinggi; apakah Anda tahu itu benar-benar efektif untuk menetapkannya setinggi itu (dan tidak kontraproduktif untuk melewati nilai yang lebih rendah)?
davidbak
1
PS Saya suka bekerja di baris perintah. Bayangkan kotak dialog tab jahat yang harus Anda kerjakan perlahan-lahan untuk mendapatkan fungsionalitas yang tepat ini. Dan tidak ada satu pun dari UI tersebut yang memiliki mode "simpan", jadi Anda harus melakukannya setiap kali!
davidbak
Saya tidak tahu mengapa mereka repot-repot mengekspos kontrol threading kepada pengguna akhir. Pada akhirnya itu chugs melalui data 1,5TB dalam satu menit tidak menunjukkan perubahan, jadi apa pun "dampak" menggunakan max threads, tampaknya tidak masalah. Performa ini cukup bisa saya terima.
Dale Mahalko
@DaleMahalko - Saya pribadi merasa berguna untuk dapat mengendalikan utas maks. Jika saya memiliki 10 file untuk disalin di mana masing-masing membutuhkan beberapa jam pengaturan MT: 2 memungkinkan saya untuk hanya memiliki 2 utas salinan file untuk aktif sekaligus. Pada infrastruktur yang tidak dapat diandalkan atau kompleks di mana gangguan terjadi MT: 2 akan memastikan bahwa hanya 2 salinan file yang akan dibatalkan daripada 10 jika saya memiliki MT: 10 (semua file menyalin secara bersamaan). Dalam hal ini, jika gangguan terjadi pada 2 file terakhir dari 10 file saja yang perlu di-restart (memiliki 8 file lainnya yang sudah disalin) daripada semuanya.
Rod
Sekarang sudah lama sejak saya terakhir menggunakan Robocopy tetapi saya ingat bahwa sejumlah thread tidak menjenuhkan link jaringan antara dua server, tetapi lebih banyak thread. Dan ini benar-benar harus menjadi fokus. Menentukan utas maks tidak membantu, tetapi "perlahan-lahan tambahkan lebih banyak utas salinan hingga bandwidth X melintas, dan jika di atas ambang batas, jangan tambahkan utas lagi saat salinan selesai" sebenarnya berguna dan akan memenuhi kedua kebutuhan kita.
Dale Mahalko
0

saya pikir Anda tidak tahu apa itu robocopy / Robocopy - ini adalah perintah salin file yang kuat untuk baris perintah Windows yang memungkinkan Anda untuk menyalin file, direktori, dan bahkan drive dari satu lokasi ke lokasi lain. Jika Anda ingin informasi lebih lanjut, periksa artikel ini https://rocketfiles.com/articles/what-is-robocopy-in-windows

ANTROGOR
sumber
2
Saya tidak yakin ini adalah jawaban yang jelas untuk pertanyaan itu. Bagaimana jawaban ini terkait dengan masalah deduplikasi?
Todd Wilcox