在 Linux 上挂载阿里云 — NetDrive 实验性构建版

阅读时间 6 分钟 provider-guide alibaba-cloud linux
Alex
AlexPrincipal Engineer
使用 NetDrive 的实验性 Linux 构建版,将阿里云 OSS 存储桶挂载为 Ubuntu 挂载点。涵盖 RAM 密钥、Endpoint 配置与验证步骤。

一条运行在 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
下载 NetDrive for Linux →

免费试用。提供终身与订阅方案。

为什么挂载点在这种场景下优于 SDK

阿里云自身的工具 — ossutil CLI 或 OSS SDK — 在脚本本就是为调用它而专门编写时表现良好。但当调用方是你无法控制的对象时,它就不太合适了:一个期望 torch.load() 打开本地路径的训练任务、对一个日志导出目录做 grep,或是一个从未打算重写以适配对象存储 API 的老旧工具。NetDrive 通过挂载点解析这些针对存储桶的读取操作,因此任何按路径打开文件的程序都无需修改即可工作。

自 3.17.799 版本(2022 年 11 月)起,NetDrive 就已支持阿里云,同一版本也加入了对腾讯云的支持。当前版本 3.19.7 在 Linux 构建版上与其他所有平台一样,是官方推荐使用的版本。

NetDrive 将云存储账户挂载为本地驱动器 — Linux 构建版在挂载点上提供的正是同样的核心交互

在 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,请务必在维护该主机的运维手册中记下这一点。与 NetDrive 比较页面上标注的一致,Linux 版本同样带有实验性标签 — Windows 和 macOS 承担了大部分测试工作,因此 Linux 上的 OSS 挂载更适合开发机、训练节点或 CI 运行器,而不是一个你自己都还没测试过的无人值守生产任务。

连接前需要准备的内容

  • AccessKey ID 和 AccessKey Secret — 在阿里云控制台创建一个限定 OSS 权限的 RAM 用户,再在该用户下生成密钥对,而不要使用账号的根密钥。
  • OSS Endpoint — 存储桶所在地域对应的 Endpoint,例如 oss-cn-hangzhou.aliyuncs.comoss-us-west-1.aliyuncs.com,可在存储桶的概览页面中查看。
  • 存储桶名称 — 要挂载的存储桶的准确名称。

分步操作:在 Ubuntu 上连接阿里云

  1. 打开 NetDrive 的 Drive Manager,点击 + Add Drive
  2. 从连接类型列表中选择 Alibaba Cloud
  3. 输入 AccessKey ID 和 Secret、OSS Endpoint 以及存储桶名称。
  4. 设置挂载点 — 例如 /mnt/oss-checkpoints 这样的路径,或任何你拥有写入权限的空目录。
  5. 点击 Connect。 NetDrive 完成身份验证后,会将存储桶挂载到该路径。

在依赖挂载点之前先验证它

不要只信任 GUI,请从终端确认挂载确实生效:

# Confirm the mount is listed
mount | grep oss

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

确认云盘在挂载后成功连接

如果一开始列出的内容是空的,先稍等片刻 — 对象数量很多的存储桶,填充根目录可能需要几秒钟。如果之后依然是空的,请先检查 AccessKey 密钥对和 Endpoint 是否正确 — 区域 Endpoint 填错,是 OSS 连接首次尝试身份验证失败的最常见原因。

对于写入密集型任务 — 例如某次运行结束后把一批处理完的输出对象写回存储桶 — NetDrive 会在后台排队处理这些传输,而不会阻塞触发该操作的进程。

显示文件向已挂载云盘传输进度的后台上传队列

在 Linux 构建版上需要留意的事项

  • 发布节奏独立 — Linux 驱动组件按自己的节奏发布,因此在 Windows 或 macOS 上修复的问题不会自动在同一周内送达 Linux 版本。
  • 没有 apt 集成 — 安装和更新都通过 GitHub 发行版进行,而非 Ubuntu 默认的软件包管理器。
  • Windows 和 macOS 才是经过充分打磨的目标平台 — NetDrive 官方指南将它们视为生产就绪,而 Linux 被标记为实验性。在把无人值守的生产任务交给 Linux 上的 OSS 挂载之前,请务必先在自己的硬件上充分测试。

小结

在 Ubuntu 上挂载阿里云 OSS,能让 Linux 主机获得与 NetDrive 在 Windows 和 macOS 上相同的类驱动器访问方式,安装程序托管在 GitHub 而非通过 apt 分发。若想在测试更充分的平台上使用同一提供商,请参阅 在 Windows 上用 NetDrive 挂载阿里云在 macOS 上用 NetDrive 挂载阿里云。若想了解更全面的 Linux 相关内容,请参阅 NetDrive on Ubuntu Linux

— Alex, NetDrive