A file loading method and apparatus, including: memory mapped file loading device to establish a disk file, read data from the order of the memory mapped files, and repeatedly sent to the operating system pre read notification, data pre the disk file specified in the specified location and amount of data each time to notify the operating system to read to the memory mapped file corresponding to the memory file; loading device according to the data storage format, will read from the memory mapped file data stored in memory data structure in the final. The file loading device includes the data loading module, the file reading module and the memory management module module. The file loading method and device of this application can improve the loading speed of the file, and can also make the memory usage in the loading process stable and controllable.
【技术实现步骤摘要】
一种文件加载方法和装置
本专利技术涉及计算机领域,更具体地,涉及一种文件加载方法和装置。
技术介绍
在大规模分布式文件系统中,为了满足海量客户端的高并发低延迟的访问需求,元数据服务器(MetaServer)通常将所有元数据均存放在内存中,同时通过记录元数据操作日志(operationlog)并定期产生元数据内存映像文件(checkpointfile)来实现元数据的持久化存储。元数据内存映像文件通常包含多个数据区(datasection)和一个文件头(header)。数据区记录了目录路径树、文件表、数据副本位置等大量元数据,并对其中大块的数据(例如超过4KB)进行了压缩以节省空间;文件头记录了数据区的起始结束信息、压缩参数等。元数据内存映像文件的快速加载对于提升分布式文件系统的可用性和可运维性具有重要意义。当元数据服务器由于软件升级、故障等原因重启时,为了恢复内存中的元数据,需要加载最近产生的一个内存映像文件并重新执行该文件之后的所有操作日志。一方面,元数据内存映像文件的加载步骤是在元数据服务器升级和故障恢复的关键路径之上,缩短加载用时能够直接缩短元数据服务器的升级 ...
【技术保护点】
一种文件加载方法,应用于文件加载装置,包括:建立磁盘文件的内存映射文件,从所述内存映射文件中顺序读取数据,且向操作系统多次发送预读取通知,每次通知所述操作系统将所述磁盘文件中指定位置和指定数据量的数据预读取到所述内存映射文件对应的内存中;按照数据的存储格式,将从所述内存映射文件读取的数据存储到内存最终的数据结构中。
【技术特征摘要】
1.一种文件加载方法,应用于文件加载装置,包括:建立磁盘文件的内存映射文件,从所述内存映射文件中顺序读取数据,且向操作系统多次发送预读取通知,每次通知所述操作系统将所述磁盘文件中指定位置和指定数据量的数据预读取到所述内存映射文件对应的内存中;按照数据的存储格式,将从所述内存映射文件读取的数据存储到内存最终的数据结构中。2.如权利要求1所述的方法,包括:所述向操作系统多次发送预读取通知,包括:从所述内存映射文件中顺序读取数据时,每次数据读取位置到达设定的预读位置时,向所述操作系统发送一次预读取通知。3.如权利要求2所述的方法,包括:所述预读位置按照以下方式逐次设定:每次数据读取位置到达最近一次设定的预读位置时,向所述操作系统发送一次预读取通知,并对预读位置进行重新设定,重新设定的预读位置在所述操作系统根据此次预读取通知所预读取的数据在所述内存映射文件中的结束位置之前。4.如权利要求3所述的方法,包括:所述重新设定的预读位置根据下式确定:Pa=Pb+Ps其中,Pa为重新设定的预读位置;Pb为所述指定位置,Pb等于当前的数据读取位置或最近一次设定的预读位置;Ps等于所述指定数据量减去指定的预读提前量得到的差。5.如权利要求3或4所述的方法,包括:所述方法还包括:记录最近三次设定的预读位置并不断更新;每次数据读取位置到达最近一次设定的预读位置时,在对预读位置进行重新设定之前,通知所述操作系统对最近三次设定的预读位置中前两次设定的预读位置之间的内存区域进行清理。6.如权利要求1-4中任一所述的方法,包括:所述指定数据量小于等于M/2+AHEAD且大于等于M/2,其中,M为用户指定的最大内存占用量,AHEAD为用户指定的预读提前量。7.如权利要求1-4中任一所述的方法,其特征在于:按照数据的存储格式,将从所述内存映射文件读取的数据存储到内存最终的数据结构中,包括:每次从所述内存映射文件读取数据后,判断读取的所述数据的数据量是否小于所述磁盘文件压缩块解压后的最小数据量:如果是,按照数据的存储格式,将读取的所述数据存储到最终的内存数据结构中;如果否,先以多线程和异步的方式对读取的所述数据进行解压缩,再按照数据的存储格式将解压后的数据存储到最终的内存数据结构中。8.如权利要求1-4中任一所述的方法,其特征在于:所述磁盘文件是分布式文件系统的元数据内存映像文件。9.一种文件加载装置,其特征在于,包括数据加载模块、文件读取模块和内存管理模块,其中:所述数据加载模块,用于不断向所述文件读取模块发起读取请求,按照数据的存储格式,将得到的数据存...
【专利技术属性】
技术研发人员:黄硕,刘俊峰,姚文辉,朱家稷,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。