聊一聊并行文件系统的客户端优化之道

简介: 本文主要介绍阿里云CPFS是如何应对挑战以及对并行文件系统的技术探索与落地实践。

1.背景


并行文件系统作为文件存储的一个高性能分支,自出现以来已经走过了二十个年头,一直被大规模应用于气象预测、石油勘探、高能物理、汽车制造、芯片制造、自动驾驶、影视渲染等高性能计算领域。在AI时代下,GPU并行计算如火如荼,阿里云CPFS也正式演进到了2.0时代,并且对传统并行文件系统的技术体系有了一系列创新和实践。


2.并行文件系统的演进之路


传统的并行文件系统诞生于二十一世纪初的CPU+物理机时代,直到二十一世纪的第二个十年的到来。2012年,Alex Krizhevsky(前谷歌计算机科学家)利用深度学习+GPU的方案,一举赢得Image Net LSVRC-2010 图像识别大赛,并奇迹般地将识别成功率从74%提升到85%。GPU从此一战成名,凭借自身海量流处理器和矢量处理单元成为了AI计算的首选加速器。GPU芯片的算力从V100到A100再到H100,实现了成倍的增长,对数据吞吐量的需求也成倍增长,甚至一度超出了PCI-E总线的能力。


与此同此,随着容器K8S平台的逐渐成熟,AI训练的运行平台已经由过去的虚拟机+物理机转向为容器+云计算平台。这样的时代背景下,传统的并行文件系统也面临了极大的挑战。


本系列文章会从以下几个方面,与大家分享阿里云CPFS是如何应对这些挑战以及对并行文件系统的技术探索与落地实践:


  • 从专属客户端到NFS标准协议服务
  • 从文件存储自闭环到拥抱云上数据湖的开放生态
  • 从CPU大文件计算到GPU小文件计算
  • 快、再快一点---服务端缓存和计算端缓存的进化


本期我们会具体介绍CPFS在客户端侧的轻量化变革。


3.专属客户端的问题所在


众所周知,由于世纪初NFS等通用协议的不完善,传统的并行文件系统都设计并提供了专属客户端,可以说专属客户端是高性能并行文件系统的身份象征。

专属客户端是并行文件系统实现高性能的重要组成部分,专属客户端对于并行文件系统至关重要,不仅提供了MPI-IO接口、多后端服务器连接能力、负载均衡能力,部分专属客户端还可以提供单机数据缓存能力。但是随着容器时代的到来,专属客户端显示出了他的诸多问题:


  • 首先,重客户端多采用内核态,这就引起与操作系统深度绑定。在世纪初,专业的HPC应用有限,多为专业公司开发并运行于超算中心,重客户端看起来不是个问题。但是随着AI时代的到来,GPU应用开发百花齐放,开发者习惯不同,限制操作系统或内核版本变成了一个巨大的门槛。


  • 其次,弹性容器带来极速的应用部署能力和弹性扩缩容能力,将计算资源利用率提升至极致。专属客户端较慢的部署速度和较多的软件依赖,降低了应用部署速度,限制了容器的弹性能力。


  • 再次,面向应用的数据管理取代面向物理机的数据管理。容器时代,用户业务的使用界面从物理机和虚拟机上移至应用,重客户端将整个文件系统视为统一的命名空间,只能通过传统的ACL方式进行复杂权限配置,且无法通过动态和静态PV和容器K8S实现联动,实现容器内应用访问数据的完美隔离。


4.轻量化NFS客户端的新思路


要解决专属客户端的问题,就需要对客户端进行“瘦身”,实现NFS协议端的轻量化。通过操作系统解耦,让所有Linux系统都可以轻松使用CPFS,解放开发者,其次,发挥分布式文件系统的高性能优势,最后,实现K8S弹性PV,以及PV间严格数据隔离,具体方式包括以下三个方面:

4.1基于NFS协议实现轻量化端接入


NFS是文件存储领域使用最广的协议,具有成熟的通用型、易用性,为广大使用者接受。为了降低CPFS的使用门槛,CPFS需要兼容NFS。


传统的并行文件系统重客户端往往指定操作系统、内核版本,内核版本升级后客户端还需要重新安装,运维成本高,而CPFS-NFS客户端是用户态的,不依赖内核版本,这带来两个好处:一是支持所有主流操作系统,CPFS-NFS客户端支持Alibaba Cloud Linux、CentOS、Ubuntu、Debian等,二是当用户操作系统升级后,CPFS-NFS客户端无需升级可继续使用。


传统的并行文件系统客户端需要复杂的配置才能达到较好的运行效果,例如Lustre需要对网络组件LNET、元数据组件MDC、数据组件OSC进行并发度、块大小等配置,增加了用户的维护成本。CPFS-NFS客户端使用简单,只需要一条mount挂载命令即可,客户端的默认配置由CPFS-NFS客户端自行完成,降低用户使用门槛。


并行文件系统通常将文件系统逻辑上移到客户端上完成,例如Lustre的OSC需要感知文件分片(stripe)位于哪些存储服务器才能读取数据,这增加了客户端上CPU、内存的资源开销。CPFS-NFS客户端的资源开销是轻量的,只用于传输数据和必要的元数据操作,CPU开销通常小于一个逻辑核。


4.2优化协议实现保证端接入的高性能


