在 Linux 掛載 MinIO — 於 Ubuntu 用 NetDrive 使用自架 S3 儲存
使用 NetDrive 的 Ubuntu 實驗性版本,將自架 MinIO 儲存貯體掛載為 Linux 掛載點——含端點設定、路徑樣式存取與驗證步驟。
某建置團隊在一整排 Ubuntu 伺服器上自行架設 MinIO 叢集,而不是付費使用受管理的物件儲存服務——Docker 分層快取、每夜測試用的固定資料,以及數 TB 從不需要離開辦公室網路的建置產物。CI 執行器早已用純 shell 指令讀寫本機路徑,如今光是為了連到三個機櫃外的一個貯體,就得把整套流程改寫成使用 MinIO 的 SDK,感覺像是在解決一個根本不需要解決的問題。NetDrive 的 Linux 版本則直接把該貯體掛載成一個普通路徑,讓既有的腳本原封不動繼續運作。

在 Ubuntu 掛載 MinIO
NetDrive 讓 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 與 macOS 上顯示為原生磁碟機 — 不需同步,也不需完整下載。
- S3 相容連線——適用於任何自架的 MinIO 端點
- 可於 Ubuntu 16.04 及更新版本執行
- 既有的 shell 腳本可透過一般掛載點進行讀寫
免費試用。提供終身與訂閱方案。
為何掛載點勝過直接呼叫 MinIO API
直接與 MinIO 溝通,意味著要引入 mc 用戶端或某個 S3 SDK、處理存取金鑰輪替,並為某項工作所使用的任何語言撰寫重試邏輯。這些事本身都不難,但終究是額外附加在一個其實只是「讀這個檔案、寫那個檔案」的任務上的基礎建設工作。把貯體掛載起來,就完全省去了這一層——tar、cp、rsync,以及任何原本就懂得操作本機路徑的工具,都能以同樣方式操作這個掛載點。
自 3.15.450 版(2021-11-08)起,NetDrive 便將 MinIO 視為一個獲良好支援的 S3 相容連線,該版本也正是為 Amazon S3 本身以外的一般 S3 相容支援而推出的。而在 Linux 上,這個連線類型搭載於 NetDrive 的 Ubuntu 實驗性版本,而非經過更充分測試的 Windows 與 macOS 版本——這點值得事先了解,因為在 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:
- 前往 github.com/NetDrive/installer,下載對應你 Ubuntu 版本的發行版。
- 安裝前先確認該版本的發行說明——必須先載入一個驅動元件,連線才能成功掛載。
- 安裝該套件,接著啟動一次 NetDrive 以載入驅動程式。依主機設定不同,這個步驟可能會要求輸入
sudo。
逐步操作:連接一個 MinIO 貯體
- 開啟 NetDrive 的 Drive Manager,並點擊 + Add Drive。
- 從供應商清單中選擇 Amazon S3——MinIO 使用的是 S3 API,因此無論是 MinIO 還是其他 S3 相容儲存服務,這都是 NetDrive 用來連接的入口。

- 輸入先前建立之服務帳號的 Access Key ID 與 Secret Access Key。
- 將 Region 設定為任意非空值,例如
us-east-1——MinIO 不會理會這個值,但此欄位不能留空。 - 輸入 Endpoint——即 MinIO 的 API URL,例如
http://minio.internal:9000。 - 輸入要掛載的 Bucket 名稱。
- 啟用 Path style(有時標示為 Force path style)。自架的 MinIO 通常沒有為虛擬主機樣式貯體 URL 設定 DNS 項目,因此路徑樣式定址——即貯體以路徑區段方式呈現——是開箱即可運作的設定。
- 設定掛載點,例如
/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 Windows 或 Mount MinIO on macOS;若想了解更完整的 Linux 全貌,可參見 NetDrive on Ubuntu Linux;至於以 S3 相容儲存為核心的 CI 應用情境,可參見 DevOps: S3 Test Fixtures with NetDrive。
— Kai, NetDrive