Migrer vers des partages de fichiers Azure NFS

Cet article traite des aspects de base de la migration à partir de serveurs de fichiers Linux vers des partages de fichiers Azure NFS, qui sont uniquement disponibles en tant que partages de fichiers Premium (type de compte FileStorage). Nous allons également comparer les outils de copie de fichiers open source fpsync et rsync pour comprendre comment ils fonctionnent lors de la copie de données dans des partages de fichiers Azure.

Remarque

Azure Files ne prend pas en charge les listes de contrôle d’accès (ACL) NFS.

S’applique à

Type de partage de fichiers SMB NFS
Partages de fichiers Standard (GPv2), LRS/ZRS No No
Partages de fichiers Standard (GPv2), GRS/GZRS No No
Partages de fichiers Premium (FileStorage), LRS/ZRS No Yes

Prérequis

Vous aurez besoin d’au moins un partage de fichiers Azure NFS monté sur une machine virtuelle Linux. Pour en créer un, consultez Créer un partage de fichiers Azure NFS et le monter sur une machine virtuelle Linux. Nous vous recommandons de monter le partage avec nconnect pour utiliser plusieurs connexions TCP. Pour plus d’informations, consultez l’article Améliorer les performances du partage de fichiers Azure NFS.

Outils de migration

De nombreux outils open source sont disponibles pour transférer des données vers des partages de fichiers NFS. Toutefois, tous ne sont pas efficaces lorsqu’il s’agit d’un système de fichiers distribué avec des considérations distinctes en matière de performances par rapport aux configurations locales. Dans un système de fichiers distribué, chaque appel réseau implique un aller-retour vers un serveur qui peut ne pas être local. Par conséquent, l’optimisation du temps consacré aux appels réseau est essentielle pour obtenir des performances optimales et un transfert de données efficace sur le réseau.

Utilisation de fpsync et rsync

Bien qu’il soit monothread, rsync est un outil de copie de fichiers open source polyvalent. Il peut copier localement, vers/à partir d’un autre hôte sur n’importe quel interpréteur de commandes distant, ou vers/à partir d’un démon rsync distant. Il offre de nombreuses options et permet une spécification flexible de l’ensemble de fichiers à copier. Toutefois, fpsync est une application multithread et offre donc quelques avantages, notamment la possibilité d’exécuter des travaux rsync en parallèle.

Dans cet article, nous allons utiliser fpsync pour déplacer des données d’un serveur de fichiers Linux vers des partages de fichiers Azure NFS.

Pour copier les données, fpsync utilise les outils rsync (par défaut), cpio, ou tar. Il calcule les sous-ensembles du src_dir/ du répertoire source et génère des travaux de synchronisation pour les synchroniser avec le dst_dir/ du répertoire de destination. Il exécute des travaux de synchronisation à la volée tout en analysant le système de fichiers, ce qui en fait un outil utile pour migrer efficacement de grands systèmes de fichiers et copier de grands jeux de données contenant plusieurs fichiers.

Remarque

Fpsync synchronise uniquement le contenu du répertoire, et non le répertoire source lui-même. Contrairement à rsync, fpsync applique le dernier « / » sur le répertoire source, ce qui signifie que vous n’obtiendrez pas de sous-répertoire avec le nom du répertoire source dans le répertoire cible après la synchronisation.

Installer fpart

Pour utiliser fpsync, vous devez installer le partitionneur de système de fichiers fpart. Installez fpart sur la distribution Linux de votre choix. Une fois qu’il est installé, vous devriez voir fpsync sous /usr/bin/.

Sur Ubuntu, utilisez le gestionnaire de package apt pour installer fpart.

sudo apt-get install fpart

Copier des données de la source vers la destination

Vérifiez que votre partage de fichiers Azure de destination (cible) est monté sur une machine virtuelle Linux. Consultez les Conditions préalables.

Si vous effectuez une migration complète, vous allez copier vos données en trois phases :

  1. Copie de référence : copie de la source vers la destination lorsqu’aucune donnée n’existe sur la destination. Pour la copie de référence, nous vous recommandons d’utiliser fpsync avec cpio comme outil de copie.
  2. Copie incrémentielle : copie uniquement les modifications incrémentielles de la source à la destination. Pour la synchronisation incrémentielle, nous vous recommandons d’utiliser fpsync avec rsync comme outil de copie. Cette opération doit être effectuée plusieurs fois pour capturer toutes les modifications.
  3. Passe finale : une passe finale est nécessaire pour supprimer les fichiers sur la destination qui n’existent pas à la source.

La copie de données avec fpsync implique toujours une version de cette commande :

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

Copie de référence

Pour la copie de référence, utilisez fpsync avec cpio.

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

Pour plus d’informations, consultez le Support Cpio et Tar.

Copie incrémentielle

Pour la synchronisation incrémentielle, utilisez fpsync avec l’outil de copie par défaut (rsync). Pour capturer toutes les modifications, nous vous recommandons d’exécuter cette opération plusieurs fois.

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

