如何使用 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 封裝存放庫

以 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

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 磁碟

下列範例為 BlobFuse2 建立 16 GB 的 RAM 磁碟和一個目錄。 選擇符合您需求的大小。 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

不過,您應該注意功能的某些主要差異

功能支援

下表說明如何在您的帳戶中支援這項功能,以及啟用特定功能時,對此支援造成的影響。

Storage account type Blob 儲存體 (預設支援) Data Lake Storage Gen2 1 NFS 3.0 1 SFTP 1
標準一般用途 v2 Yes .是 .是 Yes
進階區塊 Blob Yes .是 .是 Yes

1 Azure Data Lake Storage Gen2、網路檔案系統 (NFS) 3.0 通訊協定,以及 SSH 檔案傳輸通訊協定 (SFTP) 支援所有需要啟用階層命名空間的儲存體帳戶。

另請參閱

下一步