Использование RoboCopy для миграции в общие папки Azure

Область применения: ✔️ общие папки SMB

В этой статье описывается использование RoboCopy для перемещения или переноса файлов в общую папку SMB Azure. RoboCopy — это надежная и хорошо известная программа копирования файлов с набором функций, который хорошо подходит для миграции. Он использует протокол SMB, который делает его широко применимым к любой исходной и целевой комбинации, которая поддерживает SMB.

  • Источники данных: любой источник, поддерживающий протокол SMB, например сетевое хранилище (NAS), серверы Windows или Linux, другой файловый ресурс Azure и многое другое
  • Маршрут миграции: из исходного хранилища ⇒ компьютер Windows с помощью RoboCopy ⇒ файловое хранилище Azure
  • Локальные файлы кэширования отсутствуют. Так как окончательная цель заключается в использовании общих папок Azure непосредственно в облаке, не планируется использовать синхронизацию файлов Azure.

Важно

Существует множество различных маршрутов миграции для различных сочетаний источников и развертываний. Прежде чем выполнить действия, описанные в этой статье, ознакомьтесь с обзором миграции, определите, что RoboCopy — это средство, которое лучше всего подходит для ваших потребностей и развернуло необходимые ресурсы службы хранилища Azure для миграции.

AzCopy против RoboCopy

AzCopy и RoboCopy — это принципиально разные инструменты. RoboCopy использует SMB и копирует файлы с полной точностью, что делает его отлично подходящим для миграций. См. основы миграции для получения дополнительной информации о целостности файлов. AzCopy — облачный инструмент, использующий REST.

Ключевое поведенческое различие: RoboCopy / MIR отражает источник в цель. Он обрабатывает добавленные, изменённые и удалённые файлы. AzCopy Sync не удаляет файлы, удалённые на исходнике, с целевого объекта, что делает его неполным для сценариев миграции. По этой причине не используйте AzCopy для сценариев миграции, в которых общие файловые ресурсы Azure являются целевым объектом.

Подключите файловое хранилище Azure

Прежде чем использовать RoboCopy, необходимо сделать общую папку Azure доступной через SMB. Самый простой способ — подключить общую папку в качестве локального сетевого диска к Windows Server, который вы планируете использовать для RoboCopy.

Важно

Подключите файловое хранилище Azure с доступом уровня администратора: либо с доступом на основе удостоверений с ролями Azure RBAC уровня администратора (рекомендуется), либо с ключом хранения (менее безопасным).

Просмотрите файловое хранилище Azure с Windows, а затем подключите файловое хранилище SMB Azure, для которого вы хотите запустить RoboCopy.

Использование RoboCopy для копирования файлов в общую папку Azure

Следующая команда RoboCopy копирует только различия (обновленные файлы и папки) из исходного хранилища в общую папку Azure.

