CN105393236B - 快速数据读写方法和装置 - Google Patents
快速数据读写方法和装置 Download PDFInfo
- Publication number
- CN105393236B CN105393236B CN201480037236.0A CN201480037236A CN105393236B CN 105393236 B CN105393236 B CN 105393236B CN 201480037236 A CN201480037236 A CN 201480037236A CN 105393236 B CN105393236 B CN 105393236B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- metadata
- read
- storage medium
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种快速数据读写方法,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述硬件加速控制器通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,所述方法包括:硬件加速控制器HAC接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;向所述中央处理器报告数据读/取结果。利用实施例提供的方法,使得文件系统的IO处理由HAC进行,主机可以处理更多的其他业务。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种快速数据读写方法和装置。
背景技术
一个完整的计算机系统由计算系统,存储系统和网络系统三个系统组成,这三者由一个操作系统来管理;存储系统在操作系统中以文件系统方式存在,文件系统的开销在整个操作系统的性能开销中占很大一部分。
现有技术一中,文件系统和设备驱动程序是操作系统的一部分,由CPU负责逻辑操作和数据操作,当需要进行文件的读或写操作时,由进程发起IO请求,该IO请求经过操作系统内核,由CPU处理。其主要步骤如下:进程需要读写文件时向操作系统发起IO请求;内核读取内存中的元数据,对该IO请求包装,比如使得该IO请求包括文件的开始地址,文件的长度等信息,并将该包装后的IO请求发送到设备驱动程序;内核控制设备驱动程序,将读或写数据的请求发送到磁盘,磁盘进行对应的读或写操作;磁盘将数据传送到内存,并更新元数据,以上步骤都需要CPU参与,耗费CPU的计算能力。
现有技术二中,对图1A中的软件栈进行修改,修改后的软件栈如图1B所示,图1B中,将文件系统和设备驱动程序从软件剥离,并将文件系统和驱动的相关操作固化在硬件中,使用硬件来完成文件系统和驱动程序的相关操作,但是如果文件系统太大,则元数据太多,而元数据都被保持在内存中,硬件的内存有限,所以硬件能支持的文件大小和个数受限,而且该技术需要修改软件和硬件等多方面的内容,因此不容易集成到现有的操作系统中。
发明内容
本发明的目的是提供一种快速数据读写方法和装置,以加速文件系统的IO性能。
第一方面,本发明实施例提供了一种快速数据读写方法,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述硬件加速控制器通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,所述方法包括:
硬件加速控制器HAC接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;
向所述中央处理器报告数据读/取结果。
结合第一方面,在第一种可能的实施方式中,所述读/写请求为读请求时,所述根据所述元数据,从所述文件中读取数据进一步包括:
根据所述读请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
当所述HAC根据所述元数据确定所述本地内存中不具有所述文件时,所述硬件加速控制器对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行读操作。
结合第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述方法还包括:
当所述读/写请求为读请求,所述HAC根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
结合第一方面,在第三种可能的实施方式中,所述方法还包括:当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述将需要写入所述文件的数据写入所述文件,进一步包括:
根据所述写请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述HAC将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
结合第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述方法还包括:当所述HAC根据所述元数据确定所述本地不具有所述文件时,所述硬件加速控制器对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行写操作;
将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
第二方面,本发明实施例提供了一种快速数据读写装置,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述硬件加速控制器通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,所述装置包括:
接口模块,用于接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
数据收发模块,用于根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;并且向所述中央处理器报告数据读/取结果。
结合第二方面,在第一种可能的实施方式中,所述装置还包括:
查找单元,用于在所述读/写请求为读请求时,根据所述读请求中的元数据,查找本地内存中是否具有与所述元数据对应的文件;
命令解析模块,用于当所述查找单元根据所述元数据确定所述本地内存中不具有所述文件时,对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
命令转化模块,用于将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述中央处理器直接对所述存储介质进行读操作。
结合第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述数据收发模块还用于:当所述读/写请求为读请求时,所述查找单元根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
结合第二方面,在第三种可能的实施方式中,当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述装置还包括:
查找单元,用于根据所述写请求中的元数据,查找本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述数据收发模块将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
同步单元,用于将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
结合第一方面的第三种可能的实施方式,在第四种可能的实施方式中,当所述查找单元根据所述元数据确定所述本地不具有所述文件时,所述命令解析模块对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
命令转化模块,用于将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行写操作;
所述数据收发模块用于将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
第三方面,本发明实施例提供了一种快速数据读写装置,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述硬件加速控制器通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,所述装置包括:网络接口;处理器;存储器;
物理存储在所述存储器中的应用程序,所述应用程序包括可用于使所述处理器执行以下过程的指令:
通过网络接口接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
所述处理器根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;
所述网络接口向所述中央处理器报告数据读/取结果。
结合第三方面,在第一种可能的实施方式中,所述读/写请求为读请求时,所述处理器根据所述读请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
当所述HAC根据所述元数据确定所述本地内存中不具有所述文件时,对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令通过网络接口发送到存储介质,以代替所述主机直接对所述存储介质进行读操作。
结合第三方面的第一种可能的实施方式,在第二种可能的实施方式中,当所述读/写请求为读请求,所述处理器根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
结合第一方面,在第三种可能的实施方式中,当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述处理器根据所述写请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述处理器将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
通过所述网络接口将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
结合第三方面的第三种可能的实施方式,在第四种可能的实施方式中,当所述处理器根据所述元数据确定所述本地不具有所述文件时,所述处理器对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行写操作;
将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
通过上述方案,由于文件系统的IO处理由专门的HAC来处理,IO速度可以大大提升,因此整个文件系统的IO性能会得到很大的提升;而且主机在IO的消耗大大减少,主机可以处理更多的其他业务;HAC能够以最小的代价集成到操作系统中,对硬件的改动比较小。
附图说明
图1A为本发明实施例提供的现有技术二中修改前的软件栈示意图;
图1B为本发明实施例提供的现有技术二中的软件栈示意图;
图2为本发明实施例提供的HAC位置示意图;
图3为本发明实施例一提供的快速数据读写流程图;
图4为本发明实施例一提供的快速数据读写框图;
图5为本发明实施例提供的HAC示意图;
图6为本发明实施例二提供的快速数据读写装置结构示意图;
图7为本发明实施例三提供的快速数据读写装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,尽管在本发明实施例中可能采用术语第一、第二等来描述各种数据,但这些数据不应限于这些术语。这些术语仅用来将终端彼此区分开。
图2为本发明实施例提供的HAC位置示意图。在图2中,机架服务器包括底板210,存储介质220和硬件加速控制器(hardware accelerate controller,HAC)230。
底板210包括南桥211、CPU212和内存213,南桥211、CPU212和内存213用于对其它扩展卡进行控制,实现主机的功能;存储介质220,用于接收主机的读或写操作请求,并对存储介质中的闪存芯片进行各种访问和控制;存储介质220中的其它芯片可以和闪存芯片设置在一个印刷电路板(printed circuit board,PCB)上,并通过PCB走线相连,最后呈现的形式是硬盘盒,也可以将闪存芯片和存储介质的其它芯片做成扩展卡,通过外设互联快速通道(PCI-Express,PCIe)接口与底板210相连;HAC230用于提供数据传输的硬件通道,通过PCIe等接口和底板210、存储介质220相连,也可以集成在存储介质220上。
其中,存储介质220可以是固态硬盘(solid state drive,SSD),磁盘驱动器(hardware accelerate controller,HHD)或其组合,SSD可以是专用集成电路(application-specific integrated circuit,ASIC)或者可编程逻辑器件(programmablelogic device,PLD)。该PLD可以是复杂可编程逻辑器件(complex programmable logicdevice,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其组合。
图3为本发明实施例一提供的快速数据读写方法流程图。如图3所示,本实施例的主体是HAC,HAC既可以集成在存储介质上,也可以是独立的扩展卡,通过PCIe接口、SAS接口或者SATA接口和主机相连。本实施例包括以下步骤:
步骤310,HAC接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
具体地,HAC接收主机发送的命令,该命令可以是文件的读或写请求,也可以是将元数据写入本地的写请求,该请求包括文件的元数据,元数据中可以包括文件的ID,偏移信息和长度信息,其中,该偏移信息和长度信息等价于文件中数据的开始地址,结束地址,可以由文件中数据的开始地址和结束地址,确定文件的偏移信息以及长度信息。
320,根据所述元数据,从所述文件中读取数据;
具体而言,HAC接收到CPU发送的读/写请求后,根据所述读请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
所述读/写请求为读请求时,当所述HAC根据所述元数据确定所述本地内存中不具有所述文件时,所述硬件加速控制器对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行读操作。
当所述读/写请求为读请求,所述HAC根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
330,将需要写入所述文件的数据写入所述文件;
当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,HAC根据所述写请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;如果所述本地内存中具有与所述元数据对应的文件,所述HAC将所述需要写入存储介质中的数据,写入所述元数据对应的文件;将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
当所述HAC根据所述元数据确定所述本地不具有所述文件时,所述硬件加速控制器对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行写操作;将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
具体地,在接收到主机的读或写请求时,HAC查找该元数据对应的文件在本地是否存在,如果元数据对应的文件在本地不存在,HAC根据预先接收的文件系统类型,解析文件系统的元数据,根据元数据解析文件的块数据,并将文件的偏移信息和长度信息进行包装,将其转化为文件块数据的地址信息;当请求为读请求,HAC根据文件名确定本地具有该文件时,将第一数据发送给主机,其中,第一数据是主机要读取的文件中的数据。
需要说明的是,元数据指的是文件系统的文件组织信息,不包括文件的具体数据信息。
340,向所述中央处理器报告数据读/取结果。
具体地,当HAC接收到的是读请求时,HAC向CPU反馈的结果是读取到的数据;而当HAC接收到的是写请求时,HAC向CPU反馈的结果可以是一个数据写入成功的确认消息。
进一步的,在步骤320和330中,HAC将文件块数据的地址信息转化为IO命令,并将IO命令发送到存储介质,用以对所述存储介质进行读或写操作。
其中,HAC解析文件块数据的地址信息,将该文件块数据的地址信息转化为存储介质能够识别的IO命令,并将IO命令发送给存储介质。
举例来说,当IO命令为读操作命令时,HAC将读命令发送给存储介质,用于存储介质根据读操作命令读取数据,并接收存储介质返回的数据,并将该数据发送给主机;其中,HAC将数据发送给主机时,可以使用直接存储器访问(Direct Memory Access,DMA)将第一数据传输到主机内存,也可以使用一般的传输方式。
当IO命令为写操作命令,写操作命令中包括主机地址信息,HAC将写操作命令发送给存储介质,用以存储介质根据主机地址信息,将第二数据写入到存储介质中。
在另一种实施例中,还有可能是CPU需要将元数据写入HAC本地,HAC接收主机发送的将元数据写入本地的写请求,从主机读取写请求对应的元数据,将元数据写入到本地的元数据缓存区。
具体地,将元数据写入HAC本地的元数据缓存区包括两种情况:
(1)如果本地元数据缓存区有足够的存储空间,则将元数据直接写入本地元数据缓存区。
其中,将元数据写入元数据缓存区是在进程切换时,由主机发起的,主机在进程切换的时候会将即将被切换运行的进程的文件系统相关信息刷新到元数据缓存区。当进程打开或者关闭文件的时候,主机能够捕捉到这个事件的发生:当进程打开一个文件后,主机中的元数据就会增加,主机会将元数据写入到本地元数据缓存区;当进程关闭某个文件时,主机捕捉到该事件,同时通知HAC无效文件的元数据。
(2)如果元数据缓存区没有足够的存储空间,选择替换缓存项,将替换缓存项删除,将元数据写入替换缓存项的原始元数据缓存区。
其中,替换缓存项的替换策略有很多现有技术可以使用,比如,最近最少使用策略(least recently used,URL),对象大小策略,最少使用频率策略(least frequentlyused,LFU),最低关系值策略(lowest relative value,LRV)等。
图4为本发明实施例提供的快速数据读写框图。图4中是HAC中不存在元数据对应的文件时,主机如何通过HAC,读取第一数据或者写入第二数据,其中,在本实施例中,将HAC对数据的处理细化到HAC中的每个模块。
如图5所示,图5本发明实施例提供的HAC示意图。在图5中,HAC包括主机接口510,命令解析模块520和数据收发模块530。
主机接口510,用于接收主机的各种命令,比如读或写请求,主机接口510可以是PCIe接口,也可以是其它总线接口;命令解析模块520用于解析文件系统的元数据,比如识别文件系统的类型,解析该文件系统的超级块元数据,根据超级块元数据解析文件的块数据,并将主机接口510过来的文件的长度信息和偏移信息转化为文件块数据的地址信息,并将解析完成后的块数据的地址信息发送到数据收发模块530;数据收发模块530用于接收块数据的地址信息,将该地址信息转化为存储介质能够识别的IO命令,并将IO命令发送给存储介质。
步骤401,主机发送命令给主机接口。
具体地,主机发送各种命令,该命令包括比如读某个文件的命令,将第二数据写入某个文件的命令等。
步骤402,命令解析模块解析命令类型。
具体地,命令解析模块520解析命令类型,比如,该命令的类型可以是文件的读或写请求,也可以是将元数据写入本地的写请求,当命令类型是文件的读或写请求时,该读或写操作请求中携带文件的文件名,偏移信息和长度信息,执行步骤403;当命令类型是将元数据写入本地的写请求时,执行步骤409。
步骤403,命令解析模块解析元数据,将文件块数据的地址信息下发到数据收发模块。
具体地,当命令的类型是文件的读或写请求时,命令解析模块520查找文件名对应的文件在本地是否存在,如果不存在,命令解析模块520根据预先写入的文件系统的类型,解析文件系统的元数据,根据元数据解析文件的块数据,并将主机接口发送的文件的偏移信息和长度信息转化为文件块数据的地址信息。
步骤404,数据收发模块解析文件块数据的地址信息,发送IO命令至存储介质。
具体地,数据收发模块530接收命令解析模块520发送的文件块数据的地址信息,将该文件块数据的地址信息转化为存储介质能够识别的IO命令,并将IO命令发送到存储介质。其中,数据收发模块530和存储介质间的存储数据通道有多条,该多条通道可以并行的进行读取第一数据。当IO命令为读操作命令时,跳转至步骤405,当IO命令为写操作命令时,跳转至步骤406。
步骤405,存储介质将第一数据发送给数据收发模块,数据收发模块发送第一数据至主机内存。
具体地,当IO命令为读操作命令时,数据收发模块530将所述读操作命令发送给存储介质,存储介质根据读操作命令读取第一数据,并将第一数据发送给数据收发模块630,数据收发模块530接收存储介质发送的第一数据。其中,数据收发模块530接收存储介质返回的第一数据后,通过DMA方式将第一数据发送给主机内存。完成后执行步骤407。
步骤406,主机写入第二数据至存储介质。
具体地,当IO命令为写操作命令时,命令解析模块520解析主机数据地址信息后,完成存储介质的配置,主机将第二数据写入至存储介质。完成后执行步骤407。
步骤407,数据收发模块发送完成消息至主机接口。
具体地,完成步骤405或者步骤406后,数据收发模块530向主机接口510发送完成消息。
步骤408,主机接口发送完成消息至主机。
步骤409,主机将元数据写入HAC。
步骤410,HAC接收元数据并保存到元数据缓存区。
具体地,当命令类型是将元数据写入本地的写请求时,主机将元数据写入本地元数据缓存区。
利用本发明实施例提供的快速数据读取方法,HAC接收主机发送的文件的读或写请求,读或写请求包括文件的元数据;当HAC根据所述元数据确定本地不具有所述文件时,根据预先接收的文件系统类型,解析文件系统的元数据,根据元数据解析文件的块数据,将文件的偏移信息和长度信息转化为文件块数据的地址信息;HAC将文件块数据的地址信息转化为IO命令,并将IO命令发送到存储介质,用以对存储介质进行读或写操作,使得文件系统的IO处理由HAC进行,主机在IO处理上的消耗大大减少,使得主机可以处理更多的其他业务,HAC能够以最小的代价集成到操作系统中,HAC集成到操作系统时对硬件的改动较小。
相应的,如图6所示,本发明实施例二提供一种用以实现实施例一所述方法的快速数据读取装置。该装置可以是前述实施例中的硬件加速器HAC,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述装置通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,其为本发明实施例装置包括:接口单元610,数据收发模块620,其中,
接口模块610,用于接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
数据收发模块620,用于根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;并且向所述中央处理器报告数据读/取结果。
进一步的,在一种实施例中,所述装置还包括:
查找单元,用于在所述读/写请求为读请求时,根据所述读请求中的元数据,查找本地内存中是否具有与所述元数据对应的文件;
命令解析模块,用于当所述查找单元根据所述元数据确定所述本地内存中不具有所述文件时,对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
命令转化模块,用于将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述中央处理器直接对所述存储介质进行读操作。
所述数据收发模块还用于:当所述读/写请求为读请求时,所述查找单元根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
在另一种实施例中,,当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述装置还包括:
查找单元,用于根据所述写请求中的元数据,查找本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述数据收发模块将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
同步单元,用于将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
当所述查找单元根据所述元数据确定所述本地不具有所述文件时,所述硬件加速控制器对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
命令转化模块,用于将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行写操作;
所述数据收发模块用于将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
利用本发明实施例提供的装置,使得文件系统的IO处理由HAC进行,IO处理速度被大大提高,而且主机在IO处理上的消耗大大减少,使得主机可以处理更多的其他业务,HAC能够以最小的代价集成到操作系统中,HAC集成到操作系统时对硬件的改动较小。
需要说明的是,本实施例提供的一种数据处理装置所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
如图7所示,其为本发明实施例三提供的快速数据读取装置的结构示意图。该装置包括:如图7所示,本实施例包括网络接口810、处理器820和存储器830。
系统总线840用于连接网络接口810、处理器820和存储器830。
网络接口810用于与主机和/或存储介质进行数据传输和通信。
存储器830可以是永久存储器,例如硬盘驱动器和闪存,存储器830中具有软件模块和设备驱动程序。软件模块能够执行本发明上述方法的各种功能模块;设备驱动程序可以是网络和接口驱动程序。
在启动时,这些软件组件被加载到存储器830中,然后被处理器820访问并执行如下指令:
通过网络接口810接收主机的中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
所述处理器820根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;
所述网络接口810向所述中央处理器报告数据读/取结果。
进一步地,所述读/写请求为读请求时,所述处理器820根据所述读请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
当所述HAC根据所述元数据确定所述本地内存中不具有所述文件时,对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令通过网络接口发送到存储介质,以代替所述主机直接对所述存储介质进行读操作。
进一步地,当所述读/写请求为读请求,所述处理器820根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,通过网络接口810将所述文件对应的数据发送给所述主机。
进一步地,当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述处理器820根据所述写请求中的元数据,查找所述本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述处理器820将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
通过所述网络接口810将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
进一步地,当所述处理器820根据所述元数据确定所述本地不具有所述文件时,所述处理器820对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行写操作;
将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
利用本发明实施例提供的装置,使得文件系统的IO处理由HAC进行,IO处理速度被大大提高,而且主机在IO处理上的消耗大大减少,使得主机可以处理更多的其他业务,HAC能够以最小的代价集成到操作系统中,HAC集成到操作系统时对硬件的改动较小。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种快速数据读写方法,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述硬件加速控制器通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,其特征在于,所述方法包括:
硬件加速控制器HAC接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;
向所述中央处理器报告数据读/取结果;
所述根据所述元数据,从所述文件中读取数据,或者,将需要写入所述文件的数据写入所述文件,进一步包括:
根据所述读/写请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
当所述HAC根据所述元数据确定所述本地内存中不具有所述文件时,所述硬件加速控制器对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述主机直接对所述存储介质进行读/写操作;
且当代替所述主机直接对所述存储介质进行写操作时,还包括:将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述读/写请求为读请求,所述HAC根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
3.如权利要求1所述的方法,其特征在于,所说方法还包括:当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述将需要写入所述文件的数据写入所述文件,进一步包括:
根据所述写请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述HAC将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
4.一种快速数据读写装置,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述硬件加速控制器通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,其特征在于,所述装置包括:
接口模块,用于接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
数据收发模块,用于根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;并且向所述中央处理器报告数据读/取结果;
查找单元,用于根据所述读/写请求中的元数据,查找所述硬件加速控制器的本地内存中是否具有与所述元数据对应的文件;
命令解析模块,用于当所述查找单元根据所述元数据确定所述本地内存中不具有所述文件时,对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
命令转化模块,用于将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令发送到存储介质,以代替所述中央处理器直接对所述存储介质进行读/写操作;
所述数据收发模块还用于,且当代替所述主机直接对所述存储介质进行写操作时,将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
5.如权利要求4所述的装置,其特征在于,所述数据收发模块还用于:当所述读/写请求为读请求时,所述查找单元根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
6.如权利要求4所述的装置,其特征在于,当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述装置还包括:
查找单元,用于根据所述写请求中的元数据,查找本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述数据收发模块将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
同步单元,用于将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
7.一种快速数据读写装置,应用于计算机系统中,所述计算机系统包括存储介质、主机以及硬件加速控制器HAC,所述硬件加速控制器通过接口与所述主机和存储介质相连,所述主机包括一中央处理器,所述主机与外部接口相连,其特征在于,所述装置包括:网络接口;处理器;存储器;
物理存储在所述存储器中的应用程序,所述应用程序包括可用于使所述处理器执行以下过程的指令:
通过网络接口接收中央处理器发送的读/写请求,所述读/写请求包括外部需要读取或写入数据的文件的元数据,所述读/写请求由所述中央处理器判断出系统进程发送的命令为到数据读/写请求后生成;
所述处理器根据所述元数据,从所述文件中读取数据;或者,将需要写入所述文件的数据写入所述文件;
所述网络接口向所述中央处理器报告数据读/取结果;
所述处理器根据所述读/写请求中的元数据,查找本地内存中是否具有与所述元数据对应的文件;
当所述HAC根据所述元数据确定所述本地内存中不具有所述文件时,对所述元数据进行解析,获取所述文件的块数据,所述块数据中包括所述文件的地址和长度信息;
将所述文件块数据的地址信息转化为存储介质能够识别的IO命令,并将所述IO命令通过网络接口发送到存储介质,以代替所述主机直接对所述存储介质进行读/写操作;
且当代替所述主机直接对所述存储介质进行写操作时,将所述需要写入存储介质中的数据写入到所述存储介质中与所述文件块数据的地址信息对应的存储空间。
8.如权利要求7所述的装置,其特征在于,当所述读/写请求为读请求,所述处理器根据所述文件元数据确定本地内存中具有所述元数据对应的文件时,将所述文件对应的数据发送给所述主机。
9.如权利要求7所述的装置,其特征在于,当所述读/写请求为写请求时,所述写请求中还包括需要写入存储介质中的数据,所述处理器根据所述写请求中的元数据,查找本地内存中是否具有与所述元数据对应的文件;
如果所述本地内存中具有与所述元数据对应的文件,所述处理器将所述需要写入存储介质中的数据,写入所述元数据对应的文件;
通过所述网络接口将所述本地内存中与所述元数据对应的文件,同步到所述存储介质中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/077693 WO2015172391A1 (zh) | 2014-05-16 | 2014-05-16 | 快速数据读写方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105393236A CN105393236A (zh) | 2016-03-09 |
CN105393236B true CN105393236B (zh) | 2018-06-26 |
Family
ID=54479207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480037236.0A Active CN105393236B (zh) | 2014-05-16 | 2014-05-16 | 快速数据读写方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105393236B (zh) |
WO (1) | WO2015172391A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214166B (zh) * | 2017-09-05 | 2022-05-24 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
CN109918319B (zh) * | 2019-03-22 | 2021-03-05 | 深圳忆联信息系统有限公司 | 一种固态硬盘控制器加速方法及其系统 |
CN112765055B (zh) * | 2019-11-01 | 2021-12-21 | 北京忆芯科技有限公司 | 存储设备的控制部件 |
CN111679794B (zh) * | 2020-06-17 | 2024-01-26 | 北京中存超为科技有限公司 | 多控存储系统中进行数据同步的方法和装置 |
CN113590520B (zh) * | 2021-06-15 | 2024-05-03 | 珠海一微半导体股份有限公司 | Spi系统自动写入数据的控制方法及spi系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1291747A (zh) * | 2000-11-24 | 2001-04-18 | 李楠甍 | 高速缓存设备及其使用方法 |
CN1622056A (zh) * | 2004-12-24 | 2005-06-01 | 北京中星微电子有限公司 | 一种访问文件的方法 |
CN1892619A (zh) * | 2005-07-06 | 2007-01-10 | 美国亿科三友公司 | Raid系统存储容量适应运行系统和方法 |
CN101799741A (zh) * | 2009-02-09 | 2010-08-11 | 联想(北京)有限公司 | 存储数据读取装置和方法 |
CN102981783A (zh) * | 2012-11-29 | 2013-03-20 | 浪潮电子信息产业股份有限公司 | 一种基于Nand Flash的Cache加速方法 |
-
2014
- 2014-05-16 CN CN201480037236.0A patent/CN105393236B/zh active Active
- 2014-05-16 WO PCT/CN2014/077693 patent/WO2015172391A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1291747A (zh) * | 2000-11-24 | 2001-04-18 | 李楠甍 | 高速缓存设备及其使用方法 |
CN1622056A (zh) * | 2004-12-24 | 2005-06-01 | 北京中星微电子有限公司 | 一种访问文件的方法 |
CN1892619A (zh) * | 2005-07-06 | 2007-01-10 | 美国亿科三友公司 | Raid系统存储容量适应运行系统和方法 |
CN101799741A (zh) * | 2009-02-09 | 2010-08-11 | 联想(北京)有限公司 | 存储数据读取装置和方法 |
CN102981783A (zh) * | 2012-11-29 | 2013-03-20 | 浪潮电子信息产业股份有限公司 | 一种基于Nand Flash的Cache加速方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015172391A1 (zh) | 2015-11-19 |
CN105393236A (zh) | 2016-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105393236B (zh) | 快速数据读写方法和装置 | |
US8762627B2 (en) | Memory logical defragmentation during garbage collection | |
US8244962B2 (en) | Command processor for a data storage device | |
US8433845B2 (en) | Data storage device which serializes memory device ready/busy signals | |
CN109800185B (zh) | 一种数据存储系统中的数据缓存方法 | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
CN113568566B (zh) | 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器 | |
CN105117351A (zh) | 向缓存写入数据的方法及装置 | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
US8838873B2 (en) | Methods and apparatus for data access by a reprogrammable circuit module | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
CN1831750A (zh) | 数据控制设备 | |
JP2014071904A (ja) | コンピュータシステム及びコンピュータシステムのデータ管理方法 | |
US8046507B2 (en) | Computer, external storage and method for processing data information in external storage | |
US7680980B2 (en) | Image forming apparatus | |
CN101286177A (zh) | 一种在文件分配表中给文件分配空间的方法及装置 | |
US20190107952A1 (en) | Logical address history management in memory device | |
KR101341995B1 (ko) | 공유 데이터 저장소 관리 장치 및 방법 | |
CN106777288B (zh) | 一种快速拆分虚拟化磁盘镜像的系统及方法 | |
CN110471801A (zh) | 一种存储设备的量产过程信息的管理方法和装置以及设备 | |
CN113568567B (zh) | 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器 | |
CN114461134B (zh) | 硬盘零碎块读写装置、方法、计算机设备和存储介质 | |
CN113485948B (zh) | Nvm坏块管理方法与控制部件 | |
JP6704127B2 (ja) | 情報処理装置 | |
CN113849346A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210425 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |