# UFS分布式文件存储接入能力升级，支持Windows主机用户使用

> 作者/来源: UCloud官方/历史归档
> 发布时间: 2023-04-11T03:22:50.000Z
> 分类: 其他
> 标签: 分布式文件存储, Windows支持, SMB
> 原文链接: http://117.50.162.249:3000/yun/articles/2606

---

**UFS分布式文件系统**

UFS是一款分布式文件系统产品，它能够为运行于 UCloud 公有云、物理云、托管云上的各类主机提供高可用、高可靠、易拓展的文件存储功能。通过 UFS 产品提供的共享存储功能，可以方便地为各类数据备份、serverless、AI 数据分析、高性能 web 站点等应用场景提供强有力的支撑。

之前UFS仅支持NFSv4.0协议，只能提供给Linux主机使用。针对用户需要在Windows主机使用UFS的需求，**近日，UCloud优刻得升级UFS产品功能，支持SMB和NFSv3接入协议。**存量UFS实例能够直接使用NFSv3协议挂载，新建UFS实例时则可以选择接入NFS或者SMB。从而使UFS拥有了全量接入Windows主机的能力，让Windows用户也能充分利用UFS分布式文件系统创造价值。

**下图为UFS整体io处理架构：**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/wechat/images/19c53368307b8a76.png)

**SMB介绍和支持**

SMB（Server Message Block）是一种网络文件共享协议，用于共享文件和打印机等资源，Windows主机广泛使用该协议进行文件的共享。当前UFS接入支持的协议版本有CIFS，SMB2.0，SMB2.1，SMB3.0。

和本地搭建SMB服务比较，UFS拥有以下优势：高容量，弹性扩展，可支持最高PB级别的容量按需进行扩容；高可靠，数据存储有跨机器、跨机架的三个副本；高可用，整体服务路径均采用节点多实例设计和部署，没有单机故障的隐患。

通过SMB协议挂载访问UFS，Windows用户可以使用UFS分布式文件系统进行海量视频素材的存储和编辑等。

**NFSv3提升小文件操作的吞吐**

Linux和Windows主机均可以使用NFSv3挂载UFS文件系统，在大批量操作小文件的场景下，NFSv3相对于NFSv4.0性能更好。

以下我们分别介绍两种协议版本读取文件的流程。



** NFSv4.0读取文件流程：**

1. 打开文件：PUTFH设置文件父目录file handle（文件系统内唯一标识文件对象），OPEN打开指定文件，GETFH获取打开文件的file handle，ACCESS检查文件访问权限，GETATTR获取文件属性信息。

2. 确认Open-Owner（可选）：如果server需要confirm，客户端再发起OPEN_CONFIRM。

3. 读取数据：PUTFH设置文件file handle，使用返回的stateid读取文件。

4. 关闭打开文件：PUTFH设置文件file handle，关闭stateid指定的文件。



** NFSv3读取文件流程：**

1. 查询文件：LOOKUP查询指定目录下的文件，返回文件file handle和属性信息。

2. 确认访问权限：ACCESS检查文件是否有访问权限。

3. 读取数据：使用文件file handle读取数据。

得益于NFSv4.0引入的COMPOUND Procedure，额外支持状态的NFSv4.0协议RPC交互数量一般也和NFSv3一样多。但是为什么NFSv4.0大批量操作小文件的性能会远远差于NFSv3？为了支持状态，NFSv4.0打开文件需要提供Open-Owner，协议中规定针对每个Open-Owner，同一时刻只能发起一个相关请求；在Linux内核实现中，同一个用户的进程会共用同一个Open-Owner，因此在大量小文件读写的情况下，文件的打开流程会变成串行操作，影响性能。所以在大批量操作小文件并且没有文件锁需求的场景下，NFSv3相比NFSv4.0可以大幅度提高性能。

以下针对小文件夹的读写场景分别在NFSv3和NFSv4.0挂载下进行了测试。测试环境为Centos8.3虚机，测试文件为Linux内核源码包，有8w+文件。

**下面的表格为测试结果，可以看出在大批量操作小文件的情况下NFSv3比NFSv4.0性能好得多。**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/wechat/images/b60ff7635feaef22.png)

某知名在线英语教育公司使用UCloud GPU云主机进行AI训练，训练数据存储在UFS分布式文件系统中，最开始这家公司的客户端使用的是NFSv4.0挂载，使用过程中发现训练性能不理想，在没有达到硬件瓶颈的情况下，并发运行多个训练任务也并没有显著减少训练时间。经过排查后发现，NFS挂载读取吞吐较低，用户的训练数据小文件居多，监控数据中看到大量的open请求，导致读取数据性能差。更换使用NFSv3挂载后，没有额外的open开销，训练速度提升了至少2倍。

**总结和展望**

UFS分布式文件系统的接入能力升级，支持了Windows主机使用，加速了用户特定场景的使用功能。UFS还在进行产品私有化的开发工作，未来会研发并行文件系统，以更低的io时延，更高的吞吐，支撑HPC场景应用。