CN114610678A - 一种文件访问方法、存储节点以及网卡 - Google Patents
一种文件访问方法、存储节点以及网卡 Download PDFInfo
- Publication number
- CN114610678A CN114610678A CN202110221660.2A CN202110221660A CN114610678A CN 114610678 A CN114610678 A CN 114610678A CN 202110221660 A CN202110221660 A CN 202110221660A CN 114610678 A CN114610678 A CN 114610678A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- storage area
- network card
- index
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 230000015654 memory Effects 0.000 claims abstract description 118
- 230000004044 response Effects 0.000 claims abstract description 95
- 238000013500 data storage Methods 0.000 claims description 72
- 238000012545 processing Methods 0.000 claims description 28
- 238000007726 management method Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 21
- 238000004590 computer program Methods 0.000 description 10
- 230000003993 interaction Effects 0.000 description 9
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种文件访问方法、存储节点以及网卡,其中,该方法包括:第二设备可以向第一设备发起文件访问请求,文件访问请求包括文件的文件标识,第一设备的网卡接收到该文件访问请求后,可以直接对该文件访问请求进行解析,获取该文件访问请中携带的文件标识,然后根据该文件标识访问第一设备的内存中的文件,并向第二设备发送文件访问响应。当第一设备在接收到文件访问请求时,第一设备的网卡可以对该文件访问请求进行处理,不需要第一设备的处理器介入,能够提高文件访问效率。
Description
相关申请的交叉引用
本申请要求在2020年12月8日提交中华人民共和国知识产权局、申请号为202011444954.3、发明名称为“存储节点及数据传输方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及存储技术领域,尤其涉及一种文件访问方法、存储节点以及网卡。
背景技术
目前,在客户端和服务端之间实现文件读写需要执行多次交互。例如,在客户端与服务端之间基于远程直接内存访问(remote direct memory access,RDMA)协议现实数据传输的情况下,若客户端需要读取服务端上存储的文件时,客户端需要先发起文件索引获取请求,从服务端读取文件索引。客户端在获取该文件索引后,利用文件索引向服务端发起文件读取请求,从服务端获取文件。
若客户端需要将文件存储至服务端时,需要存储文件的多种信息,如文件中的数据、文件日志、文件索引等。而RDMA单边操作只一次存储一种信息,故而需要客户端与服务端之间多次交互,分别将文件的多种信息存储到服务端。
由上可知,无论是文件读取还是文件写入,客户端和服务端之间均需执行多次交互,效率较低、耗时较长。
发明内容
本申请提供一种文件访问方法、存储节点以及网卡,用以提升文件访问效率。
第一方面,本申请实施例提供了一种文件访问方法,第二设备(可以作为客户端)可以向第一设备(可以作为服务端)发起文件访问请求,文件访问请求用于请求访问存储第一设备中的文件,该文件访问请求可以用于请求读取文件中的第一数据(也即为文件读取请求),该文件访问请求也可以用于请求在文件中写入第二数据(也即为文件写入请求)。文件访问请求包括文件的文件标识;文件标识可以是第一设备(如第一设备的网卡或处理器)为文件分配的,并预先通知给第二设备的。
当文件访问请求到达第一设备时,第一设备的网卡先接收该文件访问请求,第一设备的网卡可以直接对该文件访问请求进行解析,获取该文件访问请中携带的文件标识,根据该文件标识访问第一设备的内存中的文件,并向第二设备发送文件访问响应。
通过上述方法,当第二设备需要访问第一设备中的文件时,第一设备的网卡可以直接对文件访问请求处理,不需要第一设备的处理器介入,能够提高文件访问效率。另外,第一设备和第二设备之间仅需交互一次(也即第二设备发送文件访问请求,第一设备反馈文件访问响应)就可以实现文件访问,减少了设备间的交互次数,保证了文件访问的高效性。
在一种可能的实现方式中,第一设备的网卡接收来自第二设备的文件访问请求之前,可以先向第二设备发送文件标识。
例如,当第二设备向第一设备发起文件打开请求时,第一设备的处理器可以根据文件打开请求打开文件,还可以通知第一设备的网卡在第一设备的内存中该文件的存储区域。当第一设备的网卡从第一设备的处理器获取文件的存储区域后,针对文件的存储区域执行内存注册操作,为文件分配文件标识;之后,第一设备的网卡可以向第二设备发送文件标识。
上述说明中,是以在文件打开场景下,第一设备的网卡从第一设备的处理器获取文件的存储区域、以及文件标识是由网卡分配的为例进行说明的。实际上,本申请实施例并不限定第一设备的网卡从第一设备的处理器获取文件的存储区域的场景。该文件标识也可以是由第一设备的处理器为文件分配的,并通知给第一设备的网卡的。
通过上述方法,第一设备的网卡可以从第一设备的处理器获取文件的存储区域,使得该第一设备的网卡能够确定文件的存储位置,在执行了内存注册之后,可以对该文件的存储区域进行操作,如读取数据或写入数据,为后续由第一设备的网卡访问文件提供可能性。
在一种可能的实现方式中,文件除了文件中的数据,还有文件的相关信息,如文件索引,文件信息以及文件日志。文件的存储区域可以用于存储文件中的数据、文件的相关信息,也就是说,文件的存储区域可以包括下列之一:文件的数据存储区域(用于存储文件中的数据)、文件的索引存储区域(用于存储文件索引)、文件的信息存储区域(用于存储文件信息)、文件的日志存储区域(用于存储文件日志)。
通过上述方法,该文件的存储区域中可以包括用于存储文件中的数据、以及文件相关信息的区域,使得第一设备的网卡可以对文件中的数据、以及文件相关信息进行访问。
在一种可能的实现方式中,当文件访问请求用于请求读取文件的第一数据时,第一设备的网卡可以根据文件标识确定文件的文件索引;之后,再根据文件索引获取第一数据,向第二设备发送文件访问响应,文件访问响应中包括第一数据。
通过上述方法,第一设备的网卡可以根据文件标识从文件中读取第一数据,不再需要处理器参与,也不需要与第二设备交互多次,保证了文件读取效率。
在一种可能的实现方式中,第一设备的网卡根据文件标识确定文件的文件索引时,可以先根据文件标识确定文件的索引存储区域,从文件的索引存储区域中读取文件索引。
通过上述方法,由于第一设备的网卡预先从第一设备的处理器获取了文件索引的存储区域,使得第一设备的网卡能够从该文件的索引存储区域中获取该文件索引,文件索引的获取方式更加简单、便捷。
在一种可能的实现方式中,文件索引可以指示文件中的数据在文件的数据存储区域中的位置。第一设备的网卡在获取该文件索引后,可以获知该文件中的数据在文件的数据存储区域中的位置,也就能够从文件的数据存储区域获取该文件中的第一数据。
通过上述方法,第一设备的网卡能够解析该文件索引,确定文件中的数据在文件中的数据存储区域中的位置。由于第一设备的网卡预先从第一设备的处理器获取了文件的存储区域,并执行了内存注册操作,使得第一设备的网卡能够从该文件的数据存储区域中读取第一数据。数据读取过程仅需第一设备的网卡执行,保证了文件读取效率。
在一种可能的实现方式中,当文件访问请求用于请求在文件中写入第二数据时,文件访问请求包括第二数据。第一设备的网卡可以根据该文件访问请求,在文件中写入第二数据。在写入该第二数据后,第一设备的网卡可以向第二设备发送文件访问响应,文件访问响应用于指示第二数据成功写入。
通过上述方法,第一设备的网卡可以根据文件访问请求在文件中写入第二数据,不再需要处理器参与,也不需要与第二设备交互多次,保证了文件写入效率。
在一种可能的实现方式中,若在文件中写入第二数据,导致文件中的数据在文件的数据存储区域的位置发生变化,第一设备的网卡可以根据文件标识确定文件索引,更新文件索引,更新后的文件索引可以指示文件中写入第二数据后,文件中的数据的存储位置,也即更新后的文件索引可以指示第二数据的存储位置。
通过上述方法,该更新后的文件索引能够准确的指示在第二数据写入后,文件中的数据在文件的数据存储区域的存储位置。
在一种可能的实现方式中,文件访问请求用于请求在文件中写入第二数据的方式有很多种,下面分别进行说明:
第一种:该文件访问请求在文件中追加写入第二数据。也即写入方式为追加写(append)。
第一设备的网卡在文件中写入第二数据时,先申请第一存储区域,将第二数据写入到第一存储区域中,第一存储区域位于文件的数据存储区域中,第一存储区域的起始位置(起始虚拟地址)指向文件的末尾,也即写入的第二数据应当紧挨着文件中已存储的数据。
第二种:文件访问请求用于请求将文件的数据替换为第二数据,保留原始数据。也即写入方式为替换(rewrite)。
第一设备的网卡在文件中写入第二数据时,可以先申请第二存储区域,之后,将第二数据写入到第二存储区域中,第二存储区域位于文件的数据存储区域中。
第三种:文件访问请求用于请求将文件的数据替换为第二数据。也即写入方式为重写(replace)。
文件访问请求还包括第二数据的数据长度以及第二数据在文件中的数据的偏移量,第一设备的网卡在文件中写入第二数据时,可以根据第二数据的数据长度以及第二数据在文件中的数据的偏移量从文件的数据存储区域确定需要替换的数据,利用第二数据覆盖需要替换的数据。
通过上述方法,第一设备的网卡可以实现不同方式的数据写入,适用于不同应用场景。
在一种可能的实现方式中,第一设备的网卡根据文件标识确定文件索引,更新文件索引时,可以根据文件标识确定文件的索引存储区域,之后从文件的索引存储区域中读取文件索引,更新文件索引。
通过上述方法,第一设备的网卡能够较为方便的获取文件索引,更新文件索引。保证了文件索引能够准确指示文件中的数据在文件的数据存储区域中的存储位置。
第二方面,本申请实施例提供了一种文件注册方法,方法应用于存储文件的第一设备,在该方法中,第二设备可以向第一设备发送文件打开请求,该文件打开请求文件用于请求打开文件;当文件打开请求到达第一设备时,先由第一设备的网卡接收,之后,第一设备的网卡将该文件打开请求发送给第一设备的处理器。
第一设备的处理器在接收该文件打开请求后,可以根据文件打开请求打开该文件,还可以确定第一设备的内存中文件的存储区域,并向第一设备的网卡通知文件的存储区域。之后,第一设备的网卡可以向第二设备发送文件打开响应,文件打开响应用于指示文件打开成功,文件打开响应包括文件的文件标识,文件标识为第一设备的网卡为文件分配的(如第一设备的处理器在通知第一设备的网卡该文件的存储区域后,第一设备的网卡可以针对该文件的存储区域执行内存注册操作,也可以为该文件分配文件标识),也可以是由第一设备的处理器为该文件分配的(第一设备的处理器可以将该文件标识通知给第一设备的网卡)。
通过上述方法,第一设备的处理器可以将文件的存储区域通知给第一设备的网卡,保证第一设备的网卡能够获知该文件的存储区域,便于后续第一设备的网卡能够访问文件。
在一种可能的实现方式中,若第一设备的内存中未存储该文件,第一设备的处理器在确定文件的存储区域时,可以为文件分配存储区域。
通过上述方法,第一设备的处理器能够为文件分配存储区域,使得该文件可以存储在该第一设备的内存中,便于后续第一设备的网卡访问文件。
在一种可能的实现方式中,文件的存储区域包括下列的至少一个:文件的数据存储区域、文件的索引存储区域、文件的信息存储区域、文件的日志存储区域。
通过上述方法,该文件的存储区域中可以包括用于存储文件中的数据、以及文件相关信息的区域,保证第一设备的网卡可以对文件中的数据、以及文件相关信息进行访问。
第三方面,本申请实施例提供了一种存储节点,该存储节点能够实现文件注册的方式也可以实现文件访问的方式,具体有益效果可以参见第一方面和第二方面的说明,此处不再赘述。存储节点包括网卡以及内存。
网卡,用于接收来自客户端的文件访问请求,文件访问请求用于请求访问文件,文件访问请求包括文件的文件标识;根据文件标识访问该存储节点的内存中的文件,并向客户端发送文件访问响应;
内存,用于存储该文件。该内存可以为易失性存储器,例如随机存取存储器(random access memory,RAM)或动态随机存取存储器(dynamic random access memory,DRAM)或两者组合。也可以为非易失性存储器,例如,存储级内存(storage class memory,SCM)等,或者为易失性存储器与非易失性存储器的组合。
在一种可能的实现方式中,存储节点还包括处理器;
处理器可以确定该内存中文件的存储区域,向网卡通知文件的存储区域,例如当处理器节点到来自客户端的文件打开请求时,处理器可以根据该文件打开请求打开该文件,还可以确定该内存中文件的存储区域,并向网卡通知文件的存储区域;
网卡可以从处理器获取文件的存储区域,针对文件的存储区域执行内存注册操作,为文件分配文件标识;向客户端发送文件标识,例如,网卡可以向客户端发送文件打开响应,该文件打开响应中包括该文件标识。
在一种可能的实现方式中,若内存中未存储该文件,处理器在确定文件的存储区域时,可以为文件分配存储区域。
在一种可能的实现方式中,文件的存储区域包括下列的至少一个:文件的数据存储区域、文件的索引存储区域、文件的信息存储区域、文件的日志存储区域。
在一种可能的实现方式中,网卡还可以对文件进行访问,具体的,网卡可以接收来自客户端的文件访问请求,文件访问请求用于请求访问文件,文件读取请求包括文件标识;之后,网卡可以根据文件标识访问文件,并向客户端发送文件访问响应。
在一种可能的实现方式中,文件访问请求可以为文件读取请求,用于请求读取文件的第一数据。网卡在访问文件,并向客户端发送文件访问响应时,可以根据文件标识确定文件的文件索引;之后,根据文件索引中获取第一数据,向客户端发送文件访问响应,文件访问响应中包括第一数据。
在一种可能的实现方式中,网卡在根据文件标识确定文件的文件索引时,可以先根据文件标识确定文件的索引存储区域,之后再从文件的索引存储区域中读取文件索引。
在一种可能的实现方式中,文件索引用于指示文件中的数据在文件的数据存储区域中的位置,网卡可以根据文件索引确定文件中的数据在文件的数据存储区域中的位置,从文件的数据存储区域中读取第一数据。
在一种可能的实现方式中,文件访问请求为文件写入请求,用于请求在文件中写入第二数据;文件访问请求包括第二数据。网卡根据文件标识访问文件,并向客户端发送文件访问响应时,可以在文件中写入第二数据,向客户端发送文件访问响应,文件访问响应用于指示第二数据成功写入。
在一种可能的实现方式中,网卡还可以根据文件标识确定文件的文件索引,更新文件索引,更新后的文件索引以指示第二数据的存储位置。
在一种可能的实现方式中,文件访问请求用于请求在文件中写入第二数据的方式有很多种,下面分别进行说明:
第一种、文件访问请求用于请求在文件中追加写入第二数据。
网卡在文件中写入第二数据时可以先申请第一存储区域,将第二数据写入到第一存储区域中,第一存储区域位于文件的数据存储区域中,第一存储区域的起始位置指向文件的末尾。
第二种、文件访问请求用于请求将文件中的数据替换为第二数据,保留原始数据。
网卡在文件中写入第二数据时,可以申请第二存储区域,将第二数据写入到第二存储区域中,第二存储区域位于文件的数据存储区域中。
第三种、文件访问请求用于请求将文件中的数据替换为第二数据。
文件访问请求还包括第二数据的数据长度以及第二数据在文件中的数据的偏移量,网卡在文件中写入第二数据时,可以根据第二数据的数据长度以及第二数据在文件中的数据的偏移量从文件的数据存储区域中确定需要替换的数据,利用第二数据覆盖需要替换的数据。
在一种可能的实现方式中,网卡在根据文件标识确定文件索引,更新文件索引时,可以根据文件标识确定文件的索引存储区域,从文件的索引存储区域中读取文件索引,更新文件索引。
第四方面,本申请实施例还提供了一种文件访问装置,该文件访问装置部署在网卡上,具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元。在一个可能的设计中,所述装置的结构中包括接收单元、处理单元、发送单元,这些单元可以执行上述第一方面方法示例中网卡的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第五方面,本申请实施例还提供了一种文件注册装置,该文件注册装置部署在处理器上,具有实现上述第二方面的方法实例中行为的功能,有益效果可以参见第二方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元。在一个可能的设计中,所述装置的结构中包括接收单元、处理单元、发送单元,这些单元可以执行上述第二方面方法示例中处理器的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第六方面,本申请实施例还提供了一种网卡,该网卡具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。
在一种可能的实现方式中,所述网卡的结构中可以包括处理器和存储器,所述处理器被配置为支持所述网卡执行上述第一方面或第二方面方法中网卡相应的功能。所述存储器与所述处理器耦合,其保存所述网卡必要的程序指令和数据。该网卡中还可以包括接口,用于与其他设备通信,例如,接收文件访问请求、发送文件访问响应等。
在另一种可能的实现方式中,所述网卡的结构中也可以包括处理器和接口,所述处理器被配置为支持所述网卡执行上述第一方面方法中相应的功能。该处理器还可以通过所述接口传输数据,例如,接收文件访问请求、发送文件访问响应等。
第七方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。或当其在计算机上运行时,使得计算机执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法。
第八方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法或使得计算机执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法。
第九方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法,或执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种服务端的结构示意图;
图3为本申请提供的一种文件打开和关闭的方法示意图;
图4为本申请提供的一种数据表的示意图;
图5为本申请提供的一种文件访问方法示意图;
图6为本申请提供的一种文件读取方法示意图;
图7为本申请提供的一种数据报文头的结构示意图;
图8为本申请提供的一种文件写入方法示意图;
图9为本申请提供的一种文件追加写入方法示意图;
图10为本申请提供的一种数据报文头的结构示意图;
图11为本申请提供的一种文件替换写入方法示意图;
图12为本申请提供的一种数据报文头的结构示意图;
图13为本申请提供的一种文件访问装置的结构示意图;
图14为本申请提供的一种文件注册装置的结构示意图。
具体实施方式
本申请实施例涉及文件读取,为了便于理解本申请实施例,首先,对本申请涉及的部分术语进行解释说明。
1、文件
文件是呈现数据的一种形式。本申请实施例并不限定文件的具体类型,例如该文件可以是视频文件、语音文件或文本文件。文件中可以包括相同类型的数据,如文件中的数据均为语音数据或图片。文件中的数据也可以包括不同类型的数据,如文件可以为计算设备之间传输的通信文件,该文件中可以包括图片、文本等数据。
文件可以被存储在不同存储器中。存储文件时,除了需要存储文件中的数据,还需要存储文件的相关信息,文件的相关信息用于对文件进行描述。
文件的相关信息包括下列的部分或全部:文件索引(index)、文件信息(fileinformation)、文件日志(file log)、文件标识。
2、文件标识
文件标识用于唯一地标识某一文件。在本申请实施例中,客户端(如客户端的网卡)向服务端(服务端的网卡)发起携带有文件标识的文件读取请求或文件写入请求,指示服务端从文件中读取数据或在文件中写入数据。在本申请实施例中该文件标识是由服务端提供给客户端的(如在客户端向服务端发起文件打开请求的场景下,服务端的处理器或网卡为该文件分配一个文件标识,然后网卡提供给客户端)。
在本申请实施例中并不限定文件标识的类型,例如该文件标识可以是服务端的网卡执行内存注册时,为该文件分配的远端键remote key,也可以服务端的网卡或处理器为文件分配的编号等信息。凡是能够唯一标识文件的信息均适应于本申请实施例。
3、文件索引(index)
文件索引用于指示文件中的数据在服务端内存中的存储位置,在本申请实施例中文件索引可以指示该文件中的数据在文件的数据存储区域中的位置。该文件的数据存储区域位于服务端的内存中。通过解析该文件索引可以确定该文件中的数据的存储位置,如可以确定文件中的数据存储的物理地址。
4、文件信息(file information)
文件信息为文件的属性信息,该文件信息可以包括文件大小以及描述文件被访问的相关信息,如文件被访问的时间、文件被访问的数据大小以及数据的偏移量等。
5、文件日志(file log)
文件日志为文件恢复(如文件中的数据恢复)时所需要的信息,文件日志能够在一定程度上保证文件存储的可靠性。在不同的应用场景中文件日志中记录的内容不同。
6、远程直接内存访问(remote direct memory access,RDMA)
RDMA是一种直接内存访问方法,基于RDMA,可以使一个计算设备直接对其他计算设备的内存进行数据读写,过程中不需要经过处理器的处理。
7、文件注册
在本申请实施例中服务端的处理器可以将文件注册给服务端的网卡,也即服务端的处理器可以将文件的存储区域通知给服务端的网卡,这样网卡可以获取文件的存储区域。文件的存储区域为用于存储文件中的数据以及文件的相关信息的存储区域。
在本申请实施例中,文件的存储区域可以包括下列的部分或全部:文件的索引存储区域、文件的信息存储区域、文件的日志存储区域、文件的数据存储区域。
文件的索引存储区域为服务端内存中存储文件索引的区域,文件的信息存储区域为服务端内存中存储文件信息的区域,文件的日志存储区域为服务端内存中存储文件日志的区域。文件的数据存储区域为服务端内存中存储文件中的数据的区域。
需要说明的是,在本申请实施例中文件的数据存储区域为服务端的处理器为文件分配的、用于存储数据的存储区域。该文件的数据存储区域中可以包括已存储了数据的区域和空白区域,该空白区域可以用于后续在对该文件进行写入时,存储需要新写入的数据。文件索引指示的是当前文件中的数据的存储位置。每次在文件中写入数据之后,文件索引需要更新以使得该文件索引能指示在写入数据后,该文件中的数据的存储位置。
8、内存注册(memory registration)
RDMA可以直接对内存进行数据读写。而对内存进行数据读写的前提是需要实现内存注册,内存注册可以理解为获取该内存的控制权,以实现对内存的数据读写。
memory registration是RDMA中对内存的一种保护措施,只有将内存注册到RDMA内存域(memory region,MR)中,这块内存就可以由RDMA来操作了。在完成内存注册之后,可以对该内存进行数据读写。
在本申请实施例中,服务端的处理器可以将文件注册到服务端的网卡(该网卡具备RDMA引擎),即服务端的处理器可以将文件的存储区域通知给服务端的网卡,网卡在获知文件的存储区域后,可以针对该文件的存储区域执行内存注册操作,将文件的存储区域注册到RDMA内存域中。
网卡在执行内存注册操作后,能够对文件中的数据、文件索引、文件信息以及文件的日志进行操作,便于后续对文件进行读取或写入,例如,读取文件中的数据,或在文件中写入数据,对文件索引、文件信息以及文件日志进行更新等。
9、队列(queues)
RDMA一共支持三种队列,发送队列(send queues,SQ)和接收队列(receivequeues,RQ),完成队列(complete queues,CQ)。其中,SQ和RQ通常成对创建,被称为队列对(queue pairs,QP)。
RDMA是基于消息的传输协议,数据传输为异步操作。RDMA的操作过程如下:
(1)、主机(host)的处理器提交工作请求(work request,WR)到网卡,网卡将该工作请求配置到工作队列(work queues,WQ),工作队列包括发送队列(SQ)和接收队列(RQ)。工作队列的每一个元素叫做(work queues element,WQE),一个元素也就对应一个WR。
(2)、host的处理器可以通过网卡从完成队列(CQ)中获取工作完成(workcomplete,WC),完成队列里的每一个元素叫做(complete queues element,CQE),一个元素也就对应一个WC。
其中,具有RDMA引擎的硬件(hardware),如网卡,可以看做为一个队列元素处理模块。该硬件不断地从工作队列(WQ)中去取工作请求(WR)来执行,执行完了就给完成队列(CQ)中放置工作完成(WC)。
10、RDMA数据传输
在本申请实施例中仅以RDMA发送/接收操作(send/receive)为例进行说明。RDMA是基于消息的数据传输协议的,所有数据包的组装都在具有RDMA引擎的硬件上完成的。
RDMA中发送/接收操作是双边操作,即必须要远端的应用感知参与才能完成收发。
以主机A向主机B(下面简称A、B)发送数据为例:
首先,A和B都要创建并初始化好各自的QP、CQ。
A和B分别向各自的WQ中添加WQE,对于A,WQ=SQ,WQE描述指向等待被发送的数据;对于B,WQ=RQ,WQE描述指向用于存储数据的缓存(buffer)。
A的网卡异步调度轮到A的WQE,解析到这是一个发送(send)消息,直接向B发出WQE指向的数据。数据流到达B的网卡后,B的WQE被消耗,B的网卡把数据直接存储到WQE指向的缓存。
A与B通信完成后,A的CQ中会产生一个完成消息CQE表示发送完成。与此同时,B的CQ中也会产生一个完成消息CQE表示接收完成。每个WQ中WQE的处理完成都会产生一个CQE。
如图1所示为本申请实施例提供的一种系统架构示意图,如图1所示,该系统中包括服务端100和客户端200。
客户端200部署在用户侧,用于在用户的触发下向服务端100发起请求。本申请实施例并不限定客户端200的具体形态,例如客户端200可为用户的本地计算设备或专用客户端。
客户端200上可以部署有文件系统客户端(file system client,FS client),文件系统客户端可以是客户端200上运行的软件。用户可以通过设置在本地计算设备中的FSclient访问服务端100中存储的文件,指示服务端100(如服务端100的网卡)对服务端100中存储的文件进行读取、写入(在本申请实施例中写包括追加写和替换写)等操作。
客户端200上还可以部署有网卡210,当用户通过FS client访问服务端100时,FSclient可以触发网卡210生成文件访问请求(如文件读取请求、文件写入请求),并通过网卡将文件访问请求发送给服务端100。
在本申请实施例中服务端100能够存储有用户的文件。该服务端100实质上为存储节点,具备文件存储功能。本申请实施例并不限定服务端100的部署位置,例如服务端100可以部署在边缘数据中心,也可以部署在云数据中心中,也可以部署在终端计算设备上。服务端100也可以分布式的部署在边缘数据中心、云数据中心以及终端计算设备中的部分或全部环境中。
服务端100上运行有文件系统(file system,FS),该文件系统可以是运行在服务端100的处理器120上的软件。该文件系统对服务端100上存储的文件进行管理,能够在服务端100的内存130中为文件分配存储区域,还可以将文件的存储区域通知给网卡140,也即将文件注册给网卡140,触发网卡140执行内存注册操作。该网卡140在获知了该文件的存储区域后,可以对文件进行读取和写入,当网卡140需要文件读取或文件写入时,网卡140可以创建文件句柄(file handle),通过对该file handle的操作,实现文件的读取和写入。
在本申请实施例中,客户端200与服务端100交互可以实现对文件的读取、写入等操作。客户端200与服务端100之间进行交互时,为了减少客户端200与服务端100之间的交互次数,简化交互流程。在本申请实施例中,服务端100的网卡140能够从服务端100的处理器120处理器获取文件的存储区域,执行内存注册操作,还可以为文件分配文件标识。在此基础上,服务端100的网卡140能够根据文件标识直接确定文件的存储区域(如文件的索引存储区域)。当客户端200可以向服务端100发送携带有文件标识的文件访问请求后,服务端100(如服务端100的网卡)可以根据文件访问请求携带的文件标识确定文件的存储区域,根据文件访问请求进行文件读取或文件写入,还可以在文件读取和文件写入之后,向客户端200发送访问响应(如文件读取响应、文件写入响应)。
具体到服务端100内部,服务端100对文件的访问操作可以不需要服务端100的处理器执行,而交由服务端100的网卡140执行。
如图2所示,为服务端100的结构示意图,服务端100包括总线110、处理器120、内存130以及网卡140。处理器120、内存130、网卡140之间通过总线110通信。
其中,处理器120可以为中央处理器(central processing unit,CPU)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、人工智能(artificial intelligence,AI)芯片、片上系统(system on chip,SoC)或复杂可编程逻辑器件(complex programmable logic device,CPLD),图形处理器(graphics processing unit,GPU)等。
内存130可以包括易失性存储器(volatile memory),例如RAM、DRAM等。也可以为非易失性存储器(non-volatile memory),例如SCM等,或者易失性存储器与非易失性存储器的组合等。
内存130中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
处理器120可以通过调用内存130中存储的计算机执行指令,使得服务端100可以执行如图3所示的实施例中服务端100的处理器120所执行的操作。
尽管未示出,该服务端100中还可以包括辅助存储器,也可以称为外存,该外存可以为非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),硬盘驱动器(hard disk drive,HDD)或固态驱动器(solid state disk,SSD)等。这外存可以用于永久的存储文件。
在本申请实施例中,处理器120可以将文件从外存调入到内存130中,处理器120可以在内存130中为该文件分配存储区域,所分配的存储区域可以用于存储该文件。当需要打开该文件时,处理器120可以确定内存130中该文件的存储区域,并将该文件的存储区域通知给网卡140。若需要打开的文件未预先调入到该内存130中,处理器120在接收到文件打开请求时,可以在内存130中为该文件分配存储区域,以存储该文件,并为该文件分配的存储区域通知给网卡140。
当需要关闭文件时,处理器120可以注销该文件的存储区域,删除内存120中存储的文件。
在本申请实施例中网卡140除了能够进行数据传输(如接收文件打开/关闭请求、文件访问请求,发送文件打开/关闭响应、文件访问响应),还能够对文件进行读取和写入。
网卡140包括处理器141以及接口142,处理器141的具体形态可以参见处理器120以及的相关说明,此处不再赘述。处理器141使得服务端100中的网卡140可以执行如图3、图5、图8、图9、图11所示的实施例中服务端100的网卡140所执行的操作,处理器141还可以通过接口142发送或接收信息,如接收文件打开请求、文件访问请求、文件关闭请求等,或发送文件打开响应、文件访问响应、文件关闭响应。
传统的文件读写过程中,文件未注册到网卡上,网卡不能直接对文件进行读取和写入,因此在对文件进行读写时,客户端需要先从服务端获取文件索引,之后客户端根据文件索引确定文件中的数据的存储位置,服务端侧的网卡在客户端的指示下(如客户端发起RDMA单边操作)从客户端指示的存储位置中读取或写入数据,这种方式需要客户端和服务端之间进行多次交互。或者在对文件进行读写时,服务端侧的处理器需要在客户端的指示下中获取文件数据,并通过网卡发送文件数据,在这种方式中需要处理器的参与,效率较差。
而在本申请实施例中,在客户端200与服务端100之间交互,对服务端100中存储的文件进行读取或写入前,服务端100中的处理器120可以先将文件注册到网卡140中,通知网卡140该文件的存储区域,触发网卡140执行内存注册操作。服务端100的网卡140为文件分配文件标识,并将文件标识反馈给客户端200。
服务端100的网卡140在从客户端200接收到携带有文件标识的文件访问请求之后,根据文件标识访问该文件,对文件进行读取或写入。采用本申请实施例的方式,在对文件进行访问时,不需要客户端200和服务端100多次交互,也不需要服务端100的处理器120参与,能够有效提高文件访问效率。
本申请实施例提供的文件访问方法可以分为二个流程,分别为文件注册和内存注册流程、文件访问流程,其中文件访问流程又可以分为文件读取流程和文件写入流程。下面分别进行说明。
一、文件注册和内存注册流程
在文件注册和内存注册流程中,服务端100的处理器120可以告知服务端100的网卡140中文件的存储区域,并触发网卡140执行内存注册操作,促使网卡140为文件分配文件标识。这样当客户端200想要对文件进行读或写等操作时,可以在请求中携带该文件标识,以标识需要读或写的文件。由于网卡140已经获取了文件的存储区域且执行了内存注册操作,网卡140就可以根据文件标识从文件的存储区域中读取数据或写入数据。
参见图3,以服务端100中的网卡140为文件分配文件标识为例,对本申请实施例提供的文件注册方法进行说明,该方法包括:
步骤301:用户通过客户端200向服务端100发起文件打开请求。
用户可以在客户端200提供的界面上,点击文件;客户端200在检测到用户的操作后,确定用户需要打开该文件,向服务端100发起文件打开请求,该文件打开请求中携带文件的名称,文件的名称可以是用户为该文件分配的,文件的名称在服务端100存储该文件时,存储在服务端100。
在步骤301中,客户端200中的网卡210可以基于RDMA向服务端100中的网卡140发送文件打开请求,也即将文件打开请求作为WQ中的WQE添加在客户端200侧的SQ中,该WQE指示需要打开该文件。
步骤302:服务端100中的网卡140在接收到该文件打开请求后请求,将该文件打开请求发送给服务端100的处理器120,服务端100中的处理器120打开文件。
服务端100中的网卡140可以从服务端100侧的RQ中获取该文件打开请求,将该文件打开请求发送给服务端100中的处理器120,服务端100中的处理器120可以根据该文件打开请求打开该文件,确定文件的存储区域。
需要说明的是,由于文件中的数据以及文件日志会随之文件中的数据的写入,数据量会变大,文件的数据存储区域可以是根据文件所能容纳的数据量按需分配的。随着数据的写入,服务端100中的处理器120也可以扩展该文件的数据存储区域。服务端100中的处理器120在扩展了文件的数据存储区域的情况下,还可以在将扩展的该文件的数据存储区域通知给网卡140。文件的日志存储区域也类似。
需要说明的是,若用户需要打开的文件是未在服务端100的内存130中存储的文件,用户也可以通过客户端200向服务端100发起文件打开请求。在这种场景下,服务端100中的处理器120根据文件打开请求中携带的文件的名称确定内存130中当前未存储该文件,服务端100中的处理器120可以在内存130中为该文件分配存储区域。
步骤303:服务端100中的处理器120将文件注册到服务端100中的网卡140,通知网卡140该文件的存储区域。
服务端100中的处理器120在确定或分配了文件的存储区域后,可以将文件注册到该服务端100中的网卡140中,也即服务端100中的处理器120可以将该文件的存储区域通知给网卡140,使得网卡140获取该文件的存储区域。具体的,服务端100中的处理器120可以将用于描述文件的存储区域的信息(这里简称为文件的存储区域的信息)发送给网卡140,并触发网卡140执行内存注册操作,为文件分配该文件标识,网卡140可以保存文件的存储区域的信息和该文件标识。
由前述说明可知,文件的存储区域包括文件的索引存储区域、文件的数据存储区域、文件的信息存储区域、文件的日志存储区域。
文件的存储区域的信息包括文件的索引存储区域的信息、文件的数据存储区域的信息、文件的信息存储区域的信息、文件的日志存储区域的信息。
以文件的索引存储区域的信息为例进行说明,文件的索引存储区域的信息用于描述文件的索引存储区域,描述文件的索引存储区域的方式有很多种,相应的,文件的索引存储区域的信息也有很多种。例如,文件的索引存储区域的信息可以包括文件索引的起始存储地址和文件索引的终止存储地址。文件的索引存储区域的信息可以包括文件索引的起始存储地址和文件索引的大小。
步骤304:服务端100中的网卡140获取了文件的存储区域之后,服务端100中的网卡140针对该文件的存储空间执行内存注册操作,为文件分配文件标识。
服务端100中的网卡140针对该文件的存储空间执行内存注册操作时,可以将该文件的存储区域加入到RDMA的内存域中,保证该网卡140可以对该文件的存储区域进行操作,如读取该文件中存储区域中文件索引、文件中的数据,更新文件信息或文件日志等;又如,在该文件中存储区域中写入数据,更新文件索引、文件信息或文件日志等。
服务端100中的网卡140还可以记录文件的存储空间的信息和文件标识。
举例来说,服务端100中的网卡140保存的文件的存储区域的信息和该文件标识可以为如图4所示的数据表。该数据表中示例性的展示了文件的索引存储区域的信息、文件的日志存储区域的信息、文件的信息存储区域和文件标识。
其中,文件信息的存储区域的信息可以为文件信息地址。
该文件的索引存储区域的信息包括索引地址(index address)、索引长度(indexsize)。其中,索引地址用于指示文件索引的起始存储地址。索引长度用于指示文件索引的长度。
文件的日志存储区域的信息包括日志键(log mkey)、日志地址、日志长度(logsize)、或日志偏移量中部分或全部指示。日志长度用以指示日志的长度。
根据文件索引的作用可知,文件索引能够指示文件的数据存储区域中文件中的数据的存储位置,服务端100中的处理器120在将文件注册给服务端100中的网卡140后,网卡140获知了文件中的数据存储区域、文件的日志存储区域、文件的信息存储区域以及文件的索引存储区域。网卡140可以根据如图4所示的数据表,确定文件标识所对应的文件索引,根据文件索引确定文件中的数据。
步骤305:服务端100中的处理器120通过服务端100中的网卡140向客户端200发送文件打开响应,该文件打开响应中携带有文件标识。
服务端100中的网卡140可以基于RDMA向客户端200发送文件打开响应,也即将文件打开响应作为WQ中的WQE添加在服务端100侧的SQ中,该WQE指示文件打开。
客户端200中的网卡210可以从客户端200侧的RQ中获取该文件打开响应,从该文件打开响应中获取文件标识。
通过步骤301~步骤305,客户端200可以通过发送文件打开请求,触发服务端100侧将文件注册到网卡140中。
相应的,用户在通过客户端200关闭文件时,也可以通过客户端200触发服务端100在网卡140中注销该文件。具体可参见步骤306~步骤309。
步骤306:用户通过客户端200向服务端100发起文件关闭请求。
用户可以在客户端200提供的界面上,选择“文件关闭”选项;客户端200在检测到用户的操作后,确定用户需要关闭该文件,向服务端100发起文件关闭请求,该文件打开请求中携带文件标识。
客户端200的网卡210可以基于RDMA向服务端100发送文件关闭请求,客户端200基于RDMA向服务端100发送文件关闭请求与客户端200的网卡140基于RDMA向服务端100发送文打开请求的方式类似,具体可以参见前述说明,此处不再赘述。
步骤307:服务端100的处理器120在接收到该文件关闭请求后,服务端100中的处理器120关闭文件,如处理器120可以释放文件占用的资源。
步骤308:服务端100中的处理器120从该服务端100中的网卡140中注销该文件。
服务端100中的处理器120可以从服务端100中的网卡140中注销该文件的存储区域,如通知网卡140删除该文件的日志存储区域、文件的信息存储区域、文件的数据存储区域的信息和该文件标识。
步骤309:服务端100中的处理器120在关闭了文件之后,可以通过服务端100中的网卡140向客户端200发送文件关闭响应。
服务端100中的网卡140可以基于RDMA向客户端200端发送文件关闭响应,服务端100中的网卡140基于RDMA向客户端200端发送文件关闭响应的方式与服务端100中的网卡140基于RDMA向客户端200发送文件打开响应的方式类似,具体可以参见前述内容,此处不再赘述。
需要说明的是,在图3中仅是以在客户端200发起文件打开请求的场景下,服务端100中的处理器120将文件注册给服务端100中的网卡140为例进行说明的,在实际应用中本申请实施例并不限定服务端100的处理器120将文件注册给服务端100中的网卡140的场景,例如,可以是在文件存储到服务端100时,服务端100中的处理器120将文件注册给服务器的网卡140的。
二、文件访问流程
如图5所示,为本申请实施例提供的一种文件访问方法,该方法包括:
步骤501:用户通过客户端200向服务端100发起文件访问请求。该文件访问请求用于请求访问文件,该文件访问请求中包括文件标识。
用户可以通过客户端200部署的文件系统客户端触发客户端200的网卡210发起文件访问请求,文件系统客户端可以将携带文件标识的文件访问请求发送给客户端200的网卡210,指示网卡210向该服务端100发起该文件访问请求。采用这种方式客户端200的网卡210可以不感知该文件访问请求中的信息。
这里文件访问请求可以用于请求读取文件中的第一数据,也即该文件访问请求为文件读取请求。文件访问请求也可以用于请求在文件中写入第二数据,也即该文件访问请求为文件写入请求。
步骤502:服务端100的网卡140接收来自第二设备的文件访问请求,根据文件标识访问文件。
服务端100的网卡140在接收到该文件访问请求后,可以从该文件访问请求中解析出该文件标识,根据该文件标识确定文件索引,进而确定该文件中数据的存储位置。
若该文件访问请求为文件读取请求,服务端100的网卡140可以根据文件读取请求从文件中读取第一数据。
若该文件访问请求为文件写入请求,服务端100的网卡140可以根据文件写入请求在文件中写入第二数据。
步骤503:服务端100的网卡140向客户端200发送文件访问响应。
若该文件访问请求为文件读取请求,文件访问响应为文件读取响应,该文件读取响应中包括第一数据。
若该文件访问请求为文件写入请求,文件访问响应为文件写入响应,文件写入响应指示成功写入第二数据。
由上可知文件访问流程分为文件读取流程和文件写入流程,下面分别对文件读取流程和文件写入流程进行说明。
(一)文件读取流程
在将文件注册给服务端100中的网卡140后,用户可以通过客户端200从服务端100读取该文件中的数据。
如图6所示,为本申请实施例提供的一种文件读取方法,该方法包括:
步骤601:用户通过客户端200(如客户端200的网卡210)向服务端100发起文件读取请求。该文件读取请求用于请求读取文件中的第一数据。该第一数据可以为文件中的全部数据,也可以为文件中的部分数据。
用户可以在客户端200提供的界面上,从文件中选择需要读取的第一数据,如选择文件中的数据,如点击“读取”的选项;客户端200在检测到用户的操作后,确定用户需要读取文件的第一数据,向服务端100发起文件读取请求,该文件读取请求中携带文件标识和第一数据的相关信息。该第一数据的相关信息可以包括为第一数据的数据长度、该第一数据在该文件中的数据中的偏移量(如指示第一数据的第一个比特与文件中的数据中第一个比特的偏移量)等。
在本申请实施例中,文件读取请求的数据报文头中可以携带第一数据的相关信息,还可以指示该文件读取请求的类型。
举例来说,如图7所示,为本申请实施例提供的文件读取请求的数据报文头的格式,如图7所示,该数据报文头包括文件操作码(operation code,OP)、文件标识、第一数据的数据长度(length)、该第一数据在该文件中的数据中的偏移量(offset)。在文件读取请求中OP可以为读(read),用于指示该请求为文件读取请求,用于请求读取文件中的第一数据。
可选的,该数据报文头中还可以包括页面索引(page index),该页面索引用于指示服务端100侧存储第一数据的页面(该页面是文件的数据存储区域中的页面)。该页面索引可以是客户端200根据offset与页面的大小计算确定的。通常页面大小是固定的,如均为4千字节(kb),利用offset与页面大小的比值,可以确定该第一数据的页面,进而确定页面索引。
在一些场景中,该数据报文头中也可以不携带page index,服务端100中的网卡140可以根据offset与页面的大小计算出该page index。图7中,OP和offset可以占用0~3字节,page index可以占用4~7字节,文件标识可以占用8~11字节,length可以占用12~14字节。本申请实施例中并不限定数据报文头中各个信息所占用的字节数以及各个信息在数据报文头中的位置,如图7所示仅为举例。
需要说明的是,文件读取请求中也可以不携带第一数据的相关信息,例如,当需要读取文件中所有的数据,文件读取请求可以携带指示符,该指示符可以为客户端200和服务端100预先预定的字符,该指示符用于指示需读取文件中的所有数据。
步骤602:服务端100中的网卡140在接收到该文件读取请求后,获取该第一数据。当文件读取请求达到服务端100时,首先是服务端100的网卡140接收到该文件读取请求。在步骤602中,服务端100的网卡140可以直接对该文件读取请求进行处理,解析该文件读取请求。
在获取第一数据时,服务端100中的网卡140可以根据文件标识确定文件的索引存储区域,从中获取文件索引。服务端100中的网卡140在获取该文件索引后,可以根据该文件索引确定文件中的数据的存储位置,然后根据第一数据的相关信息,如第一数据的长度以及第一数据在文件中所有数据的偏移,从该文件中的数据的存储地址中读取该第一数据。
需要说明的是,服务端100中的网卡140在获取第一数据之前,还可以根据文件标识对客户端200进行有效性验证。服务端100中的网卡140在针对该文件执行内存注册时,会针对该文件生成远端键(remote key)和本地键(local key),remote key可以作为文件标识发送给客户端200,local key可以保存在本地。
服务端100中的网卡140在接收到文件读取请求后,可以对文件标识和本地存储的local key进行比对,在一致的情况下,对客户端200有效性验证通过,否则验证失败,服务端100中的网卡140可以直接拒绝该文件读取请求,也可以将该文件读取请求传输给服务端100中的处理器120,由服务端100中的处理器120对该文件读取请求进行处理。
步骤603:服务端100中的网卡140在获取第一数据之后,可以向客户端200发送文件读取响应,该文件读取响应中携带有文件的第一数据。在本申请实施例中文件读取响应的格式可以符合RDAM中定义的文件读取响应(read response)的格式。
(二)文件写入流程
用户还可以通过客户端200在服务端100中存储的该文件中增加新的数据或通过客户端200替换服务端100中存储的该文件中的数据,也即文件写入流程。
如图8所示,为本申请实施例提供的一种文件写入方法,该方法包括:
步骤801:用户通过客户端200向服务端100发起文件写入请求,该文件写入请求用于请求在文件中写入第二数据,该文件写入请求中包括文件标识和第二数据。用户可以通过客户端200的网卡210发送该文件写入请求。
在本申请实施例中在文件中写入第二数据的方式可以为在文件中的数据中追加写入第二数据,也可以为将文件中的部分或全部数据替换为第二数据。
步骤802:服务端100中的网卡140在接收到该文件写入请求后,将第二数据写入到文件中。当文件写入请求达到服务端100时,首先是服务端100的网卡140接收到该文件写入请求。在步骤802中,服务端100的网卡140可以直接对该文件写入请求进行处理,也即可以解析该文件写入请求。
当文件写入请求用于请求在文件中追加写入第二数据,服务端100中的网卡140从该文件的数据存储区域中申请新的存储区域,可以将第二数据写入到申请到的存储区域中。
当文件写入请求用于请求将文件中的部分或全部数据替换为第二数据,服务端100中的网卡140可以将文件中的数据的该存储区域中的部分或全部数据替换为该第二数据(这种方式为替换写中的replace),服务端100中的网卡140也可以从该文件的数据存储区域申请存储区域,可以为第二数据写入到申请到的存储区域中(这种方式为替换写中的rewrite场景)。
步骤803:服务端100中的网卡140更新文件索引,使得文件索引能够指示写入第二数据后的文件中的数据的存储位置。
当文件写入请求用于请求在文件中追加写入第二数据时,更新文件索引,使得该文件索引能够指示写入第二数据后文件中数据的存储位置。
当文件写入请求用于请求将文件中的部分或全部数据替换为第二数据时,在rewrite场景下,由于文件的数据存储区域中文件中的数据的存储位置发生改变,服务端100的网卡140需要更新该文件索引。而在replace场景下,由于文件的数据存储区域中文件中数据的存储位置并未改变,服务端100的网卡140可以不更新该文件索引,也即不需要执行步骤803。
当文件写入请求用于请求在文件中追加写入第二数据时,还可以更新该文件日志,该文件日志可以记录追加写入的第二数据、以及第二数据的存储位置。服务端100中的网卡140还可以更新文件信息,在文件信息中记录写入第二数据的时间等信息。
当文件写入请求用于请求将文件中的部分或全部数据替换为第二数据时,还可以更新该文件日志,该文件日志可以记录写入的第二数据,以及第二数据的存储位置。服务端100中的网卡140还可以更新文件信息,在文件信息中记录写入第二数据的时间等信息。
需要说明的是,服务端100中的网卡140将该第二数据写入到该存储区域中之前,还可以根据文件标识对客户端200进行有效性验证。服务端100中的网卡140根据文件标识对客户端200进行有效性验证的方式可以参见前述说明,此处不再赘述。
步骤804:服务端100中的网卡140向客户端200的网卡140发送文件写入响应,通知客户端200第二数据已成功写入。在本申请实施例中文件写入响应的格式可以符合RDAM中定义的文件写入响应(write response)的格式。
由上可知,在本申请实施例中,文件写入流程分为追加写以及替换写,下面分别对这两种文件写入流程进行说明。为了区别这两种流程中发送的文件写入请求,将追加写流程中的文件写入请求称为第一文件写入请求,相应的文件写入响应称为第一文件写入响应。将替换写流程中的文件写入请求称为第二文件写入请求,相应的文件写入响应称为第二文件写入响应。
1)、追加写
如图9所示,为本申请实施例提供的一种文件追加写的流程示意图,该方法包括:
步骤901:用户通过客户端200的网卡210向服务端100中的网卡140发起第一文件写入请求。该第一文件写入请求用于请求在文件中追加写入第二数据,该第二数据可以为文件中需要新增的第二数据。
用户可以在客户端200提供的界面上,输入或选择文件中需要增加的第二数据,如输入或选择文件中需要新增的第二数据;客户端200在检测到用户的操作后,确定用户需要在文件中写入第二数据,向服务端100发起第一文件写入请求,该第一文件写入请求中携带文件标识和第二数据。可选的,还可以携带第二数据的相关信息,例如该第二数据的数据长度等。
在本申请实施例中,第一文件写入请求的数据报文体中可以携带第二数据,第一文件写入请求的数据报文头中可以携带第二数据的相关信息(如第二数据的数据长度),还可以指示该文件写入请求的类型。
举例来说,如图10所示,为本申请实施例提供的第一文件写入请求格式,如图10中,第二文件写入请求的数据报文体中可以携带的第二数据,该数据报文头包括文件操作类型(operation code,OP)、文件标识。在第一文件写入请求中OP可以为追加(append),用于指示该请求为文件写入请求,用于请求在文件中追加写入第二数据。
该数据报文头中还可以包括第二数据的数据长度(length)、该第二数据在该文件全部数据中的偏移量(offset)、页面索引(page index),由于为需要在文件中追加写入第二数据,offset可以等于当前文件中所有数据的数据长度,该页面索引的说明可以参见前述内容,此处不再赘述。本申请实施例中并不限定数据报文头中各个信息所占用的字节数以及各个信息在该数据报文头中的位置,如图10所示仅为举例。
步骤902:服务端100中的网卡140在接收到该第一文件写入请求后,服务端100中的网卡140可以从文件的数据存储区域中为第二数据申请存储区域,将该第二数据写入到申请到的存储区域中。
由于该第一文件写入请求请求在文件中追加写入第二数据,也即该第二数据需要位于该文件中已存储的数据之后,且紧邻该文件中已存储的数据。服务端100的网卡140为第二数据申请存储区域,该存储区域的大小等于该第二数据的数据长度。也就是说,申请的存储区域的起始位置(这里的起始位置指示的是虚拟地址)为该文件中已存储的数据的终止存储位置,也即申请的存储区域的起始位置指向文件的末尾。
步骤903:服务端100中的网卡140可以更新文件索引,更新后的文件索引可以指示该第二数据的存储位置。
服务端100中的网卡140根据如图4所示的数据表,确定文件标识所对应的文件索引,进而根据文件索引确定文件的索引存储区域,读取该文件索引,更新该文件索引。
除了追加写入该第二数据、更新文件索引,服务端100中的网卡140还可以更新文件信息以及文件日志。文件信息以及文件日志的更新方式可以参见图7所示的实施例中的相关说明此处不再赘述。
步骤904:服务端100中的网卡140在写入第二数据之后,可以向客户端200中的网卡210发送第一文件写入响应,通过客户端200第二数据已成功写入。
2)、替换写
如图11所示,为本申请实施例提供的一种文件替换写的流程示意图,该方法包括:
步骤1101:用户通过客户端200的网卡210向服务端100中的网卡140发起第二文件写入请求。该第二文件写入请求用于请求将文件中的数据替换为第二数据,该第二数据可以为文件中需要替换写入的数据。
用户可以在客户端200提供的界面上,输入或选择文件中需要写入的第二数据,如输入或选择文件中需要替换的第二数据;客户端200在检测到用户的操作后,确定用户需要在文件中写入第二数据,向服务端100发起第二文件写入请求,该第二文件写入请求中携带文件标识和第二数据。可选的,还可以携带第二数据的相关信息,例如该第二数据的数据长度、第二数据在文件中的数据的偏移量等。
在本申请实施例中,第二文件写入请求的数据报文体中可以携带第二数据,第二文件写入请求的数据报文头中可以携带第二数据的相关信息(如第二数据的数据长度、第二数据在文件中的数据的偏移量),还可以指示该文件写入请求的类型。
举例来说,如图12所示,为本申请实施例提供的第二文件写入请求格式,如图12所示,第二文件写入请求的数据报文体中可以携带的第二数据,该数据报文头包括文件操作类型(operation code,OP)、文件标识、第二数据的数据长度(length)、该第二数据在该文件全部数据中的偏移量(offset)。在第二文件写入请求中OP可以为替换(replace),这种场景下,需要服务端100中的网卡140将文件中的数据覆盖,写入第二数据。在第二文件写入请求中OP可以为重写(rewrite),这种场景下,服务端100中的网卡140可以保留文件中已有的数据,申请新的存储区域写入第二数据。OP为replace或rewrite,均可以指示该请求为文件写入请求,仅是第二数据写入的方式不同。
可选的,该数据报文头中还可以包括页面索引(page index),该页面索引的说明可以参见前述内容,此处不再赘述。本申请实施例中并不限定数据报文头中各个信息所占用的字节数以及各个信息在数据报文头中的位置,如图12所示仅为举例。
步骤1102:服务端100中的网卡140在接收到该第二文件写入请求后,确定第二数据的存储区域,在该第二数据的存储区域写入第二数据。
第二数据的存储区域可以为文件的数据存储区域中已存储的数据的空间(对应OP为replace的场景),也可以是服务端100中的网卡140在文件的数据存储区域中为第二数据申请的存储区域(对应OP为rewrite的场景)。
OP为replace时,服务端100中的网卡140根据第二数据的相关信息,如第二数据的数据长度、第二数据在文件中的数据的偏移量,确定该文件的数据存储区域中需要被替换的数据的存储区域,该存储区域即为第二数据的存储区域,在该存储区域上写入第二数据。
OP为rewrite时,服务端100中的网卡140也可以不覆盖该文件中已有的数据,也即保留该文件中已有的数据,服务端100中的网卡140可以在文件的数据存储区域(空白区域)中为第二数据申请存储区域,该存储区域的大小可以等于第二数据的数据大小,将第二数据写入到申请到的存储区域中。与追加写方式不同,这里申请的存储区域可以不紧邻该文件的数据存储区域中已存储数据的区域,也即该申请到的存储区域的起始位置可以不指向该文件的末尾。
当OP为replace,服务端100的网卡140可以不更新文件索引,也即不需要执行步骤1103,当OP为rewrite,服务端100的网卡140需要更新文件索引,也即需要执行步骤1103。
步骤1103:服务端100中的网卡140根据文件标识确定文件索引,更新文件索引。
服务端100的网卡140可以根据文件标识确定文件的索引存储区域,从文件的索引存储区域中读取该文件索引,根据该第二数据的数据长度以及第二数据在文件中的数据的偏移量确定该文件索引中用于指示需要替换的数据的存储位置的部分,修改该部分,使得该部分能够指示第二数据的存储位置。
除了写入该第二数据、更新文件索引,服务端100中的网卡140还可以更新该文件的文件信息以及文件日志。该文件的文件信息以及文件日志的更新方式可以参见图8所示的实施例中的相关说明此处不再赘述。
步骤1104:服务端100中的网卡140在写入第二数据之后,可以向客户端200的网卡210发送第二文件写入响应,通知客户端200第二数据已成功写入。
需要说明的是,在上述实施例中是以文件标识为网卡140分配的,且该文件标识可以用于对客户端200进行有效性验证为例进行说明的。在实际应用中,该文件标识也可以是服务端100中的处理器120为文件分配的,在服务端100中的处理器120在将该文件注册给网卡140时,也可以将该文件标识通知给服务端100中的网卡140。这种情况下,服务端100中的网卡140在执行内存注册时,为文件分配的remote key可以不作为文件标识,而是仅用于客户端200进行有效性验证,该文件标识以及remote key携带在文件打开响应中。在另一种可能场景中,该文件标识也可以是服务端100中的网卡140为文件分配的,且该文件标识并非是remote key。也就是说,服务端100中的网卡140可以为文件分配文件标识以及remotekey。将该文件标识以及remote key携带在文件打开响应中。
基于与方法实施例同一发明构思,本申请实施例还提供了一种文件访问装置,该文件访问装置可以部署在网卡上,用于执行上述如图3、图5、图8、图9、图11所示的方法实施例中所述网卡140执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图13所示,所述装置1300包括接收单元1301、处理单元1302以及发送单元1303。
接收单元1301,用于接收来自第二设备的文件访问请求,文件访问请求用于请求访问文件,文件访问请求包括文件的文件标识。
处理单元1302,用于根据文件标识访问第一设备的内存中的文件。
发送单元1303,用于向第二设备发送文件访问响应。
在一种可能的实施方式中,接收单元1301在接收来自第二设备的文件访问请求之前,处理单元1302可以从设备的处理器获取文件的存储区域,针对文件的存储区域执行内存注册操作,为文件分配文件标识;之后,发送单元1303可以向第二设备发送文件标识。
在一种可能的实施方式中,文件的存储区域包括下列的至少一个:
文件的数据存储区域、文件的索引存储区域、文件的信息存储区域和文件的日志存储区域。
在一种可能的实施方式中,文件访问请求用于请求读取文件的第一数据;处理单元1302在根据文件标识访问文件,并向第二设备发送文件访问响应时,可以根据文件标识确定文件的文件索引;之后,根据文件索引中获取第一数据,向第二设备发送文件访问响应,文件访问响应中包括第一数据。
在一种可能的实施方式中,处理单元1302在根据文件标识确定文件的文件索引时,可以根据文件标识确定文件的索引存储区域,从文件的索引存储区域中读取文件索引。
在一种可能的实施方式中,文件索引用于指示文件中的数据在文件的数据存储区域中的位置,处理单元1302在根据文件索引获取第一数据时,可以根据文件索引从文件的数据存储区域中获取第一数据。
在一种可能的实施方式中,文件访问请求用于请求在文件中写入第二数据,文件访问请求包括第二数据,处理单元1302在根据文件标识访问文件时,可以在文件中写入第二数据;发送单可以向第二设备发送文件访问响应,文件访问响应用于指示第二数据成功写入。
在一种可能的实施方式中,处理单元1302除了写入第二数据,还可以根据文件标识确定文件索引,更新文件索引,更新后的文件索引用以指示第二数据的存储位置。
在一种可能的实施方式中,文件访问请求用于请求在文件中写入第二数据的方式有很多种,下面分别进行说明:
第一种:该文件访问请求在文件中追加写入第二数据。也即写入方式为追加写(append)。
处理单元1302在文件中写入第二数据时,先申请第一存储区域,将第二数据写入到第一存储区域中,第一存储区域位于文件的数据存储区域中,第一存储区域的起始位置指向文件的末尾,也即写入的第二数据应当紧挨着文件中已有的数据存储。
第二种:文件访问请求用于请求将文件的数据替换为第二数据,保留原始数据。也即写入方式为替换(rewrite)。
处理单元1302在文件中写入第二数据时,可以先申请第二存储区域,之后,将第二数据写入到第二存储区域中,第二存储区域位于文件的数据存储区域中。
第三种:文件访问请求用于请求将文件的数据替换为第二数据。也即写入方式为重写(replace)。
文件访问请求还包括第二数据的数据长度以及第二数据在文件中的数据的偏移量,处理单元1302在文件中写入第二数据时,可以根据第二数据的数据长度以及第二数据在文件中的数据的偏移量从文件的数据存储区域确定需要替换的数据,利用第二数据覆盖需要替换的数据。
在一种可能的实施方式中,处理单元1302在根据文件标识确定文件索引,更新文件索引时,可以根据文件标识确定文件的索引存储区域,从文件的索引存储区域中读取文件索引,更新文件索引。
基于与方法实施例同一发明构思,本申请实施例还提供了一种文件注册装置,该文件注册装置部署在处理器上,用于执行上述如图3所示的方法实施例中处理器120执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图14所示,装置1400包括处理单元1402。
处理单元1402,用于确定第一设备的内存中文件的存储区域,并向第一设备的网卡通知文件的存储区域。
在一种可能的实施方式中,装置1400还包括接收单元1401和发送单元1403,在处理单元1402确定文件在第一设备的内存中的存储区域之前,接收单元1401可以接收到来自第二设备的文件打开请求,文件打开请求用于请求打开文件。发送单元1403可以通过第一设备的网卡向第二设备发送文件打开响应,文件打开响应用于指示文件打开成功。
在一种可能的实施方式中,若文件为第一设备的内存中未存储的文件,处理单元1402在确定文件的存储区域时,可以为文件分配存储区域。
在一种可能的实施方式中,文件的存储区域包括下列的至少一个:
文件的数据存储区域、文件的索引存储区域、文件的信息存储区域和文件的日志存储区域。
基于与方法实施例同一发明构思,本申请实施例还提供了一种存储节点,该存储节点用于执行上述如图3、图5、图8、图9、图11所示的方法实施例中服务端100中处理器120和网卡140执行的方法,相关特征可参见上述方法实施例,此处不再赘述。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (36)
1.一种文件访问方法,其特征在于,所述方法包括:
第一设备的网卡接收来自第二设备的文件访问请求,所述文件访问请求用于请求访问文件,所述文件访问请求包括所述文件的文件标识;
所述网卡根据所述文件标识访问所述第一设备的内存中的所述文件,并向所述第二设备发送文件访问响应。
2.如权利要求1所述的方法,其特征在于,所述第一设备的网卡接收来自第二设备的文件访问请求之前,还包括:
所述第一设备的处理器接收到来自第二设备的文件打开请求,所述文件打开请求用于请求打开所述文件;
所述处理器根据所述文件打开请求打开所述文件,确定所述第一设备的内存中所述文件的存储区域,向所述网卡通知所述文件的存储区域;
所述网卡针对所述文件的存储区域执行内存注册操作,为所述文件分配所述文件标识;
所述网卡向所述第二设备发送所述文件标识。
3.如权利要求2所述的方法,其特征在于,所述文件的存储区域包括下列区域中的至少一个:
所述文件的数据存储区域、所述文件的索引存储区域、所述文件的信息存储区域和所述文件的日志存储区域。
4.如权利要求2或3所述的方法,其特征在于,所述文件访问请求用于请求读取文件的第一数据;所述网卡根据所述文件标识访问所述第一设备的内存中的所述文件,并向所述第二设备发送文件访问响应,包括:
所述网卡根据所述文件标识确定所述文件的文件索引;
所述网卡根据所述文件索引获取所述第一数据,向所述第二设备发送文件访问响应,所述文件访问响应中包括所述第一数据。
5.如权利要求4所述的方法,其特征在于,所述网卡根据所述文件标识确定所述文件的文件索引,包括:
所述网卡根据所述文件标识确定所述文件的索引存储区域,从所述文件的索引存储区域中读取所述文件索引。
6.如权利要求4或5所述的方法,其特征在于,所述文件索引用于指示所述文件中的数据在所述文件的数据存储区域中的位置,所述网卡根据所述文件索引获取所述第一数据,包括:
所述网卡根据所述文件索引从所述文件的数据存储区域中获取所述第一数据。
7.如权利要求2或3所述的方法,其特征在于,所述文件访问请求用于请求在文件中写入第二数据,所述文件访问请求包括所述第二数据,所述网卡根据所述文件标识访问所述第一设备的内存中的所述文件,并向所述第二设备发送文件访问响应,包括:
所述网卡在所述文件中写入所述第二数据;
所述网卡向所述第二设备发送所述文件访问响应,所述文件访问响应用于指示所述第二数据成功写入。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
所述网卡根据所述文件标识确定所述文件索引,更新所述文件索引,更新后的所述文件索引用以指示所述第二数据的存储位置。
9.如权利要求7或8所述的方法,其特征在于,所述网卡在所述文件中写入所述第二数据,包括:
所述网卡申请第一存储区域,将所述第二数据写入到所述第一存储区域中,所述第一存储区域位于所述文件的数据存储区域中,所述第一存储区域的起始位置指向所述文件的末尾。
10.如权利要求7或8所述的方法,其特征在于,所述网卡在所述文件中写入所述第二数据,包括:
所述网卡申请第二存储区域,将所述第二数据写入到所述第二存储区域中,所述第二存储区域位于所述文件的数据存储区域中。
11.如权利要求7所述的方法,其特征在于,所述文件访问请求还包括所述第二数据的数据长度以及所述第二数据在所述文件中的数据的偏移量,所述网卡在所述文件中写入所述第二数据,包括:
所述网卡根据所述第二数据的数据长度以及所述第二数据在所述文件中的数据的偏移量从所述文件的数据存储区域中确定需要替换的数据,利用所述第二数据覆盖所述需要替换的数据。
12.如权利要求8~10任一所述的方法,所述网卡根据所述文件标识确定所述文件索引,更新所述文件索引,包括:
所述网卡根据所述文件标识确定所述文件的索引存储区域,从所述文件的索引存储区域中读取所述文件索引,更新所述文件索引。
13.一种存储节点,其特征在于,所述存储节点包括网卡和内存;
所述网卡,用于接收来自客户端的文件访问请求,所述文件访问请求用于请求访问文件,所述文件访问请求包括所述文件的文件标识;根据所述文件标识访问所述内存中的文件,并向所述客户端发送文件访问响应;
所述内存,用于存储所述文件。
14.如权利要求13所述的存储节点,其特征在于,所述存储节点还包括处理器;
所述处理器,用于接收到来自客户端的文件打开请求,所述文件打开请求用于请求打开所述文件;根据所述文件打开请求打开所述文件,确定所述内存中所述文件的存储区域,向所述网卡通知所述文件的存储区域;
所述网卡,还用于针对所述文件的存储区域执行内存注册操作,为所述文件分配所述文件标识;向所述客户端发送文件打开响应,所述文件打开响应中包括所述文件标识。
15.如权利要求14所述的存储节点,其特征在于,所述文件的存储区域包括下列区域中的至少一个:
所述文件的数据存储区域、所述文件的索引存储区域、所述文件的信息存储区域和所述文件的日志存储区域。
16.如权利要求14或15所述的存储节点,其特征在于,所述文件访问请求用于请求读取文件的第一数据;所述网卡根据所述文件标识访问所述文件,并向所述客户端发送文件访问响应时,具体用于:
根据所述文件标识确定所述文件的文件索引;
根据所述文件索引获取所述第一数据,向所述客户端反馈文件访问响应,所述文件访问响应中包括所述第一数据。
17.如权利要求16所述的存储节点,其特征在于,所述网卡在根据所述文件标识确定所述文件的文件索引时,具体用于:
根据所述文件标识确定所述文件的索引存储区域,从所述文件的索引存储区域中读取所述文件索引。
18.如权利要求16或17所述的存储节点,其特征在于,所述文件索引用于指示所述文件中的数据在所述文件的数据存储区域中的位置,所述网卡根据所述文件索引获取所述第一数据时,具体用于:
根据所述文件索引从所述文件的数据存储区域中获取所述第一数据。
19.如权利要求14或15所述的存储节点,其特征在于,所述文件访问请求用于请求在文件中写入第二数据;所述文件访问请求还包括所述第二数据,所述网卡根据所述文件标识访问所述文件,并向所述客户端发送文件访问响应时,具体用于:
在所述文件中写入所述第二数据;
向所述客户端反馈所述文件访问响应,所述文件访问响应用于指示所述第二数据成功写入。
20.如权利要求19所述的存储节点,其特征在于,所述网卡还用于:
根据所述文件标识确定所述文件索引,更新所述文件索引,更新后的所述文件索引用以指示所述第二数据的存储位置。
21.如权利要求19或20所述的存储节点,其特征在于,所述网卡在所述文件中写入所述第二数据时,具体用于:
申请第一存储区域,将所述第二数据写入到所述第一存储区域中,所述第一存储区域位于所述文件的数据存储区域中,所述第一存储区域的起始位置指向所述文件的末尾。
22.如权利要求19或20所述的存储节点,其特征在于,所述网卡在所述文件中写入所述第二数据时,具体用于:
申请第二存储区域,将所述第二数据写入到所述第二存储区域中,所述第二存储区域位于所述文件的数据存储区域中。
23.如权利要求19所述的存储节点,其特征在于,所述文件访问请求还包括所述第二数据的数据长度以及所述第二数据在所述文件中的数据的偏移量,所述网卡在所述文件中写入所述第二数据时,具体用于:
根据所述第二数据的数据长度以及所述第二数据在所述文件中的数据的偏移量从所述文件的数据存储区域中确定需要替换的数据,利用所述第二数据覆盖所述需要替换的数据。
24.如权利要求20~22任一所述的存储节点,其特征在于,所述网卡根据所述文件标识确定所述文件索引,更新所述文件索引时,具体用于:
根据所述文件标识确定所述文件的索引存储区域,从所述文件的索引存储区域中读取所述文件索引,更新所述文件索引。
25.一种网卡,其特征在于,所述网卡能够用于第一设备中,所述网卡包括处理器以及接口;
所述处理器用于:通过所述接口接收来自第二设备的文件访问请求,所述文件访问请求用于请求访问文件,所述文件访问请求包括所述文件的文件标识;根据所述文件标识访问所述第一设备的内存中的所述文件,并通过所述接口向所述第二设备发送文件访问响应。
26.如权利要求25所述的网卡,其特征在于,所述处理器在通过所述接口接收来自第二设备的文件访问请求之前,还用于:
获取所述文件的存储区域,针对所述文件的存储区域执行内存注册操作,为所述文件分配所述文件标识;
通过所述接口向所述第二设备发送所述文件标识。
27.如权利要求26所述的网卡,其特征在于,所述文件的存储区域包括下列的至少一个:
所述文件的数据存储区域、所述文件的索引存储区域、所述文件的信息存储区域和所述文件的日志存储区域。
28.如权利要求26或27所述的网卡,其特征在于,所述文件访问请求用于请求读取文件的第一数据;所述处理器在根据所述文件标识访问所述文件,并向所述第二设备发送文件访问响应时,具体用于:
根据所述文件标识确定所述文件的文件索引;
根据所述文件索引中获取所述第一数据,向所述第二设备发送文件访问响应,所述文件访问响应中包括所述第一数据。
29.如权利要求28所述的网卡,其特征在于,所述处理器在根据所述文件标识确定所述文件的文件索引时,具体用于:
根据所述文件标识确定所述文件的索引存储区域,从所述文件的索引存储区域中读取所述文件索引。
30.如权利要求28或29所述的网卡,其特征在于,所述文件索引用于指示所述文件中的数据在所述文件的数据存储区域中的位置,所述处理器在根据所述文件索引获取所述第一数据时,具体用于:
根据所述文件索引从所述文件的数据存储区域中获取所述第一数据。
31.如权利要求26或27所述的网卡,其特征在于,所述文件访问请求用于请求在文件中写入第二数据,所述文件访问请求包括所述第二数据,所述处理器在根据所述文件标识访问所述文件,并向所述第二设备发送文件访问响应时,具体用于:
在所述文件中写入所述第二数据;
向所述第二设备发送所述文件访问响应,所述文件访问响应用于指示所述第二数据成功写入。
32.如权利要求31所述的网卡,其特征在于,所述处理器还用于:
根据所述文件标识确定所述文件索引,更新所述文件索引,更新后的所述文件索引用以指示所述第二数据的存储位置。
33.如权利要求31或32所述的网卡,其特征在于,所述处理器在所述文件中写入所述第二数据时,具体用于:
申请第一存储区域,将所述第二数据写入到所述第一存储区域中,所述第一存储区域位于所述文件的数据存储区域中,所述第一存储区域的起始位置指向所述文件的末尾。
34.如权利要求31或32所述的网卡,其特征在于,所述处理器在所述文件中写入所述第二数据时,具体用于:
申请第二存储区域,将所述第二数据写入到所述第二存储区域中,所述第二存储区域位于所述文件的数据存储区域中。
35.如权利要求31所述的网卡,其特征在于,所述文件访问请求还包括所述第二数据的数据长度以及所述第二数据在所述文件中的数据的偏移量,所述处理模块在所述文件中写入所述第二数据时,具体用于:
根据所述第二数据的数据长度以及所述第二数据在所述文件中的数据的偏移量从所述文件的数据存储区域中确定需要替换的数据,利用所述第二数据覆盖所述需要替换的数据。
36.如权利要求32~34任一所述的网卡,其特征在于,所述处理器在根据所述文件标识确定所述文件索引,更新所述文件索引时,具体用于:
根据所述文件标识确定所述文件的索引存储区域,从所述文件的索引存储区域中读取所述文件索引,更新所述文件索引。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21902093.0A EP4258122A1 (en) | 2020-12-08 | 2021-09-01 | File access method, storage node, and network card |
PCT/CN2021/115931 WO2022121385A1 (zh) | 2020-12-08 | 2021-09-01 | 一种文件访问方法、存储节点以及网卡 |
US18/331,274 US20230315683A1 (en) | 2020-12-08 | 2023-06-08 | File Access Method, Storage Node, and Network Interface Card |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011444954 | 2020-12-08 | ||
CN2020114449543 | 2020-12-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114610678A true CN114610678A (zh) | 2022-06-10 |
Family
ID=81857578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110221660.2A Pending CN114610678A (zh) | 2020-12-08 | 2021-02-27 | 一种文件访问方法、存储节点以及网卡 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230315683A1 (zh) |
EP (1) | EP4258122A1 (zh) |
CN (1) | CN114610678A (zh) |
WO (1) | WO2022121385A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105450588B (zh) * | 2014-07-31 | 2019-02-12 | 华为技术有限公司 | 一种基于rdma的数据传输方法及rdma网卡 |
US10257273B2 (en) * | 2015-07-31 | 2019-04-09 | Netapp, Inc. | Systems, methods and devices for RDMA read/write operations |
CN110647480B (zh) * | 2018-06-26 | 2023-10-13 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
CN110764688B (zh) * | 2018-07-27 | 2023-09-05 | 杭州海康威视数字技术股份有限公司 | 对数据进行处理的方法和装置 |
CN109634876A (zh) * | 2018-12-11 | 2019-04-16 | 广东省新代通信与网络创新研究院 | 文件访问方法、装置及计算机可读存储介质 |
-
2021
- 2021-02-27 CN CN202110221660.2A patent/CN114610678A/zh active Pending
- 2021-09-01 EP EP21902093.0A patent/EP4258122A1/en active Pending
- 2021-09-01 WO PCT/CN2021/115931 patent/WO2022121385A1/zh unknown
-
2023
- 2023-06-08 US US18/331,274 patent/US20230315683A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4258122A1 (en) | 2023-10-11 |
WO2022121385A1 (zh) | 2022-06-16 |
US20230315683A1 (en) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107209644B (zh) | 一种数据处理方法以及NVMe存储器 | |
WO2018120986A1 (zh) | 转发报文的方法和物理主机 | |
JP5352491B2 (ja) | シン・プロビジョニング・ボリュームのバックアップとリストアのための方法と装置 | |
CN108701004A (zh) | 一种数据处理的系统、方法及对应装置 | |
JP6763984B2 (ja) | インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法 | |
EP3608790B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
WO2019127018A1 (zh) | 存储系统访问方法及装置 | |
US9015333B2 (en) | Apparatus and methods for handling network file operations over a fibre channel network | |
CN107229415A (zh) | 一种数据写方法、数据读方法及相关设备、系统 | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
US10372552B2 (en) | Variable number and size of put operations for storage backup | |
CN104317716B (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
CN110837479A (zh) | 数据处理方法、相关设备及计算机存储介质 | |
CN109597903B (zh) | 图像文件处理装置和方法、文件存储系统及存储介质 | |
WO2019127021A1 (zh) | 存储系统中存储设备的管理方法及装置 | |
WO2022223003A1 (zh) | 一种文件访问方法、网卡以及计算设备 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN111803917A (zh) | 资源的处理方法和装置 | |
WO2019127017A1 (zh) | 存储系统中存储设备的管理方法及装置 | |
US8898353B1 (en) | System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface | |
US7827194B2 (en) | Access to shared disk device on storage area network | |
CN114610678A (zh) | 一种文件访问方法、存储节点以及网卡 | |
CN109739615B (zh) | 一种虚拟硬盘的映射方法、设备和云计算平台 | |
US9104637B2 (en) | System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface | |
CN116700904B (zh) | 内存快照生成方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |