在 Linux 掛載 MinIO — 於 Ubuntu 用 NetDrive 使用自架 S3 儲存

閱讀時間 7 分鐘 provider-guide minio linux
Kai
KaiJunior Engineer
使用 NetDrive 的 Ubuntu 實驗性版本,將自架 MinIO 儲存貯體掛載為 Linux 掛載點——含端點設定、路徑樣式存取與驗證步驟。

某建置團隊在一整排 Ubuntu 伺服器上自行架設 MinIO 叢集,而不是付費使用受管理的物件儲存服務——Docker 分層快取、每夜測試用的固定資料,以及數 TB 從不需要離開辦公室網路的建置產物。CI 執行器早已用純 shell 指令讀寫本機路徑,如今光是為了連到三個機櫃外的一個貯體,就得把整套流程改寫成使用 MinIO 的 SDK,感覺像是在解決一個根本不需要解決的問題。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 掛載 MinIO

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

  • S3 相容連線——適用於任何自架的 MinIO 端點
  • 可於 Ubuntu 16.04 及更新版本執行
  • 既有的 shell 腳本可透過一般掛載點進行讀寫
WindowsmacOS
下載 NetDrive for Linux →

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

為何掛載點勝過直接呼叫 MinIO API

直接與 MinIO 溝通,意味著要引入 mc 用戶端或某個 S3 SDK、處理存取金鑰輪替,並為某項工作所使用的任何語言撰寫重試邏輯。這些事本身都不難,但終究是額外附加在一個其實只是「讀這個檔案、寫那個檔案」的任務上的基礎建設工作。把貯體掛載起來,就完全省去了這一層——tarcprsync,以及任何原本就懂得操作本機路徑的工具,都能以同樣方式操作這個掛載點。

自 3.15.450 版(2021-11-08)起,NetDrive 便將 MinIO 視為一個獲良好支援的 S3 相容連線,該版本也正是為 Amazon S3 本身以外的一般 S3 相容支援而推出的。而在 Linux 上,這個連線類型搭載於 NetDrive 的 Ubuntu 實驗性版本,而非經過更充分測試的 Windows 與 macOS 版本——這點值得事先了解,因為在 NetDrive 自家的比較頁面上,Linux 確實標示著「實驗性」字樣。

NetDrive 將自架物件儲存貯體掛載為本機 Linux 掛載點

開始之前你需要準備的東西

  • MinIO 端點 URL——若是同一區域網路上的機器,格式類似 http://minio.internal:9000;若叢集位於反向代理伺服器後方,則使用 HTTPS URL。MinIO 的 API 預設監聽 9000 埠;網頁主控台則跑在另一個埠上,並非 NetDrive 連線的對象。
  • Access Key 與 Secret Key——一個僅授權存取 NetDrive 所需貯體的服務帳號,可從 MinIO Console 的 Identity → Service Accounts 建立,或透過 mc admin user svcacct add 建立。任何長時間執行的用途都應避免使用 root 憑證。
  • 貯體名稱——NetDrive 是在貯體層級建立連線,因此若伺服器需要用到多個貯體,就得為每一個貯體各自建立一組 NetDrive 連線。
  • Ubuntu 16.04 或更新版本,且該主機的防火牆已開放通往 MinIO 端點所在埠號的對外連線。

在 Ubuntu 上安裝 NetDrive

NetDrive for Linux 並未收錄在 Ubuntu 的預設套件庫中,因此安裝流程要透過 GitHub,而非 apt

  1. 前往 github.com/NetDrive/installer,下載對應你 Ubuntu 版本的發行版。
  2. 安裝前先確認該版本的發行說明——必須先載入一個驅動元件,連線才能成功掛載。
  3. 安裝該套件,接著啟動一次 NetDrive 以載入驅動程式。依主機設定不同,這個步驟可能會要求輸入 sudo

逐步操作:連接一個 MinIO 貯體

  1. 開啟 NetDrive 的 Drive Manager,並點擊 + Add Drive
  2. 從供應商清單中選擇 Amazon S3——MinIO 使用的是 S3 API,因此無論是 MinIO 還是其他 S3 相容儲存服務,這都是 NetDrive 用來連接的入口。

NetDrive Drive Manager 顯示多個雲端連線,包含 S3 相容儲存

  1. 輸入先前建立之服務帳號的 Access Key ID 與 Secret Access Key
  2. Region 設定為任意非空值,例如 us-east-1——MinIO 不會理會這個值,但此欄位不能留空。
  3. 輸入 Endpoint——即 MinIO 的 API URL,例如 http://minio.internal:9000
  4. 輸入要掛載的 Bucket 名稱。
  5. 啟用 Path style(有時標示為 Force path style)。自架的 MinIO 通常沒有為虛擬主機樣式貯體 URL 設定 DNS 項目,因此路徑樣式定址——即貯體以路徑區段方式呈現——是開箱即可運作的設定。
  6. 設定掛載點,例如 /mnt/minio-artifacts,然後點擊 Connect

在讓 CI 工作依賴它之前先驗證掛載

在讓無人值守的工作指向這個掛載點之前,先確認掛載確實成功:

# Confirm the mount is listed
mount | grep minio-artifacts

# Or just list it
ls /mnt/minio-artifacts

確認一個連線的磁碟機在設定後成功掛載

若目錄顯示為空、或掛載始終未出現,在斷定是存取金鑰有誤之前,先檢查該主機的防火牆是否允許對外連往 MinIO 端點的埠號——在鎖定較嚴格的建置伺服器上,埠號被擋住是比憑證錯誤更常見的原因。

排查連線失敗時,檢查網路埠是否可連通

使用 Linux 版本時需要留意的事

  • 獨立的發行節奏。 為 Windows 或 macOS 推出的修正,不會自動在同一週內也登上 Linux 版本。
  • 沒有 apt 整合。 更新來自 GitHub 發行版,而非套件管理員,因此追蹤新版本需要手動進行。
  • Windows 與 macOS 獲得更深入的測試。 讓 CI 執行器或每夜工作從 MinIO 讀取資料,是 Linux 版本相當合理的使用情境;但在讓它承擔無人值守的正式生產流程之前,務必先徹底測試。

結語

在 Ubuntu 上掛載自架的 MinIO 貯體,能讓建置伺服器獲得與 NetDrive 在 Windows、macOS 上相同的磁碟機式存取方式,而不必為了 S3 SDK 重寫整套流程。若想在測試更充分的平台上使用同一供應商,可參見 Mount MinIO on WindowsMount MinIO on macOS;若想了解更完整的 Linux 全貌,可參見 NetDrive on Ubuntu Linux;至於以 S3 相容儲存為核心的 CI 應用情境,可參見 DevOps: S3 Test Fixtures with NetDrive

— Kai, NetDrive