前面和大家演示了如何直接将Blob存储装载为文件系统,但在很多客户的实际使用场景中是通过Blobfuse进行装载的。

Blobfuse是Azure Blob存储的虚拟文件系统驱动程序。Blobfuse允许通过Linux文件系统访问存储账户中的现用块Blob数据。Blobfuse使用虚拟目录方案,并使用正斜杠“/”作为分隔符。接下来我们一起来看下如何使用Blobfuse在Linux VM上装载Blob存储容器并访问数据。

在Linux VM上安装Blobfuse

首先我们需要在Linux VM上导入一个存储库,用于安装Blobfuse,在此我们使用微软的库:

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

如何使用Blobfuse将Blob存储装载为文件系统_文件系统

运行 sudo yum install blobfuse 来安装Blobfuse:

如何使用Blobfuse将Blob存储装载为文件系统_Azure_02

Blobfuse 装载准备

临是路径准备

Blobfuse要求在文件系统中存在一个临是路径,用于缓冲和缓存任何打开的文件,一边提供类似本机的访问性能。对此临是路径,建议选择性能最好的磁盘,或者使用ramdisk来获得最佳性能。在Azure中可以选择两种方式来用作此临是路径,一种是创建ramdisk,另外一种方式是使用Azure VM上提供的临是磁盘(SSD)。接下来就看下如何使用Azure VM的临时盘用作Blobfuse的临是路径。

在Linux VM下,临是磁盘一般装载在/mnt/resource上,首先我们在临时盘内创建一个临是路径,运行如下命令:

sudo mkdir /mnt/resource/blobfusetmp -p

如何使用Blobfuse将Blob存储装载为文件系统_Azure_03

运行 sudo chown root /mnt/resource/blobfusetm p 命令,确保对应用户有权限访问该路径:

如何使用Blobfuse将Blob存储装载为文件系统_Azure_04

配置存储账户凭据

运行 touch ~/fuse_connection.cfg 命令在根目录创建链接配置文件:

如何使用Blobfuse将Blob存储装载为文件系统_配置文件_05

在配置文件中配置存储账户信息,Blobfuse 要求将凭据采用以下格式存储在文本文件中:

accountName myaccount

accountKey storageaccesskey

containerName mycontainer

如何使用Blobfuse将Blob存储装载为文件系统_文件系统_06

创建并编辑此文件以后,请确保限制对它的访问权限,防止其他用户读取它。

如何使用Blobfuse将Blob存储装载为文件系统_配置文件_07

创建装载目录

运行 mkdir ~/blobfuse 创建装载目录:

使用Blobfuse装载Blob存储

若要装载 Blobfuse,需要以用户身份运行以下命令。 此命令将“/path/to/fuse_connection.cfg”中指定的容器装载到“/blobfuse01”位置:

sudo mkdir /mnt/resource/blobfusetmp -psudo blobfuse ~/blobfuse --tmp-path=/mnt/resource/blobfusetmp --configfile=./fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -onegative_timeout=120

如何使用Blobfuse将Blob存储装载为文件系统_配置文件_08

装载完成后,通过df -h可以看到相关信息:

如何使用Blobfuse将Blob存储装载为文件系统_Azure_09

测试文件读写

现在应该可以通过常规文件系统 API 访问块 Blob。 装载该目录的用户是可以访问它的唯一人员,默认情况下,这可以保护访问权限。 若要允许所有用户进行访问,可以通过选项 -o allow_other 进行装载。

如何使用Blobfuse将Blob存储装载为文件系统_配置文件_10

运行如下命令测试文件写入:

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

如何使用Blobfuse将Blob存储装载为文件系统_Azure_11