如何使用 BlobFuse2 在 Linux 上装载 Azure Blob 存储容器

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

本文介绍如何安装和配置 BlobFuse2、装载 Azure Blob 容器以及访问容器中的数据。 基本步骤如下:

安装 BlobFuse2

配置 BlobFuse2

装载 Blob 容器

访问数据

如何安装 BlobFuse2

可通过两个选项安装 BlobFuse2:

选项 1:从适用于 Linux 的 Microsoft 软件存储库安装 BlobFuse2

要查看支持的发行版,请参阅 BlobFuse2 版本

有关 libfuse 支持的信息,请参阅 BlobFuse2 自述文件

若要检查 Linux 版本,请运行以下命令:

cat /etc/*-release

如果没有可用于分发的二进制文件,则可以使用选项 2:从源代码生成二进制文件

从存储库安装 BlobFuse2:

配置 Microsoft 包存储库

安装 BlobFuse2

配置 Microsoft 包存储库

配置 Microsoft 产品的 Linux 包存储库

例如,在 CentOS 8 发行版上:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm

类似地,将 URL 更改为 .../centos/7/...,使之指向 CentOS 7 发行版。

安装 BlobFuse2

sudo yum install blobfuse2

选项 2:基于源代码生成二进制文件

从源代码生成 BlobFuse2 二进制文件:

  1. 安装依赖项:

    1. 安装 Git:

      sudo apt-get install git
      
    2. 安装 BlobFuse2 依赖项。

      在 Ubuntu 上:

      sudo apt-get install libfuse3-dev fuse3 -y
      
  2. 克隆存储库:

    sudo git clone https://github.com/Azure/azure-storage-fuse/
    sudo cd ./azure-storage-fuse
    sudo git checkout main
    
  3. 生成 BlobFuse2:

    go get
    go build -tags=fuse3
    

提示

如果你需要安装 Go,请参阅下载并安装 Go

如何配置 BlobFuse2

可以使用各种设置来配置 BlobFuse2。 一些典型设置包括:

  • 日志记录位置和选项
  • 用于缓存的临时文件路径
  • 有关要装载的 Azure 存储帐户和 Blob 容器的信息

设置的配置方式可以是采用 YAML 配置文件、使用环境变量或作为参数传递给 BlobFuse2 命令。 首选方法是使用配置文件。

有关 BlobFuse2 的每个配置参数以及如何指定这些配置参数的详细信息,请参阅以下文章:

配置 BlobFuse2 进行挂载:

  1. 配置缓存
  2. 创建一个空目录来挂载 blob 容器
  3. 授权访问存储帐户

配置缓存

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 装载的存储。 它使用带有正斜杠 (/) 的虚拟目录方案作为文件路径中的分隔符,并支持基本的文件系统操作,例如 mkdiropendirreaddirrmdiropenreadcreatewritecloseunlinktruncatestatrename

但是,你应该注意功能上的一些关键差异

功能支持

此表显示了你的帐户如何支持此功能,以及启用某些功能时对支持的影响:

存储帐户类型 Blob 存储(默认支持) Data Lake Storage Gen2 1 NFS 3.0 1 SFTP 1
标准常规用途 v2 是 是 是 是
高级块 blob 是 是 是 是

1 Azure Data Lake Storage Gen2、网络文件系统 (NFS) 3.0 协议和 SSH 文件传输协议 (SFTP) 支持都需要一个启用了分层命名空间的存储帐户。

另请参阅

后续步骤