在 Linux 上挂载 Azure 文件存储 — NetDrive Ubuntu 版
使用 NetDrive 实验性 Ubuntu 版将 Azure 文件存储 SMB 共享挂载为 Linux 挂载点——包括 Azure 门户设置、身份验证和验证步骤。
某构建服务器将其配置仓库从老旧的本地文件共享迁移到了 Azure 文件存储,此前使用普通 shell 命令读取 /mnt/configs/*.yaml 的每个任务,现在都需要一个新的解决办法。围绕 Azure SDK 重写每个脚本是一种选择;把该共享挂载为普通的 Linux 路径,让现有的 cat、cp 和 find 调用保持不变继续工作,是另一种选择——这正是 NetDrive 的 Linux 版所做的事。

在 Ubuntu 上挂载 Azure 文件存储
NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。
- 运行于 NetDrive 实验性 Ubuntu 版
- 现有的 shell 脚本和 cron 任务像访问普通路径一样读取该共享
- 后台上传,使大文件写入不会阻塞调用进程
免费试用。提供终身与订阅方案。
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 之前,收集以下三项信息:
- 存储账户名称 — 位于 Azure 门户中存储账户资源的概览页面。
- 访问密钥 — 位于存储账户的 Security + networking → Access keys 下。
key1或key2均可,NetDrive 只需要其中一个。 - 文件共享名称 — 位于 Data storage → File shares 下,即你想挂载的共享的确切名称。
如果你所在的组织已禁用访问密钥身份验证,则改为生成一个作用范围限定在文件服务、至少具备读取、写入、列出、创建和删除权限的共享访问签名(SAS)令牌,并用它代替访问密钥。
你还需要 Ubuntu 16.04 或更高版本,并确保该主机防火墙已开放到 Azure 存储终结点的出站访问——某些企业网络和云安全组默认会阻断 SMB-over-Azure 流量。
在 Ubuntu 上安装 NetDrive
NetDrive for Linux 通过 GitHub 发行版分发,而非通过 apt:
- 前往 github.com/NetDrive/installer,下载与你的 Ubuntu 版本匹配的构建版本。
- 在安装前阅读该版本的发行说明——驱动组件必须先加载,任何连接才能挂载。
- 安装该软件包,然后启动一次 NetDrive 以加载驱动。此过程可能会提示输入
sudo。
分步操作:连接 Azure 文件共享
- 打开 NetDrive 的 Drive Manager,点击 + Add Drive。
- 选择 Azure File Storage(从提供商列表中)——注意不是 Azure Blob Storage。

- 输入从门户获取的 Storage Account 名称和 Access Key(或 SAS 令牌)。
- 输入 Share 名称,与门户中 File shares 下显示的名称完全一致。
- 设置一个挂载点,例如
/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 存储终结点的出站防火墙规则,再怀疑访问密钥是否有误——端口被阻断和凭据错误会产生相同的”什么都没有”症状,而在被锁定的构建服务器上,前者是更常见的原因。

使用 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