文件存储作为存储三个接口状态中占比最高的一个(块、文件、对象),也有进一步的细分,不少用户困惑于并行文件系统和传统分布式 NFS 文件存储之间的区别,明天咱们来剖析一下二者有何不同。
在大多数状况下,用户在应用计算机时,不论是游戏、视频、文档编辑的一般应用程序,还是 AI、渲染、高性能计算的利用,这些利用应用的都是操作系统的“文件系统”。操作系统的“文件系统”模块提供了一个直观的界面(不光指咱们肉眼所看到的可视化的用户界面,同时也指从应用程序角度的 SDK 拜访接口)来拜访数据,而不会让您或应用程序记住数据在硬盘上的物理或逻辑地位(磁道,扇区号等)。
任何文件系统中都存在三个要害的形象:
- 文件:文件的实在数据可能不会在硬盘中的间断地位,但最终用户能够将文件以一长串间断字节的模式进行拜访(这是因为文件系统对硬盘的数据分布进行了形象和治理)。
- 文件名:用户或应用程序能够通过诸如 doc01.txt 这类直观的文件名称拜访文件,而无需记住任何物理的存储信息。
- 目录树:文件系统(不论是本地的 ext4、xfs 文件系统,还是近程的共享文件系统)以目录树的模式治理所有文件。
NFS
NFS(Network File System,网络文件系统),是 Sun 基于 C/S 架构开发的一个文件系统,它容许用户通过网络拜访文件,用户在应用的时候,感觉这些文件就像是位于本地文件目录中。这是通过 NFS 服务器导出(/etc/exports),并提供相应的文件拜访权限,和 NFS 客户端挂载(使文件系统可用于应用程序所处的操作系统)的过程来实现的。
并行文件系统
并行文件系统中,文件数据被切分并搁置到多个存储设备中(各个被切分的数据如何搁置,由并行文件系统通过算法来管制,能够基于元数据服务或相似一致性哈希的形式实现),零碎应用全局名称空间来进行数据拜访。并行文件系统的客户端能够同时应用多个 IO 门路将数据读 / 写到多个存储设备。
并行文件系统 vs 分布式文件系统
并行文件系统是分布式文件系统的一种。分布式文件系统和并行文件系统都能够将数据分布在多个存储服务器上,可横向扩大从而包容 PB 级数据,并反对高带宽。
分布式文件系统通常也像并行文件系统一样,反对共享的全局名称空间。然而对于分布式文件系统而言,即便局部文件数据被调配和搁置在不同服务器上,客户端在拜访数据或元数据时,依然须要通过指定的协定服务器来实现,协定服务器可能会成为 IO 路由的瓶颈。当初市场上支流的分布式文件存储为了解决这个协定服务器瓶颈的问题,应用 DNS 技术将不同的客户端连贯至多个协定服务器,实现肯定水平的负载平衡,但即便通过负载散发,也只是将不同客户端的 IO 拆分至多个协定服务器,协定服务器依然须要进行一次 IO 转发,从而带来肯定水平的性能损耗。应用并行文件系统,客户端零碎能够间接拜访所有存储节点以进行数据传输,而不用通过协定服务器。
其余区别还包含:
- 分布式文件系统通常应用规范的网络文件拜访协定(例如 NFS 或 SMB)来拜访存储服务器。并行文件系统通常须要装置基于客户端的软件驱动程序(甚至推出基于 Windows 的客户端程序,例如 YRCloudFile、Panasas 等),通过以太网或 InfiniBand 等高速网络访问共享存储,因为只有基于这些客户端程序,能力实现区别于 NFS 的多 IO 门路拜访。
- 局部分布式文件系统将单个文件存储在单个存储节点上,而并行文件系统通常将文件合成并跨多个存储节点对数据块进行条带化。
- 分布式文件系统偏向于带宽型或归档型应用程序。并行文件系统专一于高并发、高 IOPS、海量数据的高性能工作负载。
- 分布式文件系统通常应用诸如三正本或纠删码等技术来提供数据可靠性,而许多并行文件系统还反对后端挂载磁盘阵列(例如 Lustre、Spectrum Scale、YRCloudFile 等)。