在 Linux 上装载 NFS Azure 文件共享

可以使用服务器消息块 (SMB) 协议或网络文件系统 (NFS) 协议将 Azure 文件共享装载到 Linux 发行版中。 本文重点介绍如何使用 NFS 进行装载。 有关装载 SMB Azure 文件共享的详细信息,请参阅在 Linux 中使用 Azure 文件存储。 有关每个可用协议的详细信息,请参阅 Azure 文件共享协议

适用于

文件共享类型 SMB NFS
标准文件共享 (GPv2)、LRS/ZRS No No
标准文件共享 (GPv2)、GRS/GZRS No No
高级文件共享 (FileStorage)、LRS/ZRS No Yes

支持

目前仅支持 NFS 版本 4.1。 目前只有 FileStorage 存储帐户类型中支持 NFS 4.1 共享(仅限高级文件共享)。

NFS Azure 文件共享目前支持 4.1 协议规范中的大部分功能。 某些功能(例如,各种类型的委托和回调、Kerberos 身份验证和传输中加密)不受支持。

nconnect 装载选项目前处于预览阶段,不建议用于生产。

区域可用性

支持高级文件存储的所有区域也都支持 Azure NFS 文件共享。

有关最新列表,请参阅 Azure 可用产品(按区域)页中的“高级文件存储”条目。

先决条件

禁用安全传输

  1. 登录到 Azure 门户并访问包含你创建的 NFS 共享的存储帐户。

  2. 选择“配置”。

  3. 对于“需要安全传输”,请选择“禁用”。

  4. 选择“保存”。

    Screenshot of storage account configuration screen with secure transfer disabled.

装载选项

装载 NFS Azure 文件共享时,建议或需要以下装载选项。

装载选项 建议的值 描述
vers 4 必需。 指定要使用 NFS 协议的哪个版本。 Azure 文件仅支持 NFS v4.1。
minorversion 1 必需。 指定要使用 NFS 协议的次要版本。 某些 Linux 发行版无法识别 vers 参数上的次要版本。 因此不要使用 vers=4.1,应使用 vers=4,minorversion=1
sec sys 必需。 指定在对 NFS 连接进行身份验证时要使用的安全类型。 设置“sec=sys”使用本地 UNIX UID 和 GID,它们使用 AUTH_SYS 对 NFS 操作进行身份验证。
rsize 1048576 推荐。 设置单个 NFS 读取操作中要传输的最大字节数。 指定最大 1048576 个字节级别通常可获得最佳性能。
wsize 1048576 推荐。 设置单个 NFS 写入操作中要传输的最大字节数。 指定最大 1048576 个字节级别通常可获得最佳性能。
noresvport 不适用 推荐。 告知 NFS 客户端在与装入点的 NFS 服务器通信时使用非特权源端口。 使用 noresvport 装载选项有助于确保在重新连接后 NFS 共享具有不间断的可用性。 强烈建议使用此选项来实现高可用性。
actimeo 30-60 推荐。 指定 actimeo 会将所有 acregminacregmaxacdirminacdirmax 设置为相同的值。 使用小于 30 秒的值可能会导致性能下降,因为文件和目录的属性缓存很快就会过期。 建议将 actimeo 设置为 30 到 60 秒。

使用 Azure 门户装载 NFS 共享

注意

你可以使用 nconnect Linux 装载选项大规模提高 NFS Azure 文件共享的性能。 有关详细信息,请参阅提高 NFS Azure 文件共享性能

  1. 创建文件共享后,选择该共享,然后选择“从 Linux 进行连接”。

  2. 输入要使用的装载路径,然后复制该脚本。

  3. 连接到客户端,并使用所提供的装载脚本。 脚本中仅包含所需的装载选项,但你可以添加其他建议的装载选项

    Screenshot of file share connect blade.

现已装载 NFS 共享。

使用 /etc/fstab 装载 NFS 共享

如果希望在每次 Linux 服务器或 VM 启动时自动装载,请在 /etc/fstab 文件中为 Azure 文件共享创建一条记录。 请将 YourStorageAccountNameFileShareName 替换为自己的信息。

<YourStorageAccountName>.file.core.chinacloudapi.cn:/<YourStorageAccountName>/<FileShareName> /media/<YourStorageAccountName>/<FileShareName> nfs vers=4,minorversion=1,_netdev,nofail,sec=sys 0 0

有关详细信息,请从 Linux 命令行输入命令 man fstab

验证连接

如果装载失败,则可能是专用终结点未正确设置或无法访问。 有关确认连接的详细信息,请参阅验证连接

NFS 文件共享快照

使用 NFS Azure 文件共享的客户可以创建、列出和删除 NFS Azure 文件共享快照。 借助此功能,用户可以回滚整个文件系统或恢复意外删除或损坏的文件。

重要

在创建快照之前,应装载文件共享。 如果在装载共享之前创建新的 NFS 文件共享并拍摄快照,尝试列出共享的快照时将返回空列表。 建议删除首次装载之前拍摄的任何快照,并在装载共享后重新创建快照。

限制

NFS Azure 文件共享快照仅支持文件管理 API (AzRmStorageShare)。 不支持文件数据平面 API (AzStorageShare)。

AzCopy 目前不支持 NFS 文件共享。 若要从 NFS Azure 文件共享或共享快照复制数据,请使用文件系统复制工具,例如 rsync 或 fpsync。

创建快照

你可以使用 Azure PowerShell 或 Azure CLI 创建 NFS Azure 文件共享的快照。 共享最多可以支持创建 200 个共享快照。

若要创建现有文件共享的快照,请运行以下 PowerShell 命令。 将 、 和 替换为自己的值<resource-group-name><storage-account-name><file-share-name>

New-AzRmStorageShare -ResourceGroupName "<resource-group-name>" -StorageAccountName "<storage-account-name>" -Name "<file-share-name>" -Snapshot

列出文件共享快照

你可以使用 Azure PowerShell 或 Azure CLI 列出文件共享的所有快照。

若要列出存储帐户中的所有文件共享和快照,请运行以下 PowerShell 命令。 将 <resource-group-name><storage-account-name> 替换为自己的值。

Get-AzRmStorageShare -ResourceGroupName "<resource-group-name>" -StorageAccountName "<storage-account-name>" -IncludeSnapshot

删除快照

现有共享快照永远不会被覆盖。 这些快照必须显式删除。 你可以使用 Azure PowerShell 或 Azure CLI 删除共享快照。

若要删除文件共享快照,请运行以下 PowerShell 命令。 将 、 和 替换为自己的值<resource-group-name><storage-account-name><file-share-name>SnapshotTime 参数必须遵循正确的名称格式,例如 2021-05-10T08:04:08Z

Remove-AzRmStorageShare -ResourceGroupName "<resource-group-name>" -StorageAccountName "<storage-account-name>" -Name "<file-share-name>" -SnapshotTime "<snapshot-time>"

若要删除文件共享及其所有快照,请运行以下 PowerShell 命令。 将 、 和 替换为自己的值<resource-group-name><storage-account-name><file-share-name>

Remove-AzRmStorageShare "<resource-group-name>" -StorageAccountName "<storage-account-name>" -Name "<file-share-name>" -Include Snapshots

装载 NFS Azure 文件共享快照

若要将 NFS Azure 文件共享快照装载到 Linux VM(NFS 客户端)并还原文件,请执行以下步骤。

  1. 在控制台中运行以下命令。 有关其他建议的装载选项,请参阅装载选项。 若要改进复制性能,请使用 nconnect 装载快照以使用多个 TCP 通道。

    sudo mount -o vers=4,minorversion=1,proto=tcp,sec=sys $server:/nfs4account/share /media/nfs
    
  2. 将目录更改为 /media/nfs/.snapshots,以便查看可用的快照。 默认情况下,.snapshots 目录处于隐藏状态,但可以像任何目录一样查看和读取。

    cd /media/nfs/.snapshots
    
  3. 列出 .snapshots 文件夹的内容。

    ls
    
  4. 每个快照都有自己的目录作为恢复点。 更改为需要还原文件的快照目录。

    cd <snapshot-name>
    
  5. 列出目录的内容,以查看可恢复的文件列表和目录。

    ls
    
  6. 将所有文件和目录从快照复制到 restore 目录以完成还原

    cp -r <snapshot-name> ../restore
    

快照中的文件和目录现在应该位于 /media/nfs/restore 目录中。

后续步骤