Consideraciones de rendimiento de Network File System (NFS) 3.0 en Azure Blob Storage
Blob Storage ya es compatible con el protocolo Network File System (NFS) 3.0. En este artículo se incluyen recomendaciones que le ayudarán a optimizar el rendimiento de las solicitudes de almacenamiento. Para más información sobre la compatibilidad de NFS 3.0 con Azure Blob Storage, consulte Compatibilidad del protocolo Network File System (NFS) 3.0 con Azure Blob Storage.
Adición de clientes para aumentar el rendimiento
Azure Blob Storage escala linealmente hasta alcanzar el límite máximo de entrada y salida de la cuenta de almacenamiento. Por lo tanto, las aplicaciones pueden lograr un mayor rendimiento mediante el uso de más clientes. Para ver los límites de entrada y salida de la cuenta de almacenamiento, consulte Objetivos de escalabilidad y rendimiento para cuentas de almacenamiento estándar.
En el gráfico siguiente se muestra cómo aumenta el ancho de banda a medida que se agregan más clientes. En este gráfico, un cliente es una máquina virtual (VM) y con una cuenta de almacenamiento de uso general v2 estándar.
En el gráfico siguiente se muestra este mismo efecto cuando se aplica a una cuenta de almacenamiento de blobs en bloques Premium.
Uso de cuentas de almacenamiento de blobs en bloques Premium para aplicaciones a pequeña escala
No todas las aplicaciones se pueden escalar verticalmente agregando más clientes. Para esas aplicaciones, la cuenta de almacenamiento de blobs en bloques prémium de Azure ofrece una latencia baja coherente y elevadas tasas de transacciones. La cuenta de almacenamiento de blobs en bloques prémium puede alcanzar el ancho de banda máximo con menos subprocesos y clientes. Por ejemplo, con un solo cliente, una cuenta de almacenamiento de blobs en bloques prémium puede alcanzar 2,3 veces más ancho de banda en comparación con la misma configuración que se usa con una cuenta de almacenamiento v2 de uso general y rendimiento estándar.
Cada barra del gráfico siguiente muestra la diferencia en el ancho de banda logrado entre las cuentas de almacenamiento de rendimiento estándar y prémium. A medida que aumenta el número de clientes, se reduce la diferencia.
Mejora del tamaño de lectura anticipada para aumentar el rendimiento de lectura de archivos grandes
El parámetro de kernel read_ahead_kb representa la cantidad de datos adicionales que se deben leer después de completar una solicitud de lectura determinada. Puede aumentar este parámetro a 16 MiB para mejorar el rendimiento de lectura de archivos grandes.
export AZMNT=/your/container/mountpoint
echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb
Evitación de sobrescrituras frecuentes en los datos
Se tarda más tiempo en completar una operación de sobrescritura que una nueva operación de escritura. Esto se debe a que una operación de sobrescritura de NFS, especialmente una edición parcial de archivos en contexto, es una combinación de varias operaciones de blobs subyacentes: una operación de lectura, una modificación y una operación de escritura. Por lo tanto, una aplicación que requiere ediciones en contexto frecuentes no es adecuada para las cuentas de almacenamiento de blobs habilitadas para NFS.
Implementación de Azure HPC Cache para aplicaciones sensibles a la latencia
Algunas aplicaciones pueden requerir baja latencia, además de alto rendimiento. Puede implementar Azure HPC Cache para mejorar significativamente la latencia. Obtenga más información sobre la Latencia en Blob Storage.
Aumentar el número de conexiones TCP
Puede usar la opción de montaje nconnect
para obtener un mayor rendimiento de lectura y escritura agregados desde una sola máquina virtual, pero solo si el kernel de Linux tiene compatibilidad con nconnect de Azure.
nconnect
es una opción de montaje de Linux del lado cliente que permite usar varias conexiones TCP entre el cliente y el punto de conexión de Blob service. Puede usar la opción en el comando de montaje nconnect
para especificar el número de conexiones TCP que desea crear (por ejemplo: mount -t aznfs -o nconnect=16,sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdatain
).
Importante
Aunque las distribuciones más recientes de Linux son totalmente compatibles con nconnect, solo debe usar esta opción si el kernel tiene compatibilidad con nconnect de Azure. El uso de la opción de montaje nconnect
sin compatibilidad con nconnect de Azure reducirá el rendimiento, provocará varios tiempos de espera y provocará que los comandos como READDIR
y READIRPLUS
funcionen incorrectamente.
La compatibilidad con nconnect de Azure está disponible con la mayoría de las kernals de Ubuntu recientes que se pueden usar con máquinas virtuales de Azure. Para averiguar si la compatibilidad con nconnect de Azure está disponible para el kernel, ejecute el siguiente comando.
[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"
Si la compatibilidad con nconnect de Azure está disponible para el kernel, Yes
se imprime en la consola. En caso contrario, 'No
se imprime en la consola.
Si la compatibilidad con nconnect de Azure está disponible, habilítela mediante la ejecución del siguiente comando.
echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect
Otros procedimientos recomendados
Use máquinas virtuales con más ancho de banda de red.
Use varios puntos de montaje cuando las cargas de trabajo lo permitan.
Use tantos subprocesos como sea posible.
Use tamaños de bloques grandes.
Realice las solicitudes de almacenamiento desde un cliente que se encuentre en la misma región que la cuenta de almacenamiento. Esto puede mejorar la latencia de red.
Pasos siguientes
Para más información sobre la compatibilidad de NFS 3.0 con Azure Blob Storage, consulte Compatibilidad del protocolo Network File System (NFS) 3.0 con Azure Blob Storage.
Para comenzar, consulte Montaje de Blob Storage con el protocolo Network File System (NFS) 3.0.