如何使用 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
在 Microsoft 的 Linux 軟體存放庫 (英文) 可取得適用於 Ubuntu、Debian、SUSE、Oracle Linux 和 RHEL 散發套件的 Blobfuse 二進位檔案。 若要在這些發行版本上安裝 Blobfuse,請設定清單中的任一個存放庫。 如果您的發行版本沒有可用的二進位檔,您也可以遵循 Azure 儲存體安裝步驟 \(英文\),從原始程式碼建置二進位檔。
Blobfuse 是在適用於 Ubuntu 版本的 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、OracleLinux 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 中,您可以使用虛擬機器上的暫時磁碟 (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 儲存體功能支援,以評估此功能的支援。