robocopy <SourcePath> <Dest.Path> /MT:20 /R:2 /W:1 /B /MIR /IT /COPY:DATSO /DCOPY:DAT /NP /NFL /NDL /XD "System Volume Information" /UNILOG:<FilePathAndName> 
Switch Значение
/MT:n Разрешает выполнение Robocopy в многопоточном режиме. По умолчанию параметр n имеет значение 8. Максимум — 128 потоков. Хотя большое количество потоков помогает добиться насыщения доступной пропускной способности, это не означает, что ваша миграция не всегда будет быстрее при использовании большего количества потоков. Тесты с Файлы Azure показывают, что диапазон от 8 до 20 демонстрирует сбалансированную производительность для начального копирования. На последующие запуски /MIR всё больше влияет соотношение между доступными вычислительными ресурсами и доступной полосой пропускания сети. Для последующих запусков указываемое количество потоков нужно привести в соответствие с числом ядер процессора и количеством потоков, приходящихся на каждое ядро. Определите, нужно ли зарезервировать ядра для других задач рабочего сервера. Тесты с Файлы Azure показали, что до 64 потоков обеспечивают хорошую производительность, но только если процессоры могут поддерживать их одновременное выполнение.
/R:n Максимальное число повторных попыток для файла, который не удалось скопировать с первого раза. Robocopy попробует n раз, прежде чем файл будет окончательно признан неудавшимся для копирования в этом запуске. Вы можете оптимизировать производительность запуска: выберите значение "2" или "3", если вы считаете, что проблемы из-за истечения времени ожидания вызывали сбои в прошлом. Это может быть типичной проблемой для связи по каналам WAN. Выберите вариант "Без повторных попыток" или значение "1", если вы считаете, что файл не удалось скопировать, так как он активно использовался. Повторная попытка через несколько секунд может быть недостаточной, чтобы состояние файла изменилось. Возможно, пользователям или приложениям, которые удерживают этот файл открытым, потребуется больше времени. Если согласиться с тем, что файл не был скопирован, и поймать его в одном из ваших запланированных последующих запусков Robocopy, это в итоге может привести к успешному копированию файла. В этом случае текущее выполнение завершится быстрее, без затрат времени на повторные попытки, которые все равно в большинстве случаев завершаются сбоем копирования из-за того, что файлы остаются открытыми по истечении времени ожидания повторных попыток.
/W:n Указывает время ожидания Robocopy перед попыткой копирования файла, который не был успешно скопирован во время предыдущей попытки. n — это количество секунд ожидания между повторными попытками. /W:n часто используется вместе с /R:n.
/B Выполняет команду Robocopy в том же режиме, что и приложение резервного копирования. Этот параметр позволяет Robocopy перемещать файлы, для которых у текущего пользователя нет разрешений. Переключатель резервного копирования зависит от выполнения команды Robocopy в консоли с повышенными привилегиями администратора или в окне PowerShell. Если вы используете Robocopy для работы с Файлами Azure, убедитесь в корректном подключении общей папки Azure с помощью ключа доступа к учетной записи хранения, а не удостоверения домена. Если вы этого не сделаете, сообщения об ошибках могут не помочь интуитивно найти решение проблемы.
/MIR Позволяет Robocopy копировать только дельты между источником и целью. Пустые подкаталоги будут скопированы. Элементы (файлы или папки), которые были изменены или не существуют в целевой папке, будут скопированы. Элементы, которые существуют в целевом объекте, но не в источнике, будут удалены из целевого объекта. При использовании этого параметра структуры исходной и целевой папок должны соответствовать друг другу. Соответствие означает, когда копирование производится с правильного уровня папки-источника на соответствующий уровень папки в целевом объекте. Только тогда догоняющее копирование будет успешным. Если объекты источника и назначения не совпадают, использование /MIR приведет к увеличению числа операций удаления и повторного копирования.
/IT Обеспечивает сохранение точности данных в определенных зеркальных сценариях.
Например, если в файле происходит изменение ACL и между двумя выполнениями Robocopy обновляется атрибут, он помечается как скрытый. Без параметра /IT команда Robocopy может упустить изменение ACL и не передать его в целевое расположение.
/COPY:[copyflags] Точность копирования файла. По умолчанию: /COPY:DAT. Флаги копирования: D = данные, A = атрибуты, T = метки времени, S = безопасность = списки контроля доступа NTFS, O = информация о владельце, U = информация аудита. Данные аудита не могут храниться в общей папке Azure.
/DCOPY:[copyflags] Надежность копирования каталогов. По умолчанию: /DCOPY:DA. Флаги копирования: D = данные, A = атрибуты, T = метки времени.
/NP Указывает, что ход копирования каждого файла и папки не отображается. Отображение хода выполнения значительно снижает производительность копирования.
/NFL Указывает, что имена файлов не регистрируются. Улучшается производительность копирования.
/NDL Указывает, что имена каталогов не регистрируются. Улучшается производительность копирования.
/XD Указывает исключаемые каталоги. При запуске Robocopy на корне тома рассмотрите возможность исключения скрытой папки System Volume Information. Если используется по назначению, вся информация в ней относится к конкретному разделу этой системы и может быть восстановлена по запросу. Копирование этой информации не принесет никакой пользы ни в облаке, ни при последующем копировании обратно на другой том Windows. Отказ от хранения этого содержимого не должен считаться потерей данных.
/UNILOG:<file name> Записывает состояние в файл журнала в формате Юникод. (Перезаписывает существующий журнал.)
/L Только для тестового запуска
Файлы должны быть только перечислены. Они не будут копироваться, не будут удаляться, и на них не будет установлена метка времени. Зачастую используется вместе с /TEE для вывода на консоль. Флаги из примера скрипта (такие как /NP, /NFL и /NDL), возможно, потребуется удалить, чтобы надлежащим образом задокументировать результаты теста.
/Z Используйте осторожно
копирует файлы в режиме перезапуска. Этот коммутатор рекомендуется использовать только в нестабильной сетевой среде. Из-за дополнительного логирования значительно сокращается производительность копирования.
/ZB Используйте с осторожностью
Используется режим перезапуска. Если доступ запрещен, то для этого параметра используется режим резервного копирования. Этот параметр значительно сокращает производительность копирования из-за дополнительных контрольных точек.

