专利名称:一种存储系统预读方法、装置、设备及存储介质
专利类型:发明专利
专利申请号:CN202210042565.0
专利申请(专利权)人:济南浪潮数据技术有限公司
权利人地址:山东省济南市自由贸易试验区济南片区浪潮路1036号浪潮科技园S05楼S311室
专利发明(设计)人:王一斐
专利摘要:本发明公开了一种存储系统预读方法、装置、设备及存储介质,该方法包括:在存储系统挂载到油气勘探服务时,如果需要预读所述存储系统中的数据,则确定需要预读的数据所在文件为目标文件;确定当前时刻文件指针从所述目标文件起点开始的偏移值,并将所述偏移值减去第一数据量所得值作为预读起点,所述第一数据量为第二数据量与预设比例的乘积;确定所述第二数据量与所述文件指针步长的和为预读数据量,从所述预读起点开始读取所述预读数据量的数据,并将读取到的数据存储至内存中,以供需要时获取。使得无论当前是顺序读还是逆序读,均可以从预读的数据中命中部分数据,无需每次都进行磁盘内部定位,有效提高数据读取效率。
主权利要求:
1.一种存储系统预读方法,其特征在于,包括:
在存储系统挂载到油气勘探服务时,如果需要预读所述存储系统中的数据,则确定需要预读的数据所在文件为目标文件;
确定当前时刻文件指针从所述目标文件起点开始的偏移值,并将所述偏移值减去第一数据量所得值作为预读起点;其中,所述第一数据量为第二数据量与预设比例的乘积,所述预设比例为小于1的值;
确定所述第二数据量与所述文件指针步长的和为预读数据量,从所述预读起点开始读取所述预读数据量的数据,并将读取到的数据存储至内存中,以供需要时获取,步长表示震波数据的大小。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取判定开关的状态,如果所述判定开关的状态为打开,则执行将所述偏移值减去第一数据量所得值作为预读起点的步骤,如果所述判定开关的状态为关闭,则将所述偏移值作为预读起点,执行确定所述第二数据量与所述文件指针步长的和为预读数据量的步骤。
3.根据权利要求2所述的方法,其特征在于,还包括:
如果所述存储系统需要挂载到油气勘探服务,则自动设置所述判定开关的状态为打开,否则,自动设置所述判定开关的状态为关闭。
4.根据权利要求3所述的方法,其特征在于,还包括:
对所述内存中的数据进行实时监控,如果监控到任意数据无命中的次数达到次数阈值,则将该任意数据从所述内存中释放。
5.根据权利要求4所述的方法,其特征在于,还包括:
对所述内存的存储空间进行实时监控,如果所述内存的可用存储空间小于空间阈值,则将所述内存中无命中次数最多的数据从所述内存中释放。
6.根据权利要求5所述的方法,其特征在于,从所述预读起点开始读取所述预读数据量的数据,包括:基于fread函数从所述预读起点开始读取所述预读数据量的数据。
7.根据权利要求6所述的方法,其特征在于,所述预设比例为0.5。
8.一种存储系统预读装置,其特征在于,包括:
文件确定模块,用于:在存储系统挂载到油气勘探服务时,如果需要预读所述存储系统中的数据,则确定需要预读的数据所在文件为目标文件;
起点确定模块,用于:确定当前时刻文件指针从所述目标文件起点开始的偏移值,并将所述偏移值减去第一数据量所得值作为预读起点;其中,所述第一数据量为第二数据量与预设比例的乘积,所述预设比例为小于1的值;
预读模块,用于:确定所述第二数据量与所述文件指针步长的和为预读数据量,从所述预读起点开始读取所述预读数据量的数据,并将读取到的数据存储至内存中,以供需要时获取,步长表示震波数据的大小。
9.一种存储系统预读设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述存储系统预读方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述存储系统预读方法的步骤。 说明书 : 一种存储系统预读方法、装置、设备及存储介质技术领域[0001] 本发明涉及存储领域技术领域,更具体地说,涉及一种存储系统预读方法、装置、设备及存储介质。背景技术[0002] 油气勘探中,基于震波在不同介质中的速度和振幅,推断可能存在油气的位置;在地底或海底三维建模时,需要对多个探针的数据进行预处理(降噪),并基于空间将多份数据进行算法处理和手工处理。因为震波数据从几MB到几十GB不等,因此并行计算时难以将所有数据同时加载到内存中处理,油气勘探算法通常只从文件内读取一部分数据进行处理。[0003] 在整个勘探作业建模过程中,存储的瓶颈点通常在读取;在实现数据读取时,常常出现数万、十万甚至百万级的固定字节长度读取。磁盘在读取数据时,每次读取数据,磁盘都要进行一次定位(磁头悬臂寻找盘片次数更多),在整个数据读取的过程中,磁头寻址用时最长,是读取的瓶颈。若能降低读取次数,即磁头定位次数,将大大降低震波建模作业时间。[0004] 现代存储系统为了解决读取瓶颈,通常具备预读功能,可提前将较多的数据读取到内存中,进而从内存中直接命中所需的数据。但在石油勘探场景中存在大量数据是需要逆序读取的,这部分数据无法通过预读功能实现,相当于随机读,也即每次都要进行磁盘内部定位,这就导致数据读取效率较低。发明内容[0005] 本发明的目的是提供一种存储系统预读方法、装置、设备及存储介质,无需每次都进行磁盘内部定位,能够有效提高数据读取效率。[0006] 为了实现上述目的,本发明提供如下技术方案:[0007] 一种存储系统预读方法,包括:[0008] 在存储系统挂载到油气勘探服务时,如果需要预读所述存储系统中的数据,则确定需要预读的数据所在文件为目标文件;[0009] 确定当前时刻文件指针从所述目标文件起点开始的偏移值,并将所述偏移值减去第一数据量所得值作为预读起点;其中,所述第一数据量为第二数据量与预设比例的乘积;[0010] 确定所述第二数据量与所述文件指针步长的和为预读数据量,从所述预读起点开始读取所述预读数据量的数据,并将读取到的数据存储至内存中,以供需要时获取。[0011] 优选的,还包括:[0012] 获取判定开关的状态,如果所述判定开关的状态为打开,则执行将所述偏移值减去第一数据量所得值作为预读起点的步骤,如果所述判定开关的状态为关闭,则将所述偏移值作为预读起点,执行确定所述第二数据量与所述文件指针步长的和为预读数据量的步骤。[0013] 优选的,还包括:[0014] 如果所述存储系统需要挂载到油气勘探服务,则自动设置所述判定开关的状态为打开,否则,自动设置所述判定开关的状态为关闭。[0015] 优选的,还包括:[0016] 对所述内存中的数据进行实时监控,如果监控到任意数据无命中的次数达到次数阈值,则将该任意数据从所述内存中释放。[0017] 优选的,还包括:[0018] 对所述内存的存储空间进行实时监控,如果所述内存的可用存储空间小于空间阈值,则将所述内存中无命中次数最多的数据从所述内存中释放。[0019] 优选的,从所述预读起点开始读取所述预读数据量的数据,包括:[0020] 基于fread函数从所述预读起点开始读取所述预读数据量的数据。[0021] 优选的,所述预设比例为0.5。[0022] 一种存储系统预读装置,包括:[0023] 文件确定模块,用于:在存储系统挂载到油气勘探服务时,如果需要预读所述存储系统中的数据,则确定需要预读的数据所在文件为目标文件;[0024] 起点确定模块,用于:确定当前时刻文件指针从所述目标文件起点开始的偏移值,并将所述偏移值减去第一数据量所得值作为预读起点;其中,所述第一数据量为第二数据量与预设比例的乘积;[0025] 预读模块,用于:确定所述第二数据量与所述文件指针步长的和为预读数据量,从所述预读起点开始读取所述预读数据量的数据,并将读取到的数据存储至内存中,以供需要时获取。[0026] 一种存储系统预读设备,包括:[0027] 存储器,用于存储计算机程序;[0028] 处理器,用于执行所述计算机程序时实现如上任一项所述存储系统预读方法的步骤。[0029] 一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述存储系统预读方法的步骤。[0030] 本发明提供了一种存储系统预读方法、装置、设备及存储介质,该方法包括:在存储系统挂载到油气勘探服务时,如果需要预读所述存储系统中的数据,则确定需要预读的数据所在文件为目标文件;确定当前时刻文件指针从所述目标文件起点开始的偏移值,并将所述偏移值减去第一数据量所得值作为预读起点,所述第一数据量为第二数据量与预设比例的乘积;确定所述第二数据量与所述文件指针步长的和为预读数据量,从所述预读起点开始读取所述预读数据量的数据,并将读取到的数据存储至内存中,以供需要时获取。本发明在存储系统挂载到油气勘探服务时,如果需要预读所述存储系统中的数据,确定需要预读的数据所在文件为目标文件,通过处理将当前时刻文件指针偏移值向前移动部分后所在的位置作为预读起点,从预读起点开始从目标文件中读取大于文件指针偏移值向前偏移的量的数据,并将读取的数据存入内存中以供需要时读取;从而在需要对存储系统中的文件实现数据预读时,将当前时刻文件指针偏移值作为中间、向前向后分别预读部分数据,使得无论当前是顺序读还是逆序读,均可以从预读的数据中命中部分数据,无需每次都进行磁盘内部定位,有效提高数据读取效率。附图说明[0031] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。[0032] 图1为本发明实施例提供的一种存储系统预读方法的流程图;[0033] 图2为本发明实施例提供的一种存储系统预读方法中不同方案效果图;[0034] 图3为本发明实施例提供的一种存储系统预读装置的结构示意图。具体实施方式[0035] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0036] 请参阅图1,其示出了本发明实施例提供的一种存储系统预读方法的流程图,具体可以包括:[0037] S11:在存储系统挂载到油气勘探服务时,如果需要预读存储系统中的数据,则确定需要预读的数据所在文件为目标文件。[0038] 需要说明的是,在存储系统挂载到油气勘探服务时说明此时处于油气勘探场景下,相应的存储系统中有大量的数据需要逆序读,本申请实施例则是针对此实现相应的数据预读操作。首先,在油气勘探场景下需要预读存储系统中的数据时,则可以将需要预读的数据所在文件作为目标文件,进而基于目标文件实现相应的数据预读操作。[0039] S12:确定当前时刻文件指针从目标文件起点开始的偏移值,并将偏移值减去第一数据量所得值作为预读起点;其中,第一数据量为第二数据量与预设比例的乘积。[0040] S13:确定第二数据量与文件指针步长的和为预读数据量,从预读起点开始读取预读数据量的数据,将读取到的数据存储至内存中,以供需要时获取。[0041] 本申请在每次需要实现存储系统的读取时需要基于两个参数,分别为size及offset;其中,size是文件指针每次偏离的步长(油气勘探场景下即为震波数据的大小),offset是与文件指针起点的偏移值(即步数*步长),比如每次读size=4k,预读100个步长,即404k,则从offset向后读取404k。[0042] 本申请实施例中第二预设量及预设比例均可以根据实际需要进行设定,如第二预设量可以为需要预读的步数乘以size(如100*size,150*size等),而预设比例则为小于1的值,如0.5,0.6等。相应的,在确定当前时刻文件指针从目标文件起点开始的偏移值后,将该偏移值减去第一数据量所得值作为预读起点,并将第二数据量与文件指针每次偏离的步长相乘作为预读数据量,进而从预读起点开始向后读取预读数据量的数据后,将读取的数据存储至内存中,供需要时获取;具体来说,在需要实现数据读取时先从内存中读取,如果读取成功,则无需再到存储系统中读取,否则需要从存储系统中实现数据读取。可见,本申请在预读文件中的数据时,并不是像现有技术一样从当前时刻的偏移值开始向后读取,而是将当前时刻的偏移值作为中间向前向后分别读取一部分,从而无论是顺序读还是逆序读,均可以保证读取到的部分数据的命中。[0043] 本发明在存储系统挂载到油气勘探服务时,如果需要预读存储系统中的数据,确定需要预读的数据所在文件为目标文件,通过处理将当前时刻文件指针偏移值向前移动部分后所在的位置作为预读起点,从预读起点开始从目标文件中读取大于文件指针偏移值向前偏移的量的数据,并将读取的数据存入内存中以供需要时读取;从而在需要对存储系统中的文件实现数据预读时,将当前时刻文件指针偏移值作为中间、向前向后分别预读部分数据,使得无论当前是顺序读还是逆序读,均可以从预读的数据中命中部分数据,无需每次都进行磁盘内部定位,有效提高数据读取效率。[0044] 本发明实施例提供的一种存储系统预读方法,从预读起点开始读取预读数据量的数据,可以包括:基于fread函数从预读起点开始读取预读数据量的数据。其中,预设比例可以为0.5。[0045] 需要说明的是,本申请实施例中采取的预读算法为每次读取均是fread(*ptr,offset‑0.5*m,size+m,*file),从而基于fread函数快速有效的实现数据预读;其中,m可以根据实际需要进行设定,如100*size。并且,预设比例优先取值为0.5,从而使得当前时刻文件指针偏移值基本处于本次数据预读的中点,相应的在实现fread函数编译时,可以通过下列语句实现文件指针偏移值的处理:[0046] #ifdefIsOilGas[0047] offset=offset–m>>1[0048] #endif[0049] 本发明实施例提供的一种存储系统预读方法,还可以包括:[0050] 对内存中的数据进行实时监控,如果监控到任意数据无命中的次数达到次数阈值,则将该任意数据从内存中释放。[0051] 以及对内存的存储空间进行实时监控,如果内存的可用存储空间小于空间阈值,则将内存中无命中次数最多的数据从内存中释放。[0052] 其中,次数阈值可以根据实际需要进行设定,如5次等;通过对内存中数据的实时监控,进而在内存中的任意数据若干次无命中(无命中的次数达到次数阈值),则从内存中释放该任意数据,能够避免无需读取的数据对内存的无效占用。另外,空间阈值也可以根据实际需要进行设定,如10M;本申请实施例还可以对内存的存储空间进行实时监控,如果监控到内存中未被占用的存储空间过少(未被占用的存储空间即可用存储空间,未被占用的存储空间过少即未被占用的空间小于空间阈值),则为了保证其它业务的正常实现及后续数据的正常存储,可以将内存中无命中次数最多的数据从内存中释放,直至内存的可用存储空间不小于空间阈值。[0053] 本发明实施例提供的一种存储系统预读方法,还可以包括:[0054] 获取判定开关的状态,如果判定开关的状态为打开,则执行将偏移值减去第一数据量所得值作为预读起点的步骤,如果判定开关的状态为关闭,则将偏移值作为预读起点,执行确定第二数据量与文件指针步长的和为预读数据量的步骤。[0055] 本发明实施例提供的一种存储系统预读方法,还可以包括:[0056] 如果存储系统需要挂载到油气勘探服务,则自动设置判定开关的状态为打开,否则,自动设置判定开关的状态为关闭。[0057] 本申请实施例在内核客户端中的fread函数内部,可以增加一项编译时判定开关,若存储系统对应的计算节点要挂载给油气勘探服务,则通过配置宏#defineIsOilGas打开判定开关,否则保持判定开关的状态为关闭。进而在需要实现存储系统的数据预读时,如果判定开关的状态为打开,则说明此时处于油气勘探场景下,需要执行将偏移值减去第一数据量所得值作为预读起点的步骤,以将偏移值作为中间实现向前向后数据的预读,如果判定开关的状态为关闭,则说明此时未处于油气勘探场景下,按照普通方式将偏移值作为起点向后实现数据预读即可。从而通过上述方式,能够灵活方便的实现对预读操作的控制。[0058] 可见,本申请涉及到油气勘探数据分析场景和存储系统的交叉领域,如图2所示,通过优化存储系统预读算法将逆序读改变为顺序读,适配地理勘探数据的特点,从而达到优化地理勘探数据偏移作业的数据读取效率的目的,能够有效缩短工作时间,以便于在单位时间内处理更多作业。[0059] 本发明实施例还提供了一种存储系统预读装置,如图3所示,可以包括:[0060] 文件确定模块11,用于:在存储系统挂载到油气勘探服务时,如果需要预读存储系统中的数据,则确定需要预读的数据所在文件为目标文件;[0061] 起点确定模块12,用于:确定当前时刻文件指针从目标文件起点开始的偏移值,并将偏移值减去第一数据量所得值作为预读起点;其中,第一数据量为第二数据量与预设比例的乘积;[0062] 预读模块13,用于:确定第二数据量与文件指针步长的和为预读数据量,从预读起点开始读取预读数据量的数据,并将读取到的数据存储至内存中,以供需要时获取。[0063] 本发明实施例提供的一种存储系统预读装置,还可以包括:[0064] 判断模块,用于:获取判定开关的状态,如果判定开关的状态为打开,则执行将偏移值减去第一数据量所得值作为预读起点的步骤,如果判定开关的状态为关闭,则将偏移值作为预读起点,执行确定第二数据量与文件指针步长的和为预读数据量的步骤。[0065] 本发明实施例提供的一种存储系统预读装置,还可以包括:[0066] 设置模块,用于:如果存储系统需要挂载到油气勘探服务,则自动设置判定开关的状态为打开,否则,自动设置判定开关的状态为关闭。[0067] 本发明实施例提供的一种存储系统预读装置,还可以包括:[0068] 数据监控模块,用于:对内存中的数据进行实时监控,如果监控到任意数据无命中的次数达到次数阈值,则将该任意数据从内存中释放。[0069] 本发明实施例提供的一种存储系统预读装置,还可以包括:[0070] 空间监控模块,用于:对内存的存储空间进行实时监控,如果内存的可用存储空间小于空间阈值,则将内存中无命中次数最多的数据从内存中释放。[0071] 本发明实施例提供的一种存储系统预读装置,预读模块可以包括:[0072] 预读单元,用于:基于fread函数从预读起点开始读取预读数据量的数据。[0073] 本发明实施例提供的一种存储系统预读装置,预设比例可以为0.5。[0074] 本发明实施例还提供了一种存储系统预读设备,可以包括:[0075] 存储器,用于存储计算机程序;[0076] 处理器,用于执行计算机程序时实现如上任一项所述存储系统预读方法的步骤。[0077] 本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可以实现如上任一项所述存储系统预读方法的步骤。[0078] 需要说明的是,本发明实施例提供的一种存储系统预读装置、设备及存储介质中相关部分的说明请参见本发明实施例提供的一种存储系统预读方法中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。[0079] 对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
专利地区:山东
专利申请日期:2022-01-14
专利公开日期:2024-07-26
专利公告号:CN114442948B