Поделиться через


Миграция на файловые хранилища Azure NFS

В этой статье рассматриваются основные аспекты миграции с файловых серверов Linux на общие папки NFS Azure, которые доступны только в виде общих папок уровня "Премиум" (уровень мультимедиа SSD). Мы также сравним средства копирования файлов с открытым исходным кодом fpsync и rsync, чтобы понять, как они выполняются при копировании данных в общие папки Azure.

Замечание

Файлы Azure не поддерживают списки управления доступом NFS (ACL).

Применимо к

Тип общей папки Малый и средний бизнес (SMB) NFS
Стандартные общие папки (GPv2), LRS/ZRS Нет Нет
Стандартные общие папки (GPv2), GRS/GZRS Нет Нет
Файловые хранилища уровня "Премиум" (FileStorage), LRS/ZRS Нет Yes

Предпосылки

Вам потребуется по крайней мере одна общая папка NFS Azure, подключенная к виртуальной машине Linux. Чтобы создать его, см. статью "Создание классической общей папки Azure". Рекомендуется подключить общую папку с nconnect, чтобы использовать несколько TCP-подключений. Для получения дополнительной информации см. статью «Улучшение производительности общей папки NFS в Azure».

Средства миграции

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

Используйте средство перемещения хранилища Azure

Теперь вы можете использовать Azure Storage Mover для миграции ваших файловых ресурсов NFSv3 и NFSv4 на файловые ресурсы Azure NFSv4.1. Azure Storage Mover — это полностью управляемая служба миграции, которая позволяет переносить локальные файлы и папки в Azure при минимизации простоя.

Использование fpsync vs. rsync

Несмотря на однопотоковое использование, rsync — это универсальное средство копирования файлов с открытым исходным кодом. Он может копировать локально, в другой узел через любую удаленную оболочку или из удаленной управляющей программы rsync. Он предлагает множество вариантов и позволяет гибко копировать набор файлов. Однако fpsync — это многопоточное приложение, поэтому предоставляет некоторые преимущества, включая возможность параллельного выполнения заданий rsync.

В этой статье описано, как использовать fpsync для перемещения данных с файлового сервера Linux в общие папки Azure NFS.

Для копирования данных fpsync использует rsync (по умолчанию), cpio или tar. Он вычисляет подмножества исходного каталога src_dir/ и создает задания синхронизации, чтобы синхронизировать их с конечным каталогом dst_dir/. Он выполняет задания синхронизации во время одновременного обхода файловой системы, что делает его полезным инструментом для эффективной миграции больших файловых систем и копирования больших наборов данных с несколькими файлами.

Замечание

Fpsync синхронизирует только содержимое каталога, а не исходный каталог. В отличие от rsync, fpsync применяет окончательный "/" в исходном каталоге, что означает, что вы не получите подкаталог с именем исходного каталога в целевом каталоге после синхронизации.

Установка fpart

Чтобы использовать fpsync, необходимо установить разделитель файловой системы fpart. Установите fpart в выбранном дистрибутиве Linux. После установки вы увидите fpsync в разделе /usr/bin/.

В Ubuntu используйте диспетчер пакетов apt для установки fpart.

sudo apt-get install fpart

Копирование данных из источника в место назначения

Убедитесь, что целевая папка Azure подключена к виртуальной машине Linux. См. предварительные требования.

Если вы выполняете полную миграцию, вы скопируете данные на трех этапах:

  1. Базовая копия: Копирование из источника в место назначения, если данные не существуют в назначении. Для базовой копии рекомендуется использовать fpsync с cpio в качестве средства копирования.
  2. Добавочное копирование: Скопируйте только добавочные изменения из источника в место назначения. Для добавочной синхронизации рекомендуется использовать fpsync с rsync в качестве средства копирования. Это необходимо сделать несколько раз, чтобы записать все изменения.
  3. Окончательный проход: Окончательный проход необходим для удаления файлов в месте назначения, который не существует в источнике.

Копирование данных с помощью fpsync всегда включает в себя некоторые версии этой команды:

fpsync -m <specify copy tool - rsync/cpio/tar> -n <parallel transfers> <absolute source path> <absolute destination path>

Базовая копия

Для базовой копии используйте fpsync с cpio.

fpsync -m cpio -n <parallel transfers> <absolute source path> <absolute destination path>

Дополнительные сведения см. в разделе "Поддержка Cpio и Tar".

Добавочное копирование

Для добавочной синхронизации используйте fpsync со средством копирования по умолчанию (rsync). Чтобы записать все изменения, рекомендуется выполнить это несколько раз.