RoboCopy может сообщить о том, что файлы были скопированы даже при отсутствии необходимости передачи данных. Это происходит, так как robocopy оценивает как данные файлов, так и изменения метаданных при создании выходных данных.

Чтобы правильно интерпретировать результаты, просмотрите состояние файла в выходных данных команды:

  • Новое: данные файлов копируются в пункт назначения.
  • Изменено: обновляется только метаданные; Данные файла не перезаписывайтся.

В обоих случаях RoboCopy может сообщать о числах байтов, как будто данные были переданы. Это поведение может привести к путанице при проверке операций копирования.

Важно

Рекомендуется использовать Windows Server 2022 или более поздней версии. При использовании Windows Server 2019 убедитесь, что установлено последнее исправление или хотя бы обновление ОС KB5005103. Оно содержит важные исправления для определенных сценариев Robocopy.

Tip

Ознакомьтесь с разделом "Устранение неполадок" , если RoboCopy влияет на рабочую среду, сообщает много ошибок или не выполняется так быстро, как ожидалось.

Завершить переключение при миграции

При первом запуске команды RoboCopy пользователи и приложения по-прежнему получают доступ к файлам в источнике миграции и потенциально меняют их. Возможно, что RoboCopy обработал каталог, перешел к следующему, а затем пользователь в исходном расположении добавляет, изменяет или удаляет файл, который теперь не будет обработан в этом текущем запуске RoboCopy. Это поведение является ожидаемым.

Первый запуск связан с перемещением основной части обработанных данных на файловое хранилище Azure. Первая копия может занять некоторое время. Дополнительные сведения о скоростях RoboCopy см. в разделе "Устранение неполадок ".

После завершения начального сеанса выполните команду еще раз.

Во второй раз, когда вы запускаете RoboCopy для той же общей сетевой папки, процесс завершится быстрее, так как с момента последнего запуска требуется только копирование изменений. Вы можете запускать повторяющиеся задания для одного и того же ресурса.

После рассмотрения допустимого времени простоя необходимо удалить доступ пользователей к исходным общим папкам. Это можно сделать с помощью любых действий, которые препятствуют пользователям изменять структуру файлов и папок и содержимое. Примером является указание DFS-Namespace на не существующее расположение или изменение списков управления доступом для каждой общей папки.

Запустите RoboCopy последний раз. Он выявит любые изменения, которые могли быть пропущены. Сколько времени занимает последний шаг, зависит от скорости сканирования RoboCopy. Вы можете оценить время (равное времени простоя), измерив длительность предыдущего запуска.

Вы можете попытаться запустить несколько из этих копий между различными исходными и целевыми общими папками параллельно. При этом следует учитывать пропускную способность сети и соотношение количества ядер к количеству потоков, чтобы не перегрузить систему.

Устранение неполадок и оптимизация

Скорость и частота успешных запусков RoboCopy будут зависеть от нескольких факторов:

  • IOPS в исходном и целевом хранилище данных.
  • доступная пропускная способность сети между источником и назначением;
  • способность быстро обрабатывать файлы и папки в пространстве имен.
  • число изменений между запусками RoboCopy.
  • размер и количество файлов, которые необходимо скопировать.

Рекомендации по числу операций ввода-вывода в секунду и пропускной способности сети

В этой категории рассмотрим исходное хранилище, целевое хранилище и сеть , соединяющую их. Самый медленный из этих трёх компонентов определяет максимальную возможную пропускную способность.

Осторожно

Хотя копирование с максимально возможной скоростью часто является наиболее желательным, подумайте об использовании вашего локального сетевого и NAS-устройств для других, часто критически важных для бизнеса задач.

Копирование как можно быстрее может оказаться нежелательным, если существует риск, что миграция может монополизировать доступные ресурсы.

  • Подумайте, когда в вашей среде лучше выполнять миграцию: в течение дня, в нерабочее время или в выходные дни.
  • Также подумайте об использовании QoS сети на Windows Server для ограничения скорости RoboCopy.
  • Избегайте ненужной работы с инструментами миграции.

Средство RoboCopy дает возможность добавлять паузы между пакетами, используя параметр /IPG:n, где n измеряется в миллисекундах между пакетами RoboCopy. Использование этого параметра позволяет избежать монополизации ресурсов на устройствах с ограниченным доступом к данным и перегруженных сетевых соединений.

/IPG:n не может использоваться для точного регулирования пропускной способности сети вплоть до определенных значений в Мбит/с. Используйте Windows Server Network QoS вместо этого. Утилита RoboCopy полностью полагается на протокол SMB для всех сетевых нужд. Использование SMB — это причина, по которой средство RoboCopy не может влиять на пропускную способность сети, но может замедлить ее использование.

Аналогичная логика справедлива для IOPS (операций ввода-вывода в секунду), наблюдаемых на NAS. Размер кластера на томе NAS, размеры пакетов и ряд других факторов влияют на наблюдаемый IOPS. Появление задержки между пакетами часто является самым простым способом управления нагрузкой на NAS. Протестируйте несколько значений, например от 20 миллисекунд (n = 20) до кратных этому числу. После того как вы создадите задержку, вы можете оценить, могут ли другие приложения теперь работать должным образом. Эта стратегия оптимизации позволит вам найти оптимальную скорость работы RoboCopy в вашей среде.

Скорость обработки

RoboCopy обходит указанное вами пространство имен и проверяет каждый файл и папку на предмет копирования как во время начального запуска, так и при каждом последующем синхронизирующем запуске. Повторяющиеся запуски минимизируют простои и повышают общий процент успеха перенесённых файлов.

Пропускная способность не всегда является самым ограничивающим фактором. Для больших пространств имён с большим количеством небольших файлов скорость перечисления пространства имён может оказывать большее влияние на общее время копирования, чем пропускная способность. Копирование 1 TiB маленьких файлов занимает значительно больше времени, чем копирование 1 TiB крупных файлов. Это различие ожидаемо.

RoboCopy поддерживает многопоточные копии через опцию /MT:n , где n означает количество потоков для использования. При подготовке машины для RoboCopy учитывайте количество ядер процессора (большинство процессоров обеспечивают два потока на ядро) и сколько задач RoboCopy вы планируете выполнять параллельно.

При большем количестве потоков маленькие файлы копируются значительно быстрее, но при работе с большими файлами они могут не обеспечить пропорционального прироста производительности. Высокое количество потоков для больших файлов увеличивает вероятность пропускной способности или ограничения IOPS.

Для начального запуска RoboCopy используйте большое количество потоков для насыщения доступной пропускной способности сети. Для последующих /MIR запусков с меньшим количеством изменений скорость обработки становится узким местом, поэтому сопоставьте количество потоков с числом ядер процессора. Рассмотрим, нужно ли резервировать ядра для других задач на производственном сервере.

Tip

Золотое правило: первый запуск программы RoboCopy (который будет перемещать большое количество данных через сеть с высокой задержкой) выигрывает от увеличения числа потоков (/MT:n). Последующие запуски будут требовать копирования меньшего числа различий, и, скорее всего, вы перейдете от ограничения пропускной способности сети к ограничению вычислительными ресурсами. В этих обстоятельствах часто лучше установить количество потоков RoboCopy равным фактически доступным потокам на компьютере. Избыточное выделение ресурсов в этом сценарии может привести к увеличению количества сдвигов контекста в процессоре, что, в свою очередь, может снизить скорость копирования.

Избегайте изменений пространства имён во время миграции

