公开/公告号CN113805811A
专利类型发明专利
公开/公告日2021-12-17
原文格式PDF
申请/专利权人 济南浪潮数据技术有限公司;
申请/专利号CN202111097384.X
申请日2021-09-18
分类号G06F3/06(20060101);
代理机构11278 北京连和连知识产权代理有限公司;
代理人张涛;杨帆
地址 250000 山东省济南市中国(山东)自由贸易试验区济南片区浪潮路1036号浪潮科技园S05楼S311室
入库时间 2023-06-19 13:45:04
技术领域
本发明涉及文件处理领域,更具体地,特别是指一种优化读写访问文件的方法、系统、设备和存储介质。
背景技术
在Linux系统中,比较常见的操作是访问文件,不管是读文件还是写文件,前提条件都是对文件进行访问,尤其是数量较大的小文件,在一些场景中,批量访问小文件是经常发生的,如何能够以最快的速度访问目标文件是最关心的问题,然而,在很多服务器中,访问100万小文件的耗时结果并不是很理想,常见的情况可以分为两种,第一就是访问耗时较长,但是客户对海量小文件的访问时间容忍度又相对比较低,这就导致客户对产品性能评价较低,第二种是访问巨量文件卡死的现象,这种情况比第一种还要严重,很有可能导致客户对产品的弃用,这样的结果很显然不是企业想看见的。
针对这种情况,经过各企业的不断尝试,有一些常规的操作来改善这种境遇,一种比较常见的就是使用SSD(Solid State Drive,固态硬盘)作为缓存,在访问海量小文件的时候,通过SSD来加速,但是使用SSD作为访问小文件的缓存显得有点浪费了,况且海量小文件所需的SSD数量较多,从技术成熟度和成本角度考虑,不是最优的选择,另外一种就是使用常规数量的SSD,通过算法和数据结构来解决此类问题,在这种情况下,现有NFS(NetworkFile System,网络文件系统)虽然是多线程,但是从整体逻辑上看,并不能做到并行访问,如何让NFS并行的访问数据就成了关键问题。
发明内容
有鉴于此,本发明实施例的目的在于提出一种优化读写访问文件的方法、系统、计算机设备及计算机可读存储介质,本发明通过把元数据和数据存储服务分离,部署多个元数据服务实例和数据存储服务实例,根据需要将磁盘配置成不同的RAID模式,使得不同的服务独立出来,元数据服务只负责处理元数据相关的信息,不参与文件的读取访问,存储服务可以存在多个,增加了系统的灵活性,同时能够管理集群上所有的服务,这样NFS客户端可以并行的去访问数据。
基于上述目的,本发明实施例的一方面提供了一种优化读写访问文件的方法,包括如下步骤:在集群中的服务器上部署元数据服务和/或存储服务;响应于接收到客户端创建并写海量的文件的请求,将所述文件的元数据信息记录到元数据服务,并将文件的数据并行写入多个存储服务;响应于接收到客户端读海量的文件的请求,从所述元数据服务中获取所述文件的元数据信息;以及根据所述元数据信息并行地从多个所述存储服务中读取文件的数据。
在一些实施方式中,所述将文件的数据并行写入多个存储服务包括:将所述文件分割成多个预定大小的数据块,并将多个所述数据块部署到不同的存储服务中。
在一些实施方式中,方法还包括:在所述集群中部署管理服务,并将部署的所述元数据服务和所述存储服务向所述管理服务进行注册;以及通过所述管理服务向注册后的所述元数据服务和所述存储服务发送心跳检测。
在一些实施方式中,所述在集群中的服务器上部署元数据服务和/或存储服务包括:基于服务器磁盘数量组成带有两个独立分布式校验方案的独立数据磁盘。
本发明实施例的另一方面,提供了一种优化读写访问文件的系统,包括:部署模块,配置用于在集群中的服务器上部署元数据服务和/或存储服务;记录模块,配置用于响应于接收到客户端创建并写海量的文件的请求,将所述文件的元数据信息记录到元数据服务,并将文件的数据并行写入多个存储服务;获取模块,配置用于响应于接收到客户端读海量的文件的请求,从所述元数据服务中获取所述文件的元数据信息;以及读取模块,配置用于根据所述元数据信息并行地从多个所述存储服务中读取文件的数据。
在一些实施方式中,所述记录模块配置用于:将所述文件分割成多个预定大小的数据块,并将多个所述数据块部署到不同的存储服务中。
在一些实施方式中,系统还包括管理模块,配置用于:在所述集群中部署管理服务,并将部署的所述元数据服务和所述存储服务向所述管理服务进行注册;以及通过所述管理服务向注册后的所述元数据服务和所述存储服务发送心跳检测。
在一些实施方式中,所述部署模块配置用于:基于服务器磁盘数量组成带有两个独立分布式校验方案的独立数据磁盘。
本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。
本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明具有以下有益技术效果:通过把元数据和数据存储服务分离,部署多个元数据服务实例和数据存储服务实例,根据需要将磁盘配置成不同的RAID模式,使得不同的服务独立出来,元数据服务只负责处理元数据相关的信息,不参与文件的读取访问,存储服务可以存在多个,增加了系统的灵活性,同时能够管理集群上所有的服务,这样NFS客户端可以并行的去访问数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的优化读写访问文件的方法的实施例的示意图;
图2为本发明提供的优化读写访问文件的系统的实施例的示意图;
图3为本发明提供的优化读写访问文件的计算机设备的实施例的硬件结构示意图;
图4为本发明提供的优化读写访问文件的计算机存储介质的实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
本发明实施例的第一个方面,提出了一种优化读写访问文件的方法的实施例。图1示出的是本发明提供的优化读写访问文件的方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
S1、在集群中的服务器上部署元数据服务和/或存储服务;
S2、响应于接收到客户端创建并写海量的文件的请求,将所述文件的元数据信息记录到元数据服务,并将文件的数据并行写入多个存储服务;
S3、响应于接收到客户端读海量的文件的请求,从所述元数据服务中获取所述文件的元数据信息;以及
S4、根据所述元数据信息并行地从多个所述存储服务中读取文件的数据。
在海量小文件业务模型中,最常见的是同时有多个客户端对服务器进行访问,对于同一个客户端是先写后读,对于多个客户端来说就是读写都有可能同时进行,但是他们读写访问的文件一般都不是同一批文件。文件数量和大小根据业务的不同个数有些许差异,总体可以将他们归为一类,因为他们的IO模型较为相似,文件通常是和目录强相关的,相同数量的文件,归属于不同的目录层级,可能对服务器性能带来的影响也是不同的,较为常见的是目录层级在十级以内,海量小文件分配较为均衡,以PACS(Picture Archivingand Communication Systems,医学影像存档与传输系统)来说,业务有以下特点:
1、数据创建方式。医院拍摄3D版的CT、CR等会生成所需的图片,CT拍摄完成则后台对应生成一个该CT的描述文件(*.ini),该描述文件客户称为发布文件,只有该发布文件和对应图片都上传到存储后,医院CT科室才可以正常浏览图片。
2、数据读取模式。CT科室等用户需要查看诊断数据时,会读取访问之前拍摄的图片等数据。
3、文件访问频次。拍摄完成时间7天内的文件访问频次最高,随着时间的推移访问频次降低,具体时间与病人的住院时间有关,平均一个月后文件基本无访问操作。
4、存储目录结构。目录深度为6,上层目录均采用数字编号加以区别,最后一层长串数字目录下存放图片及相关信息;CT机等每进行一次检查,上传数据文件后,存储系统就需创建一个目录深度为6的目录用以存储相关数据文件,该目录下的总文件数目一般在500-2000。
IO处理模型及分析:
1、并发规模:创建写400-1000个文件/s,读400-1000个文件/s。对应时延要求1ms-3ms,读写带宽要求30MB/s-50MB/s左右。
2、文件大小类型:小文件(100k-500k),索引文件(MB级)。
3、IO类型:(1)创建写。一次会上传一个目录的文件,写入时若出现断网会先暂存到本地,网络恢复后手动上传至存储;(2)读取操作。优先读取本地缓存(本地缓存是个本地目录),找不到的会向存储系统读取,读取成功后写入本地缓存。
4、访问热度:热度最高的是创建7天内的文件,随着时间的推移热度降低,具体时间与病人的住院时间有关,平均一个月。
5、数据服务类型:PACS系统。对应存储系统提供的客户端数目为1。
6、生命周期:数据保持不删除。
本方案针对NFS对小文件进行访问时,面临的访问耗时高的问题,将数据和元数据分离,使得元数据和数据独立出来,部署上不同的服务进行管理,让用户的请求能够并行的处理。
在集群中的服务器上部署元数据服务和/或存储服务。
元数据服务(MetaData Server),简称MDS,管理着集群的元数据信息,元数据服务的数量可以根据实际需求任意增加,主要是维护和管理文件的信息,包括条带信息和存储位置信息等,元数据服务只负责向客户端提供数据的相关信息,不对数据进行直接的访问。同时可以在实际使用中,针对元数据服务上的盘做RAID0,进一步提升性能。
独立磁盘冗余阵列(Redundant Arrays of Independent Drives,RAID)是由很多价格较便宜的磁盘组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。独立磁盘冗余阵列是把相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
RAID 0是最早出现的RAID模式,即数据分条技术(Data Stripping)。RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。
RAID 0实现方式就是把N块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起创建一个大的卷集。其读写性能均得到较好的提升,如使用了三块100GB的硬盘组建成RAID 0模式,那么磁盘容量就会是300GB;而速度方面,各单独一块硬盘的速度完全相同。最大的缺点在于RAID 0没有容错能力,任何一块硬盘出现故障,整个系统将会受到破坏,可靠性仅为单独一块硬盘的1/N。
在一些实施方式中,所述在集群中的服务器上部署元数据服务和/或存储服务包括:基于服务器磁盘数量组成带有两个独立分布式校验方案的独立数据磁盘。存储服务又称对象存储服务(ObjectStorage Server),和元数据服务相同的是存储服务也可以进行扩展,集群服务器上部署单个或多个服务,这样就使得每个存储服务都能针对小文件访问提供服务,大大的提升了系统性能,不同于元数据做的RAID0,存储服务可以根据服务器磁盘数量,选择9块或者12块磁盘组成一个RAID6,有助于提升性能。
RAID6全称为Independent Data Disks with two Independent DistributedDarity Schemes(带有两个独立分布式校验方案的独立数据磁盘)。RAID 6是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区,RAID 6是在RAID-5基础上把校验信息由一位增加到两位的RAID级别。RAID6的优点是快速的读取性能,更高的容错能力;而它的缺点是很慢的写入速度,RAID控制器在设计上更加复杂,成本更高。
响应于接收到客户端创建并写海量的文件的请求,将所述文件的元数据信息记录到元数据服务,并将文件的数据并行写入多个存储服务。在创建并写海量小文件时,元数据服务会记录文件的元数据信息,客户端的创建请求同时接着访问存储服务,将文件数据并行写入到存储服务中,并由存储服务进行落盘。
在一些实施方式中,所述将文件的数据并行写入多个存储服务包括:将所述文件分割成多个预定大小的数据块,并将多个所述数据块部署到不同的存储服务中。每个文件被分割成指定块大小,条带化后部署到多个存储服务器上面。
响应于接收到客户端读海量的文件的请求,从所述元数据服务中获取所述文件的元数据信息。根据所述元数据信息并行地从多个所述存储服务中读取文件的数据。对海量小文件进行读访问时,从元数据服务获取到海量小文件的元数据信息后,可以并行的从多个存储服务中读取文件数据。
在一些实施方式中,方法还包括:在所述集群中部署管理服务,并将部署的所述元数据服务和所述存储服务向所述管理服务进行注册;以及通过所述管理服务向注册后的所述元数据服务和所述存储服务发送心跳检测。在存储服务器上部署管理服务,用于管理整个集群,所有服务都需要向管理服务进行注册,这样管理服务就可以对所有服务进行心跳检测,其他服务在更改配置后,会同步到管理服务,不需要重启服务器。
本发明通过把元数据和数据存储服务分离,部署多个元数据服务实例和数据存储服务实例,根据需要将磁盘配置成不同的RAID模式,使得不同的服务独立出来,元数据服务只负责处理元数据相关的信息,不参与文件的读取访问,存储服务可以存在多个,增加了系统的灵活性,同时能够管理集群上所有的服务,这样NFS客户端可以并行的去访问数据。
需要特别指出的是,上述优化读写访问文件的方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于优化读写访问文件的方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。
基于上述目的,本发明实施例的第二个方面,提出了一种优化读写访问文件的系统。如图2所示,系统200包括如下模块:部署模块,配置用于在集群中的服务器上部署元数据服务和/或存储服务;记录模块,配置用于响应于接收到客户端创建并写海量的文件的请求,将所述文件的元数据信息记录到元数据服务,并将文件的数据并行写入多个存储服务;获取模块,配置用于响应于接收到客户端读海量的文件的请求,从所述元数据服务中获取所述文件的元数据信息;以及读取模块,配置用于根据所述元数据信息并行地从多个所述存储服务中读取文件的数据。
在一些实施方式中,所述记录模块配置用于:将所述文件分割成多个预定大小的数据块,并将多个所述数据块部署到不同的存储服务中。
在一些实施方式中,系统还包括管理模块,配置用于:在所述集群中部署管理服务,并将部署的所述元数据服务和所述存储服务向所述管理服务进行注册;以及通过所述管理服务向注册后的所述元数据服务和所述存储服务发送心跳检测。
在一些实施方式中,所述部署模块配置用于:基于服务器磁盘数量组成带有两个独立分布式校验方案的独立数据磁盘。
本发明通过把元数据和数据存储服务分离,部署多个元数据服务实例和数据存储服务实例,根据需要将磁盘配置成不同的RAID模式,使得不同的服务独立出来,元数据服务只负责处理元数据相关的信息,不参与文件的读取访问,存储服务可以存在多个,增加了系统的灵活性,同时能够管理集群上所有的服务,这样NFS客户端可以并行的去访问数据。
基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行以实现如下步骤:S1、在集群中的服务器上部署元数据服务和/或存储服务;S2、响应于接收到客户端创建并写海量的文件的请求,将所述文件的元数据信息记录到元数据服务,并将文件的数据并行写入多个存储服务;S3、响应于接收到客户端读海量的文件的请求,从所述元数据服务中获取所述文件的元数据信息;以及S4、根据所述元数据信息并行地从多个所述存储服务中读取文件的数据。
在一些实施方式中,所述将文件的数据并行写入多个存储服务包括:将所述文件分割成多个预定大小的数据块,并将多个所述数据块部署到不同的存储服务中。
在一些实施方式中,步骤还包括:在所述集群中部署管理服务,并将部署的所述元数据服务和所述存储服务向所述管理服务进行注册;以及通过所述管理服务向注册后的所述元数据服务和所述存储服务发送心跳检测。
在一些实施方式中,所述在集群中的服务器上部署元数据服务和/或存储服务包括:基于服务器磁盘数量组成带有两个独立分布式校验方案的独立数据磁盘。
本发明通过把元数据和数据存储服务分离,部署多个元数据服务实例和数据存储服务实例,根据需要将磁盘配置成不同的RAID模式,使得不同的服务独立出来,元数据服务只负责处理元数据相关的信息,不参与文件的读取访问,存储服务可以存在多个,增加了系统的灵活性,同时能够管理集群上所有的服务,这样NFS客户端可以并行的去访问数据。
如图3所示,为本发明提供的上述优化读写访问文件的计算机设备的一个实施例的硬件结构示意图。
以如图3所示的装置为例,在该装置中包括一个处理器301以及一个存储器302。
处理器301和存储器302可以通过总线或者其他方式连接,图3中以通过总线连接为例。
存储器302作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的优化读写访问文件的方法对应的程序指令/模块。处理器301通过运行存储在存储器302中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现优化读写访问文件的方法。
存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据优化读写访问文件的方法的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个优化读写访问文件的方法对应的计算机指令303存储在存储器302中,当被处理器301执行时,执行上述任意方法实施例中的优化读写访问文件的方法。
执行上述优化读写访问文件的方法的计算机设备的任何一个实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行优化读写访问文件的方法的计算机程序。
如图4所示,为本发明提供的上述优化读写访问文件的计算机存储介质的一个实施例的示意图。以如图4所示的计算机存储介质为例,计算机可读存储介质401存储有被处理器执行时执行如上方法的计算机程序402。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,优化读写访问文件的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
机译: 文件检索系统,文件检索方法,用于执行文件检索的程序,带有记录的程序的计算机可读存储介质,编译设备,编译方法,用于执行编译方法的程序,计算机可读存储介质,带有程序的存储介质设备
机译: 文件管理方法,文件编辑方法,文件管理设备,文件编辑设备,文件管理程序,文件编辑程序,信息存储介质和文件管理系统
机译: 文件分析系统,文件分析方法,存储了其中的存储介质的文件分析程序,文件聚类系统,文件聚类方法以及存储了其中的存储介质的文件聚类程序