fpsync -n <parallel transfers> <absolute source path> <absolute destination path>

По умолчанию fpsync будет указывать следующие параметры rsync: -lptgoD -v --numeric-ids Дополнительные параметры rsync можно указать, добавив -o option в команду fpsync.

Окончательный проход

После нескольких добавочных синхронизаций необходимо выполнить окончательный проход, чтобы удалить все файлы в этом месте назначения, которые не существуют в источнике. Это можно сделать вручную, rsync --delete чтобы удалить дополнительные файлы из /data/dst/ каталога или использовать fpsync с параметром -E. Дополнительные сведения см. в разделе "Окончательный проход".

Сравнение rsync и fpsync с различными наборами данных

В этом разделе сравнивается производительность rsync и fpsync с различными наборами данных.

Наборы данных и конфигурация

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

Конфигурация # Тип копирования Количество файлов Количество каталогов Размер файла Общий размер
1.1 Базовая копия 1 млн 1 0-32 КиБ 18 ГиБ
1.2 Добавочное (разностное изменение) 1 млн 1 0-32 КиБ 18 ГиБ
2 Базовая копия 191,345 3,906 0-32 КиБ 3 ГиБ
3 Базовая копия 5,000 1 10 МиБ 50 ГиБ

Тесты были выполнены на виртуальных машинах Azure Standard_D8s_v3 с 8 виртуальными ЦП, 32 ГиБ памяти и более 1 ТиБ дискового пространства для больших наборов данных. Для целевого объекта мы настроили общие папки Azure NFS с более чем 1 ТиБ подготовленным размером.

Эксперименты и результаты: rsync vs. fpsync

На основе наших экспериментов с приведенными выше конфигурациями мы обнаружили, что fpsync лучше всего выполнялся при использовании с 64 потоками с rsync и 16 потоками с cpio для общей папки Azure NFS, подключенной с nconnect=8. Фактические результаты зависят от конфигурации и наборов данных.

Замечание

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

Конфигурация 1

Для одного каталога с 1 миллионами небольших файлов, в общей сложности 18 ГиБ, мы выполнили этот тест как базовую копию, так и добавочную копию.

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

Диаграмма, показывающая результаты теста конфигурации 1 для базовой копии.

Мы наблюдали следующие результаты, выполняя добавочную копию (разностное изменение).

Диаграмма с результатами теста конфигурации 1 для добавочной копии.

Конфигурация 2

Мы наблюдали следующие результаты, выполняя базовую копию 191 345 небольших файлов в 3906 каталогах с общим размером 3 ГиБ.

Диаграмма, показывающая результаты теста конфигурации 2 для базовой копии.

Конфигурация 3

Мы наблюдали следующие результаты, выполняя базовую копию 5000 больших файлов (10 МиБ) в одном каталоге с общим размером 50 ГиБ.

Диаграмма, показывающая результаты теста конфигурации 3 для базовой копии.

Сводка результатов

Использование многопоточных приложений, таких как fpsync, может повысить пропускную способность и операции ввода-вывода в секунду при миграции в общие папки Azure NFS по сравнению с средствами копирования с одним потоком, такими как rsync. Наши тесты показывают, что:

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

В следующей таблице перечислены результаты.

Конфигурация # Количество файлов Количество каталогов Размер файла Общий размер длительность rsync пропускная способность rsync Длительность fpsync Пропускная способность fpsync Получение пропускной способности
1.1 (базовый план) 1 млн 1 0-32 КиБ 18 ГиБ 837.06 мин 0.33 MiB/s 228.16 мин 1.20 MiB/s 267%
1.2 (добавочный) 1 млн 1 0-32 КиБ 18 ГиБ 84.02 мин 3.25 MiB/s 7,5 мин 36.41 MiB/s 1020%
2 (базовый план) 191,345 3,906 0-32 КиБ 3 ГиБ 191.86 мин 0.27 MiB/s 8,47 мин 6.04 MiB/s 2 164%
3 (базовый план) 5,000 1 10 МиБ 50 ГиБ 8.12 мин 105.04 MiB/s 2,76 мин 308.90 MiB/s 194%

Отказ от ответственности сторонних разработчиков

Средства с открытым кодом, упомянутые в этой статье, являются известными сторонними решениями. Они не разрабатываются, принадлежат или поддерживаются корпорацией Майкрософт напрямую или косвенно. Это ответственность клиента за изучение лицензии на программное обеспечение и заявление о поддержке, предоставленное в документации стороннего производителя.

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