Cómo montar Azure Blob Storage como un sistema de archivos con BlobFuse v1

Importante

BlobFuse2 es la versión más reciente de BlobFuse y tiene muchas mejoras significativas con respecto a la versión analizada en este artículo, BlobFuse v1. Para conocer las mejoras realizadas en BlobFuse2, consulte la lista de mejoras de BlobFuse2. BlobFuse2 se encuentra actualmente en versión preliminar y es posible que no sea adecuado para cargas de trabajo de producción.

BlobFuse es un controlador del sistema de archivos virtual para Azure Blob Storage. BlobFuse le permite obtener acceso a los datos de blob en bloques existentes en la cuenta de almacenamiento, a través del sistema de archivos de Linux. BlobFuse usa el esquema de directorio virtual con el uso de la barra oblicua "/" como delimitador.

En esta guía, se muestra cómo usar BlobFuse v1, montar un contenedor de Blob Storage en Linux y obtener acceso a los datos. Para más información sobre BlobFuse v1, consulte el archivo readme y la wiki.

Advertencia

BlobFuse no garantiza el cumplimiento al 100 % con POSIX ya que, simplemente, convierte las solicitudes en API REST de Blob. Por ejemplo, las operaciones de cambio de nombre son atómicas en POSIX, pero no en BlobFuse. Para obtener una lista completa de las diferencias entre un sistema de archivos nativo y BlobFuse, visite el repositorio de código fuente de BlobFuse.

Instalación de BlobFuse v1 en Linux

Los archivos binarios de BlobFuse están disponibles en los repositorios de software de Microsoft para Linux para las distribuciones de Ubuntu, Debian, SUSE, CentOS, Oracle Linux y RHEL. Para instalar BlobFuse en estas distribuciones, configure uno de los repositorios de la lista. Si no hay ningún archivo binario disponible para su distribución, puede compilar archivos binarios a partir del código fuente siguiendo los pasos de instalación que se detallan en Azure Storage.

BlobFuse está publicado en el repositorio de Linux para las versiones de Ubuntu: 16.04, 18.04 y 20.04, las versiones de RHEL: 7.5, 7.8, 7.9, 8.0, 8.1, 8.2, las versiones de CentOS: 7.0, 8.0, las versiones de Debian: 9.0, 10.0, la versión de SUSE 15 y Oracle Linux 8.1. Ejecute este comando para asegurarse de que tiene una de estas versiones implementadas:

lsb_release -a

Configurar el repositorio de paquetes de Microsoft

Configure el repositorio de paquetes de Linux para productos de Microsoft.

Por ejemplo, en una distribución Redhat Enterprise Linux 8:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

Del mismo modo, cambie la dirección URL a .../rhel/7/... para que señale a una distribución Redhat Enterprise Linux 7.

Otro ejemplo en una distribución Ubuntu 20.04:

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

Del mismo modo, cambie la dirección URL a .../ubuntu/16.04/... o .../ubuntu/18.04/... para hacer referencia a otra versión de Ubuntu.

Instalación de BlobFuse v1

En una distribución Ubuntu/Debian:

sudo apt-get install blobfuse

En una distribución Redhat Enterprise Linux:

sudo yum install blobfuse

En una distribución SUSE:

sudo zypper install blobfuse

Preparación del montaje

BlobFuse requiere una ruta de acceso temporal en el sistema de archivos para almacenar en búfer y en caché los archivos abiertos, lo que ayuda a proporcionar un rendimiento similar al nativo. Para esta ruta de acceso temporal, elija el disco con mayor rendimiento o use un disco RAM para obtener el rendimiento óptimo.

Nota:

BlobFuse almacena todo el contenido de los archivos abiertos en la ruta de acceso temporal. Asegúrese de que tiene espacio suficiente para dar cabida a todos los archivos abiertos.

(Opcional) Usar un disco RAM para la ruta de acceso temporal

En el ejemplo siguiente, se crea un disco RAM de 16 GB, así como un directorio para BlobFuse. Elija el tamaño según sus necesidades. Este disco RAM permite que BlobFuse abra archivos de hasta 16 GB de tamaño.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp

Usar una SSD para la ruta de acceso temporal

En Azure, puede usar los discos efímeros (SSD) disponibles en las máquinas virtuales para proporcionar un búfer de baja latencia para BlobFuse. En función del agente de aprovisionamiento usado, el disco efímero se monta en "/mnt" para cloud-init o en "/mnt/resource" para las máquinas virtuales waagent.

Asegúrese de que el usuario obtenga acceso a la ruta de acceso temporal:

sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown <youruser> /mnt/resource/blobfusetmp

Autorización del acceso a la cuenta de almacenamiento

Puede autorizar el acceso a la cuenta de almacenamiento mediante la clave de acceso de la cuenta, una firma de acceso compartido, una identidad administrada o una entidad de servicio. La información de autorización se puede proporcionar en la línea de comandos, en un archivo de configuración o en variables de entorno. Para más información, consulte Configuraciones de autenticación válidas en el archivo readme de BlobFuse.

Por ejemplo, supongamos que hace la autorización con las claves de acceso de la cuenta y las almacena en un archivo de configuración. El archivo de configuración debería tener el siguiente formato:

accountName myaccount
accountKey storageaccesskey
containerName mycontainer

accountName es el nombre de la cuenta de almacenamiento y no la dirección URL completa.

Cree este archivo mediante:

touch /path/to/fuse_connection.cfg

Después de crear y editar este archivo, asegúrese de restringir el acceso para que ningún otro usuario pueda leerlo.

chmod 600 /path/to/fuse_connection.cfg

Nota:

Si ha creado el archivo de configuración en Windows, asegúrese de ejecutar dos2unix para corregirlo y convertirlo en formato Unix.

Crear un directorio vacío para el montaje

mkdir ~/mycontainer

Montaje

Nota:

Para obtener una lista completa de opciones de montaje, consulte el repositorio de BlobFuse.

Para montar BlobFuse, ejecute el siguiente comando con su usuario. Este comando monta el contenedor especificado en "/path/to/fuse_connection.cfg" en la ubicación "/mycontainer".

blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp  --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

Nota:

Si usa una cuenta de ADLS, debe incluir --use-adls=true.

Ahora debería tener acceso a los blobs en bloque a través de las API normales del sistema de archivos. El usuario que monta el directorio es la única persona que puede obtener acceso al mismo de forma predeterminada, lo que protege el acceso. Para permitir el acceso a todos los usuarios, se puede montar con la opción -o allow_other.

cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt

Hacer persistente el montaje

Para obtener información sobre cómo conservar el montaje, consulte Persisting en la wiki de BlobFuse.

Compatibilidad de características

La compatibilidad con esta característica puede verse afectada al habilitar Data Lake Storage Gen2, el protocolo Network File System (NFS) 3.0 o el Protocolo de transferencia de archivos SSH (SFTP).

Si ha habilitado cualquiera de estas funcionalidades, consulte Compatibilidad con características de Blob Storage en cuentas de Azure Storage para evaluar la compatibilidad con esta característica.

Pasos siguientes