Cómo montar el almacenamiento de blobs como sistema de archivos con blobfuseHow to mount Blob storage as a file system with blobfuse

Información generalOverview

Blobfuse es un controlador de sistema de archivos virtual para Azure Blob Storage.Blobfuse is a virtual file system driver for 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 allows you to access your existing block blob data in your storage account through the Linux file system. Blobfuse usa el esquema de directorio virtual con el uso de la barra oblicua "/" como delimitador.Blobfuse uses the virtual directory scheme with the forward-slash '/' as a delimiter.

En esta guía, se muestra cómo usar blobfuse, montar un contenedor de almacenamiento de blobs en Linux y obtener acceso a los datos.This guide shows you how to use blobfuse, and mount a Blob storage container on Linux and access data. Para obtener más información sobre blobfuse, lea los detalles en el repositorio de blobfuse.To learn more about blobfuse, read the details in the blobfuse repository.

Advertencia

Blobfuse no garantiza el cumplimiento al 100 % con POSIX ya que, simplemente, convierte las solicitudes en API REST de Blob.Blobfuse doesn't guarantee 100% POSIX compliance as it simply translates requests into Blob REST APIs. Por ejemplo, las operaciones de cambio de nombre son atómicas en POSIX, pero no en blobfuse.For example, rename operations are atomic in POSIX, but not in 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.For a full list of differences between a native file system and blobfuse, visit the blobfuse source code repository.

Instalar blobfuse en LinuxInstall blobfuse on Linux

Los archivos binarios de Blobfuse están disponibles en los repositorios de software de Microsoft para Linux correspondientes a las distribuciones de Ubuntu y RHEL.Blobfuse binaries are available on the Microsoft software repositories for Linux for Ubuntu and RHEL distributions. Para instalar Blobfuse en estas distribuciones, configure uno de los repositorios de la lista.To install blobfuse on those distributions, configure one of the repositories from the list. 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.You can also build the binaries from source code following the Azure Storage installation steps if there are no binaries available for your distribution.

Blobfuse admite la instalación en Ubuntu 14.04, 16.04 y 18.04.Blobfuse supports installation on Ubuntu 14.04, 16.04, and 18.04. Ejecute este comando para asegurarse de que tiene una de estas versiones implementadas:Run this command to make sure that you have one of those versions deployed:

lsb_release -a

Configurar el repositorio de paquetes de MicrosoftConfigure the Microsoft package repository

Configure el repositorio de paquetes de Linux para productos de Microsoft.Configure the Linux Package Repository for Microsoft Products.

Por ejemplo, en una distribución Enterprise Linux 6:As an example, on an Enterprise Linux 6 distribution:

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

Del mismo modo, cambie la dirección URL a .../rhel/7/... para que señale a una distribución Enterprise Linux 7.Similarly, change the URL to .../rhel/7/... to point to an Enterprise Linux 7 distribution.

Otro ejemplo en una distribución Ubuntu 14.04:Another example on an Ubuntu 14.04 distribution:

wget https://packages.microsoft.com/config/ubuntu/14.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.Similarly, change the URL to .../ubuntu/16.04/... or .../ubuntu/18.04/... to reference another Ubuntu version.

Instalar blobfuseInstall blobfuse

En una distribución Ubuntu/Debian:On an Ubuntu/Debian distribution:

sudo apt-get install blobfuse

En una distribución Enterprise Linux:On an Enterprise Linux distribution:

sudo yum install blobfuse

Preparación del montajePrepare for mounting

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.Blobfuse provides native-like performance by requiring a temporary path in the file system to buffer and cache any open files. Para esta ruta de acceso temporal, elija el disco con mayor rendimiento o use un disco RAM para obtener el rendimiento óptimo.For this temporary path, choose the most performant disk, or use a ramdisk for best performance.

Nota

Blobfuse almacena todo el contenido de los archivos abiertos en la ruta de acceso temporal.Blobfuse stores all open file contents in the temporary path. Asegúrese de que tiene espacio suficiente para dar cabida a todos los archivos abiertos.Make sure to have enough space to accommodate all open files.

(Opcional) Usar un disco RAM para la ruta de acceso temporal(Optional) Use a ramdisk for the temporary path

En el ejemplo siguiente, se crea un disco RAM de 16 GB, así como un directorio para blobfuse.The following example creates a ramdisk of 16 GB and a directory for blobfuse. Elija el tamaño según sus necesidades.Choose the size based on your needs. Este disco RAM permite que blobfuse abra archivos de hasta 16 GB de tamaño.This ramdisk allows blobfuse to open files up to 16 GB in size.

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 temporalUse an SSD as a temporary path

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.In Azure, you may use the ephemeral disks (SSD) available on your VMs to provide a low-latency buffer for blobfuse. En las distribuciones de Ubuntu, este disco efímero se monta en "/mnt".In Ubuntu distributions, this ephemeral disk is mounted on '/mnt'. En las distribuciones de RedHat y CentOS, el disco está montado en "/mnt/resource/".In Red Hat and CentOS distributions, the disk is mounted on '/mnt/resource/'.

Asegúrese de que el usuario obtenga acceso a la ruta de acceso temporal:Make sure your user has access to the temporary path:

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

Configurar las credenciales de la cuenta de almacenamientoConfigure your storage account credentials

Blobfuse requiere que sus credenciales se almacenen en un archivo de texto con el formato siguiente:Blobfuse requires your credentials to be stored in a text file in the following format:

accountName myaccount
accountKey storageaccesskey
containerName mycontainer

accountName es el prefijo de la cuenta de almacenamiento (no la dirección URL completa).The accountName is the prefix for your storage account - not the full URL.

Cree este archivo mediante:Create this file using:

touch ~/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.Once you've created and edited this file, make sure to restrict access so no other users can read it.

chmod 600 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.If you have created the configuration file on Windows, make sure to run dos2unix to sanitize and convert the file to Unix format.

Crear un directorio vacío para el montajeCreate an empty directory for mounting

mkdir ~/mycontainer

MontajeMount

Nota

Para obtener una lista completa de opciones de montaje, consulte el repositorio de blobfuse.For a full list of mount options, check the blobfuse repository.

Para montar blobfuse, ejecute el siguiente comando con su usuario.To mount blobfuse, run the following command with your user. Este comando monta el contenedor especificado en "/path/to/fuse_connection.cfg" en la ubicación "/mycontainer".This command mounts the container specified in '/path/to/fuse_connection.cfg' onto the location '/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

Ahora debería tener acceso a los blobs en bloque a través de las API normales del sistema de archivos.You should now have access to your block blobs through the regular file system APIs. El usuario que monta el directorio es la única persona que puede obtener acceso al mismo de forma predeterminada, lo que protege el acceso.The user who mounts the directory is the only person who can access it, by default, which secures the access. Para permitir el acceso a todos los usuarios, se puede montar con la opción -o allow_other.To allow access to all users, you can mount via the option -o allow_other.

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

Pasos siguientesNext steps