CN104850502A - 一种数据的访问方法、装置及设备 - Google Patents
一种数据的访问方法、装置及设备 Download PDFInfo
- Publication number
- CN104850502A CN104850502A CN201510223983.XA CN201510223983A CN104850502A CN 104850502 A CN104850502 A CN 104850502A CN 201510223983 A CN201510223983 A CN 201510223983A CN 104850502 A CN104850502 A CN 104850502A
- Authority
- CN
- China
- Prior art keywords
- access
- request
- lba
- message queue
- memory device
- 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
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000013507 mapping Methods 0.000 claims abstract description 73
- 238000003860 storage Methods 0.000 claims abstract description 43
- 230000008569 process Effects 0.000 claims description 33
- 238000001514 detection method Methods 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 10
- 230000001131 transforming effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- GNFTZDOKVXKIBK-UHFFFAOYSA-N 3-(2-methoxyethoxy)benzohydrazide Chemical compound COCCOC1=CC=CC(C(=O)NN)=C1 GNFTZDOKVXKIBK-UHFFFAOYSA-N 0.000 description 1
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据的访问方法、装置及设备。本发明实施例方法包括:获取第一访问请求,所述第一访问请求携带目标数据所在文件的句柄;根据所述句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的所述inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,所述第一级用户空间映射表包括所述句柄、inode number和Offset的对应关系,所述第二级用户空间映射表包括所述inode number、Offset和第一LBA的对应关系;根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,所述消息队列是由所述存储设备的驱动创建的用于提供访问接口,可以缩短访问路径,减少时延,降低CPU开销。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据的访问方法、装置及设备。
背景技术
为了减少数据访问时的处理器(CPU)占用率,简化数据传输流程,通常会使用DMA来传输数据,即不需要CPU的参与,直接在内存和I/O设备之间直接进行数据交换。
传统地,用户进程访问储存设备时,流程如下:用户态进程发起的访问,先经过标准库处理,然后由标准库发起系统调用,数据进入文件系统,文件系统对文件做访问权限检测,保证访问的安全性;然后进入内核驱动处理,内核驱动组建IO访问消息,并且执行IO调度;最后由存储设备处理数据。由于用户进程(APP)使用的是虚拟地址,通常在物理上是不连续的,而DMA操作需要知道物理地址,因此需要将APP空间中的数据拷入连续的物理空间中,DMA才能操作。
这种传统的方式中,文件访问流程中经历的软件层次比较多,软件的开销大;并且,访问过程中数据需要从用户态拷贝到内核态再拷贝到储存设备,或者从储存设备拷贝到内核态再拷贝到用户态,这将加大CPU的开销;进一步地,在访问PCIe SSD硬盘时,由于PCIe SSD硬盘相比传统机械硬盘访问速度快,通过文件系统访问PCIe SSD硬盘时,文件系统造成的延时比较严重。
发明内容
本发明实施例提供了一种数据的访问方法、装置及设备,用于缩短访问路径,减少时延,降低CPU开销。
第一方面,本发明提供了一种数据的访问方法,包括:
获取第一访问请求,所述第一访问请求携带目标数据所在文件的句柄;
根据所述句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的所述inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,所述第一级用户空间映射表包括所述句柄、inode number和Offset的对应关系,所述第二级用户空间映射表包括所述inodenumber、Offset和第一LBA的对应关系;
根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,所述消息队列是由所述存储设备的驱动创建的用于提供访问接口。
在第一方面的第一种可能的实现方式中,所述根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作的步骤之后,还包括:根据所述inode number查找权限检测表,并获取第二LBA,在确定所述第一LBA是所述第二LBA的子集时,返回所述目标数据,其中,所述权限检测表是由所述存储设备的驱动创建的用于提供给所述存储设备进行权限检测。
根据第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,具体包括:生成第二访问请求,所述第二访问请求携带所述inode number和第一LBA;通过所述消息队列向所述存储设备发送所述第二访问请求,所述第二访问请求用于访问所述目标数据。
根据第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述第二访问请求还携带所述文件在内存中的物理地址,所述物理地址是由内核根据接收到文件的虚地址进行转化得到文件的物理地址。
根据第一方面的第二种可能的实现方式,在第四种可能的实现方式中,每一个访问进程对应一个所述消息队列。
根据第一方面的第二种可能的实现方式,在第五种可能的实现方式中,所述通过预先建立的消息队列向所述存储设备发送所述第二访问请求的步骤之前,还包括:确定所述存储设备的驱动中是否创建有与所述第二访问请求对应的消息队列,若否,则向所述存储设备的驱动发送创建请求,所述创建请求用于创建所述消息队列;在所述存储设备的驱动成功创建所述消息队列后,接收所述存储设备返回的所述消息队列的物理地址和寄存器地址。
根据第一方面或第一方面的第一种可能的实现方式,在第六种可能的实现方式中,所述根据所述句柄查找预置的第一级用户空间映射表的步骤之前,还包括:向文件系统发送获取请求,所述获取请求携带所述句柄,以使得所述文件系统根据所述句柄获取并返回所述文件的inode number、Offset和所述第一LBA的对应关系;根据所述对应关系生成所述第一级用户空间映射表和第二级用户空间映射表。
根据第一方面或第一方面的第一种可能的实现方式,在第七种可能的实现方式中,所述第二级用户空间映射表为红黑二叉树组织。
第二方面,本发明提供了一种数据的访问装置,可包括:
访问单元,用于获取第一访问请求,所述第一访问请求携带目标数据所在文件的句柄;
获取单元,用于根据所述句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的所述inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,所述第一级用户空间映射表包括所述句柄、inode number和Offset的对应关系,所述第二级用户空间映射表包括所述inode number、Offset和第一LBA的对应关系;
处理单元,用于根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,所述消息队列是由所述存储设备的驱动创建的用于提供访问接口。
在第二方面的第一种可能的实现方式中,所述装置还包括:检测单元,用于根据所述inode number查找权限检测表,并获取第二LBA,在确定所述第一LBA是所述第二LBA的子集时,返回所述目标数据,其中,所述权限检测表是由所述存储设备的驱动创建的用于提供给所述存储设备进行权限检测。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理单元,还用于生成第二访问请求,所述第二访问请求携带所述inode number和第一LBA;通过所述消息队列向所述存储设备发送所述第二访问请求,所述第二访问请求用于访问所述目标数据,其中,所述第二访问请求还携带所述文件在内存中的物理地址,所述物理地址是由内核根据接收到文件的虚地址进行转化得到文件的物理地址,其中,每一个访问进程对应一个所述消息队列。
结合第二方面,或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:创建单元,用于确定所述存储设备的驱动中是否创建有与所述第二访问请求对应的消息队列,若否,则向所述存储设备的驱动发送创建请求,所述创建请求用于创建所述消息队列;在所述存储设备的驱动成功创建所述消息队列后,接收所述存储设备返回的所述消息队列的物理地址和寄存器地址。
结合第二方面,或第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:生成单元,用于向文件系统发送获取请求,所述获取请求携带所述句柄,以使得所述文件系统根据所述句柄获取并返回所述文件的inode number、Offset和所述第一LBA的对应关系;根据所述对应关系生成所述第一级用户空间映射表和第二级用户空间映射表。
第三方面,本发明提供了一种数据的访问设备,其可包括如第二方面所述的数据的访问装置。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例预先建立用户空间映射表,并在存储设备的驱动中预先创建消息队列,在文件访问时可以通过预置的用户空间映射表获取第一LBA,采用第一LBA等信息触发通过消息队列访问存储设备中的目标数据的操作。本实施例中的文件访问不再经过文件系统,访问存储设备时从用户态通过消息队列直接进入到存储设备,缩短了文件访问的路径,减少了时延,访问过程中文件数据从用户态直接拷贝到储存设备或从存储设备直接拷贝到用户态,无需经过内核态,有效降低了CPU的开销。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中数据的访问方法的流程示意图;
图2是本发明实施例中第二级用户空间映射表的红黑二叉树组织图;
图3是本发明实施例中创建消息队列时的信令流程图;
图4是本发明实施例中权限检测表的红黑二叉树组织图;
图5是本发明实施例中创建用户空间映射表和权限检测表的信令流程图;
图6是本发明实施例中数据的访问装置的一个结构示意图;
图7是本发明实施例中数据的访问装置的另一个结构示意图;
图8是本发明实施例中数据的访问设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种数据的访问方法。本发明实施例还提供相应的数据的访问装置,以及数据的访问设备,请参与图1至图8。下面通过具体实施例,分别进行详细的说明。
本发明实施例提供的数据的访问方法可适用于计算机的多种操作系统下,例如,可应用于Linux系统,本发明中,用户进程(Application,APP)无需经过内核态即可以直接访问存储设备。下面将结合图1对本发明实施例进行详细说明:
本实施例提供了一种数据的访问方法,下面将以数据的访问装置的角度对该方法进行描述,其中,该数据的访问装置可以执行计算机中的程序指令,这些程序指令可以是位于用户程序库(User Library)中的程序指令。请参考图1,图1为本发明实施例提供的一种数据的访问方法的流程示意图,其中,数据的访问方法可包括如下步骤:
步骤101、获取第一访问请求,第一访问请求携带目标数据所在文件的句柄;
该数据的访问装置可以为APP提供标准的接口,如读接口或写接口等。本发明实施例中的APP可以通过使用LD_PRELOAD命令优先链接UserLibrary文件。APP在读或写数据时(以下描述为目标数据),首先获取该目标数据所在的文件,然后根据文件的句柄获取该目标数据的其他参数。句柄是文件的标识,使得APP能够通过句柄访问相应的文件,对文件进行操作。其中,打开文件即可以获取到文件的句柄。其中,本实施例中的文件可以是具有一定独立功能的程序模块、一组数据或一组文字等。
APP可以通过向User Library发送访问请求来访问目标数据,其中,为了描述方便,将该访问请求描述为第一访问请求,该第一访问请求携带目标数据所在文件的句柄。
其中,User Library接收到第一访问请求后,例如读目标数据的请求时,可以采用现有技术中的方法,即将目标数据从储存设备拷贝到内核态再拷贝到用户态,此外,也可以通过本发明实施例中的方法读取目标数据。具体的,数据的访问装置获取APP的第一访问请求,判断是否需要通过旁路文件系统来访问存储设备,若不需要,则按照现有技术的方法访问存储设备,若需要,则执行步骤102。
步骤102、根据句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,第一级用户空间映射表包括句柄、inode number和Offset的对应关系,第二级用户空间映射表包括inode number、Offset和第一LBA的对应关系;
用户空间映射表是文件在存储设备中存放的Extent的起始LBA跟文件Offset的对应关系表,可以采用两级表设计,即第一级用户空间映射表和第二级用户空间映射表。其中,第一级用户空间映射表包括句柄、inode number和Offset的对应关系,第二级用户空间映射表包括inode number、Offset和第一LBA的对应关系。其中,第一级用户空间映射表如下表一所示,第二级空间映射表如下表二所示:
表一、第一级用户空间映射表
fd | iNode Number | Open File Flag | File Offset |
201 | 350 | R | 0 |
300 | 480 | RW | 2KB |
400 | 350 | RW | 5KB |
... | ... | ... | ... |
表二、第二级用户空间映射表
iNode Number | File Offset | LENGTH | SSD LBA |
350 | 20 | 2KB | 500 |
480 | 2000 | 8KB | 2000 |
520 | 3000 | 2KB | 10000 |
获取到APP的第一访问请求时,首先可以利用句柄查第一级用户空间映射表,找到文件iNode Number和Offset;再利用文件iNode Number、文件偏移Offset和访问文件长度Length来查询第二级用户空间映射表,计算出该文件偏移Offset对应于存储设备上的Extent的第一LBA。需说明的是,由于一个文件的数据Size可能会跨越几个Extent,经过计算和查表后,可能会是几个LBA地址和几个LENGTH。
进一步地,为了加快查表速度,第二级用户空间映射表可采用红黑二叉树来组织,具体可参见图2,图2是第二级用户空间映射表基于iNode Number的红黑二叉树组织图,HEAD是表头。
步骤103、根据inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,消息队列是由存储设备的驱动创建的用于提供访问接口。
当查表获得inode number和LBA之后,则可以触发访问存储设备中的目标数据的操作,需说明的是,存储设备的驱动需要预先为该用户进程提供一个函数接口以便数据的访问装置中的程序进行调用,从而使得数据的访问装置可以通过该消息队列访问存储设备中的目标数据。
其中,访问存储设备中的目标数据的操作,具体可以包括:直接访问存储设备中的目标数据;或,先将目标数据写入内存中,然后访问内存中的目标数据。
具体的,触发通过预先建立的消息队列访问存储设备中的目标数据的操作,可以通过构造第二访问消息来实现。例如,生成第二访问请求,第二访问请求携带inode number和第一LBA;通过消息队列向存储设备发送第二访问请求,第二访问请求用于访问目标数据。
其中,第二访问请求的消息结构可参阅下表三:
表三、I/O消息格式
由上表可知,第二访问请求为IO访问消息。其中,将消息功能(如:读或者写)、IO消息SEG个数、针对数据写操作的特定模式、消息的标识、文件的iNode Number、访问数据的每个SEG的LBA起始地址、每个访问数据长度,和数据在内存中存放的地址(读是将来自存储设备的数据保存到内存的地址,写是发往存储设备的数据在内存中存放的地址)构造IO访问消息并存入消息队列中。需说明的是,第二访问请求携带的文件在内存中的物理地址是由内核根据接收到文件的虚地址进行转化得到文件的物理地址。由于存储设备通过DMA访问主机内存中的数据时,需要知道存放数据的主机内存的地址是物理地址,但是APP传递给User Library的是虚拟地址,传统做法是User Library自己先申请一块物理地址,将APP数据从虚拟地址中拷贝到物理地址中,但是这样做的话,在拷贝数据时,将会占用CPU资源。为了解决这个问题,本发明实施例将APP数据的虚拟地址传入内核中,在内核中将其转化为一个或者一组物理地址(连续的一段虚拟地址空间可能对应几段不连续的物理地址空间)。
IO访问消息准备好后,将IO访问消息在消息队列中存放的指针从用户态直接发给存储设备的命令寄存器,从而触发存储设备处理。需说明的是,储存设备在为访问消息创建消息队列时,已将存储设备命令寄存器映射到了用户空间。
User Library在接收到第一访问请求后,在将构造好的第二访问请求发送给储存设备之前,还包括:确定存储设备的驱动中是否创建有与第二访问请求对应的消息队列,若否,则向存储设备的驱动发送创建请求,创建请求用于创建消息队列;在存储设备的驱动成功创建消息队列后,接收存储设备返回的消息队列的物理地址和寄存器地址。具体可参阅图3,图3是创建消息队列的信令流程图。由图3可知,创建消息队列包括如下步骤:
步骤a、创建消息队列时,User Library先判断消息队列是否已经存在,如果存在就不用创建了;
一个访问进程对应一个消息队列,若已经为该访问进程创建了消息队列,则无需重新创建,采用原消息队列即可,若本次访问数据是一个新的访问进程,则需要为本次访问创建一个消息队列。
步骤b、User Library调用创建消息队列的接口,进入存储设备驱动(Storage Device Driver)中;
步骤c、存储设备驱动中申请一段连续的物理地址来供存储IO消息用;
步骤d、存储设备驱动将这段连续物理地址空间的起始地址和长度配到存储设备硬件中;
步骤e、存储设备驱动获取用户态访问命令寄存器地址,该寄存器用来向存储设备发送访问命令;
步骤f、函数调用返回User Library后,User Library不能操作在存储设备驱动中分配的内存空间,需要对内存空间做一次mmap映射后才能访问;
步骤g、存储设备驱动中获取到的存储设备访问命令寄存器地址,在UserLibrary中也不能直接操作,也需要对寄存器地址使用mmap来映射后才能访问。
步骤h、记录消息队列创建成功。
一种实现方式中,存储设备可以提供多队列接口,每个用户进程(第二访问请求)使用一个消息队列,多个APP进程可以同时访问存储设备,支持多进程同时访问,进程之间不用互斥操作。
进一步地,由于通过旁路文件系统来访问存储设备,传统文件系统保证文件访问的权限检测也没有了,为了保证文件访问的安全性,将文件访问的权限检测过程放在存储设备中进行。具体的,可以根据inode number查找权限检测表,并获取第二LBA,在确定第一LBA是第二LBA的子集时,返回目标数据。需说明的是,权限检测表是由存储设备的驱动创建的用于提供给存储设备进行权限检测。下面将对该权限检测表进行详细说明,此处不再赘述。
即访问文件之前,先建立权限检测表,为了减少存储设备硬件的复杂度,权限检测表的创建和管理,在内核软件中实现,权限表建好后,同步到存储设备中,存储设备只做权限检测动作。
为了减少权限检测查表的时间,权限检测表采用两级表的组织,具体可参阅图4,图4是权限检测表的红黑二叉树组织图。由图4可知,第一级表是基于用户态访问队列来组织的,每个用户态队列节点下根据iNode Number为Key来组建红黑二叉树;第二级表是基于iNode Number来组建的,Key是每个iNode Number所包含的所有Extent的LBA和Size。
下面将结合图5详细说明创建用户空间映射表和权限检测表的具体过程,图5是创建用户空间映射表和权限检测表的信令流程图。其主要可包括:
步骤1、调用生成用户空间映射表的接口,传入参数的文件句柄;
步骤2、在文件系统中利用文件句柄Fd找到文件inode number;
步骤3、根据文件inode number找到文件在存储设备上的Extent的起始地址跟文件offset的关系,并将其组成一个红黑二叉树;
步骤4、返回对应关系表地址和长度给User Library;
步骤5、User Library拷贝对应关系表到用户态空间,生成用户空间映射表;
步骤6、调用生成文件访问权限检测表接口;
步骤7、在存储设备驱动内存中生成文件访问权限检测表,每个文件inode一个节点,按照红黑二叉树来组织;
步骤8、通知存储设备同步权限检测表;
步骤9、存储设备解析收到的命令,将权限检测表拷贝到存储设备中,并写入存储设备寄存器中,完成后通知存储设备驱动;
步骤10、存储设备驱动返回User Library,权限检测表生成完毕。
下面将结合储存设备对本发明实施例进行详细描述:
当存储设备设备收到第二访问请求后根据Msg_Tag和创建消息队列时配到存储设备中的基地址找到在用户态空间存放第二访问请求的地址,使用DMA读取SEG_Num*16+16(消息头)的消息内容到存储设备;存储设备先找到是那个消息队列通道发起了访问,根据消息队列号从权限检测表中找到对应的队列号,再根据第二访问请求中的iNode Number字段查询权限检测表,如果权限不匹配,则异常返回;如果权限匹配,则根据第二访问请求中的每个Block和Sector_Num来判断该Block起始的空间是否在iNode Number所包含的空间中,如果有一个Block不在范围内,异常返回;如果在范围内,写操作时,从主机内存中的Buffer_Address中读取Sector_Num*512(每个sector大小为512Byte)的数据到存储设备缓存,然后写入存储介质中;读操作时,先从存储介质中读取Sector_Num*512的数据到存储设备缓存,然后写入主机内存的Buffer_Address中。
存储设备处理完成IO后,将完成状态写入主机内存的完成队列中,存储设备产生中断,待存储设备驱动完成中断处理,通知User Library消息处理完毕;User Library接收到IO完成消息后,做用户态完成处理,然后返回给APP,该次文件访问处理完成。
由上可知,本发明实施例通过预置的用户空间映射表获取第一LBA,采用第一LBA等信息构造访问请求,并直接通过消息队列将该访问请求发给存储设备,由存储设备对该访问请求进行权限检测。本实施例中的文件访问不再经过文件系统,访问存储设备的访问请求从用户态直接发送给存储设备,缩短了文件访问的路径,减少了时延,访问过程中文件数据从用户态直接拷贝到储存设备,无需经过内核态,有效降低了CPU的开销。
为便于更好的实施本发明实施例提供的文件的访问方法,本发明实施例还提供一种基于上述文件的访问方法的装置。其中名词的含义与上述文件的访问方法中相同,具体实现细节可以参考方法实施例中的说明。
本实施例提供一种文件的访问装置600,请参阅图6,图6是文件的访问装置的一个结构示意图,其可包括:
访问单元601,用于获取第一访问请求,第一访问请求携带目标数据所在文件的句柄;
获取单元602,用于根据句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,第一级用户空间映射表包括句柄、inode number和Offset的对应关系,第二级用户空间映射表包括inodenumber、Offset和第一LBA的对应关;
处理单元603,用于根据inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,消息队列是由存储设备的驱动创建的用于提供访问接口。
此外,该文件的访问装置还可以包括:检测单元604,用于根据inodenumber查找权限检测表,并获取第二LBA,在确定第一LBA是第二LBA的子集时,返回目标数据,其中,权限检测表是由存储设备的驱动创建的用于提供给存储设备进行权限检测。
其中,处理单元603,还用于生成第二访问请求,第二访问请求携带inodenumber和第一LBA;通过消息队列向存储设备发送第二访问请求,第二访问请求用于访问目标数据,其中,第二访问请求还携带文件在内存中的物理地址,物理地址是由内核根据接收到文件的虚地址进行转化得到文件的物理地址。其中,每一个访问进程对应一个消息队列。
装置还包括:创建单元605,用于确定存储设备的驱动中是否创建有与第二访问请求对应的消息队列,若否,则向存储设备的驱动发送创建请求,创建请求用于创建消息队列;在存储设备的驱动成功创建消息队列后,接收存储设备返回的消息队列的物理地址和寄存器地址。
装置还包括:生成单元606,用于向文件系统发送获取请求,获取请求携带句柄,以使得文件系统根据句柄获取并返回文件的inode number、Offset和第一LBA的对应关系;根据对应关系生成第一级用户空间映射表和第二级用户空间映射表。
需说明的是,本发明实施例的具体实施可参见上述实施例,此处不再赘述。
请参考图7,图7为本发明实施例提供的文件的访问装置的另一结构示意图,其中,可包括至少一个处理器701(例如CPU,Central Processing Unit),至少一个网络接口或者其它通信接口,存储器702,和至少一个通信总线,用于实现这些装置之间的连接通信。处理器701用于执行存储器中存储的可执行模块,例如计算机程序。存储器702可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个网络接口(可以是有线或者无线)实现该系统网关与至少一个其它网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
如图7所示,在一些实施方式中,存储器702中存储了程序指令,程序指令可以被处理器701执行,处理器701具体执行以下步骤:
获取第一访问请求,第一访问请求携带目标数据所在文件的句柄;根据句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,第一级用户空间映射表包括句柄、inode number和Offset的对应关系,第二级用户空间映射表包括inode number、Offset和第一LBA的对应关系;根据inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,消息队列是由存储设备的驱动创建的用于提供访问接口。
在一些实施方式中,处理器701还可以执行以下步骤:根据inode number查找权限检测表,并获取第二LBA,在确定第一LBA是第二LBA的子集时,返回目标数据,其中,权限检测表是由存储设备的驱动创建的用于提供给存储设备进行权限检测。
在一些实施方式中,处理器701还可以执行以下步骤:确定存储设备的驱动中是否创建有与第二访问请求对应的消息队列,若否,则向存储设备的驱动发送创建请求,创建请求用于创建消息队列;在存储设备的驱动成功创建消息队列后,接收存储设备返回的消息队列的物理地址和寄存器地址。
在一些实施方式中,处理器701还可以执行以下步骤:向文件系统发送获取请求,获取请求携带句柄,以使得文件系统根据句柄获取并返回文件的inode number、Offset和第一LBA的对应关系;根据对应关系生成第一级用户空间映射表和第二级用户空间映射表。
此外,本发明还提供了一种数据的访问设备,该数据的访问设备可包括:数据的访问装置600;其中,数据的访问装置600的具体实施可参见上述实施例,此处不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本发明所提供的一种数据的访问方法、装置及设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种数据的访问方法,其特征在于,包括:
获取第一访问请求,所述第一访问请求携带目标数据所在文件的句柄;
根据所述句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的所述inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,所述第一级用户空间映射表包括所述句柄、inode number和Offset的对应关系,所述第二级用户空间映射表包括所述inodenumber、Offset和第一LBA的对应关系;
根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,所述消息队列是由所述存储设备的驱动创建的用于提供访问接口。
2.根据权利要求1所述的方法,其特征在于,所述根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作的步骤之后,还包括:
根据所述inode number查找权限检测表,并获取第二LBA,在确定所述第一LBA是所述第二LBA的子集时,返回所述目标数据,其中,所述权限检测表是由所述存储设备的驱动创建的用于提供给所述存储设备进行权限检测。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述inodenumber和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,具体包括:
生成第二访问请求,所述第二访问请求携带所述inode number和第一LBA;
通过所述消息队列向所述存储设备发送所述第二访问请求,所述第二访问请求用于访问所述目标数据。
4.根据权利要求3所述的方法,其特征在于,
所述第二访问请求还携带所述文件在内存中的物理地址,所述物理地址是由内核根据接收到文件的虚地址进行转化得到文件的物理地址。
5.根据权利要求3所述的方法,其特征在于,
每一个访问进程对应一个所述消息队列。
6.根据权利要求3所述的方法,其特征在于,所述通过预先建立的消息队列向所述存储设备发送所述第二访问请求的步骤之前,还包括:
确定所述存储设备的驱动中是否创建有与所述第二访问请求对应的消息队列,若否,则向所述存储设备的驱动发送创建请求,所述创建请求用于创建所述消息队列;
在所述存储设备的驱动成功创建所述消息队列后,接收所述存储设备返回的所述消息队列的物理地址和寄存器地址。
7.根据权利要求1或2所述的方法,其特征在于,所述获取第一访问请求的步骤之后,所述根据所述句柄查找预置的第一级用户空间映射表的步骤之前,还包括:
向文件系统发送获取请求,所述获取请求携带所述句柄,以使得所述文件系统根据所述句柄获取并返回所述文件的inode number、Offset和所述第一LBA的对应关系;
根据所述对应关系生成所述第一级用户空间映射表和第二级用户空间映射表。
8.根据权利要求1或2所述的方法,其特征在于,
所述第二级用户空间映射表为红黑二叉树组织。
9.一种数据的访问装置,其特征在于,包括:
访问单元,用于获取第一访问请求,所述第一访问请求携带目标数据所在文件的句柄;
获取单元,用于根据所述句柄查找预置的第一级用户空间映射表,获取inode number和Offset,并根据获取到的所述inode number和Offset查找预置的第二级用户空间映射表,获取第一LBA,其中,所述第一级用户空间映射表包括所述句柄、inode number和Offset的对应关系,所述第二级用户空间映射表包括所述inode number、Offset和第一LBA的对应关系;
处理单元,用于根据所述inode number和第一LBA触发通过预先建立的消息队列访问存储设备中的目标数据的操作,其中,所述消息队列是由所述存储设备的驱动创建的用于提供访问接口。
10.根据权利要求9所述的装置,其特征在于,
所述装置还包括:检测单元,用于根据所述inode number查找权限检测表,并获取第二LBA,在确定所述第一LBA是所述第二LBA的子集时,返回所述目标数据,其中,所述权限检测表是由所述存储设备的驱动创建的用于提供给所述存储设备进行权限检测。
11.根据权利要求9或10所述的装置,其特征在于,
所述处理单元,还用于生成第二访问请求,所述第二访问请求携带所述inode number和第一LBA;通过所述消息队列向所述存储设备发送所述第二访问请求,所述第二访问请求用于访问所述目标数据,其中,所述第二访问请求还携带所述文件在内存中的物理地址,所述物理地址是由内核根据接收到文件的虚地址进行转化得到文件的物理地址,其中,每一个访问进程对应一个所述消息队列。
12.根据权利要求9或10所述的装置,其特征在于,
所述装置还包括:创建单元,用于确定所述存储设备的驱动中是否创建有与所述第二访问请求对应的消息队列,若否,则向所述存储设备的驱动发送创建请求,所述创建请求用于创建所述消息队列;在所述存储设备的驱动成功创建所述消息队列后,接收所述存储设备返回的所述消息队列的物理地址和寄存器地址。
13.根据权利要求9或10所述的装置,其特征在于,
所述装置还包括:生成单元,用于向文件系统发送获取请求,所述获取请求携带所述句柄,以使得所述文件系统根据所述句柄获取并返回所述文件的inode number、Offset和所述第一LBA的对应关系;根据所述对应关系生成所述第一级用户空间映射表和第二级用户空间映射表。
14.一种数据的访问设备,其特征在于,包括如权利要求9-13任一所述的数据的访问装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510223983.XA CN104850502B (zh) | 2015-05-05 | 2015-05-05 | 一种数据的访问方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510223983.XA CN104850502B (zh) | 2015-05-05 | 2015-05-05 | 一种数据的访问方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104850502A true CN104850502A (zh) | 2015-08-19 |
CN104850502B CN104850502B (zh) | 2018-03-09 |
Family
ID=53850155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510223983.XA Active CN104850502B (zh) | 2015-05-05 | 2015-05-05 | 一种数据的访问方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104850502B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107566506A (zh) * | 2017-09-15 | 2018-01-09 | 华为技术有限公司 | 一种数据访问方法及装置 |
CN107924405A (zh) * | 2016-01-29 | 2018-04-17 | 慧与发展有限责任合伙企业 | 在存储设备中存储数据 |
CN110187835A (zh) * | 2019-05-24 | 2019-08-30 | 北京百度网讯科技有限公司 | 用于管理访问请求的方法、装置、设备和存储介质 |
CN110727604A (zh) * | 2019-08-26 | 2020-01-24 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN111241355A (zh) * | 2020-01-08 | 2020-06-05 | 浪潮天元通信信息系统有限公司 | 消息转发方法及服务端 |
CN112615917A (zh) * | 2017-12-26 | 2021-04-06 | 华为技术有限公司 | 存储系统中存储设备的管理方法及存储系统 |
CN113660336A (zh) * | 2018-03-30 | 2021-11-16 | 北京忆芯科技有限公司 | 利用kv存储设备的云计算与雾计算系统 |
CN114090197A (zh) * | 2021-10-19 | 2022-02-25 | 山东浪潮科学研究院有限公司 | 一种多进程awg访问控制的优化方法 |
CN114327302A (zh) * | 2022-03-11 | 2022-04-12 | 阿里云计算有限公司 | 处理对象存储访问的方法、装置及系统 |
CN114579596A (zh) * | 2022-05-06 | 2022-06-03 | 达而观数据(成都)有限公司 | 一种实时更新搜索引擎索引数据的方法及系统 |
WO2024098762A1 (zh) * | 2022-11-07 | 2024-05-16 | 华为技术有限公司 | 数据访问方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459669A (zh) * | 2008-12-29 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种网络文件系统的访问方法和装置 |
CN102819497A (zh) * | 2012-05-31 | 2012-12-12 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
US20140310473A1 (en) * | 2013-04-11 | 2014-10-16 | Institute of Computer Science (ICS) of the Foundation for Research and Technology-Hellas (FOR | Storage i/o path partitioning to eliminate i/o interference in consolidated servers |
CN104424034A (zh) * | 2013-09-04 | 2015-03-18 | 华为技术有限公司 | 硬件资源访问方法及装置 |
-
2015
- 2015-05-05 CN CN201510223983.XA patent/CN104850502B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459669A (zh) * | 2008-12-29 | 2009-06-17 | 成都市华为赛门铁克科技有限公司 | 一种网络文件系统的访问方法和装置 |
CN102819497A (zh) * | 2012-05-31 | 2012-12-12 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
US20140310473A1 (en) * | 2013-04-11 | 2014-10-16 | Institute of Computer Science (ICS) of the Foundation for Research and Technology-Hellas (FOR | Storage i/o path partitioning to eliminate i/o interference in consolidated servers |
CN104424034A (zh) * | 2013-09-04 | 2015-03-18 | 华为技术有限公司 | 硬件资源访问方法及装置 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107924405B (zh) * | 2016-01-29 | 2022-03-08 | 慧与发展有限责任合伙企业 | 用于存储数据的系统和方法、以及计算机可读介质 |
CN107924405A (zh) * | 2016-01-29 | 2018-04-17 | 慧与发展有限责任合伙企业 | 在存储设备中存储数据 |
CN107566506B (zh) * | 2017-09-15 | 2020-03-10 | 华为技术有限公司 | 一种数据访问方法及装置 |
CN107566506A (zh) * | 2017-09-15 | 2018-01-09 | 华为技术有限公司 | 一种数据访问方法及装置 |
WO2019052214A1 (zh) * | 2017-09-15 | 2019-03-21 | 华为技术有限公司 | 一种数据访问方法及装置 |
CN112615917B (zh) * | 2017-12-26 | 2024-04-12 | 华为技术有限公司 | 存储系统中存储设备的管理方法及存储系统 |
CN112615917A (zh) * | 2017-12-26 | 2021-04-06 | 华为技术有限公司 | 存储系统中存储设备的管理方法及存储系统 |
CN113660336A (zh) * | 2018-03-30 | 2021-11-16 | 北京忆芯科技有限公司 | 利用kv存储设备的云计算与雾计算系统 |
CN113660336B (zh) * | 2018-03-30 | 2024-03-15 | 北京忆芯科技有限公司 | 利用kv存储设备的云计算与雾计算系统 |
CN110187835B (zh) * | 2019-05-24 | 2023-02-03 | 北京百度网讯科技有限公司 | 用于管理访问请求的方法、装置、设备和存储介质 |
CN110187835A (zh) * | 2019-05-24 | 2019-08-30 | 北京百度网讯科技有限公司 | 用于管理访问请求的方法、装置、设备和存储介质 |
CN110727604A (zh) * | 2019-08-26 | 2020-01-24 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN111241355B (zh) * | 2020-01-08 | 2023-06-16 | 浪潮通信信息系统有限公司 | 消息转发方法及服务端 |
CN111241355A (zh) * | 2020-01-08 | 2020-06-05 | 浪潮天元通信信息系统有限公司 | 消息转发方法及服务端 |
CN114090197A (zh) * | 2021-10-19 | 2022-02-25 | 山东浪潮科学研究院有限公司 | 一种多进程awg访问控制的优化方法 |
CN114090197B (zh) * | 2021-10-19 | 2024-05-28 | 山东浪潮科学研究院有限公司 | 一种多进程awg访问控制的优化方法 |
CN114327302A (zh) * | 2022-03-11 | 2022-04-12 | 阿里云计算有限公司 | 处理对象存储访问的方法、装置及系统 |
WO2023169269A1 (zh) * | 2022-03-11 | 2023-09-14 | 阿里云计算有限公司 | 处理对象存储访问的方法、装置及系统 |
CN114579596B (zh) * | 2022-05-06 | 2022-09-06 | 达而观数据(成都)有限公司 | 一种实时更新搜索引擎索引数据的方法及系统 |
CN114579596A (zh) * | 2022-05-06 | 2022-06-03 | 达而观数据(成都)有限公司 | 一种实时更新搜索引擎索引数据的方法及系统 |
WO2024098762A1 (zh) * | 2022-11-07 | 2024-05-16 | 华为技术有限公司 | 数据访问方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104850502B (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104850502A (zh) | 一种数据的访问方法、装置及设备 | |
CN109376123B (zh) | 管理文件的方法、分布式存储系统和管理节点 | |
KR102317657B1 (ko) | Nvdimm을 포함하는 장치 및 그것의 엑세스 방법 | |
JP2018517205A (ja) | 拡張メモリにアクセスするための方法、デバイス及びシステム | |
US20120167087A1 (en) | Apparatus and method for driving virtual machine, and method for deduplication of virtual machine image | |
CN105335309A (zh) | 一种数据传输方法及计算机 | |
CN112445729B (zh) | 操作地址确定方法、PCIe系统、电子设备及存储介质 | |
CN103823638A (zh) | 一种虚拟设备访问方法及装置 | |
CN105335308A (zh) | 对存储设备的访问信息处理方法和装置、系统 | |
CN103488523A (zh) | 一种页的访问方法和页的访问装置、服务器 | |
CN103986602A (zh) | 一种启动操作系统的方法、相关设备和系统 | |
CN104767761A (zh) | 一种云存储平台访问控制方法及装置 | |
CN104572917A (zh) | 数据锁定方法、装置及分布式存储系统 | |
US10733687B2 (en) | Method and apparatus for data communication in virtualized environment, and processor | |
CN111967065A (zh) | 一种数据保护方法、处理器及电子设备 | |
CN105677491A (zh) | 一种数据传输方法及装置 | |
CN105320800A (zh) | 用于两个物体之间的碰撞事件的数值模拟中的动态定位的搜索域 | |
CN114880072A (zh) | 一种虚拟机的应用窗口显示方法、计算设备及存储介质 | |
CN104598293A (zh) | 一种在线快照的方法和设备 | |
CN104216834A (zh) | 一种内存访问的方法、缓冲调度器和内存模块 | |
CN103970925B (zh) | 模拟撞击事件中产品结构行为的方法、系统和存储媒介 | |
CN104077374A (zh) | 一种实现ip盘文件存储的方法及装置 | |
CN104951244A (zh) | 用于存取数据的方法和设备 | |
US9258258B2 (en) | Implementing injection of formal numerical message identifiers in cloud stacks | |
CN105765542A (zh) | 访问文件的方法、分布式存储系统和存储节点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211222 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: xFusion Digital Technologies Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |