Migración a recursos compartidos de archivos de Azure NFS
En este artículo se tratan los aspectos básicos de la migración de servidores de archivos de Linux a recursos compartidos de archivos de Azure NFS, que solo están disponibles como recursos compartidos de archivos Premium (tipo de cuenta FileStorage). También compararemos las herramientas de copia de archivos de código abierto fpsync y rsync para comprender cómo se realizan al copiar datos en recursos compartidos de archivos de Azure.
Nota:
Azure Files no admite listas de control de acceso (ACL) NFS.
Se aplica a
Tipo de recurso compartido de archivos | SMB | NFS |
---|---|---|
Recursos compartidos de archivos Estándar (GPv2), LRS/ZRS | ||
Recursos compartidos de archivos Estándar (GPv2), GRS/GZRS | ||
Recursos compartidos de archivos Premium (FileStorage), LRS/ZRS |
Requisitos previos
Necesitará al menos un recurso compartido de archivos de Azure NFS montado en una máquina virtual (VM) Linux. Para crear uno, consulte Creación de un recurso compartido de archivos de Azure NFS y montaje en una máquina virtual Linux. Se recomienda montar el recurso compartido con nconnect para usar varias conexiones TCP. Para más información, consulte Mejora del rendimiento del recurso compartido de archivos NFS de Azure.
Herramientas de migración
Muchas herramientas de código abierto están disponibles para transferir datos a recursos compartidos de archivos NFS. Sin embargo, no todos ellos son eficaces cuando se trabaja con un sistema de archivos distribuido con distintas consideraciones de rendimiento en comparación con las configuraciones locales. En un sistema de archivos distribuido, cada llamada de red implica un recorrido de ida y vuelta a un servidor que podría no ser local. Por lo tanto, optimizar el tiempo invertido en las llamadas de red es fundamental para lograr un rendimiento óptimo y una transferencia de datos eficaz a través de la red.
Uso de fpsync frente a rsync
A pesar de ser uniproceso, rsync es una herramienta versátil de copia de archivos de código abierto. Puede copiar localmente, hacia o desde otro host a través de cualquier shell remoto, o hacia o desde un demonio rsync remoto. Ofrece muchas opciones y permite copiar una especificación flexible del conjunto de archivos. Sin embargo, fpsync es una aplicación multiproceso y por tanto, ofrece algunas ventajas, incluida la capacidad de ejecutar trabajos rsync en paralelo.
En este artículo, usaremos fpsync para mover datos de un servidor de archivos Linux a recursos compartidos de archivos de Azure NFS.
Para copiar los datos, fpsync usa herramientas rsync (valor predeterminado), cpioo tar. Calcula subconjuntos del directorio de origen src_dir/
y genera trabajos de sincronización para sincronizarlos con el directorio de destino dst_dir/
. Ejecuta trabajos de sincronización sobre la marcha mientras rastrea simultáneamente el sistema de archivos, lo que lo convierte en una herramienta útil para migrar de forma eficaz sistemas de archivos grandes y copiar grandes conjuntos de datos con varios archivos.
Nota:
Fpsync solo sincroniza el contenido del directorio, no el propio directorio de origen. A diferencia de rsync, fpsync aplica el "/" final en el directorio de destino, lo que significa que no obtendrá un subdirectorio con el nombre del directorio de origen en el directorio de destino después de la sincronización.
Instalación de fpart
Para usar fpsync, deberá instalar el particionador de sistema de archivos fpart. Instale fpart en la distribución de Linux que prefiera. Una vez instalado, debería ver fpsync en /usr/bin/
.
En Ubuntu, use el administrador de paquetes apt para instalar fpart.
sudo apt-get install fpart
Copia de datos de origen a destino
Asegúrese de que el recurso compartido de archivos de Azure de destino (destino) está montado en una máquina virtual Linux. Vea Requisitos previos:.
Si va a realizar una migración completa, copiará los datos en tres fases:
- Copia de línea base: copia de origen a destino cuando no exista ningún dato en el destino. Para la copia de línea base, se recomienda usar fpsync con cpio como herramienta de copia.
- Copia incremental: copie solo los cambios incrementales de origen a destino. Para la sincronización incremental, recomendamos usar fpsync con rsync como herramienta de copia. Esto se debe hacer varias veces para capturar todos los cambios.
- Pase final: se necesita un pase final para eliminar los archivos del destino que no existen en el origen.
La copia de datos con fpsync siempre implica alguna versión de este comando:
fpsync -m <specify copy tool - rsync/cpio/tar> -n <parallel transfers> <absolute source path> <absolute destination path>
Copia de línea base
Para la copia de línea base, use fpsync con cpio.
fpsync -m cpio -n <parallel transfers> <absolute source path> <absolute destination path>
Para obtener más información, consulte Compatibilidad con Cpio y Tar.
Copia incremental
Para la sincronización incremental, use fpsync con la herramienta de copia predeterminada (rsync). Para capturar todos los cambios, se recomienda ejecutarlo varias veces.
fpsync -n <parallel transfers> <absolute source path> <absolute destination path>
De manera predeterminada, fpsync especificará las siguientes opciones de rsync: -lptgoD -v --numeric-ids
. Puede especificar opciones de rsync adicionales agregando -o option
al comando fpsync.
Pase final
Después de varias sincronizaciones incrementales, debe realizar un pase final para eliminar los archivos de ese destino que no existen en el origen. Puede hacerlo manualmente con rsync --delete
para eliminar archivos adicionales del directorio /data/dst/
o puede usar fpsync con la opción -E. Para obtener más información, consulte El pase final.
Comparación de rsync y fpsync con diferentes conjuntos de datos
En esta sección se compara el rendimiento de rsync y fpsync con diferentes conjuntos de datos.
Conjuntos de datos y configuración
En la tabla siguiente se enumeran los distintos conjuntos de datos que usamos para comparar el rendimiento de las herramientas de copia en distintas cargas de trabajo.
Configuración # | Tipo de copia | Recuento de archivos | Recuento de directorios | Tamaño de archivo | tamaño total |
---|---|---|---|---|---|
1.1 | Copia de línea base | 1 millón | 1 | 0-32 KiB | 18 GiB |
1,2 | Incremental (cambio diferencial) | 1 millón | 1 | 0-32 KiB | 18 GiB |
2 | Copia de línea base | 191,345 | 3,906 | 0-32 KiB | 3 GiB |
3 | Copia de línea base | 5\.000 | 1 | 10 MiB | 50 GiB |
Las pruebas se realizaron en Máquinas virtuales de Azure Standard_D8s_v3 con 8 vCPU, 32 GiB de memoria y más de 1 TiB de espacio en disco para grandes conjuntos de datos. Para el destino, hemos configurado recursos compartidos de archivos de Azure NFS con más de 1 tamaño aprovisionado de TiB.
Experimentos y resultados: rsync frente a fpsync
En función de nuestros experimentos con las configuraciones anteriores, observamos que fpsync se ha realizado mejor cuando se usa con 64 subprocesos con rsync y 16 subprocesos con cpio para un recurso compartido de archivos NFS de Azure montado con nconnect=8
. Los resultados reales variarán en función de la configuración y los conjuntos de datos.
Nota:
El rendimiento de Azure Files puede ser mucho mayor que el representado en los gráficos siguientes. Algunos de los experimentos se realizaron deliberadamente con pequeños conjuntos de datos para simplificar.
Configuración 1
Para un único directorio con 1 millón de archivos pequeños que sume 18 GiB, hemos ejecutado esta prueba como una copia de línea base y una copia incremental.
Hemos observado los siguientes resultados realizando una copia de línea base de origen a destino.
Hemos observado los siguientes resultados realizando una copia incremental (cambio diferencial).
Configuration 2
Observamos los siguientes resultados haciendo una copia de línea base de 191.345 archivos pequeños en 3.906 directorios con un tamaño total de 3 GiB.
Configuración 3
Observamos los siguientes resultados haciendo una copia de línea base de 5000 archivos grandes (10 MiB) en un único directorio con un tamaño total de 50 GiB.
Resumen de los resultados
El uso de aplicaciones multiproceso como fpsync puede mejorar el rendimiento e IOPS al migrar a recursos compartidos de archivos de Azure NFS en comparación con las herramientas de copia de un solo subproceso, como rsync. Nuestras pruebas muestran que:
- La distribución de datos en el directorio ayuda a paralelizar el proceso de migración y, por tanto, logra un mejor rendimiento.
- La copia de datos de tamaños de archivo más grandes produce un mejor rendimiento que copiar datos de tamaños de archivo más pequeños.
En la tabla siguiente se resumen los resultados.
Configuración # | Recuento de archivos | Recuento de directorios | Tamaño de archivo | tamaño total | Duración de rsync | Rendimiento rsync | Duración de fpsync | Rendimiento de fpsync | Ganancia de rendimiento |
---|---|---|---|---|---|---|---|---|---|
1,1 (línea base) | 1 millón | 1 | 0-32 KiB | 18 GiB | 837,06 minutos | 0,33 MiB/s | 228,16 minutos | 1,20 MiB/s | 267 % |
1,2 (incremental) | 1 millón | 1 | 0-32 KiB | 18 GiB | 84,02 minutos | 3,25 MiB/s | 7,5 minutos | 36,41 MiB/s | 1,020 % |
2 (línea base) | 191,345 | 3,906 | 0-32 KiB | 3 GiB | 191,86 minutos | 0,27 MiB/s | 8,47 minutos | 6,04 MiB/s | 2,164 % |
3 (línea base) | 5\.000 | 1 | 10 MiB | 50 GiB | 8,12 minutos | 105,04 MiB/s | 2,76 minutos | 308,90 MiB/s | 194 % |
Aviso de declinación de responsabilidades sobre la información de terceros
Las herramientas de código abierto mencionadas en este artículo son soluciones conocidas de terceros. No son desarrolladas, propiedad ni compatibles con Microsoft, ya sea directa o indirectamente. Es responsabilidad del cliente examinar la licencia de software y la declaración de soporte técnico proporcionadas en la documentación de terceros.