你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如何使用 BlobFuse v1 将 Azure Blob 存储装载为文件系统
重要
BlobFuse2 是最新版本的 BlobFuse,对本文讨论的版本 (BlobFuse v1) 进行了许多重大改进。 若要了解 BlobFuse2 中的改进,请参阅 BlobFuse2 增强功能列表。
BlobFuse 是 Azure Blob 存储的虚拟文件系统驱动程序。 BlobFuse 允许通过 Linux 文件系统访问存储帐户中的现有块 Blob 数据。 BlobFuse 使用虚拟目录方案,并使用正斜杠“/”作为分隔符。
本指南介绍如何使用 BlobFuse v1,以及如何在 Linux 上装载 Blob 存储容器并访问数据。 若要了解有关 BlobFuse v1 的详细信息,请参阅自述文件和 Wiki。
警告
BlobFuse 不保证 100% 的 POSIX 符合性,因为它只是将请求转换成 Blob REST API。 例如,重命名操作在 POSIX 中是原子操作,但在 Blobfuse 中不是。 有关本机文件系统和 BlobFuse 之间差异的完整列表,请访问 BlobFuse 源代码存储库。
在 Linux 上安装 BlobFuse v1
适用于 Ubuntu、Debian、SUSE、Oracle Linux 和 RHEL 发行版的 BlobFuse 二进制文件通过适用于 Linux 的 Microsoft 软件存储库提供。 若要在这些发行版上安装 BlobFuse,请从列表中配置其中一个存储库。 如果你的发行版没有可用的二进制文件,还可以按照 Azure 存储安装步骤从源代码生成二进制文件。
对于 Ubuntu 版本,BlobFuse 将发布在 Linux 存储库中:16.04、18.04 和 20.04,RHEL 版本:7.5、7.8、7.9、8.0、8.1、8.2,Debian 版本:9.0、10.0,SUSE 版本:15,Oracle Linux 8.1。 运行以下命令以确保你已部署了以下版本之一:
cat /etc/*-release
配置 Microsoft 包存储库
例如,在 Redhat Enterprise Linux 8 发行版中:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
类似地,将 URL 更改为 .../rhel/7/...
,使之指向 Redhat Enterprise Linux 7 发行版。
安装 BlobFuse v1
准备装载
BlobFuse 要求文件系统中存在一个临时路径,用于缓冲和缓存任何打开的文件,以便提供类似本机的性能。 对于此临时路径,请选择性能最高的磁盘,或者使用 ramdisk 来获得最佳性能。
注意
BlobFuse 将所有打开的文件内容存储在临时路径中。 请确保有足够的空间来容纳所有打开的文件。
(可选)将 ramdisk 用于临时路径
以下示例创建一个 16 GB 的 ramdisk,并创建一个用于 BlobFuse 的目录。 请根据需要选择大小。 此 ramdisk 允许 BlobFuse 打开多个文件,只要其大小总计不超过 16 GB 即可。
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
将 SSD 用作临时路径
在 Azure 中,可以使用 VM 上提供的临时磁盘 (SSD),为 BlobFuse 提供低延迟缓冲区。 根据所使用的预配代理,临时磁盘将装载到 cloud-init 的“/mnt”或 waagent VM 的“/mnt/resource”上。
请确保用户有权访问该临时路径:
sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown <youruser> /mnt/resource/blobfusetmp
授权访问存储账户
可以使用帐户访问密钥、共享访问签名、托管标识或服务主体来授权访问存储帐户。 可以在命令行、配置文件或环境变量中提供授权信息。 有关详细信息,请参阅 BlobFuse 自述文件中的有效身份验证设置。
例如,假设你正在使用帐户访问密钥进行授权,并将其存储在配置文件中。 配置文件应采用以下格式:
accountName myaccount
accountKey storageaccesskey
containerName mycontainer
authType Key
accountName
是存储帐户的名称,而不是完整的 URL。 需要用你的存储信息更新 myaccount
、storageaccesskey
和 mycontainer
。
使用以下内容创建此文件:
sudo touch /path/to/fuse_connection.cfg
创建并编辑此文件以后,请确保限制对它的访问权限,防止其他用户读取它。
sudo chmod 600 /path/to/fuse_connection.cfg
注意
如果已在 Windows 上创建了配置文件,请确保运行 dos2unix
以清理该文件并将其转换为 Unix 格式。
创建装载用的空目录
sudo mkdir ~/mycontainer
装载
注意
有关装载选项的完整列表,请查看 BlobFuse 存储库。
若要装载 BlobFuse,请以用户身份运行以下命令。 此命令将“/path/to/fuse_connection.cfg”中指定的容器装载到“/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
注意
如果使用 ADLS 帐户,则必须包含 --use-adls=true
。
现在应该可以通过常规文件系统 API 访问块 Blob。 装载该目录的用户是可以访问它的唯一人员,默认情况下,这可以保护访问权限。 若要允许所有用户进行访问,可以通过选项 -o allow_other
进行装载。
sudo cd ~/mycontainer
sudo mkdir test
sudo echo "hello world" > test/blob.txt
持久保留装载
若要了解如何持久保留装载,请参阅 BlobFuse wiki 中的持久保留。
功能支持
启用 Data Lake Storage Gen2、网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 可能会影响对此功能的支持。 如果已启用这些功能中的某一项,请参阅 Azure 存储帐户中的 Blob 存储功能支持,以评估对此功能的支持。