你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如何使用 BlobFuse2 在 Linux 上装载 Azure Blob 存储容器
本文介绍如何安装和配置 BlobFuse2、装载 Azure Blob 容器以及访问容器中的数据。 基本步骤如下:
如何安装 BlobFuse2
可通过两个选项安装 BlobFuse2:
- 从适用于 Linux 的 Microsoft 软件存储库安装 BlobFuse2 - 这是首选的安装方法。 多个常见 Linux 分发版的存储库中都提供了 BlobFuse2。
- 基于源代码生成 BlobFuse2 二进制文件 - 如果所用分发版的存储库中没有 BlobFuse2 二进制文件,则可以基于源代码生成该文件。
选项 1:从适用于 Linux 的 Microsoft 软件存储库安装 BlobFuse2
要查看支持的发行版,请参阅 BlobFuse2 版本。
有关 libfuse 支持的信息,请参阅 BlobFuse2 自述文件。
若要检查 Linux 版本,请运行以下命令:
cat /etc/*-release
如果没有可用于分发的二进制文件,则可以使用选项 2:从源代码生成二进制文件。
从存储库安装 BlobFuse2:
配置 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 发行版。
安装 BlobFuse2
选项 2:基于源代码生成二进制文件
从源代码生成 BlobFuse2 二进制文件:
安装依赖项:
安装 Git:
sudo apt-get install git
安装 BlobFuse2 依赖项。
在 Ubuntu 上:
sudo apt-get install libfuse3-dev fuse3 -y
克隆存储库:
sudo git clone https://github.com/Azure/azure-storage-fuse/ sudo cd ./azure-storage-fuse sudo git checkout main
生成 BlobFuse2:
go get go build -tags=fuse3
提示
如果你需要安装 Go,请参阅下载并安装 Go。
如何配置 BlobFuse2
可以使用各种设置来配置 BlobFuse2。 一些典型设置包括:
- 日志记录位置和选项
- 用于缓存的临时文件路径
- 有关要装载的 Azure 存储帐户和 Blob 容器的信息
设置的配置方式可以是采用 YAML 配置文件、使用环境变量或作为参数传递给 BlobFuse2 命令。 首选方法是使用配置文件。
有关 BlobFuse2 的每个配置参数以及如何指定这些配置参数的详细信息,请参阅以下文章:
配置 BlobFuse2 进行挂载:
配置缓存
BlobFuse2 通过使用本地文件缓存技术提供类似于本机的性能。 缓存配置和行为会有所不同,具体取决于你是在流式传输大文件还是访问较小的文件。
为流式传输大文件配置缓存
BlobFuse2 支持读取和写入操作的流式传输,作为文件磁盘缓存的替代方案。 在流模式下,BlobFuse2 将大文件块缓存在内存中以供读取和写入。 与流缓存相关的配置设置位于配置文件中的 stream:
设置下:
stream:
block-size-mb:
For read only mode, the size of each block to be cached in memory while streaming (in MB)
For read/write mode, the size of newly created blocks
max-buffers: The total number of buffers to store blocks in
buffer-size-mb: The size for each buffer
要快速开始使用基本流式传输方案的一些设置,请参阅示例流式传输配置文件。
为较小的文件配置缓存
较小的文件缓存到配置文件中 file_cache:
下指定的临时路径:
file_cache:
path: <path to local disk cache>
注意
BlobFuse2 将所有打开的文件内容存储在临时路径中。 确保你有足够的空间来容纳所有打开的文件。
可以通过三个常用选项来配置文件缓存的临时路径:
使用本地高性能磁盘
如果使用现有的本地磁盘进行文件缓存,请选择可提供最佳性能的磁盘,例如固态磁盘 (SSD)。
使用 RAM 磁盘
以下示例创建一个 16 GB 的 RAM 磁盘和一个目录以用于 BlobFuse2。 选择符合你要求的大小。 BlobFuse2 使用 RAM 磁盘可打开最大为 16 GB 的文件。
sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfuse2tmp
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
使用 SSD
在 Azure 中,可以使用 VM 上可用的 SSD 临时磁盘为 BlobFuse2 提供低延迟缓冲区。 根据你使用的预配代理,将临时磁盘安装在 /mnt 上(对于 cloud-init)或 /mnt/resource 上(对于 Microsoft Azure Linux 代理 (waagent) VM)。
请确保用户有权访问该临时路径:
sudo mkdir /mnt/resource/blobfuse2tmp -p
sudo chown <youruser> /mnt/resource/blobfuse2tmp
创建一个空目录以挂载 blob 容器
创建一个空目录来挂载 blob 容器:
mkdir ~/mycontainer
授权访问存储账户
必须为装载容器的用户授予对存储帐户的访问权限。 授予访问权限的最常见方法是使用以下选项之一:
- 存储帐户访问密钥
- 共享访问签名
- 托管标识
- 服务主体
可以在配置文件或环境变量中提供授权信息。 有关详细信息,请参阅配置 BlobFuse2 的设置。
如何装载 Blob 容器
重要
BlobFuse2 不支持重叠的装载路径。 如果运行 BlobFuse2 的多个实例,请确保每个实例都具有唯一的非重叠装入点。
BlobFuse2 不支持相同装载路径上与 NFS 共存。 如果在与 NFS 相同的装载路径上运行 BlobFuse2,则结果是未定义状态,可能会导致数据损坏。
若要使用 BlobFuse2 装载 Azure 块 Blob 容器,请运行以下命令。 此命令将 ./config.yaml
中指定的容器装载到 ~/mycontainer
位置:
sudo blobfuse2 mount ~/mycontainer --config-file=./config.yaml
注意
有关状态选项的完整列表,请参阅 BlobFuse2 装载命令。
现在应该可以通过 Linux 文件系统和相关 API 访问块 Blob。 若要测试部署,请尝试创建新目录和文件:
cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt
如何访问数据
通常,可以如同使用本机 Linux 文件系统一样来使用 BlobFuse2 装载的存储。 它使用带有正斜杠 (/
) 的虚拟目录方案作为文件路径中的分隔符,并支持基本的文件系统操作,例如 mkdir
、opendir
、readdir
、rmdir
、open
、read
、create
、write
、close
、unlink
、truncate
、stat
和 rename
。
但是,你应该注意功能上的一些关键差异:
功能支持
此表显示了你的帐户如何支持此功能,以及启用某些功能时对支持的影响:
存储帐户类型 | Blob 存储(默认支持) | Data Lake Storage 1 | NFS 3.0 1 | SFTP 1 |
---|---|---|---|---|
标准常规用途 v2 | ||||
高级块 blob |
1 Azure Data Lake Storage、网络文件系统 (NFS) 3.0 协议和 SSH 文件传输协议 (SFTP) 支持都需要启用了分层命名空间的存储帐户。