Compartir a través de


Consideraciones de rendimiento del sistema de archivos de red (NFS) 3.0 en Azure Blob Storage

Blob Storage ya es compatible con el protocolo Network File System (NFS) 3.0. Este artículo contiene recomendaciones que le ayudan 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 con el protocolo Network File System (NFS) 3.0 para 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 salida y entrada de la cuenta de almacenamiento, consulte Objetivos de escalabilidad y rendimiento para las 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 estándar de uso general v2.

Rendimiento 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.

Rendimiento 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 premium de Azure ofrece una baja latencia coherente y altas tasas de transacción. 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 Premium puede lograr un ancho de banda de 2,3x en comparación con la misma configuración que se usa con una cuenta de almacenamiento de uso general de rendimiento estándar v2.

Cada barra del gráfico siguiente muestra la diferencia en el ancho de banda alcanzado entre las cuentas de almacenamiento de rendimiento premium y estándar. A medida que aumenta el número de clientes, esa diferencia disminuye.

Rendimiento relativo

Mejora del tamaño de lectura anticipada para aumentar el rendimiento de lectura de archivos de gran tamaño

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 de gran tamaño.

export AZMNT=/your/container/mountpoint

echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb

Evitar 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.

Despliegue de Azure HPC Cache para aplicaciones sensibles a la latencia

Algunas aplicaciones pueden requerir una latencia baja además de un alto rendimiento. Puede implementar Azure HPC Cache para mejorar significativamente la latencia. Obtenga más información sobre la latencia en Blob Storage.

Aumento del número de conexiones TCP

Puede usar la nconnect opción de montaje 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 Azure nconnect.

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 nconnect opción en el comando mount 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 Azure nconnect. El uso de la opción de montaje sin compatibilidad con Azure nconnect reducirá el nconnect rendimiento, provocará varios tiempos de espera y provocará que los comandos como READDIR y READIRPLUS funcionen incorrectamente.

La compatibilidad con Azure nconnect está disponible con la mayoría de los kernels de Ubuntu más recientes que se pueden usar con máquinas virtuales de Azure. Para averiguar si la compatibilidad con Azure nconnect 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 Azure nconnect está disponible, habilitela mediante la ejecución del siguiente comando.

echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect

Otras recomendaciones de procedimientos recomendados

  • Use máquinas virtuales con ancho de banda de red suficiente.

  • 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 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