一种提高地震数据存储IO性能的方法及装置
技术领域
本发明涉及石油地震勘探资料数据存储领域,更具体地讲,涉及一种提高地震数据存储IO性能的方法及装置。
背景技术
当前的石油天然气地震勘探工作中,由于可控震源高效采集技术的推广应用和高密度三维地震勘探的迅速发展,地震观测采样精度越来越高,采集的数据越来越大,采集获得的数据量呈几何指数增长,从50TB到上百TB甚至更大。多业务的并发应用规模对于地震数据存储的访问频率越来越高,大量的并发应用和海量的数据读写访问所产生的I/O(输入/输出,Input/Output)负载成为数据存储的短板。目前,虽然在地震数据处理存储领域引入的面向对象的并行文件系统在一定的程度上提高了存储的性能,但是还存在如下的缺陷:
(1)在地震数据处理计算机集群中,所有I/O节点都要为多个计算节点提供I/O服务,在同一时刻,每个I/O节点需要响应来自多个进程的I/O请求。一方面,I/O节点通常将数据存放在磁盘中,定位时间是磁盘访问时间中的重要部分,多个进程对磁盘的竞争读写导致对同一磁盘的访问请求是无序的、随机的,因而各个请求的定位时间可能会很长,磁头在各个请求之间作转换时移动范围很大,频繁的寻道降低了磁盘的输出带宽。另一方面,针对同一I/O节点的多个并发写请求会导致对写缓存资源的竞争,当缓存没有空间时,请求写的进程必须等待,只有当缓存有空间的时候,写操作才能继续进行。因此,当多个应用的并发I/O请求数量急剧增多、各个计算节点同时向存储服务器发出数据读写请求时,多个I/O请求会累积在存储服务器端,造成I/O请求冲突严重,存储服务器超负荷工作,磁盘组的读写聚合带宽不足。
(2)地震数据处理所采用计算机集群节点数量多,计算任务量大,重复读写的数据多,计算节点与存储服务器间的通信频繁,计算节点在任务结束后往往会等待I/O数据,限制了计算性能的发挥。
发明内容
针对现有技术中存在的不足,本发明的目的之一在于解决上述现有技术中存在的一个或多个问题。
为了实现上述目的,本发明的一方面提供了一种提高地震数据存储IO性能的方法,所述方法通过在地震数据处理计算机集群的各计算节点内存中构建虚拟磁盘用于存储地震数据,并对多个计算节点的内存虚拟磁盘进行分组,建立数据对象-虚拟磁盘映射链表,所述方法还包括以下步骤:在某个计算节点请求访问地震数据时,查询当前计算节点虚拟磁盘是否包含被请求地震数据,如果有,则响应当前请求,如果没有,则向存储服务器发送数据请求;存储服务器接收到数据请求后,查询存储服务器端的数据缓存,如果有,则响应当前请求,如果没有,则根据所述建立的数据对象-虚拟磁盘映射链表查询各组虚拟磁盘,如果有,则将数据请求转发给存储请求数据的虚拟磁盘组并响应当前请求,如果没有,则从存储磁盘中读取数据,节点将请求数据缓存至虚拟磁盘响应当前请求。
本发明的另一方面提供了一种提高地震数据存储IO性能装置,所述装置包括:虚拟磁盘划分模块,用于在地震数据处理计算机集群的各计算节点内存中划分虚拟磁盘;虚拟磁盘分组模块,用于对所划分的虚拟磁盘进行分组;映射关系构建模块,用于在存储服务器中构建数据对象-虚拟磁盘映射链表;目标数据查询模块,用于获取请求的地震数据;虚拟磁盘管理模块,用于执行存储服务器端发送的地震数据的缓存和回收的命令,申请和释放虚拟磁盘空间占用内存。
在本发明的提高地震数据存储IO性能装置的一个示例性实施例中,所述获取请求的地震数据的方法可以包括:当某个计算节点请求访问地震数据时,查询当前计算节点虚拟磁盘是否包含被请求地震数据,如果有,则响应当前请求,如果没有,则向存储服务器发送数据请求,查询存储服务器端的数据缓存,如果有,则响应当前请求,如果没有,则根据所述建立的数据对象-虚拟磁盘映射链表,查询各组虚拟磁盘,如果有,则将数据请求转发给存储请求数据的虚拟磁盘组并响应当前请求,如果没有,则从存储磁盘中读取数据,节点将请求数据缓存至虚拟磁盘响应当前请求。
与现有技术相比,本发明采用在地震数据处理计算机集群的计算节点的大容量内存上构建虚拟磁盘组合,将存储服务器的地震数据存取定向为对计算节点内存的存取,可有效的增大存储服务器端缓存空间,减少存储服务器的带宽负载,提高了地震数据存储IO性能。
附图说明
通过下面结合附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1示出了根据本发明示例性实施例的提高地震数据存储IO性能的方法流程示意图。
具体实施方式
在下文中,将结合附图和示例性实施例详细地描述根据本发明的一种提高地震数据存储IO性能的方法。
具体来讲,本发明根据地震数据处理计算机集群计算节点数量多,内存读写速度快、容量大的特点,充分利用内存空间容量剩余较多的优势,采用从地震数据处理计算机集群的计算节点内存划分一部分空间作为虚拟磁盘,然后将多个虚拟磁盘组合,作为存储服务器端的I/O缓存扩展。将部分地震数据(例如,常用地震数据)存储在计算节点的内存虚拟磁盘中,当计算节点请求地震数据时,由数据对象-虚拟磁盘映射链表定位获取所请求的地震数据缓存位置。使用计算节点的内存空间存储地震数据,将存储服务器的数据存取定向为对计算节点内存的存取,所请求的地震数据对象就能够直接从一个计算节点的内存虚拟磁盘中传输到另外一个计算节点进行存取操作,从而避免了从存储服务器的磁盘阵列中读写数据,将计算节点与数据对象存储服务器之间的通信转化为计算节点与计算节点端之间的通信,减轻了存储服务器端的IO负载和通信带宽压力。
本发明的一方面提供了一种提高地震数据存储IO性能的方法。如图1所示,在本发明的一个示例性实施例中,所述方法包括:
步骤S01,在地震数据处理集群各计算节点的内存中划分出一部分内存空间作为虚拟磁盘。
以上,程序代码可以采用静态固定的分配方式在计算节点的内存中划分出一部分内存空间作为虚拟磁盘。地震数据处理集群中对应多个计算节点,每个计算节点的内存中均划分出一个或多个虚拟磁盘,优选的,一个计算节点的内存中划分一个虚拟磁盘。
划分的虚拟磁盘空间大小可以自由选择,优选的,虚拟磁盘空间大小不超过对应计算节点内存容量的1/2。
步骤S02,将所有计算节点的内存虚拟磁盘进行分组,以固定分组的方式将分组映射到存储服务器上,将该组内的所有内存虚拟存储磁盘空间作为该存储服务器的一种IO缓存扩展方法,由存储服务器统一管理空间分配。
以上,构建的内存虚拟磁盘可以存储一部分地震数据,例如,可以将常用的地震数据存储在虚拟磁盘中。对磁盘以固定分组的方式进行划分,例如,可以采用2的n次方(n为整数)划分。
步骤S03,在存储服务器中设置数据对象-虚拟磁盘映射链表,该链表中保存了存储服务器上的数据块与每一组计算节点的虚拟磁盘的映射关系。
当新的数据对象建立后,在被访问的存储服务器端的数据对象-虚拟磁盘映射链表中会加入新创建的映射关系表项以可以查询定位新的数据对象。数据存取的一致性可以通过分布式文件系统的分布式锁机制来实现。
以上,需要说明的是由于地震数据是非结构化数据,存储服务器中的数据是按条带化的形式存放,因此将存储服务器上的数据可以理解为分块数据。数据对象-虚拟磁盘映射链表的建立属于本领域常规技术。
步骤S04,当计算节点访问存储的地震数据时候,首先就会查询当前组(本地)节点虚拟磁盘的缓存目录表,若当前组虚拟磁盘中包含被请求的数据,则用此数据响应当前请求,否则,向存储服务器发送数据请求。
步骤S05,存储服务器接收到数据请求后,首先查询存储服务器端的数据缓存,若缓存中包含当前请求的数据,则响应请求,否则,存储服务器在对象-虚拟磁盘映射链表进行查询。
步骤S06,存储服务器在对象-虚拟磁盘映射链表进行查询,当前被请求数据是否被缓存在其它组计算节点端的虚拟磁盘中,若存在,则将数据请求转发给相应的虚拟磁盘组,将数据的访问重新定向到相应组的虚拟磁盘中,由该组虚拟磁盘负责将所请求数据返回;若不存在,则从存储磁盘中读取数据,计算节点将该请求的数据缓存至虚拟磁盘中。
以上,常用的地震数据(热点数据)可以存储于计算节点内存虚拟磁盘中,即将计算机节点虚拟磁盘作为存储服务器数据缓存的一种扩展,由于地震数据处理计算机集群是24小时不关机工作,在虚拟磁盘中的热点数据就能以极快的速度进行访问。存储服务器端的数据缓存同样也是分配存储常用地震数据。
这里,本发明的方法还包括对计算机节点端的虚拟磁盘空间大小进行管理,用于执行存储服务器端发送的地震数据的缓存和回收的命令,申请和释放虚拟磁盘空间占用的内存。例如,虚拟磁盘空间大小不超过预先设定的阈值,释放阈值可以设置为该节点内存容量的1/2。虚拟磁盘管理模块对系统内存利用率进行实时的检查,当节点剩余内存小于该阈值时,由模块强制回收虚拟磁盘的空间。
例如,对工区面积为500平方公里,35000炮的地震数据进行道集的抽取操作。抽道集处理为典型的IO操作,I/O所需的初始数据文件为35000个。测试结果表明,通过本发明方法能够大幅的降低应用程序的I/O时间,增加I/O带宽。当内存虚拟磁盘的阈值设置为8GB时,相比常规的存储IO读取方法,采用本发明的方法将存储的IO时间减少了41.5%。
本发明的另一方面提供了一种提高地震数据存储IO性能的装置。在本发明的一个示例性实施中,所述装置可以包括:
虚拟磁盘划分模块,用于在地震数据处理计算机集群的各计算节点内存中划分虚拟磁盘。每个计算节点内存中可以划分一个或多个虚拟磁盘。优选的,在一个计算节点内存中划分一个虚拟磁盘。虚拟磁盘的空间大小可以任意大小划分,优选的,虚拟磁盘空间大小不超过对应计算节点内存大小的1/2。
虚拟磁盘分组模块,用于对所划分的虚拟磁盘进行分组。将多个计算节点的内存虚拟磁盘进行分组,以固定分组的方式将分组映射到存储服务器上,将该组内的所有内存虚拟存储磁盘空间作为该存储服务器的一种IO缓存扩展方法,由该存储服务器统一管理空间分配。
映射关系构建模块,用于在存储服务器中构建数据对象-虚拟磁盘映射链表。该链表中保存了存储服务器上的数据块与某一组计算节点的虚拟磁盘的映射关系。当新的数据对象建立后,在被访问的存储服务器端的数据对象-虚拟磁盘映射链表中会加入新创建的映射关系表项以可以查询定位新的数据对象。数据存取的一致性可以通过分布式文件系统的分布式锁机制来实现。
目标数据查询模块,在所述某组中计算节点请求访问地震数据时,查询当前组虚拟磁盘是否包含被请求地震数据,如果有,则响应当前请求,如果没有,则向存储服务器发送数据请求,存储服务器接收到数据请求后,查询存储服务器端的数据缓存,如果有,则响应当前请求,如果没有,则根据所述建立的数据对象与每组虚拟磁盘映射链表,查询其它组虚拟磁盘,如果有,则将数据请求转发给相应的虚拟磁盘组,将数据的访问重定向到所述相应组虚拟磁盘中,由所述相应组虚拟磁盘响应当前请求;
虚拟磁盘管理模块,用于执行存储服务器端发送的地震数据的缓存和回收的命令,申请和释放虚拟磁盘空间占用的内存。例如,虚拟磁盘空间大小不超过预先设定的阈值,阈值可以设置为该节点内存容量的1/2。虚拟磁盘管理模块对系统内存利用率进行实时的检查,当节点剩余内存小于该阈值时,由模块强制回收虚拟磁盘的空间。
总的来讲,由于地震数据处理所使用的计算机集群计算节点的数量远比存储服务器数量多,因此在大量的计算节点上所划分的虚拟磁盘的总容量可达到TB的量级,对于每个存储服务器,能够用作缓存地震数据的存储空间容量大为增加。本发明的方法充分利用了计算机集群计算节点间的通信带宽高,延时小的特点,将计算节点与对象存储服务器之间的通信转化为计算节点与计算节点间的通信,消除了大量并发应用时的存储服务器端的带宽瓶颈。
综上所述,本发明采用在地震数据处理计算机集群的计算节点的大容量内存上构建虚拟磁盘组合,将存储服务器的地震数据存取定向为对计算节点内存的存取,可有效的增大存储服务器端缓存空间,减少存储服务器的带宽负载,提高了地震数据存储IO性能。
尽管上面已经通过结合示例性实施例描述了本发明,但是本领域技术人员应该清楚,在不脱离权利要求所限定的精神和范围的情况下,可对本发明的示例性实施例进行各种修改和改变。