Очевидно, 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

[......]

Я прервал его через несколько мгновений, увидев этот пролет в журнале и узнав, что происходит. Но ущерб уже нанесен, данные на новом дедуплицированном сервере были мгновенно повреждены Robocopy, когда он прошел через \ System Volume Information. Новый раздел диска сервера был отформатирован и заново скопирован с 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? «Зеркало» означает сделать пункт назначения копией источника. Робокопия очень сильна ... и, конечно, мы знаем, что это значит: с великой силой приходит большая ответственность!
Давидбак
«\ System Volume Information» обычно недоступен, и все программы, как правило, заблокированы от доступа к нему. Не должно быть никакого способа, чтобы Robocopy мог туда попасть даже при запуске из командной строки администратора. Давайте попробуем обратиться к нему вручную на том же сервере 2016: Пуск -> Командная строка -> Запуск от имени администратора. CD \ System Volume Information. В доступе отказано.
Дейл Махалко
Это правда. Я также должен был указать, что вы использовали /ZB :: use restartable mode; if access denied use Backup modeрежим резервного копирования, в котором большинство разрешений отключено, чтобы иметь возможность читать файлы, которые обычно не читаются, для полного резервного копирования. Так это было сочетание из /Bи /MIRчто делали вы в Robocopy является мощным ... как я уже говорил выше ....
davidbak
Следуя великолепному ответу Грега - предоставив выбор, просто оставьте дедупликацию до завершения миграции.
Тим Бригам

Ответы:

16

System Volume InformationКаталог должен быть исключен с помощью переключателя / XD. Вероятно, это хорошая идея, чтобы исключить другие скрытые / системные каталоги, такие как $RECYCLE.BIN.

Грег Аскью
источник
5

Два переключателя командной строки, которые использовались, приводят к этому: /MIRи /ZB. Как robocopy /???описывает документация ( ):

/ MIR :: MIRror дерево каталогов (эквивалентно / E плюс / PURGE).
/ ZB :: использовать режим перезапуска; если доступ запрещен, используйте режим резервного копирования.

Это комбинация, которую вы сделали: /MIRудалит (как указано, когда вы запускаете robocopyбез аргументов), а «Режим резервного копирования» отключает большинство разрешений для того, чтобы иметь возможность читать файлы «обычно», нечитаемые для создания полного резервного копирования.

«Режим резервного копирования» не определен в описании «справки». Вы должны знать, что Windows CreateFileAPI поддерживает флаг FILE_FLAG_BACKUP_SEMANTICS, который называется , который в сочетании с определенным правом доступа SE_BACKUP_NAME(которое предоставляется группе администраторов по умолчанию - также группа «Операторы архива») обходит обычную безопасность файлов.

Вы этого не знали? Тогда вы также можете не знать, что robocopy изначально не был частью Windows - это было частью дополнения, называемого «Windows Resource Kit», которое использовалось в основном программистами и жесткими системными администраторами в те времена, и хотя оно Он попал в дистрибутив Windows еще в Windows Server 2008, и на него никогда не обращали внимания - кроме дополнительных параметров производительности, woot! В частности, нет внимания со стороны руководителей программ, посвященных пользовательскому интерфейсу или удобству использования . Так что это грубая сила, которая может быть использована или использована неправильно! - на свой страх и риск.

(Хорошее практическое правило: не используйте параметры командной строки, которые вы на самом деле не понимаете.)

