在 Linux 掛載 Azure 檔案儲存體 — Ubuntu 上的 NetDrive

閱讀時間 6 分鐘 provider-guide azure linux
Kai
KaiJunior Engineer
使用 NetDrive 的實驗性 Ubuntu 版本,將 Azure 檔案儲存體 SMB 共用掛載為 Linux 掛載點 — Azure Portal 設定、驗證與確認流程。

某建置伺服器把它的設定檔儲存庫從老舊的地端檔案共用搬到了 Azure 檔案儲存體,於是原本用純 shell 指令讀取 /mnt/configs/*.yaml 的每個工作都需要一個新的解法。把每支腳本改寫成圍繞 Azure SDK 是一種做法;把共用掛載成一般的 Linux 路徑,讓現有的 catcpfind 呼叫維持不變,是另一種做法 —— 這正是 NetDrive 的 Linux 版本所做的事。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

在 Ubuntu 上掛載 Azure 檔案儲存體

NetDrive 讓 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 與 macOS 上顯示為原生磁碟機 — 不需同步,也不需完整下載。

  • 執行於 NetDrive 實驗性 Ubuntu 版本
  • 既有的 shell 腳本與 cron 工作能以一般路徑讀取該共用
  • 背景上傳,讓大型檔案寫入不會阻塞呼叫的行程
WindowsmacOS
下載 Linux 版 NetDrive →

免費試用。提供終身與訂閱方案。

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 檔案儲存體提供者標誌 — NetDrive 在 Windows、macOS 與 Linux 上皆支援 Azure 檔案儲存體

你需要從 Azure Portal 取得的資訊

在開啟 NetDrive 之前,先收集以下三個值:

  • 儲存體帳戶名稱 —— 位於 Azure Portal 中儲存體帳戶資源的總覽頁面。
  • 存取金鑰 —— 位於儲存體帳戶的 Security + networking → Access keyskey1key2 皆可使用;NetDrive 只需要其中一個。
  • 檔案共用名稱 —— 位於 Data storage → File shares 底下,即你想掛載的共用的確切名稱。

若你的組織已停用存取金鑰驗證,請改為產生一個範圍限定於檔案服務的共用存取簽章(SAS)權杖,至少要有讀取、寫入、列出、建立與刪除權限,並以此權杖取代存取金鑰使用。

你還需要 Ubuntu 16.04 或更新版本,並確保該主機防火牆已開放通往 Azure Storage 端點的對外連線 —— 部分企業網路與雲端安全群組預設會封鎖 Azure 上的 SMB 流量。

在 Ubuntu 上安裝 NetDrive

Linux 版 NetDrive 是透過 GitHub 版本發佈,而非透過 apt

  1. 前往 github.com/NetDrive/installer,下載與你的 Ubuntu 版本相符的建置版本。
  2. 安裝前先閱讀該版本的發行說明 —— 驅動元件必須先載入,任何連線才能掛載。
  3. 安裝套件,然後啟動一次 NetDrive 以載入驅動。這可能會提示輸入 sudo

逐步操作:連接 Azure 檔案共用

  1. 開啟 NetDrive 的 Drive Manager,點選 + Add Drive
  2. 從提供者清單選取 Azure File Storage —— 不是 Azure Blob Storage。

NetDrive Drive Manager 顯示多個可新增的雲端連線

  1. 輸入從 Portal 收集到的 Storage Account 名稱Access Key(或 SAS 權杖)。
  2. 輸入共用名稱,須與 Portal 中 File shares 下顯示的完全一致。
  3. 設定掛載點,例如 /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