如何使用 BlobFuse2 在 Linux 上裝載 Azure Blob 儲存體容器
本文說明如何安裝和設定 BlobFuse2、裝載 Azure Blob 容器,以及存取容器中的資料。 基本步驟為:
如何安裝 BlobFuse2
有兩個選項可安裝 BlobFuse2:
- 從適用於 Linux 的 Microsoft 軟體存放庫安裝 BlobFuse2,這是慣用的安裝方法。 可透過幾個常見 Linux 發行版本的存放庫取得 BlobFuse2。
- 從原始程式碼組建 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 磁碟
下列範例為 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 裝載的儲存體。 它會使用虛擬目錄配置搭配正斜線 (/
) 做為檔案路徑中的分隔符號,並支援基本的檔案系統作業,例如 mkdir
、opendir
、readdir
、rmdir
、open
、read
、create
、write
、close
、unlink
、truncate
、stat
和 rename
。
不過,您應該注意功能的某些主要差異:
功能支援
下表說明如何在您的帳戶中支援這項功能,以及啟用特定功能時,對此支援造成的影響。
Storage account type | Blob 儲存體 (預設支援) | Data Lake Storage 1 | NFS 3.0 1 | SFTP 1 |
---|---|---|---|---|
標準一般用途 v2 | ||||
進階區塊 Blob |
1 Azure Data Lake Storage、網路檔案系統 (NFS) 3.0 通訊協定和 SSH 檔案傳輸通訊協定 (SFTP) 支援都需要啟用階層命名空間的記憶體帳戶。