在 Linux 上挂载 Azure 文件存储 — NetDrive Ubuntu 版

阅读时间 6 分钟 provider-guide azure linux
Kai
KaiJunior Engineer
使用 NetDrive 实验性 Ubuntu 版将 Azure 文件存储 SMB 共享挂载为 Linux 挂载点——包括 Azure 门户设置、身份验证和验证步骤。

某构建服务器将其配置仓库从老旧的本地文件共享迁移到了 Azure 文件存储,此前使用普通 shell 命令读取 /mnt/configs/*.yaml 的每个任务,现在都需要一个新的解决办法。围绕 Azure SDK 重写每个脚本是一种选择;把该共享挂载为普通的 Linux 路径,让现有的 catcpfind 调用保持不变继续工作,是另一种选择——这正是 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 上挂载 Azure 文件存储

NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。

  • 运行于 NetDrive 实验性 Ubuntu 版
  • 现有的 shell 脚本和 cron 任务像访问普通路径一样读取该共享
  • 后台上传,使大文件写入不会阻塞调用进程
WindowsmacOS
下载适用于 Linux 的 NetDrive →

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

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 在 Windows、macOS 和 Linux 上均支持 Azure 文件存储

你需要从 Azure 门户获取的信息

在打开 NetDrive 之前,收集以下三项信息:

  • 存储账户名称 — 位于 Azure 门户中存储账户资源的概览页面。
  • 访问密钥 — 位于存储账户的 Security + networking → Access keys 下。key1key2 均可,NetDrive 只需要其中一个。
  • 文件共享名称 — 位于 Data storage → File shares 下,即你想挂载的共享的确切名称。

如果你所在的组织已禁用访问密钥身份验证,则改为生成一个作用范围限定在文件服务、至少具备读取、写入、列出、创建和删除权限的共享访问签名(SAS)令牌,并用它代替访问密钥。

你还需要 Ubuntu 16.04 或更高版本,并确保该主机防火墙已开放到 Azure 存储终结点的出站访问——某些企业网络和云安全组默认会阻断 SMB-over-Azure 流量。

在 Ubuntu 上安装 NetDrive

NetDrive for Linux 通过 GitHub 发行版分发,而非通过 apt

  1. 前往 github.com/NetDrive/installer,下载与你的 Ubuntu 版本匹配的构建版本。
  2. 在安装前阅读该版本的发行说明——驱动组件必须先加载,任何连接才能挂载。
  3. 安装该软件包,然后启动一次 NetDrive 以加载驱动。此过程可能会提示输入 sudo

分步操作:连接 Azure 文件共享

  1. 打开 NetDrive 的 Drive Manager,点击 + Add Drive
  2. 选择 Azure File Storage(从提供商列表中)——注意不是 Azure Blob Storage。

NetDrive Drive Manager 显示可添加的多种云连接

  1. 输入从门户获取的 Storage Account 名称和 Access Key(或 SAS 令牌)。
  2. 输入 Share 名称,与门户中 File shares 下显示的名称完全一致。
  3. 设置一个挂载点,例如 /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