在 Linux 掛載 Azure 檔案儲存體 — Ubuntu 上的 NetDrive
使用 NetDrive 的實驗性 Ubuntu 版本,將 Azure 檔案儲存體 SMB 共用掛載為 Linux 掛載點 — Azure Portal 設定、驗證與確認流程。
某建置伺服器把它的設定檔儲存庫從老舊的地端檔案共用搬到了 Azure 檔案儲存體,於是原本用純 shell 指令讀取 /mnt/configs/*.yaml 的每個工作都需要一個新的解法。把每支腳本改寫成圍繞 Azure SDK 是一種做法;把共用掛載成一般的 Linux 路徑,讓現有的 cat、cp、find 呼叫維持不變,是另一種做法 —— 這正是 NetDrive 的 Linux 版本所做的事。

在 Ubuntu 上掛載 Azure 檔案儲存體
NetDrive 讓 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 與 macOS 上顯示為原生磁碟機 — 不需同步,也不需完整下載。
- 執行於 NetDrive 實驗性 Ubuntu 版本
- 既有的 shell 腳本與 cron 工作能以一般路徑讀取該共用
- 背景上傳,讓大型檔案寫入不會阻塞呼叫的行程
免費試用。提供終身與訂閱方案。
Azure 檔案儲存體,不是 Azure Blob
NetDrive 將 Azure 檔案儲存體與 Azure Blob 儲存體列為兩種不同的連線類型,把兩者搞混會白白浪費一次設定嘗試。Blob 儲存體是物件儲存 —— 適合透過 API 存取的記錄檔、備份與靜態資源。檔案儲存體則是一個全代管的 SMB 共用:與傳統檔案伺服器所提供的形態相同,只是託管在 Azure 上。如果某團隊把地端檔案伺服器「原封不動搬遷」到 Azure,檔案儲存體幾乎總是與之對應的連線類型。
兩者是在同一個版本 3.11.204(2020-07-22)加入 NetDrive 的。在 Linux 上,此連線執行於 NetDrive 的實驗性 Ubuntu 版本,而非測試更完整的 Windows 與 macOS 版本 —— 在把無人值守的正式工作指向它之前值得留意,因為 Linux 在 NetDrive 自家的比較頁面上標示著「實驗性」。

你需要從 Azure Portal 取得的資訊
在開啟 NetDrive 之前,先收集以下三個值:
- 儲存體帳戶名稱 —— 位於 Azure Portal 中儲存體帳戶資源的總覽頁面。
- 存取金鑰 —— 位於儲存體帳戶的 Security + networking → Access keys。
key1或key2皆可使用;NetDrive 只需要其中一個。 - 檔案共用名稱 —— 位於 Data storage → File shares 底下,即你想掛載的共用的確切名稱。
若你的組織已停用存取金鑰驗證,請改為產生一個範圍限定於檔案服務的共用存取簽章(SAS)權杖,至少要有讀取、寫入、列出、建立與刪除權限,並以此權杖取代存取金鑰使用。
你還需要 Ubuntu 16.04 或更新版本,並確保該主機防火牆已開放通往 Azure Storage 端點的對外連線 —— 部分企業網路與雲端安全群組預設會封鎖 Azure 上的 SMB 流量。
在 Ubuntu 上安裝 NetDrive
Linux 版 NetDrive 是透過 GitHub 版本發佈,而非透過 apt:
- 前往 github.com/NetDrive/installer,下載與你的 Ubuntu 版本相符的建置版本。
- 安裝前先閱讀該版本的發行說明 —— 驅動元件必須先載入,任何連線才能掛載。
- 安裝套件,然後啟動一次 NetDrive 以載入驅動。這可能會提示輸入
sudo。
逐步操作:連接 Azure 檔案共用
- 開啟 NetDrive 的 Drive Manager,點選 + Add Drive。
- 從提供者清單選取 Azure File Storage —— 不是 Azure Blob Storage。

- 輸入從 Portal 收集到的 Storage Account 名稱與 Access Key(或 SAS 權杖)。
- 輸入共用名稱,須與 Portal 中 File shares 下顯示的完全一致。
- 設定掛載點,例如
/mnt/azure-configs,然後點選 Connect。
在工作依賴它之前先驗證掛載
在把 cron 工作或 CI 步驟指向新路徑之前,先確認它確實已掛載:
# Confirm the mount is listed
mount | grep azure-configs
# Or just list its contents
ls /mnt/azure-configs

若掛載點是空的或始終未出現,請先檢查通往 Azure Storage 端點的對外防火牆規則,再懷疑存取金鑰有誤 —— 被封鎖的連接埠會產生和憑證錯誤相同的「什麼都沒有」症狀,而且在鎖定嚴格的建置伺服器上,這其實是更常見的原因。

在 Linux 版本上需要預先規劃的事項
- 獨立的發行節奏。 Windows 或 macOS 上發佈的修正與功能,不會自動在同一時間點落地到 Linux 版本。
- 沒有
apt整合。 新版本來自 GitHub 版本發佈,而非套件管理員,因此追蹤更新對於負責該主機的人來說是一項手動作業。 - Windows 與 macOS 獲得更深入的測試。 由少數腳本讀取的設定檔共用,對 Linux 版本來說是合理的使用情境。在把無人監督的正式管線交給它之前,請先測試該工作實際會做的事 —— 大型檔案寫入、並行讀取者,或其他任何情況。
結語
在 Ubuntu 上掛載 Azure 檔案儲存體共用,能讓 Linux 主機獲得與 NetDrive 在 Windows 及 macOS 上相同的磁碟機式存取體驗,而不必為了 Azure SDK 改寫腳本,也不需要手動設定 SMB 用戶端。若要在測試更完整的平台上使用相同的連線類型,可參閱 在 Windows 上掛載 Azure 檔案儲存體 或 在 macOS 上掛載 Azure 檔案儲存體;若你要的是物件儲存而非檔案共用,在 Linux 上掛載 Azure Blob 儲存體 涵蓋了該連線類型。若想了解更廣泛的 Linux 全貌,請參閱 Ubuntu Linux 上的 NetDrive。
— Kai, NetDrive