本发明涉及数据高速存储技术领域,特别涉及一种基于磁盘阵列的fc网络数据监控系统及存储方法。
背景技术:
机载光纤通道(fc)网络的研发、测试和维护过程中都离不开数据监控,监控是fc网络研究和运行的重要手段。数据存储是监控系统的基本功能,保证数据的高速、安全至关重要。
为降低设备成本,许多监控系统都是基于pc机。基于pc机的监控系统工作原理如下,通过fc监控卡采集fc网络数据,然后保存在本地磁盘中。然而,常用的fc网络链路速率高达2.125gbps,而通用的单个磁盘最大存储速率仅190mbytes/s,实际使用时有效速率更是只有理论速率的50%左右。而当同时监控多个fc通道时,fc监控系统的存储需求更是成倍的增长。
技术实现要素:
为解决上述技术问题,本发明提供了一种基于磁盘阵列的fc网络数据监控系统及存储方法,基于磁盘阵列采用基于逻辑扇区的写入方式和基于大数据块的写入方法,并利用多任务处理方式,提高硬盘的写入速率,满足超高带宽的fc网络消息存储的需求。
本发明提供了一种基于磁盘阵列的fc网络数据监控系统,系统通过光纤连接fc网络,采集fc网络中的数据。
所述系统包括fc监控卡、处理器和磁盘阵列;
所述fc监控卡通过光纤接入到fc网络中,接收光信号并进行光电转换提交fc帧;
所述处理器与所述fc监控卡之间通过pcie接口连通,将从所述fc监控卡接收的fc帧进行打包处理;
所述磁盘阵列与所述处理器通过所述sata接口连接,将所述处理器写入磁盘的数据进行存储。
进一步的,所述处理器对fc帧进行打包的数据块大小为8mbytes。
本发明基于上述fc网络数据监控系统还提供了一种基于磁盘阵列的fc网络数据存储方法,具体方案如下:
包括申请消息缓存和缓存队列、创建fc消息接收任务和存储任务、系统初始化和fc消息处理;
在处理器在处理数据时,首先申请m个消息缓存,所述消息缓存为固定大小,与设定的对fc帧进行打包的数据块大小相同;
同时,申请两个缓存队列,分别为待使用缓存队列a和待写入缓存队列b,所述缓存队列a用于接收缓存fc数据块,并按照设定的数据块大小进行打包,所述缓存队列b接收打包好的fc数据并将数据写入磁盘阵列中。
处理器创建fc消息接收任务和fc消息存储任务,分别执行处理fc消息的接收缓存和fc消息数据的写入。
之后进行初始化,所述系统初始化,将m个消息缓存块放入所述缓存队列a中,置所述缓存队列b为空。
最后进行fc消息处理,所述fc消息处理包括fc消息接收任务处理和fc消息存储任务处理。
进一步的,所述fc消息接收任务处理具体步骤如下:
a1:通过中断方式接收fc消息,当fc监控卡接收到完整的fc消息后,发送中断响应,并将接收到的fc消息拷贝到数据缓存块中。
a2:判断当前数据缓存是否为满状态,如果缓存未满,则继续接收fc消息并等待中断响应,直至缓存为满。
a3:当缓存为满时,将当前的数据缓存块放入所述缓存队列b,并通过信号量通知消息存储任务有新的待写入数据块需要将数据写入磁盘,再从所述缓存队列a中取出新的数据缓存块作为用于拷贝fc消息。
进一步的,在fc消息拷贝缓存时,当缓存空间能够存储下一个完成的fc消息则判定缓存未满,反之则判定缓存状态为满。
进一步的,所述fc消息存储任务处理具体步骤如下:
b1:等待信号量,判断信号量状态。
b2:判断等待信号量是否成功,如果等待信号量超时则继续等待,如果接收到信号量有信号状态,则进行下一步的写入处理,如果接收的信号量为无信号状态,则继续接收数据直至缓存数据块为满。
b3:根据所述信号量的状态判断缓存队列b是否为空,如果不为空则说明有数据待写入磁盘中,如果为空则继续等待信号量。
b4:当信号量处于有信号状态时,即缓存队列b不为空,则从缓存队列b中取出数据缓存块,并将数据写入磁盘中。
b5:数据写入完成后,从缓存队列b中清楚当前数据缓存块中的fc数据,并将数据缓存块放入所述缓存队列a中,接收新的fc消息。
进一步的,当fc消息存储满一个数据块并放入所述缓存队列b时,所述信号量则置为有信号状态,否则信号量处于无信号状态。
进一步的,在fc消息处理过程中利用多线程同时执行所述fc消息接收任务与所述fc消息存储任务。
本发明的有益效果如下:
1、系统采用磁盘阵列进行fc消息数据的存储,处理器与fc监控卡之间通过pcie接口进行互连。处理器负责把从fc监控卡接收的fc帧进行打包,然后通过sata接口存储在磁盘阵列中,通过利用多个磁盘同时进行读写,成倍的提高存储速率。
2、采用基于逻辑扇区直接写入的方式和大数据块写入方法,避免使用文件系统带来的资源浪费,同时避免了过多调用系统io降低系统数据输入输出的负载。
3、创建fc消息接收任务和fc消息存储任务,通过多线程进行fc消息任务的处理,进一步提高硬盘的写入速率,同时避免fc消息接收不及时造成的消息溢出。
附图说明
图1是本发明的fc监控系统连接示意图;
图2是本发明的fc监控系统组成结构示意图;
图3是本发明的处理器处理数据流程示意图;
图4是本发明的fc消息接收任务处理流程示意图;
图5是本发明的消息存储任务处理流程示意图。
具体实施方式
在下面的描述中对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明的实施例1提供了一种基于磁盘阵列的fc网络数据监控系统,如图1所示,所述fc监控系统通过光纤接入fc网络中,采集fc网络中的数据。
如图2所示,所述fc监控系统包括fc监控卡、处理器和磁盘阵列;
其中所述fc监控卡与所述fc网络通过光纤连接,并通过pcie接口与所述处理器连接,所述处理器通过sata接口连接磁盘阵列。
所述fc监控卡用来接收光信号并进行光电转换通过pcie接口向所述处理器提交fc帧数据;
所述处理器用来将从所述fc监控卡接收的fc帧数据进行打包处理,所述处理器每次将数据写入磁盘都是一次io操作,为避免频繁的io操作消耗处理器资源,将接收的fc帧数据打包为8mbytes大小的数据块再一次写入磁盘中,使磁盘能够满速率写入数据。
实施例2
本发明的实施例2基于上述实施例1的数据监控系统提供了一种基于磁盘阵列的fc网络数据存储方法,具体步骤如下:
如图3所示,方法包括申请消息缓存和缓存队列、创建fc消息接收任务和存储任务、系统初始化和fc消息处理。
在处理器在处理数据时,首先申请m个消息缓存,所述消息缓存为固定大小,与设定的对fc帧进行打包的数据块大小相同,即8mbytes;
同时,申请两个缓存队列,分别为待使用缓存队列a和待写入缓存队列b,所述缓存队列a用于接收缓存fc数据块,并按照设定的数据块大小进行打包,所述缓存队列b接收打包好的fc数据并将数据写入磁盘阵列中。
处理器创建fc消息接收任务和fc消息存储任务,分别执行处理fc消息的接收缓存和fc消息数据的写入。
之后进行初始化,所述系统初始化,将m个消息缓存块放入所述缓存队列a中,并置所述缓存队列b为空。
最后处理器进行fc消息处理,所述fc消息处理包括fc消息接收任务处理和fc消息存储任务处理,完成对fc消息的接收、缓存和写入存储。
在fc消息处理过程中通过多线程同时执行所述fc消息接收任务与所述fc消息存储任务。
如图4所示,所述fc消息接收任务处理具体步骤如下:
a1:通过中断方式接收fc消息,当fc监控卡接收到完整的fc消息后,发送中断响应,并将接收到的fc消息拷贝到数据缓存块中。
a2:判断当前数据缓存是否为满状态,如果缓存未满,则继续接收fc消息并等待中断响应,直至缓存为满。
在fc消息拷贝缓存时,当缓存空间能够存储下一个完成的fc消息则判定缓存未满,反之则判定缓存状态为满。
a3:当缓存为满时,将当前的数据缓存块放入所述缓存队列b,并通过信号量通知消息存储任务有新的待写入数据块需要将数据写入磁盘,再从所述缓存队列a中取出新的数据缓存块作为用于拷贝fc消息。
如图5所示,所述fc消息存储任务具体步骤如下:
b1:等待信号量,判断信号量状态。
b2:判断等待信号量是否成功,如果等待信号量超时则继续等待,如果接收到信号量有信号,否则进行下一步的写入处理。
b3:根据所述信号量的状态判断缓存队列b是否为空,如果不为空则说明有数据待写入磁盘中,如果为空则继续等待信号量。
当fc消息存储满一个数据块并放入所述缓存队列b时,所述信号量则置为有信号状态,否则信号量处于无信号状态。
b4:当信号量处于有信号状态时,即缓存队列b不为空,则从缓存队列b中取出数据缓存块,并将数据写入磁盘中。
b5:数据写入完成后,从缓存队列b中清楚当前数据缓存块中的fc数据,并将数据缓存块放入所述缓存队列a中,接收新的fc消息。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
1.一种基于磁盘阵列的fc网络数据监控系统,系统通过光纤连接fc网络,采集fc网络中的数据,其特征在于,所述系统包括fc监控卡、处理器和磁盘阵列;
所述fc监控卡通过光纤接入到fc网络中,接收光信号并进行光电转换提交fc帧;
所述处理器与所述fc监控卡之间通过pcie接口连通,将从所述fc监控卡接收的fc帧进行打包处理;
所述磁盘阵列与所述处理器通过所述sata接口连接,将所述处理器写入磁盘的数据进行存储。
2.根据权利要求1所述的基于磁盘阵列的fc网络数据监控系统,其特征在于,所述处理器对fc帧进行打包的数据块大小为8mbytes。
3.一种基于磁盘阵列的fc网络数据存储方法,其特征在于,包括申请消息缓存和缓存队列、创建fc消息接收任务和存储任务、系统初始化和fc消息处理;
在处理器在处理数据时,首先申请m个消息缓存,所述消息缓存为固定大小,与设定的对fc帧进行打包的数据块大小相同;
同时,申请两个缓存队列,分别为待使用缓存队列a和待写入缓存队列b,所述缓存队列a用于接收缓存fc数据块,并按照设定的数据块大小进行打包,所述缓存队列b接收打包好的fc数据并将数据写入磁盘阵列中。
处理器创建fc消息接收任务和fc消息存储任务,分别执行处理fc消息的接收缓存和fc消息数据的写入。
之后进行初始化,所述系统初始化,将m个消息缓存块放入所述缓存队列a中,置所述缓存队列b为空。
最后进行fc消息处理,所述fc消息处理包括fc消息接收任务处理和fc消息存储任务处理。
4.根据权利要求3所述的基于磁盘阵列的fc网络数据存储方法,其特征在于,所述fc消息接收任务处理具体步骤如下:
a1:通过中断方式接收fc消息,当fc监控卡接收到完整的fc消息后,发送中断响应,并将接收到的fc消息拷贝到数据缓存块中。
a2:判断当前数据缓存是否为满状态,如果缓存未满,则继续接收fc消息并等待中断响应,直至缓存为满。
a3:当缓存为满时,将当前的数据缓存块放入所述缓存队列b,并通过信号量通知消息存储任务有新的待写入数据块需要将数据写入磁盘,再从所述缓存队列a中取出新的数据缓存块作为用于拷贝fc消息。
5.根据权利要求4所述的基于磁盘阵列的fc网络数据存储方法,其特征在于,在fc消息拷贝缓存时,当缓存空间能够存储下一个完成的fc消息则判定缓存未满,反之则判定缓存状态为满。
6.根据权利要求4所述的基于磁盘阵列的fc网络数据存储方法,其特征在于,所述fc消息存储任务处理具体步骤如下:
b1:等待信号量,判断信号量状态。
b2:判断等待信号量是否成功,如果等待信号量超时则继续等待,如果接收到信号量有信号,否则进行下一步的写入处理。
b3:根据所述信号量的状态判断缓存队列b是否为空,如果不为空则说明有数据待写入磁盘中,如果为空则继续等待信号量。
b4:当信号量处于有信号状态时,即缓存队列b不为空,则从缓存队列b中取出数据缓存块,并将数据写入磁盘中。
b5:数据写入完成后,从缓存队列b中清楚当前数据缓存块中的fc数据,并将数据缓存块放入所述缓存队列a中,接收新的fc消息。
7.根据权利要求6所述的基于磁盘阵列的fc网络数据存储方法,其特征在于,当fc消息存储满一个数据块并放入所述缓存队列b时,所述信号量则置为有信号状态,否则信号量处于无信号状态。
8.根据权利要求3-7任一所述的基于磁盘阵列的fc网络数据存储方法,其特征在于,利用多线程同时执行所述fc消息接收任务与所述fc消息存储任务。
技术总结