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.
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 distribuciones Ubuntu, Debian, SUSE, 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 se publica en el repositorio de Linux para versiones de Ubuntu: 16.04, 18.04 y 20.04, versiones de RHEL: 7.5, 7.8, 7.9, 8.0, 8.1, 8.2, Versiones de Debian: 9.0, 10.0, SUSE versión: 15, Oracle Linux 8.1. Ejecute este comando para asegurarse de que tiene una de estas versiones implementadas:
cat /etc/*-release
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.
Instalación de BlobFuse v1
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
authType Key
accountName
es el nombre de la cuenta de almacenamiento y no la dirección URL completa. Debe actualizar myaccount
, storageaccesskey
y mycontainer
con la información de almacenamiento.
Cree este archivo mediante:
sudo 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.
sudo 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
sudo 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".
sudo 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
.
sudo cd ~/mycontainer
sudo mkdir test
sudo 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.