Миграция на общие папки Azure NFS
В этой статье рассматриваются основные аспекты миграции с файловых серверов Linux на общие папки NFS Azure, которые доступны только как общие папки класса Premium (тип учетной записи служба хранилища). Мы также сравним средства копирования открытый код файлов fpsync и rsync, чтобы понять, как они выполняются при копировании данных в общие папки Azure.
Примечание.
Файлы Azure не поддерживает списки управления доступом NFS (ACL).
Применяется к
Тип общей папки | SMB | NFS |
---|---|---|
Стандартные общие папки (GPv2), LRS/ZRS | ||
Стандартные общие папки (GPv2), GRS/GZRS | ||
Общие папки уровня "Премиум" (FileStorage), LRS/ZRS |
Необходимые компоненты
Вам потребуется по крайней мере одна общая папка NFS Azure, подключенная к виртуальной машине Linux. Чтобы создать его, см. статью "Создание общей папки Azure NFS" и его подключение на виртуальной машине Linux. Рекомендуется подключить общую папку с nconnect, чтобы использовать несколько TCP-подключений. Дополнительные сведения см. в статье "Улучшение производительности NFS общей папки Azure".
Средства миграцииСредства миграции
Многие средства открытый код доступны для передачи данных в общие папки NFS. Однако не все они эффективны при работе с распределенной файловой системой с различными соображениями производительности по сравнению с локальными настройками. В распределенной файловой системе каждый сетевой вызов включает круговую поездку на сервер, который может не быть локальным. Таким образом, оптимизация времени, затраченного на сетевые вызовы, имеет решающее значение для достижения оптимальной производительности и эффективной передачи данных по сети.
Использование 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. См. раздел Предварительные требования.
Если вы выполняете полную миграцию, вы скопируете данные на трех этапах:
- Базовая копия: копирование из источника в место назначения, если данные не существуют в назначении. Для базовой копии рекомендуется использовать fpsync с cpio в качестве средства копирования.
- Добавочное копирование: копирование только добавочных изменений из источника в место назначения. Для добавочной синхронизации рекомендуется использовать fpsync с rsync в качестве средства копирования. Это необходимо сделать несколько раз, чтобы записать все изменения.
- Окончательный проход: окончательный проход необходим для удаления файлов в месте назначения, который не существует в источнике.
Копирование данных с помощью 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 с различными наборами данных.
Наборы данных и конфигурация
В следующей таблице перечислены различные наборы данных, используемые для сравнения производительности средства копирования в разных рабочих нагрузках.
Config # | Тип копирования | Количество файлов | Количество каталогов | Размер файла | Общий размер |
---|---|---|---|---|---|
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 ГиБ, мы выполнили этот тест как базовую копию, так и добавочную копию.
Мы наблюдали следующие результаты, выполняя базовую копию из источника в место назначения.
Мы наблюдали следующие результаты, выполняя добавочную копию (разностное изменение).
Конфигурация 2
Мы наблюдали следующие результаты, выполняя базовую копию 191 345 небольших файлов в 3906 каталогах с общим размером 3 ГиБ.
Конфигурация 3
Мы наблюдали следующие результаты, выполняя базовую копию 5000 больших файлов (10 МиБ) в одном каталоге с общим размером 50 ГиБ.
Сводка результатов
Использование многопоточных приложений, таких как fpsync, может повысить пропускную способность и операции ввода-вывода в секунду при миграции в общие папки Azure NFS по сравнению с средствами копирования с одним потоком, такими как rsync. Наши тесты показывают, что:
- Распределение данных по каталогу помогает параллелизировать процесс миграции и, таким образом, обеспечивает более высокую производительность.
- Копирование данных из больших размеров файлов обеспечивает лучшую производительность, чем копирование данных из небольших размеров файлов.
В следующей таблице перечислены результаты.
Config # | Количество файлов | Количество каталогов | Размер файла | Общий размер | длительность 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 | 1,020% |
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 | 94 % |
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
Средства открытый код, упоминание в этой статье, являются известными сторонними решениями. Они не разрабатываются, принадлежат или поддерживаются корпорацией Майкрософт напрямую или косвенно. Это ответственность клиента за изучение лицензии на программное обеспечение и заявление о поддержке, предоставленное в документации стороннего производителя.