Избегайте крупномасштабных изменений в пространстве имен, таких как перемещение файлов между каталогами, изменение свойств в большом масштабе или изменение разрешений на уровне каталога и файлов (списки управления доступом NTFS). В частности, изменение списков управления доступом может оказать существенное влияние, поскольку они часто при изменении оказывают каскадный эффект на файлы, находящиеся ниже в иерархии папок. Возможны следующие последствия.

  • Возросшее время выполнения задания RoboCopy, так как каждый файл и папка, затрагиваемые изменением ACL, нуждаются в обновлении
  • При повторном использовании ранее перенесённых данных может потребоваться скопировать их снова. Например, придется заново копировать данные при изменении структуры папок после того, как файлы из них уже были скопированы. Задание RoboCopy не может повторно применить изменения в пространстве имен. Следующее задание должно очистить файлы, которые ранее были перенесены в старую структуру папок, и снова передать файлы в новую структуру папок.

Другим важным аспектом является эффективное использование средства RoboCopy. С помощью рекомендуемого скрипта RoboCopy вы создадите и сохраните файл журнала для ошибок. Ошибки копирования могут возникать — это нормально. Эти ошибки часто делают необходимым выполнение нескольких раундов использования инструмента копирования, такого как RoboCopy: начальное выполнение, например, из NAS в DataBox или с сервера в общую папку Azure, а также один или несколько дополнительных запусков с переключателем /MIR, чтобы найти и повторить попытки копирования файлов, которые не были скопированы.

Вы должны быть готовы несколько раз запустить RoboCopy для заданной области пространства имен. Последовательные запуски будут выполняться быстрее, так как операций копирования будет меньше, но их скорость ограничена скоростью обработки пространства имен. При выполнении нескольких циклов можно ускорить каждый из них, не требуя от RoboCopy чрезмерных усилий для копирования всех данных в каждом отдельном цикле. Эти параметры RoboCopy могут значительно изменить ситуацию.

  • /R:n n = периодичность повторного копирования невыполненного файла и
  • /W:n n = интервал в секундах между повторными попытками

/R:5 /W:5 является разумным параметром, который можно изменить в соответствии с ситуацией. В этом примере копирование неудачного файла будет повторяться пять раз, с интервалом в 5 секунд между повторными попытками. Если копирование файла будет неудачным, следующее задание RoboCopy повторит попытку. Часто файлы не удается скопировать из-за того, что они используются или из-за ошибок тайм-аута, но в итоге могут быть успешно скопированы таким образом.

Используйте Robocopy для копирования файлов из снимка Файлы Azure на локальный диск.

Вы можете использовать Robocopy для копирования файлов и папок из моментального снимка общего ресурса SMB Azure обратно на локальный диск. Дополнительные сведения см. в разделе Копирование данных обратно на локальный диск из моментального снимка общего ресурса.

Оценка расходов на транзакции хранения

При миграции в Файлы Azure, RoboCopy копирует ваши файлы и папки в Azure. В зависимости от модели выставления счетов для файлов Azure может применяться плата за транзакции. См. Понимание выставления счетов.

Если в общих папках Azure HDD (стандартный) используется модель выставления счетов по мере использования, может быть трудно оценить количество транзакций, которые будут создаваться при миграции.

  • Невозможно оценить количество транзакций на основе используемой емкости хранилища источника. Количество транзакций масштабируется с количеством элементов пространства имен (файлов и папок) и их свойств, перенесенных, а не их размера. Например, для переноса 1 ГиБ небольших файлов, чем 1 ГиБ больших файлов, требуется больше транзакций.
  • Чтобы минимизировать простои, возможно, придётся несколько раз выполнять операции копирования от источника к целью. Каждая операция копирования обрабатывает все исходные и целевые элементы, хотя последующие запуски заканчиваются быстрее. После начальных операций по сети передаются только изменения, внесенные между циклами копирования. Важно понимать, что, хотя и меньше данных транспортируется, количество необходимых транзакций может оставаться неизменным.
  • Копирование одинакового файла дважды может не привести к одинаковому количеству транзакций. Обработка элемента, который был перенесен во время предыдущего исполнения копирования, может привести только к небольшому числу транзакций чтения. В отличие от этого, изменения метаданных или содержимого между выполнениями копирования могут потребовать большего количества транзакций для обновления целевого объекта.

Проведите первые тесты на своих данных, чтобы лучше понять, сколько транзакций генерирует миграция файлов.

Дальнейшие шаги

В следующих статьях вы узнаете о расширенных вариантах и рекомендациях.