CN105138469A - 一种数据读写方法以及主板 - Google Patents
一种数据读写方法以及主板 Download PDFInfo
- Publication number
- CN105138469A CN105138469A CN201510543927.4A CN201510543927A CN105138469A CN 105138469 A CN105138469 A CN 105138469A CN 201510543927 A CN201510543927 A CN 201510543927A CN 105138469 A CN105138469 A CN 105138469A
- Authority
- CN
- China
- Prior art keywords
- write
- read
- request
- data
- fpga
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种主板,所述主板包括基于FPGA的数据读写模块、内存以及业务口;所述内存与所述基于FPGA的数据读写模块相连接;所述业务口通过所述数据读写模块与所述存储服务器的磁盘阵列相连接;其中:所述基于FPGA的数据读写模块,用于从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列;当所述磁盘阵列执行与所述读写IO请求对应的读写操作后,所述基于FPGA的数据读写模块进一步用于接收所述磁盘阵列返回的与所述读写操作对应的执行结果,并将所述执行结果通过所述业务口发送给所述读写IO请求的发起端主机。本主板可以提高存储服务器的整体性能。
Description
技术领域
本申请涉及通信领域,尤其涉及一种数据读写方法以及主板。
背景技术
存储服务器是一种能提供很大存储空间的服务器,它必须具有快速的处理芯片,较大的RAM(RandomAccessMemory,随机存取存储器),以及非常大的内部磁盘空间,以便应对终端用户随时可能出现的应用调配需求。
在存储服务器中,主板通常是一台存储服务器设计的核心。存储服务器主板的现有架构中,CPU通常通过SAS(SerialAttachedSCSI,即串行SCSI技术)控制器以及SAS扩展器与磁盘阵列建立连接,在进行数据读写时,CPU将从I/O业务口接收到读IO请求和写IO请求通过SAS控制器以及SAS扩展器下发到磁盘阵列,由磁盘阵列来完成对应的读写操作,然后将读写操作的执行结果再通过SAS控制器以及SAS扩展器返回给CPU,再由CPU通过I/O业务口送出。
可见,存储服务器的现有架构中,在进行数据读写时,数据经过的路线太长,导致延迟增大,从而影响存储服务器的整体性能。
发明内容
本申请提出一种主板,应用于存储服务器,所述主板包括基于FPGA的数据读写模块、内存以及业务口;所述内存与所述基于FPGA的数据读写模块相连接;所述业务口通过所述数据读写模块与所述存储服务器的磁盘阵列相连接;其中:
所述基于FPGA的数据读写模块,用于从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列;
当所述磁盘阵列执行与所述读写IO请求对应的读写操作后,所述基于FPGA的数据读写模块进一步用于接收所述磁盘阵列返回的与所述读写操作对应的执行结果,并将所述执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
可选的,所述基于FPGA的数据读写模块进一步用于:
当从所述业务口接收到读IO请求,并将该读IO请求下发到所述磁盘阵列后,接收所述磁盘阵列在执行与所述读IO请求对应的读操作后返回的读取到的数据,将该数据通过所述业务口发送给所述读IO请求的发起端主机;
当从所述业务口接收到写IO请求,并将该写IO请求下发到所述磁盘阵列后,在所述内存中缓存与该写IO请求对应的写入数据,并在所述磁盘阵列在执行与所述写IO请求对应的写操作将缓存在所述内存中的所述写入数据写入成功后,接收所述磁盘阵列返回的写入成功的通告消息,并将该通告消息通过所述业务口发送给所述写IO请求的发起端主机。
可选的,所述基于FPGA的数据读写模块进一步用于:
在将接收到的读IO请求或写IO请求下发至所述磁盘阵列之前,解析所述读IO请求或写IO请求获取对应的读地址或写地址;
判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引;
当获取到的与所述读IO请求对应的读地址命中所述预设的热点数据库中的地址索引时,从所述内存中预设的热点数据库中读取与该地址索引对应的热点数据,并将读取到的该热点数据通过所述业务口发送给所述读IO请求的发起端主机;
当获取到的与所述写IO请求对应的写地址命中所述预设的热点数据库中的地址索引时,将与该写IO请求对应的数据存入所述内存,以对所述预设的热点数据库中与该地址索引对应的热点数据进行更新。
可选的,所述基于FPGA的数据读写模块进一步用于:
在判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引之前,针对与所述读地址或写地址对应的数据进行访问次数统计;
判断统计出的访问次数是否达到阈值;
当统计出的任一数据的访问次数达到阈值时,将该数据作为热点数据保存在所述预设的热点数据库中,并在该热点数据库中创建该数据与该数据的地址索引之间的对应关系。
可选的,所述基于FPGA的数据读写模块进一步用于:
当所述预设的热点数据库中任一热点数据未被访问的持续时长达到预设时长时,判断该热点数据是否被修改;
当该热点数据未被修改时,删除所述预设的热点数据库中保存的该热点数据,以及与该热点数据对应的地址索引;
当该热点数据被修改时,将该热点数据从所述预设的热点数据库中回写到所述磁盘阵列,并删除所述预设的热点数据库中保存的与该热点数据对应的地址索引。
本申请还提出一种数据读写方法,应用于存储服务器,所述存储服务器的主板包括基于FPGA的数据读写模块、内存以及业务口;所述内存与所述基于FPGA的数据读写模块相连接;所述业务口通过所述数据读写模块与所述存储服务器的磁盘阵列相连接;所述方法包括:
步骤A、所述基于FPGA的数据读写模块从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列;
步骤B、当所述磁盘阵列执行与所述读写IO请求对应的读写操作后,所述基于FPGA的数据读写模块接收所述磁盘阵列返回的与所述读写操作对应的执行结果,并将所述执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
可选的,所述步骤B具体包括:
当所述基于FPGA的数据读写模块从所述业务口接收到读IO请求,并将该读IO请求下发到所述磁盘阵列后,接收所述磁盘阵列在执行与所述读IO请求对应的读操作后返回的读取到的数据,将该数据通过所述业务口发送给所述读IO请求的发起端主机;
当所述基于FPGA的数据读写模块从所述业务口接收到写IO请求,并将该写IO请求下发到所述磁盘阵列后,在所述内存中缓存与该写IO请求对应的写入数据,并在所述磁盘阵列在执行与所述写IO请求对应的写操作将缓存在所述内存中的所述写入数据写入成功后,接收所述磁盘阵列返回的写入成功的通告消息,并将该通告消息通过所述业务口发送给所述写IO请求的发起端主机。
可选的,所述方法还包括:
所述基于FPGA的数据读写模块在将接收到的读IO请求或写IO请求下发至所述磁盘阵列之前,解析所述读IO请求或写IO请求获取对应的读地址或写地址;
判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引;
当获取到的与所述读IO请求对应的读地址命中所述预设的热点数据库中的地址索引时,从所述内存中预设的热点数据库中读取与该地址索引对应的热点数据,并将读取到的该热点数据通过所述业务口发送给所述读IO请求的发起端主机;
当获取到的与所述写IO请求对应的写地址命中所述预设的热点数据库中的地址索引时,将与该写IO请求对应的数据存入所述内存,对所述预设的热点数据库中与该地址索引的对应的热点数据进行更新。
可选的,所述方法还包括:
所述基于FPGA的数据读写模块在判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引之前,针对与所述读地址或写地址对应的数据进行访问次数统计;
判断统计出的读取次数是否达到阈值;
当统计出的任一数据的访问次数达到阈值时,将该数据作为热点数据保存在所述预设的热点数据库中,并在该热点数据库中创建该数据与该数据的地址索引之间的对应关系。
可选的,所述方法还包括:
所述基于FPGA的数据读写模块在所述预设的热点数据库中任一热点数据未被读取的持续时长达到预设时长时,判断该热点数据是否被修改;
当该热点数据未被修改时,删除所述预设的热点数据库中保存的该热点数据,以及与该热点数据对应的地址索引;
当该热点数据被修改时,将该热点数据从所述预设的热点数据库中回写到所述磁盘阵列,并删除所述预设的热点数据库中保存的与该热点数据对应的地址索引。
本申请提出一种新的存储服务器的主板架构,通过基于FPGA的数据读写模块从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列,由磁盘阵列根据来执行与所述读写IO请求对应的读写操作,当磁盘阵列执行完成所述读写操作后,基于FPGA的数据读写模块接收磁盘阵列返回的与所述读写操作对应的执行结果,并将该执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
由于在该主板架构中,由基于FPGA的数据读写模块来替代CPU进行数据读写,CPU不再负责数据读写,因此可以降低CPU的负担;而且,在该主板架构中,基于FPGA的数据读写模块与磁盘阵列直连,不再需要引入SAS控制器以及SAS扩展器,因此在进行数据读写过程中,可以缩短在进行数据读写时的数据通路,减少数据延迟,从而可以提高存储服务器的整体性能。
附图说明
图1是本申请一实施例提供的一种存储服务器的主板架构图;
图2是本申请一实施例提供的另一种存储服务器的主板架构图;
图3是本申请一实施例提供的一种数据读写方法的流程图。
具体实施方式
请参见图1,图1为现有实现中存储服务器的主板架构示意图。
如图1所示,在存储服务器的主板架构中,通常包括业务IO口、CPU、IOH(InputOutputHub,输入输出集线器)、内存、SAS控制器、SAS扩展器以及RAID阵列。
其中,CPU负责操作系统、RAID算法以及所有业务处理计算相关的工作。IOH为支撑CPU的芯片组,负责为提供一些低速接口;例如,管理网口、按键以及串口等。内存,用于给系统提供较大容量以及较快速的缓存;例如,该内存可以是DDR3规格的内存。SAS控制器,负责提供SAS协议转换,以及相关存储指令的处理。SAS控制器,负责扩充SAS控制器的端口数,相当于一个交换机。RAID阵列,为由独立磁盘构成的具有冗余能力的阵列,磁盘阵列可以是由很多价格较低廉的磁盘,组合成的一个容量巨大的磁盘组,从而来提升整个磁盘系统的效率;例如,RAID阵列可以是由兼容SAS协议的SATA(SerialAdvancedTechnologyAttachment,串行高级技术附件)硬盘、SAS硬盘以及SSD(SolidStateDrives,固态硬盘)硬盘构成的磁盘阵列。
在上述主板架构中,数据的读写操作主要由CPU负责处理。
CPU在进行数据的读操作时,读IO请求从业务IO口进入CPU,CPU在接收到该读IO请求后,首先将该读IO请求缓存在内存中,然后CPU从内存中读取已经缓存的读IO请求,再将该读IO请求通过SAS控制器,再经过SAS扩展器下发给磁盘阵列。磁盘阵列收到CPU下发的读IO请求后,执行与该读IO请求对应的读操作后,将读取到的数据通过SAS控制器,再经过SAS扩展器缓存到内存中,再由CPU从内存中读取缓存的数据,通过业务IO口送达给该读IO请求的发起端主机。
CPU在进行数据的写操作时,写IO请求从业务IO口进入CPU,CPU在接收到该写IO请求后,首先将该写IO请求以及本次要写入的数据缓存在内存中,然后CPU从内存中读取已经缓存的写IO请求,再将该写IO请求通过SAS控制器,再经过SAS扩展器下发给磁盘阵列。磁盘阵列收到CPU下发的写IO请求后,执行与该写IO请求对应的写操作将缓存在内存中本次要写入的数据写入成功后,返回一个写入成功的通告消息,该通告消息通过SAS控制器,再经过SAS扩展器缓存到内存中,再由CPU从内存中读取缓存的该写入成功的通告消息,通过业务IO口送达该给写IO请求的发起端主机。
可见,在存储服务器现有的主板架构中,CPU在进行数据的读写处理时,读写的数据经过的路线太长,因此可能会导致延迟增大,读写效率过低,从而影响存储服务器的整体性能。另外,由于CPU在数据的读写过程中,需要运行RAID算法以及所有业务处理计算相关的任务,因此会导致CPU的负担过重,这无疑也会降低存储服务器的整体性能。
本申请提出一种新的存储服务器的主板架构,通过基于FPGA的数据读写模块从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列,由磁盘阵列根据来执行与所述读写IO请求对应的读写操作,当磁盘阵列执行完成所述读写操作后,基于FPGA的数据读写模块接收磁盘阵列返回的与所述读写操作对应的执行结果,并将该执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
由于在该主板架构中,由基于FPGA的数据读写模块来替代CPU进行数据读写,CPU不再负责数据读写,因此可以降低CPU的负担;而且,在该主板架构中,基于FPGA的数据读写模块与磁盘阵列直连,不再需要引入SAS控制器以及SAS扩展器,因此在进行数据读写过程中,可以缩短在进行数据读写时的数据通路,减少数据延迟,从而可以提高存储服务器的整体性能。
下面通过具体实施例并结合具体的应用场景对本申请进行描述。
请参考图2,图2是本申请一实施例提供的一种主板架构,应用于存储服务器。
如图2所示,在该主板架构中,包括IOH、CPU、基于FPGA(FieldProgrammableGateArray,即现场可编程门阵列)的数据读写模块(以下简称FPGA)、业务IO口、磁盘阵列以及分别与CPU和FPGA相连接的DDR3规格的独立内存。
其中,业务IO口通过FPGA直接连接到磁盘阵列。在实现时,一方面可以将业务IO口与FPGA相连接;另一方面,可以在FPGA上模拟SAS驱动,来替代SAS控制器以及SAS扩展器的功能,与磁盘阵列建立直连,从而保证业务IO口能够通过FPGA直接连接到磁盘阵列。
在该主板架构中,FPGA将替代CPU进行数据读写,CPU只负责对操作系统进行管理和控制,不再负责数据读写。其中,FPGA替代CPU进行数据读写的功能,可以通过预先在FPGA加载设定的读写逻辑来实现。当FPGA加载了设定的读写逻辑后,则可以替代CPU来进行数据读写操作。
以下对FPGA进行数据读、写操作的过程进行描述。
在该主板架构中,所述FPGA用于从所述业务口接收读IO请求或写IO请求,并将接收到的读IO请求或写IO请求下发至所述磁盘阵列。磁盘阵列在接收到FPGA下发的读IO请求或写IO请求后,根据接收到的读IO请求或写IO请求执行对应的读操作或写操作,并将所述读操作或写操作的执行结果返回给FPGA,然后由FPGA将该执行结果通过所述业务口发送给所述读IO请求或写IO请求的发起端主机。
具体地,当用户通过主机向存储服务器发起一次读操作时,会向存储服务器发送一个读IO请求,在该IO请求中可以包括本次要读取的数据在存储服务器的磁盘阵列中存储的LBA(LogicalBlockAddress,逻辑区块地址)地址。存储服务器在接收读IO请求时,该读IO请求可以通过业务IO口进入FPGA,FPGA在接收到该读IO请求后,首先将该读IO请求缓存在FPGA的内存中。然后FPGA再从内存中读取已经缓存的该读IO请求,将该读IO请求直接下发给磁盘阵列。
磁盘阵列收到FPGA下发的读IO请求后,执行与该读IO请求对应的读操作,根据该读IO请求中的LBA地址从磁盘阵列上读取对应的数据,然后将读取到的数据返回给FPGA,缓存到FPGA的内存中,再由FPGA从内存中读取缓存的数据,通过业务IO口送达给发起本次读IO请求的用户主机。其中,值得说明的是,磁盘阵列在执行与该读IO请求对应的读操作的详细过程,本领域技术人员可以参考现有技术中的介绍,在本申请中不再详述。
当用户通过主机向存储服务器发起一次写操作时,会向存储服务器发送一个写IO请求,在该IO请求中可以包括要写入数据的LBA地址。存储服务器在接收写IO请求以及要写入的数据时,该写IO请求以及要写入的数据可以通过业务IO口进入FPGA,FPGA在接收到该写IO请求以及要写入的数据后,首先将该写IO请求以及要写入的数据缓存在FPGA的内存中,然后FPGA再从内存中读取已经缓存的该写IO请求,将该读IO请求直接下发给磁盘阵列。
磁盘阵列收到FPGA下发的写IO请求后,执行与该读IO请求对应的写操作。磁盘阵列在执行与该写IO请求对应的写操作时,首先可以查询该写IO请求中的LBA地址在本地的地址映射表中有记录,如果没有记录,那么本次要写入的数据为首次写入,如果是首次写入可以直接为该要写入的数据分配存储空间,将FPGA的内存中缓存的该要写入的数据写入到磁盘阵列中;如果有记录,那么本次要写入的数据为覆盖写入,则可以根据该LBA地址将FPGA的内存中缓存的该要写入的数据对原有的数据进行覆盖。其中,值得说明的是,磁盘阵列在执行与该写IO请求对应的写操作的详细过程,本领域技术人员可以参考现有技术中的介绍,在本申请中不再详述。
当磁盘阵列将缓存在FPGA的内存中的要写入的数据写入成功后,可以向FPGA返回一个写入成功的通告消息,缓存到FPGA的内存中,再由FPGA从内存中读取缓存的该通告消息,通过业务IO口送达给发起本次写IO请求的用户主机。
通过以上描述可知,由于在以上的主板架构中,由基于FPGA的数据读写模块来替代CPU进行数据读写,CPU不再负责数据读写,因此可以降低CPU的负担;而且,在该主板架构中,FPGA可以通过模拟驱动来实现SAS控制器的功能,与磁盘阵列建立直连,在主板架构中不再需要引入SAS控制器以及SAS扩展器,因此可以缩短在进行数据读写时的数据通路,减少数据延迟,从而可以提高存储服务器的整体性能。
当然,在实现时,也可以通过对FPGA上加载的上述读写逻辑进行更改;例如,对于一些对数据安全要求较高的存储服务器,可以通过对FPGA上加载的上述读写逻辑进行更改,只保留FPGA对读IO请求的处理逻辑,从而使得存储服务器只能读取现有的数据,而无法写入新的数据,具体实现过程不再赘述。
在该主板架构中,所述FPGA的内存中还可以预先设置一个热点数据库,FPGA可以在进行数据读写过程中对读写的数据进行访问次数统计,然后将访问次数达到阈值的数据作为热点数据保存到该热点数据库中。
在实现时,FPGA在进行数据读写的过程中,可以对从业务IO口接收到的读IO请求和写IO请求进行解析,来获取对应的读地址和写地址,然后根据解析出的同一个地址的次数对与该读地址和写地址对应的数据进行访问次数统计;其中,数据的访问次数可以包括读取的次数以及写入的次数。
例如,当FPGA通过解析接收到的读IO请求或者写IO请求首次获取到一个地址后,表明与该地址对应的数据发生了一次读取或者写入,FPGA可以为该地址对应的数据记录一次访问;当FPGA通过解析接收到的读IO请求或者写IO请求再次获取到该地址后,表明与该地址对应的数据又发生了一次读取或者写入访问,于是FPGA可以对已经统计的访问次数进行更新,将该地址对应的数据的访问次数加一,以此类推。
通过这种方式,FPGA可以在数据的读写过程中对所有发生读写的数据进行访问次数统计。同时,对于统计完成的访问次数,FPGA还可以通过将统计出的访问次数与预设的阈值进行比较来确定哪些发生读写的数据为热点数据。
在实现时,FPGA在进行访问次数的统计过程中,可以将统计出的访问次数实时的与预设的阈值进行比较,当任一数据的访问次数达到预设的阈值时,则可以确定该数据为热点数据,将该数据保存到热点数据库中,并在热点数据库中建立该数据与该数据的地址索引之间的对应关系。
例如,当FPGA解析接收到的读IO请求再次获取到一个地址后,此时FPGA可以将该地址对应的数据的访问次数加一,并同时将该数据当前的访问次数与预设的阈值进行比较,如果此时该数据的访问次数达到阈值,当FPGA在接收到磁盘阵列返回的读取到的该数据时,可以将该数据作为热点数据保存到热点数据库中,同时将该数据的LBA地址作为地址索引在热点数据库中建立与该数据的对应关系。同样的道理,当FPGA解析接收到的写IO请求再次获取到一个地址后,此时FPGA可以将该地址对应的数据的访问次数加一,并同时将该数据当前的访问次数与预设的阈值进行比较,如果此时该数据的访问次数达到阈值,FPGA可以将本次要写入的数据直接作为热点数据保存到热点数据库中,同时将该数据的LBA地址作为地址索引在热点数据库中建立与该数据的对应关系。
其中,值得说明的是,在实际应用中,热点数据库中保存的热点数据,也可以由管理员人工进行指定;例如,管理员可以从磁盘阵列中将与每一类热点业务相关的数据人工拷贝至热点数据库。所述预设的阈值在本申请中不进行特别限定,可以根据实际的业务需求进行设定。
对于保存在热点数据库中的热点数据,当FPGA再次接收到针对热点数据库中数据的读IO请求或者写IO请求时,可以直接从热点数据库中完成相应的读写操作,而不必将读IO请求或者写IO请求下发至磁盘阵列来进行相应的读写操作,从而可以提高数据的读写效率。
在实现时,当FPGA从业务IO口接收到一个读IO请求时,首先FPGA可以对该读IO请求进行解析来获取对应的读地址,然后FPGA可以将解析出的读地址与热点数据库中的地址索引依次进行匹配,来判断该读地址是否命中热点数据中的地址索引;如果该读地址命中热点数据中的地址索引时,此时与该读地址对应的数据为热点数据,FPGA可以直接在本地执行与该读IO请求对应的读操作,从热点数据库中读取与该读地址对应数据,然后通过业务IO口返回给该读IO请求的发起方主机。当然,如果该读地址未命中热点数据库中的地址索引,那么FPGA将该读IO请求下发至磁盘阵列,由磁盘阵列来完成正常的读操作,从磁盘阵列上来读取数据。
当FPGA从业务IO口接收到一个写IO请求时,首先FPGA可以对该写IO请求进行解析来获取对应的写地址,然后FPGA可以将解析出的写地址与热点数据库中的地址索引依次进行匹配,来判断该写地址是否命中热点数据中的地址索引;如果该写地址命中热点数据中的地址索引时,此时与该写地址对应的数据为热点数据,那么本次写操作为覆盖写入操作,FPGA可以直接在本地执行与该写IO请求对应的写操作,将本次要写入的数据保存到热点数据库中,对热点数据中与该写地址对应的原有数据进行覆盖更新。当然,如果该写地址未命中热点数据库中的地址索引,那么FPGA将该写IO请求下发至磁盘阵列,由磁盘阵列来完成正常的写操作,将要写入的数据写入到磁盘阵列上。
可见,通过这种方式,FPGA在处理接收到的读IO请求和写IO请求时,如果解析出的地址命中热点数据库中的地址索引,那么FPGA则不必将读IO请求或者写IO请求下发至磁盘阵列来进行相应的读写操作,可以直接在本地来执行对应的读写操作,从而可以提高数据的读写效率。
另外,对于热点数据库中的数据,FPGA还可以进行实时的更新,对热点数据库中不活跃的数据进行删除或者回写到磁盘阵列。
在实现时,FPGA可以设置一个预设的时长,当热点数据库中的热点数据长时间未被访问,并且持续未被访问的持续时长达到设置的所述预设的时长,此时FPGA可以确定该数据已不再是热点数据。
对于这种情况,FPGA可以判断该数据是否被修改,如果该数据未被修改,可以将热点数据库中保存的该数据以及与该数据对应的地址索引删除。如果该数据已经被修改,则可以将热点数据库中保存的该数据回写到磁盘阵列,以对磁盘阵列中存储的该数据进行更新,并删除热点数据库中保存的该热点数据对应的地址索引。通过这种方式,可以保证热点数据库中的数据在一定的时间段内均为活跃的热点数据。
例如,对于热点数据库中保存的地址索引,FPGA可以分别记录该地址索引上次被匹配到的时间点,当热点数据库中保存的任一地址索引距离上次被匹配到的时间点的时长达到所述预设的时长时,表明该热点数据这个时间段内不够活跃,FPGA可以将直接该数据以及与该数据对应的地址索引从热点数据库中删除,或者将该数据回写到磁盘阵列。
在以上实施例中,提出一种新的存储服务器的主板架构,通过基于FPGA的数据读写模块从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列,由磁盘阵列根据来执行与所述读写IO请求对应的读写操作,当磁盘阵列执行完成所述读写操作后,基于FPGA的数据读写模块接收磁盘阵列返回的与所述读写操作对应的执行结果,并将该执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
由于在该主板架构中,由基于FPGA的数据读写模块来替代CPU进行数据读写,CPU不再负责数据读写,因此可以降低CPU的负担;而且,在该主板架构中,基于FPGA的数据读写模块与磁盘阵列直连,不再需要引入SAS控制器以及SAS扩展器,因此在进行数据读写过程中,可以缩短在进行数据读写时的数据通路,减少数据延迟,从而可以提高存储服务器的整体性能。
与上述装置实施例相对应,本申请还提供了方法的实施例。
请参见图3,本申请提出一种数据的读写方法,应用于存储服务器,所述存储服务器的主板具有如图2所示出的架构,包括IOH、CPU、基于FPGA的数据读写模块、业务IO口、磁盘阵列以及分别与CPU和FPGA相连接的DDR3规格的独立内存。其中,业务IO口通过FPGA直接连接到磁盘阵列。当所述基于FPGA的数据读写模块加载了设定的读写逻辑,替代CPU来执行对应的数据读写操作时,所述方法执行以下步骤:
步骤301,所述基于FPGA的数据读写模块从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列;
步骤302,当所述磁盘阵列执行与所述读写IO请求对应的读写操作后,所述基于FPGA的数据读写模块接收所述磁盘阵列返回的与所述读写操作对应的执行结果,并将所述执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
在本实施例中,所述步骤302具体包括:
当所述基于FPGA的数据读写模块从所述业务口接收到读IO请求,并将该读IO请求下发到所述磁盘阵列后,接收所述磁盘阵列在执行与所述读IO请求对应的读操作后返回的读取到的数据,将该数据通过所述业务口发送给所述读IO请求的发起端主机;
当所述基于FPGA的数据读写模块从所述业务口接收到写IO请求,并将该写IO请求下发到所述磁盘阵列后,在所述内存中缓存与该写IO请求对应的写入数据,并在所述磁盘阵列在执行与所述写IO请求对应的写操作将缓存在所述内存中的所述写入数据写入成功后,接收所述磁盘阵列返回的写入成功的通告消息,并将该通告消息通过所述业务口发送给所述写IO请求的发起端主机。
在本实施例中,所述方法还包括:
所述基于FPGA的数据读写模块在将接收到的读IO请求或写IO请求下发至所述磁盘阵列之前,解析所述读IO请求或写IO请求获取对应的读地址或写地址;
判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引;
当获取到的与所述读IO请求对应的读地址命中所述预设的热点数据库中的地址索引时,从所述内存中预设的热点数据库中读取与该地址索引对应的热点数据,并将读取到的该热点数据通过所述业务口发送给所述读IO请求的发起端主机;
当获取到的与所述写IO请求对应的写地址命中所述预设的热点数据库中的地址索引时,将与该写IO请求对应的数据存入所述内存,对所述预设的热点数据库中与该地址索引的对应的热点数据进行更新。
在本实施例中,所述方法还包括:
所述基于FPGA的数据读写模块在判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引之前,针对与所述读地址或写地址对应的数据进行访问次数统计;
判断统计出的读取次数是否达到阈值;
当统计出的任一数据的访问次数达到阈值时,将该数据作为热点数据保存在所述预设的热点数据库中,并在该热点数据库中创建该数据与该数据的地址索引之间的对应关系。
在本实施例中,所述方法还包括:
所述基于FPGA的数据读写模块在所述预设的热点数据库中任一热点数据未被读取的持续时长达到预设时长时,判断该热点数据是否被修改;
当该热点数据未被修改时,删除所述预设的热点数据库中保存的该热点数据,以及与该热点数据对应的地址索引;
当该热点数据被修改时,将该热点数据从所述内存中回写到所述磁盘阵列,并删除所述预设的热点数据库中保存的与该热点数据对应的地址索引。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种主板,应用于存储服务器,其特征在于,所述主板包括基于FPGA的数据读写模块、内存以及业务口;所述内存与所述基于FPGA的数据读写模块相连接;所述业务口通过所述数据读写模块与所述存储服务器的磁盘阵列相连接;其中:
所述基于FPGA的数据读写模块,用于从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列;
当所述磁盘阵列执行与所述读写IO请求对应的读写操作后,所述基于FPGA的数据读写模块进一步用于接收所述磁盘阵列返回的与所述读写操作对应的执行结果,并将所述执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
2.根据权利要求1所述的主板,其特征在于,所述基于FPGA的数据读写模块进一步用于:
当从所述业务口接收到读IO请求,并将该读IO请求下发到所述磁盘阵列后,接收所述磁盘阵列在执行与所述读IO请求对应的读操作后返回的读取到的数据,将该数据通过所述业务口发送给所述读IO请求的发起端主机;
当从所述业务口接收到写IO请求,并将该写IO请求下发到所述磁盘阵列后,在所述内存中缓存与该写IO请求对应的写入数据,并在所述磁盘阵列在执行与所述写IO请求对应的写操作将缓存在所述内存中的所述写入数据写入成功后,接收所述磁盘阵列返回的写入成功的通告消息,并将该通告消息通过所述业务口发送给所述写IO请求的发起端主机。
3.根据权利要求1所述的主板,其特征在于,所述基于FPGA的数据读写模块进一步用于:
在将接收到的读IO请求或写IO请求下发至所述磁盘阵列之前,解析所述读IO请求或写IO请求获取对应的读地址或写地址;
判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引;
当获取到的与所述读IO请求对应的读地址命中所述预设的热点数据库中的地址索引时,从所述内存中预设的热点数据库中读取与该地址索引对应的热点数据,并将读取到的该热点数据通过所述业务口发送给所述读IO请求的发起端主机;
当获取到的与所述写IO请求对应的写地址命中所述预设的热点数据库中的地址索引时,将与该写IO请求对应的数据存入所述内存,以对所述预设的热点数据库中与该地址索引对应的热点数据进行更新。
4.根据权利要求3所述的主板,其特征在于,所述基于FPGA的数据读写模块进一步用于:
在判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引之前,针对与所述读地址或写地址对应的数据进行访问次数统计;
判断统计出的访问次数是否达到阈值;
当统计出的任一数据的访问次数达到阈值时,将该数据作为热点数据保存在所述预设的热点数据库中,并在该热点数据库中创建该数据与该数据的地址索引之间的对应关系。
5.根据权利要求4所述的主板,其特征在于,所述基于FPGA的数据读写模块进一步用于:
当所述预设的热点数据库中任一热点数据未被访问的持续时长达到预设时长时,判断该热点数据是否被修改;
当该热点数据未被修改时,删除所述预设的热点数据库中保存的该热点数据,以及与该热点数据对应的地址索引;
当该热点数据被修改时,将该热点数据从所述预设的热点数据库中回写到所述磁盘阵列,并删除所述预设的热点数据库中保存的与该热点数据对应的地址索引。
6.一种数据读写方法,应用于存储服务器,其特征在于,所述存储服务器的主板包括基于FPGA的数据读写模块、内存以及业务口;所述内存与所述基于FPGA的数据读写模块相连接;所述业务口通过所述数据读写模块与所述存储服务器的磁盘阵列相连接;所述方法包括:
步骤A、所述基于FPGA的数据读写模块从所述业务口接收读写IO请求,并将接收到的读写IO请求下发至所述磁盘阵列;
步骤B、当所述磁盘阵列执行与所述读写IO请求对应的读写操作后,所述基于FPGA的数据读写模块接收所述磁盘阵列返回的与所述读写操作对应的执行结果,并将所述执行结果通过所述业务口发送给所述读写IO请求的发起端主机。
7.根据权利要求6所述的方法,其特征在于,所述步骤B具体包括:
当所述基于FPGA的数据读写模块从所述业务口接收到读IO请求,并将该读IO请求下发到所述磁盘阵列后,接收所述磁盘阵列在执行与所述读IO请求对应的读操作后返回的读取到的数据,将该数据通过所述业务口发送给所述读IO请求的发起端主机;
当所述基于FPGA的数据读写模块从所述业务口接收到写IO请求,并将该写IO请求下发到所述磁盘阵列后,在所述内存中缓存与该写IO请求对应的写入数据,并在所述磁盘阵列在执行与所述写IO请求对应的写操作将缓存在所述内存中的所述写入数据写入成功后,接收所述磁盘阵列返回的写入成功的通告消息,并将该通告消息通过所述业务口发送给所述写IO请求的发起端主机。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述基于FPGA的数据读写模块在将接收到的读IO请求或写IO请求下发至所述磁盘阵列之前,解析所述读IO请求或写IO请求获取对应的读地址或写地址;
判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引;
当获取到的与所述读IO请求对应的读地址命中所述预设的热点数据库中的地址索引时,从所述内存中预设的热点数据库中读取与该地址索引对应的热点数据,并将读取到的该热点数据通过所述业务口发送给所述读IO请求的发起端主机;
当获取到的与所述写IO请求对应的写地址命中所述预设的热点数据库中的地址索引时,将与该写IO请求对应的数据存入所述内存,对所述预设的热点数据库中与该地址索引的对应的热点数据进行更新。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述基于FPGA的数据读写模块在判断获取到的与所述读IO请求或写IO请求对应的读地址或写地址是否命中所述内存中预设的热点数据库中的地址索引之前,针对与所述读地址或写地址对应的数据进行访问次数统计;
判断统计出的读取次数是否达到阈值;
当统计出的任一数据的访问次数达到阈值时,将该数据作为热点数据保存在所述预设的热点数据库中,并在该热点数据库中创建该数据与该数据的地址索引之间的对应关系。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述基于FPGA的数据读写模块在所述预设的热点数据库中任一热点数据未被读取的持续时长达到预设时长时,判断该热点数据是否被修改;
当该热点数据未被修改时,删除所述预设的热点数据库中保存的该热点数据,以及与该热点数据对应的地址索引;
当该热点数据被修改时,将该热点数据从所述预设的热点数据库中回写到所述磁盘阵列,并删除所述预设的热点数据库中保存的与该热点数据对应的地址索引。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510543927.4A CN105138469B (zh) | 2015-08-28 | 2015-08-28 | 一种数据读写方法以及主板 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510543927.4A CN105138469B (zh) | 2015-08-28 | 2015-08-28 | 一种数据读写方法以及主板 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138469A true CN105138469A (zh) | 2015-12-09 |
CN105138469B CN105138469B (zh) | 2018-03-16 |
Family
ID=54723823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510543927.4A Active CN105138469B (zh) | 2015-08-28 | 2015-08-28 | 一种数据读写方法以及主板 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138469B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598883A (zh) * | 2016-11-01 | 2017-04-26 | 北京腾凌科技有限公司 | 基于fpga的sas错误状态命令的处理方法及装置 |
CN106649654A (zh) * | 2016-12-12 | 2017-05-10 | 京信通信技术(广州)有限公司 | 一种数据更新的方法和装置 |
CN106990916A (zh) * | 2017-03-01 | 2017-07-28 | 北京腾凌科技有限公司 | 一种读写请求的处理方法及装置 |
CN107402723A (zh) * | 2017-07-25 | 2017-11-28 | 北京腾凌科技有限公司 | 读写数据的方法及存储系统 |
CN108595269A (zh) * | 2018-04-26 | 2018-09-28 | 北京腾凌科技有限公司 | 一种数据处理方法、指令生成装置和数据读写装置 |
CN110019496A (zh) * | 2017-07-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据读写方法和系统 |
CN112506823A (zh) * | 2020-12-11 | 2021-03-16 | 盛立金融软件开发(杭州)有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
CN113157628A (zh) * | 2021-04-20 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 存储系统、数据处理方法、装置、存储系统及电子设备 |
CN116700633A (zh) * | 2023-08-08 | 2023-09-05 | 成都领目科技有限公司 | 一种raid阵列硬盘的io延时监测方法、装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2591669Y (zh) * | 2002-12-09 | 2003-12-10 | 中国科学院光电技术研究所 | 直写硬盘数据记录系统 |
US20070277036A1 (en) * | 2003-05-23 | 2007-11-29 | Washington University, A Corporation Of The State Of Missouri | Intelligent data storage and processing using fpga devices |
CN101833424A (zh) * | 2010-03-26 | 2010-09-15 | 中国科学院光电技术研究所 | 基于fpga的高速存储与传输装置 |
US20100332739A1 (en) * | 2008-02-28 | 2010-12-30 | Fujitsu Limited | Storage device, storage controlling device, and storage controlling method |
CN104834484A (zh) * | 2015-05-11 | 2015-08-12 | 上海新储集成电路有限公司 | 基于嵌入式可编程逻辑阵列的数据处理系统及处理方法 |
-
2015
- 2015-08-28 CN CN201510543927.4A patent/CN105138469B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2591669Y (zh) * | 2002-12-09 | 2003-12-10 | 中国科学院光电技术研究所 | 直写硬盘数据记录系统 |
US20070277036A1 (en) * | 2003-05-23 | 2007-11-29 | Washington University, A Corporation Of The State Of Missouri | Intelligent data storage and processing using fpga devices |
US20100332739A1 (en) * | 2008-02-28 | 2010-12-30 | Fujitsu Limited | Storage device, storage controlling device, and storage controlling method |
CN101833424A (zh) * | 2010-03-26 | 2010-09-15 | 中国科学院光电技术研究所 | 基于fpga的高速存储与传输装置 |
CN104834484A (zh) * | 2015-05-11 | 2015-08-12 | 上海新储集成电路有限公司 | 基于嵌入式可编程逻辑阵列的数据处理系统及处理方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598883A (zh) * | 2016-11-01 | 2017-04-26 | 北京腾凌科技有限公司 | 基于fpga的sas错误状态命令的处理方法及装置 |
CN106598883B (zh) * | 2016-11-01 | 2019-09-17 | 北京腾凌科技有限公司 | 基于fpga的sas错误状态命令的处理方法及装置 |
CN106649654A (zh) * | 2016-12-12 | 2017-05-10 | 京信通信技术(广州)有限公司 | 一种数据更新的方法和装置 |
CN106990916A (zh) * | 2017-03-01 | 2017-07-28 | 北京腾凌科技有限公司 | 一种读写请求的处理方法及装置 |
CN106990916B (zh) * | 2017-03-01 | 2020-04-07 | 北京腾凌科技有限公司 | 一种读写请求的处理方法及装置 |
CN107402723B (zh) * | 2017-07-25 | 2020-05-12 | 北京腾凌科技有限公司 | 读写数据的方法及存储系统 |
CN107402723A (zh) * | 2017-07-25 | 2017-11-28 | 北京腾凌科技有限公司 | 读写数据的方法及存储系统 |
CN110019496A (zh) * | 2017-07-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据读写方法和系统 |
CN108595269A (zh) * | 2018-04-26 | 2018-09-28 | 北京腾凌科技有限公司 | 一种数据处理方法、指令生成装置和数据读写装置 |
CN108595269B (zh) * | 2018-04-26 | 2020-10-09 | 北京腾凌科技有限公司 | 一种数据处理方法、指令生成装置和数据读写装置 |
CN112506823A (zh) * | 2020-12-11 | 2021-03-16 | 盛立金融软件开发(杭州)有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
CN112506823B (zh) * | 2020-12-11 | 2023-09-29 | 盛立安元科技(杭州)股份有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
CN113157628A (zh) * | 2021-04-20 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 存储系统、数据处理方法、装置、存储系统及电子设备 |
CN113157628B (zh) * | 2021-04-20 | 2024-09-20 | 北京达佳互联信息技术有限公司 | 存储系统、数据处理方法、装置、存储系统及电子设备 |
CN116700633A (zh) * | 2023-08-08 | 2023-09-05 | 成都领目科技有限公司 | 一种raid阵列硬盘的io延时监测方法、装置及介质 |
CN116700633B (zh) * | 2023-08-08 | 2023-11-03 | 成都领目科技有限公司 | 一种raid阵列硬盘的io延时监测方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105138469B (zh) | 2018-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105138469A (zh) | 一种数据读写方法以及主板 | |
CN108519862B (zh) | 区块链系统的存储方法、装置、系统和存储介质 | |
US10564880B2 (en) | Data deduplication method and apparatus | |
CN105183374B (zh) | 一种数据读写方法以及主板 | |
CN107229415B (zh) | 一种数据写方法、数据读方法及相关设备、系统 | |
US9213500B2 (en) | Data processing method and device | |
US6954839B2 (en) | Computer system | |
CN106569742A (zh) | 存储管理方法及存储设备 | |
US10303374B2 (en) | Data check method and storage system | |
CN110727403B (zh) | 元数据管理方法及装置 | |
US10152274B2 (en) | Method and apparatus for reading/writing data from/into flash memory, and user equipment | |
CN110109845B (zh) | 缓存数据管理方法、装置、计算机设备及存储介质 | |
WO2017063495A1 (zh) | 数据迁移方法及装置 | |
EP3364303B1 (en) | Data arrangement method, storage apparatus, storage controller and storage array | |
US20220222016A1 (en) | Method for accessing solid state disk and storage device | |
CN109614044A (zh) | 一种固态硬盘写错误的处理方法、装置及设备 | |
CN116257460B (zh) | 基于固态硬盘的Trim命令处理方法及固态硬盘 | |
CN105389268A (zh) | 资料储存系统及其运作方法 | |
US20240104014A1 (en) | Data management method, and storage space management method and apparatus | |
WO2024124997A1 (zh) | Raid组的数据多流写入方法及相关装置 | |
CN103631682A (zh) | 数据备份的实现方法和装置 | |
US20180217935A1 (en) | Method and apparatus for reading redundant array of independent disks | |
CN103530236A (zh) | 一种混合硬盘的实现方法及装置 | |
US20180173639A1 (en) | Memory access method, apparatus, and system | |
CN104899158A (zh) | 访存优化方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |