今天来和大家聊聊最近使用率非常高的Azure NFS,在微软没有发布Azure Blob NFS 3.0支持之前,有两种主要的方法可以将NFS作为服务。第一种是在Global Azure上通过Azure NetApp FIles,这是一项由NetApp和Microsoft合作构建的服务,旨在为大型数据集提供文件共享服务。另一种方法是使用Blobfuse将Azure Blob挂载为文件系统的一部分,这种方法主要是实现针对Azure Blob存储上性能较低,但高度可扩展的文件负载。
Blob 存储现在支持网络文件系统 (NFS) 3.0 协议。此支持在对象存储规模和价格上提供了 Linux 文件系统兼容性,并使 Linux 客户端可以从 Azure 虚拟机 (VM) 或本地计算机中,将容器装载在 Blob 存储中。也就意味着我们可以使用任何的NFS客户端将Blob存储挂在为客户端文件系统的一部分,因为现在Azure Blob支持NFS协议级别的访问。

NFS 3.0和分层命名空间

NFS 3.0 协议支持要求将 blob 组织到分层命名空间中。 创建存储帐户时,可以启用分层命名空间。 它将对象(文件)组织到目录和子目录的层次结构中,就像组织计算机上的文件系统一样。 分层命名空间以线性方式缩放,并且不会降低数据容量或性能。 不同协议从分层命名空间扩展而来。 NFS 3.0 协议是以下可用协议之一。

Azure Blob NFS 3.0 支持_Azure Blob

如果启用 NFS 3.0 协议支持,存储帐户中的所有数据都将存储为块 blob。 块 blob 经过优化,可以有效地处理大量读取繁重的数据。 块 blob 由多个块组成。 每个块由块 ID 标识。 一个块 blob 最多可包含 5 万个块。 块 blob 中的每个块可以有不同的大小,最大可以达到帐户使用的服务版本所允许的最大值。

网络安全

出于安全因素考虑,使用NFS协议连接到blob的流量必须源自VNet,VNet 使客户端可以安全地连接到存储帐户。 保护帐户中数据的唯一方法是使用 VNet 和其他网络安全设置。 在启用了 NFS 3.0 协议支持的帐户中,尚不支持用于保护数据的任何其他工具,包括帐户密钥授权、Azure Active Directory (AD) 安全性和访问控制列表 (ACL)。
客户端可以通过公共终结点(选中网络)或专用终结点进行连接,并且可以从以下任意网络位置进行链接:

  • 为存储账户配置的VNet
  • 与主VNet位于同一区域的对等VNet
  • 使用VPN网关或ER网关连接到主VNet的本地网络
  • 连接到对等网络的本地网络

聊了这么多,接下来我们一起看下如何创建一个支持NFS 3.0的Azure Blob存储账户:
首先,我们登录到Azure Portal,点击创建一个存储账户,在基本刀片上,根据需求选中性能层为高级或者标准,存储账户类型选中为块Blob:

Azure Blob NFS 3.0 支持_NFS_02

在高级刀片,勾选“启用分层命名空间”和“启用网络文件系统V3”:


Azure Blob NFS 3.0 支持_Blob_03


在网络刀片,我们可以根据需求选“公共终结点(选定网络)”或“专用终结点”:

Azure Blob NFS 3.0 支持_NFS_04

其他页面选项保持默认或根据需求进行调整,然后进行验证,验证通过后点击创建:

Azure Blob NFS 3.0 支持_Blob存储_05

创建完成,如下图所示,可以看到NFS v3以及被启用:

Azure Blob NFS 3.0 支持_NFS3.0_06

接下来我们可以根据需求添加blob容器然后在客户端进行链接使用