在 Linux 掛載阿里雲——NetDrive 實驗性版本

閱讀時間 6 分鐘 provider-guide alibaba-cloud linux
Alex
AlexPrincipal Engineer
使用 NetDrive 的實驗性 Linux 版本,將阿里雲 OSS 儲存桶掛載為 Ubuntu 掛載點。涵蓋 RAM 金鑰、端點設定與驗證步驟。

在 Ubuntu 主機上執行的資料管線需要讀取存放於阿里雲 OSS 儲存桶中的模型檢查點,但團隊的工具鏈預期的是一般的檔案系統路徑,而不是寫進每支腳本的 SDK 呼叫。若先把整個儲存桶下載下來,一旦檢查點體積達到數百 GB,這個做法就失去意義。NetDrive 的 Linux 版本會把該 OSS 儲存桶掛載到一般的 Ubuntu 掛載點上,讓訓練腳本的 open() 呼叫直接存取該物件,效果與在 Windows 或 macOS 上掛載儲存桶相同。

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

在 Linux 上掛載阿里雲 OSS

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

  • OSS 儲存桶顯示為一般的 Ubuntu 掛載點
  • 檔案依需求串流——無需同步用戶端,也不必先下載整個儲存桶
  • 可與 S3、Wasabi、騰訊雲及其他 20 多個服務商並行運作
WindowsmacOS
下載 Linux 版 NetDrive →

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

為何掛載點比 SDK 更適合這個場景

阿里雲自家的工具——ossutil CLI 或 OSS SDK——在腳本本來就是為了呼叫它而撰寫時運作良好。但當使用端是你無法控制的東西時,這種方式就顯得不合適:例如預期 torch.load() 開啟本機路徑的訓練工作、對整個目錄的日誌匯出檔案執行 grep,或是一套永遠不會被改寫成呼叫物件儲存 API 的舊工具。NetDrive 透過掛載點來解析這些對儲存桶的讀取請求,因此任何以路徑開啟檔案的程式都不需修改即可運作。

自 3.17.799 版(2022 年 11 月)起,NetDrive 就已支援阿里雲,同一版本也加入了騰訊雲支援。目前建議的版本是 3.19.7,這在 Linux 版本上與其他平台一樣適用。

NetDrive mounting a cloud storage account as a local drive — the same core interaction the Linux build provides at a mount point

在 Ubuntu 上安裝 NetDrive

NetDrive for Linux 是透過 GitHub 發布,而不是走 Ubuntu 的套件庫:

  1. 前往 github.com/NetDrive/installer,下載符合你 Ubuntu 版本的發行版。
  2. 依照該儲存庫的發行說明,安裝 NetDrive 掛載前所需的驅動元件。
  3. 安裝 NetDrive 套件本身。
  4. 啟動 NetDrive。首次執行會載入驅動元件,可能會提示輸入 sudo

最低支援版本為 Ubuntu 16.04。由於更新是透過 GitHub 發行版而非 apt upgrade,請在任何涵蓋這台主機的維運手冊中特別記下這一點。Linux 版本和 NetDrive 比較頁面上標示的其他平台一樣,都掛著實驗性標籤——Windows 與 macOS 得到的測試量最大,因此 Linux 上的 OSS 掛載比較適合開發用機、訓練節點或 CI 執行器,而不是你自己尚未測試過就直接投入的無人值守生產工作。

連線前需要準備的項目

  • AccessKey ID 與 AccessKey Secret——在阿里雲主控台中建立一個限定 OSS 權限的 RAM 使用者,再於該使用者底下產生一組金鑰,而不是使用帳號的根金鑰。
  • OSS 端點——該儲存桶所在區域對應的端點,例如 oss-cn-hangzhou.aliyuncs.comoss-us-west-1.aliyuncs.com,可在儲存桶的 Overview 頁面上查看。
  • 儲存桶名稱——要掛載的儲存桶確切名稱。

逐步操作:在 Ubuntu 上連線阿里雲

  1. 開啟 NetDrive 的 Drive Manager,並點選 + Add Drive
  2. 從連線類型清單中選擇 Alibaba Cloud
  3. 輸入 AccessKey ID 與 Secret、OSS 端點,以及儲存桶名稱。
  4. 設定掛載點——例如像 /mnt/oss-checkpoints 這樣的路徑,或任何你有寫入權限的空目錄。
  5. 點選 Connect。 NetDrive 會完成驗證,並將儲存桶掛載到該路徑。

在依賴掛載之前先驗證

不要只信任圖形介面,改從終端機確認掛載是否真的成功:

# Confirm the mount is listed
mount | grep oss

# Or just try listing it
ls /mnt/oss-checkpoints

Confirming that a cloud drive connected successfully after mounting

如果一開始列出的內容是空的,先耐心等一下——物件數量龐大的儲存桶,填入根目錄內容可能需要幾秒鐘。如果之後仍然是空的,請先檢查 AccessKey 金鑰對與端點是否正確;區域端點設錯,是 OSS 連線第一次驗證失敗最常見的原因。

對於寫入頻繁的工作——例如執行完後要把一批處理過的輸出物件推回儲存桶——NetDrive 會在背景將傳輸排入佇列,而不會阻塞觸發該動作的程序。

Background upload queue showing file transfer progress to a mounted cloud drive

在 Linux 版本上需要留意的事項

  • 獨立的發布節奏——Linux 驅動元件有自己的發布排程,因此 Windows 或 macOS 上的修正不會自動在同一週內送達 Linux。
  • 沒有 apt 整合——安裝與更新都透過 GitHub 發行版進行,而不是 Ubuntu 預設的套件管理員。
  • Windows 與 macOS 才是經過強化的目標平台——NetDrive 官方指引將這兩者視為可用於生產環境,Linux 則標示為實驗性。在把無人值守的生產工作交給 Linux 上的 OSS 掛載之前,請務必先在自己的硬體上充分測試。

結語

在 Ubuntu 上掛載阿里雲 OSS,讓 Linux 主機獲得與 NetDrive 在 Windows、macOS 上相同的磁碟機式存取方式,只是安裝程式放在 GitHub 而不是 apt 上。若想在測試更充分的平台上使用同一服務商,可參考 Mount Alibaba Cloud on Windows with NetDriveMount Alibaba Cloud on macOS with NetDrive。若想了解更完整的 Linux 概況,可參考 NetDrive on Ubuntu Linux

— Alex, NetDrive