借助CPFS并行I/O、全对称的分布式架构提供的底座能力,NFS协议端同样具有高吞吐、高IOPS的集群性能,远超传统NAS单机架构带来的性能指标。例如200MB/s/TiB规格下,NFS协议端也提供每TiB容量兑付200MB/s吞吐的性能指标,最大吞吐是20GB/s,最大可接近100万 IOPS。


NFS协议服务组成协议集群,根据CPFS文件系统容量同步横向扩展。CPFS-NFS客户端与协议节点之间具备负载均衡的能力,在客户端挂载时可根据协议节点负载(连接数、空闲带宽、CPU等)选择最佳的协议节点建立连接,有效的避免热点、胖客户端挤兑单个协议节点带来的性能下降。


4.3提供多种挂载方式大规模挂载的支持与目录级挂载点


为了满足K8S弹性PV的需求,同时实现PV间严格数据隔离,CPFS支持了多种挂载方式,具体包括:


  • 大规模容器挂载

传统的并行文件系统客户端上通常会保存状态,这导致客户端规模有限,例如客户端上保存打开的文件、读写锁等状态,为保证数据一致性,客户端之前互相做状态的颁发、召回等操作。客户端规模越大,客户端之间的交互、消耗的资源更多,这限制了客户端的规模。


CPFS-NFS客户端是无状态的,客户端只与存储节点连通,不会随客户端规模增大而加重客户端的负载。CPFS-NFS客户端支持10000个客户端/POD同时挂载访问数据。


  • CSI插件,支持静态、动态卷

CPFS-NFS客户端与阿里云容器服务(ACK)深度集成,CSI 支持静态存储卷挂载和动态存储卷挂载两种方式挂载 CPFS存储卷。详情见CPFS静态卷CPFS动态卷


  • 目录级挂载点

目录级挂载点提供端上访问隔离的能力,容器挂载时仅挂载子目录,防止容器应用直接访问整个文件系统,引起数据安全问题。通过使用Fileset和ACL,CPFS能提供更强的目录隔离:后续Fileset支持配额,可配置目录子树的文件数量、总容量;ACL可配置用户的访问权限。


5.总结


目前,CPFS的标准NFS协议访问模式已经开放。帮助一些原有因为操作系统版本原有无法使用云上CPFS的客户实现了业务弹性上云。同时,结合阿里云容器ACK服务,为客户提供了秒弹几百个POD的动态伸缩能力,实现了忙时快速扩容,闲时快速释放,降低GPU资源闲置成本。


文件存储CPFS在支持NFS协议上的能力的重要提升,意味着无论是容器还是虚拟机,无论是哪种Linux版本,都可以轻松访问高性能的CPFS并行文件系统,这无疑有助于加速自动驾驶场景落地。欲了解更多,可观看直播


后面,我们还会继续分享CPFS在数据湖生态融合、小文件计算、缓存技术等方面的技术进化,希望能持续关注此系列文章。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
1199 0
|
数据采集 大数据 数据挖掘
DataHub应用场景有哪些?
本文为您介绍DataHub三大应用场景,主要场景包括:实时数据通道、实时数据清洗和分析、实时数据仓库。
1412 0
|
存储 人工智能 缓存
面向AI的存储软硬结合实践和创新
本次分享的主题是面向AI的存储软硬结合实践和创新,由阿里云智能集团专家袁茂军、王正勇和常存银主讲。内容涵盖三大板块:自研存储部件设计及实践、自研存储服务器设计及实践、以及面向AI场景的存储软硬一体解决方案及实践。重点介绍AliFlash系列存储部件的演进与优化,包括QLC SSD的设计挑战与解决方案,并探讨了高性能存储服务器在AI场景中的应用与未来发展方向。通过软硬件深度融合,旨在提升AI业务的性能与效率,降低总拥有成本(TCO)。
744 7
|
11月前
|
存储 缓存 人工智能
阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
Tair KVCache 是阿里云推出的面向大语言模型推理场景的缓存加速服务,基于分布式内存池化和分级缓存体系,解决显存墙与带宽瓶颈问题。为万亿参数模型的高效推理提供技术保障,推动 AI 算力进化与规模化应用。
|
Linux
如何查看当前的NFS挂载信息?
如何查看当前的NFS挂载信息?
2633 2
|
存储 机器学习/深度学习 人工智能
AIGC训练场景下的存储特征研究
在今天这样以AIGC为代表的AI时代下,了解训练场景对于存储的具体诉求同样是至关重要的。本文将尝试解读WEKA的一个相关报告,来看看AIGC对于存储有哪些具体的性能要求。
95536 8
|
机器学习/深度学习 人工智能 自然语言处理
|
存储 Android开发 iOS开发
指导:大量联系人电话号码怎么导入iphone苹果手机通讯录?
想有没有简单的办法能帮我来快速批量操作完成,在网上查了很多方法都很复杂,搞了半天精疲力尽,在我快要放弃的时候遇到了一个网上常见简便的软件工具,金芝号码提取导入助手。它很轻松就解决了我的问题:大量联系人电话号码怎么导入iphone苹果手机通讯录?当然了安卓手机也是可以导入的,通用。我写了一个详细的图文教程。
3590 0
指导:大量联系人电话号码怎么导入iphone苹果手机通讯录?
|
关系型数据库 MySQL Linux
docker-compose 部署 MySQL 8
docker-compose 部署 MySQL 8
|
机器学习/深度学习 分布式计算 Hadoop