阿里云文件存储CPFS实现与OSS之间数据双向便捷流动

随着云上对象存储成本的逐渐降低,越来越多的企业利用阿里云OSS存储他们的大量数据并构建数据湖。现在阿里云文件存储CPFS与对象存储OSS实现了深度集成,客户可以在三十分钟内创建一个高性能CPFS文件系统并链接到他们的OSS bucket。当链接到OSS bucket以后,CPFS文件系统会自动同步OSS bucket中的对象元数据,将OSS对象透明地显示为CPFS文件。这使客户能够使用高性能、POSIX兼容的文件接口快速地处理OSS中数据。处理完成后,客户可以通过CPFS控制台或者OpenAPI将结果写回链接的OSS bucket。

适合的业务场景

阿里云的客户将CPFS广泛应用于各种高性能数据分析场景,如:CG渲染和转码、电气设计自动化(EDA)、自动驾驶、金融量化分析、AI机器学习和高性能计算(HPC)。

CPFS使启动和运行传统的专业高性能文件系统变得简单且经济高效。CPFS旨在为客户提供完美兼容POSIX接口的极致性能的共享分布式文件系统。CPFS充分利用了云上硬件基础设施高速迭代的红利,基于全固态SSD介质和高性能RDMA网络,在可控的成本下,提供了亚毫秒的延迟、数百万IOPS和百GBps吞吐量,使计算密集型工作负载能够更快地完成。

根据我们的经验以下行业都可以从CPFS+OSS数据流动中获益

  • 自动驾驶 – 客户在进行定期试驾后返回车库时,会定期从车辆向阿里云OSS上传大量传感器数据,进行数据初步清洗,并需要依赖高性能CPFS文件系统+GPU进行机器学习运算
  • 媒体和娱乐 – 客户通过公网不断将原始视频素材上传到阿里云OSS,并需要通过CPFS+GPU进行CG渲染或后期剪辑编辑,再利用OSS+CDN进行分发
  • 金融服务 – 客户持续上传大量金融交易数据至阿里云OSS,通过CPFS进行分析
  • 石油和天然气 – 海量数据需要使用OSS进行低成本存储和归档,专业的HPC软件利用CPFS提供的MPI-IO接口进行高效分析和计算
  • 基因计算 – 客户每天可以从采集源,通过internet将新DNA数据上传到阿里云OSS,再利用专业软件进行分析,CPFS为这些专业软件超高吞吐和POSIX接口

阿里云文件存储CPFS实现与OSS之间数据双向便捷流动

文件系统中的子文件系统Fileset

本次CPFS的更新,我们在文件系统中实现了一种新的目录树结构--Fileset。它就像在父文件系统中的一个小型文件系统,它拥有独立的inode空间和管理能力。Fileset内的文件或目录数量上限缺省是100万个,如果您的业务场景需要提高文件数量额度,请提交工单申请,我们可以为您进行调整。未来我们会基于Fileset开放更多的元数据管理能力,本次开放的为OSS和CPFS的数据流动功能。当前,您可以在一个文件系统中创建10个Fileset,我们建议您按照业务需求将未来可能进行独立管理的目录配置成Fileset,比如按照:独立部门、独立业务、重要核心数据等。

阿里云文件存储CPFS实现与OSS之间数据双向便捷流动

数据流动模式和性能

元数据导入

您可以在创建好CPFS文件系统后随时通过创建"数据流动”将某个OSS bucket链接到CPFS文件系统的某个Fileset。在配置数据流动时,您可以配置在添加新对象或在OSS bucket中更新现有对象时是否在CPFS中自动更新其元数据:

  • 不自动更新CPFS中的文件:(默认)在创建数据流动时,CPFS会一次性导入对应OSS bucket中的所有对象的元数据。之后不会自动导入任何新的或者更改的对象。也不会从文件系统中自动删除从OSS bucket中删除的对象。
  • 自动更新CPFS中的文件(元数据自动更新):在创建数据流动时,CPFS会一次性导入对应OSS bucket中的所有对象的元数据。之后,按照配置的时间间隔和OSS前缀,CPFS会自动更新指定OSS前缀下新的或者更改的对象的元数据至CPFS文件系统。您可以及时的在CPFS中看到OSS中的最新更新。此功能依赖阿里云事件总线 EventBridge服务,CPFS会为您自动配置。什么是事件总线EventBridge?

数据导入:

当CPFS从链接的OSS bucket导入新对象时,它只下载这些对象的名称、前缀和权限(即元数据),并使它们在文件系统中显示为新文件和目录。如果对象不包含元数据,则CPFS将使用root:root和755的默认权限。如果在导入过程中,OSS中已更改的对象不再包含其元数据,则CPFS将保留当前元数据值,而不是使用默认权限。OSS对象的内容(数据)有两种方式进行导入:

  • 可以通过控制台或者OpenAPI创建数据流动任务手动导入CPFS
  • 可以在应用程序首次访问时由CPFS自动加载到文件系统中(我们称之为"Lazy-load")

我们推荐针对小型数据集或少量数据更新使用"Lazy-load"能力,可以有效降低管理成本,且应用几乎无感。对于大型数据集,我们建议通过创建手动任务进行提前数据导入。

数据删除(evict):

CPFS为热数据提供高性能读写的同时,成本也远高于OSS,如何高效率的使用CPFS有限的空间是客户的重要诉求。数据流动功能提供了删除CPFS中数据但是保持元数据的能力,使得CPFS中宝贵的空间可以进行轮转使用。用户在将数据导出至OSS或者确认OSS上有必要备份后,可以通过CPFS控制台或者OpenAPI删除CPFS中文件的数据,腾出空间供其他数据集导入使用,CPFS上元数据仍将保留,下次读取数据时,CPFS会从OSS自动拉取。

数据流动性能:

每个数据流动的带宽都可以在创建时进行配置,也可以在创建后进行调整,调整后一般需要在十分钟左右生效。数据流动按照带宽进行收费并根据CPFS文件系统的容量大小进行了一定减免,详见:CPFS计费说明

CPFS在进行数据导入时会对所有OSS对象进行并行化读取。根据我们的经验,为发挥出理想的带宽能力,我们建议您将数据分散在多个OSS prefix下,平均文件大小不小于1MB。以下是我们在实验室环境下获得的数据流动的OPS能力:

数据导入OPS:1000

数据导出OPS:1000

数据删除OPS:2000

总结

数据流动功能将CPFS与OSS进行深度集成,允许客户轻松快速地处理存储在OSS上的数据集,这包括以下一系列功能:

  • 新的目录树结构Fileset
  • 能够在CPFS文件系统和OSS之间传输POSIX元数据,这允许您在CPFS和OSS之间维护POSIX权限、所有权和时间戳。有关更多信息,请参阅"数据流动概述"。
  • 新的控制台页面和OpenAPI,为您提供创建、管理、监控CPFS文件系统与其链接的OSS bucket之间的数据传输。有关更多信息,请参阅CPFS OpenAPI参考文档
  • 相较通过ossfs工具将数据从OSS导入CPFS文件系统,导入速度提高了10倍以上,使您在使用数据前只需要等待很短的时间。
  • 云监控支持新的关于数据导入和导出的性能监控指标
  • 数据导入和导出报表,供管理员了解数据流动的结果
上一篇:Asp.net--Ajax前后台数据交互


下一篇:《从问题到程序:用Python学编程和计算》——2.4 字符串