Par défaut, fpsync spécifie les options rsync suivantes : -lptgoD -v --numeric-ids. Vous pouvez spécifier des options rsync supplémentaires en ajoutant -o option à la commande fpsync.

Passe finale

Après plusieurs synchronisations incrémentielles, vous devez effectuer une passe finale pour supprimer les fichiers sur cette destination qui n’existent pas à la source. Vous pouvez effectuer cette opération manuellement avec rsync --delete pour supprimer des fichiers supplémentaires du répertoire /data/dst/, ou utiliser fpsync avec l’option -E. Pour plus d’informations, consultez La passe finale.

Comparaison de rsync et fpsync avec différents jeux de données

Cette section compare les performances de rsync et fpsync avec différents jeux de données.

Jeux de données et configuration

Le tableau suivant répertorie les différents jeux de données que nous avons utilisés pour comparer les performances des outils de copie sous différentes charges de travail.

Config # Type de copie Nombre de fichiers Nombre de répertoires Taille du fichier Taille totale
1,1 Copie de référence 1 million 1 0-32 Kio 18 Gio
1.2 Incrémentielle (modification différentielle) 1 million 1 0-32 Kio 18 Gio
2 Copie de référence 191 345 3906 0-32 Kio 3 Gio
3 Copie de référence 5 000 1 10 Mio 50 GiB

Les tests ont été effectués sur des machines virtuelles Azure Standard_D8s_v3 avec 8 processeurs virtuels, 32 Gio de mémoire et plus de 1 Tio d’espace disque pour les jeux de données volumineux. Pour la cible, nous avons configuré des partages de fichiers Azure NFS avec une taille provisionnée de plus de 1 Tio.

Expériences et résultats : rsync et fpsync

Sur la base de nos expériences avec les configurations ci-dessus, nous avons observé que fpsync était le plus performant lorsqu’il était utilisé avec 64 threads avec rsync et 16 threads avec cpio pour un partage de fichiers Azure NFS monté avec nconnect=8. Les résultats réels varient en fonction de votre configuration et de vos jeux de données.

Remarque

Le débit pour Azure Files peut être beaucoup plus élevé que représenté dans les graphiques suivants. Certaines expériences ont été délibérément menées avec de petits jeux de données par souci de simplicité.

Configuration 1

Pour un répertoire unique avec 1 million de petits fichiers totalisant 18 Gio, nous avons exécuté ce test à la fois comme copie de référence et copie incrémentielle.

Nous avons observé les résultats suivants en effectuant une copie de référence de la source vers la destination.

Chart showing the test results of configuration 1 for a baseline copy.

Nous avons observé les résultats suivants en effectuant une copie incrémentielle (modification différentielle).

Chart showing the test results of configuration 1 for an incremental copy.

« Configuration 2 »

Nous avons observé les résultats suivants en effectuant une copie de référence de 191 345 petits fichiers dans 3906 répertoires avec une taille totale de 3 Gio.

Chart showing the test results of configuration 2 for a baseline copy.

Configuration 3

Nous avons observé les résultats suivants en effectuant une copie de référence de 5000 fichiers volumineux (10 Mio) dans un répertoire unique avec une taille totale de 50 Gio.

Chart showing the test results of configuration 3 for a baseline copy.

Résumé des résultats

L’utilisation d’applications multithread comme fpsync peut améliorer le débit et les IOPS lors de la migration vers des partages de fichiers Azure NFS par rapport aux outils de copie monothread comme rsync. Nos tests montrent que :

  • La distribution de données dans le répertoire permet de paralléliser le processus de migration et d’obtenir ainsi de meilleures performances.
  • La copie de données à partir de fichiers de plus grande taille est plus performante que la copie de données à partir de fichiers de plus petite taille.

Le tableau suivant récapitule les résultats :

Config # Nombre de fichiers Nombre de répertoires Taille du fichier Taille totale durée rsync débit rsync durée fpsync débit fpsync Gain de débit
1.1 (référence) 1 million 1 0-32 Kio 18 Gio 837,06 minutes 0,33 Mio/s 228,16 minutes 1,20 Mio/s 267 %
1,2 (incrémentiel) 1 million 1 0-32 Kio 18 Gio 84,02 minutes 3,25 Mio/s 7,5 minutes 36,41 Mio/s 1020 %
2 (référence) 191 345 3906 0-32 Kio 3 Gio 191,86 minutes 0,27 Mio/s 8,47 min 6,04 Mio/s 2164 %
3 (référence) 5 000 1 10 Mio 50 GiB 8,12 minutes 105,04 Mio/s 2,76 minutes 308,90 Mio/s 194 %

Exclusion de responsabilité de tiers

Les outils open source mentionnés dans cet article sont des solutions tierces connues. Ils ne sont pas développés, détenus ou pris en charge par Microsoft, directement ou indirectement. Il incombe au client d’examiner la licence du logiciel et la déclaration de support fournies dans la documentation du tiers.

Étapes suivantes