Информация, которую вы хотели бы узнать о доступе к файлу «Режим резервного копирования»:

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
источник
1
Кстати, нет ничего опасного (AFAIK) в /Z«режиме перезапуска». Это Bпроблематично ...
Давидбак
Могут ли учетные записи домена файлового сервера с отдельным владельцем и данными безопасности в каждом каталоге учетных записей быть полностью и полностью скопированы (/ COPYALL или / COPY: DATSOU) с использованием учетной записи администратора, без использования / B?
Дейл Махалко
@DaleMahalko - ТБХ, я не знаю. Хотя я программировал Windows пару десятилетий, я избегал некоторых аспектов, и поэтому я знаю достаточно о безопасности Windows только для того, чтобы при необходимости меня не задело ... Я из тех парней, которые всегда входят как член Администратора, я захожу в групповую политику и делаю все совершенно неисполненным и т. д. Может, кто-то еще знает?
Давидбак
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, информацию о владельце, информацию аудита (не все включены по умолчанию)
  • / DCOPY: DAT - копировать всю информацию каталога - данные, атрибуты, временные метки (исходная временная метка создания не копируется по умолчанию; обычно она изменяется на дату, когда она была скопирована Robocopy)
  • / NP - не отображать прогресс
  • / Z - использовать режим перезапуска
  • / B - Копировать файлы в режиме резервного копирования (я не знаю, нужно ли это для пользовательских каталогов, где они являются исключительным владельцем, за исключением администратора. Эта опция уничтожит дедуплицированный том назначения без исключения «Информация о системных томах»)
  • / J - Копирование с использованием небуферизованного ввода / вывода (более быстрое копирование больших файлов мультигига)
  • / SL - копировать символические ссылки, а не цель
  • / MT: 128 - использовать максимальное количество потоков ЦП (лучше использовать 10-гигабитный Ethernet и много ядер ЦП)
  • / 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/en-us/windows-server/storage/data-deduplication/overview

Дейл Махалко
источник
/MT:128кажется довольно высоким; Вы узнали, что было действительно эффективно установить это высоко (и не контрпродуктивно, чтобы пройти более низкое значение)?
Давидбак
1
PS Я люблю работать в командной строке. Представьте себе неприятное диалоговое окно с вкладками, через которое вам придется медленно работать, чтобы получить доступ к этим точным функциям. И ни один из этих интерфейсов не имеет режима «сохранения», так что вам придется делать это каждый раз!
Давидбак
Я не знаю, почему они пытаются предоставить управление потоками конечному пользователю. В итоге он пропускает 1,5 ТБ данных за одну минуту, не показывая никаких изменений, так что, какое бы «воздействие» не было при использовании максимальных потоков, это, похоже, не имеет значения. Это представление вполне приемлемо для меня.
Дейл Махалко
@DaleMahalko - лично мне было полезно иметь возможность контролировать максимальные потоки. Если у меня есть 10 файлов для копирования, где каждый занимает несколько часов, настройка MT: 2 позволяет мне иметь только 2 потока файлов для одновременной работы. В ненадежной или сложной инфраструктуре, где происходят прерывания, MT: 2 гарантирует, что только 2 копии файлов будут прерваны, а не 10, если у меня было MT: ​​10 (все файлы копируются одновременно). В этом случае, если прерывание происходит в последних 2 файлах из 10, нужно будет перезапустить только те (уже скопировав 8 других), а не все из них.
Род
Прошло уже много времени с тех пор, как я в последний раз использовал Robocopy, но я помню, что ограниченное количество потоков не насыщает сетевое соединение между двумя серверами, а делает больше потоков. И это действительно должно быть в центре внимания. Указание максимального количества потоков бесполезно, но «медленно добавляйте больше потоков копирования до тех пор, пока пропускная способность X не пересекается, и если выше порогового значения, не добавляйте больше потоков после завершения копирования», на самом деле полезно и удовлетворяет обе наши потребности.
Дейл Махалко
0

я думаю, вы не знаете, что это такое robocopy / Robocopy - это надежная команда копирования файлов для командной строки Windows, которая позволяет копировать файлы, каталоги и даже диски из одного места в другое. Если вы хотите больше информации, проверьте эту статью https://rocketfiles.com/articles/what-is-robocopy-in-windows

ANTROGOR
источник
2
Я не уверен, что это четкий ответ на вопрос. Как этот ответ связан с проблемой дедупликации?
Тодд Уилкокс