CN115729440A - 处理i/o请求的方法、装置、系统、设备及存储介质 - Google Patents
处理i/o请求的方法、装置、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115729440A CN115729440A CN202111013237.XA CN202111013237A CN115729440A CN 115729440 A CN115729440 A CN 115729440A CN 202111013237 A CN202111013237 A CN 202111013237A CN 115729440 A CN115729440 A CN 115729440A
- Authority
- CN
- China
- Prior art keywords
- request
- target
- storage node
- address
- destination address
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 297
- 238000000034 method Methods 0.000 title claims abstract description 85
- 230000015654 memory Effects 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 101000648827 Homo sapiens TPR and ankyrin repeat-containing protein 1 Proteins 0.000 description 2
- 102100028173 TPR and ankyrin repeat-containing protein 1 Human genes 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101100049633 Homo sapiens WDR26 gene Proteins 0.000 description 1
- 101100156663 Mus musculus Wdr82 gene Proteins 0.000 description 1
- 102100038138 WD repeat-containing protein 26 Human genes 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种处理I/O请求的方法、装置、系统、设备及存储介质,属于计算机技术领域。所述方法包括:接收目标I/O请求,所述目标I/O请求中携带有目的地址与目标逻辑块地址,所述目的地址为所述第一存储节点的节点地址;基于预设的逻辑块地址与存储节点的对应关系,确定所述目标逻辑块地址对应的第二存储节点;如果所述第二存储节点与所述第一存储节点不一致,则将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;发送所述修改目的地址后的目标I/O请求。采用本申请,可以提高处理目标I/O请求的效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种处理I/O请求的方法、装置、系统、设备及存储介质。
背景技术
随着互联网技术和大数据的发展,一些互联网、金融等企业,可以购买硬件厂商开发的存储系统,可用于存储企业在运营时产生的各种业务数据。
在硬件厂商开发的存储系统中可以包括多个存储节点,每个存储节点可由控制器和存储器组成,多个存储节点的存储器可构建成一个存储池,用于提供数据存储功能。其中,技术人员可以将存储池中的存储空间划分为多个逻辑块,为了避免各存储节点在处理I/O请求时产生冲突以及实现各存储节点之间的负载均衡,技术人员可以在每个存储节点的控制器中预先设置数据处理策略,使得每个存储节点只负责其对应逻辑块的数据读写处理。
互联网、金融等企业在购买硬件厂商开发的存储系统后,可以通过第三方多路径软件,向存储系统中的各存储节点发送I/O请求,进而实现在存储系统读写数据。但是第三方多路径软件与硬件厂商的技术人员设置的数据处理策略之间解耦,即第三方多路径软件无法确定一个I/O请求归属哪个存储节点处理。一般第三方多路径软件通过网络转发设备(如交换机、路由器等)随机地将I/O请求发送至存储系统的各个存储节点,以达到负载均衡的目的。当存储节点的控制器接收到网络转发设备转发的I/O请求后,可以根据预先设置的数据处理策略,确定处理该I/O请求的存储节点。如果确定该I/O请求是归属其他存储节点处理的,则可以将该I/O请求转发至相应的存储节点进行处理。但这样就会I/O请求需要在各存储节点之间进行转发,进而导致存储系统处理I/O请求的效率降低。
发明内容
本申请实施例提供了一种处理I/O请求的方法、装置、系统、设备及存储介质,可以解决存储系统处理I/O请求的效率降低的问题,所述技术方案如下:
第一方面,提供了一种处理I/O请求的方法,应用于网络转发设备,该方法包括:
接收目标I/O请求,目标I/O请求中携带有目的地址与目标逻辑块地址,目的地址为第一存储节点的节点地址;基于预设的逻辑块地址与存储节点的对应关系,确定目标逻辑块地址对应的第二存储节点;如果第二存储节点与第一存储节点不一致,则将目标I/O请求中的目的地址修改为第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;发送修改目的地址后的目标I/O请求。
本申请实施例所示的方案,在网络转发设备接收到目标I/O请求后,可以根据目标I/O请求中携带的目标逻辑块地址和预设的逻辑块地址与存储节点的对应关系,确定实际处理目标I/O请求的第二存储节点。如果确定实际处理目标I/O请求的第二存储节点不是目标I/O请求中目的地址对应的第一存储节点,则可以将目标I/O请求中的目的地址修改为第二存储节点的节点地址,再对修改目的地址后的目标I/O请求进行发送。这样通过网络转发设备就可以直接将目标I/O请求发送至实际处理目标I/O请求的存储节点,无需目标I/O请求在存储系统中的各存储节点转发,能够提高处理目标I/O请求的效率。
在一种可能的实现方式中,将目标I/O请求中的目的地址修改为第二存储节点对应的存储节点地址,并在目标I/O请求中添加第一存储节点的节点地址,得到修改目的地址后的目标I/O请求,其中,修改目的地址后的目标I/O请求用于,指示第二存储节点在接收到修改目的地址后的目标I/O请求后,基于修改目的地址后的目标I/O请求进行I/O请求处理;在完成I/O请求处理后,基于第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知。
本申请实施例所示的方案,在更改目标I/O请求的目的地址时,还可以在目标I/O请求中添加第一存储节点的节点地址,也就是更改前的目的地址。这样第二存储节点在完成目标I/O请求的处理后,可以根据目标I/O请求中添加第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知,再由第一存储节点向发送I/O请求的客户端设备发送第二I/O请求处理完成通知。如此对于客户端设备,感知到的就是将目标I/O请求发送至了第一存储节点,之后接收到了第一存储节点返回的I/O请求处理完成通知。可见申请实施例无需客户端设备进行改进,便可以提高存储系统处理I/O的效率,能够提高本申请实施例所示方案的适用范围。
在一种可能的实现方式中,将目标I/O请求添加已处理标识,得到添加处理后的目标I/O请求;将添加处理后的目标I/O请求发送至第一存储节点,已处理标识用于指示第一存储节点不对添加处理后的目标I/O请求进行I/O请求处理,并在接收到第二存储节点发送的第一I/O请求处理完成通知后,向网络转发设备发送第二I/O请求处理完成通知;接收第一存储节点发送的第二I/O请求处理完成通知;将第二I/O请求处理完成通知转发至下发目标I/O请求的客户端设备。
本申请实施例所示的方案,网络转发设备仍然可以将目标I/O请求发送至第一存储节点,不过在发送目标I/O请求之前,可以在目标I/O中添加已处理标识。这样,第一存储节点在接收到添加处理后的目标I/O请求后,可以根据其中携带的已处理标识,确定该目标I/O请求已有其他的存储节点(第二存储节点)处理,因此无需对该目标I/O请求进行I/O请求处理。这样即能够满足设备之间通信协议的要求,又避免了I/O请求在存储节点之间转发,能够提高存储系统处理目标I/O请求的效率。
在一种可能的实现方式中,确定目标I/O请求是否为立即数写请求;如果确定目标I/O请求为立即数写请求,则确定立即数写请求对应的写请求信息,其中,写请求信息中包括立即数写请求的源地址、目的地址、以及立即数写请求对应的至少一个写数据报文的序列号范围;当接收到非I/O请求的报文时,获取非I/O请求的报文的源地址、目的地址、以及序列号,并基于立即数写请求的写请求信息,确定接收到的报文是否属于立即数写请求对应的写数据报文;如果确定接收到的报文为立即数写请求对应的写数据报文,则将写数据报文中的目的地址修改为第二存储节点的节点地址,得到修改目的地址后的写数据报文;发送修改目的地址后的写数据报文。
本申请实施例所示的方案,目标I/O请求还可以包括立即数写请求,立即数写请求与读I/O请求或写I/O请求不同,立即数写请求中可以携带有部分待写入存储系统的数据,剩余待写入存储系统的数据可分别携带在立即数写请求之后的多个连续的写数据报文。所以在本申请实施例所示的方案,当确定目标I/O请求为立即数写请求时,可以获取立即数写请求的写请求信息,即源地址、目的地址、以及立即数写请求对应的至少一个写数据报文的序列号范围。如此,可以根据立即数写请求的写请求信息确定之后接收到的报文是否为立即数写请求对应的写数据报文,进而完成对立即数写请求之后的写数据报文发送处理。可见本申请实施例所示的方案,可适用于不同的I/O请求的处理,包括写I/O请求、读I/O请求以及立即数写请求,可以提高存储系统处理I/O请求的效率。
第二方面,提供了一种处理I/O请求的方法,应用于第二存储节点,该方法包括:
接收网络转发设备发送的修改目的地址后的目标I/O请求,修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;基于修改目的地址后的目标I/O请求,进行I/O请求处理;在完成I/O请求处理后,基于第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知,第一I/O请求处理完成通知用于指示第一存储节点在接收到第一I/O请求处理完成通知后,向网络转发设备发送第二I/O请求处理完成通知,以使网络转发设备将第二I/O请求处理完成通知转发至下发目标I/O请求的客户端设备。
本申请实施例所示的方案,第二存储节点在根据接收到网络转发设备发送的修改目的地址后的目标I/O请求,完成I/O请求处理后,可以根据修改目的地址后的目标I/O请求中携带的第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知,再由第一存储节点向发送I/O请求的客户端设备发送第二I/O请求处理完成通知。可见通过网络转发设备就可以直接将目标I/O请求发送至实际处理目标I/O请求的存储节点,无需目标I/O请求在存储系统中的各存储节点转发,能够提高处理目标I/O请求的效率。并且对于客户端设备,感知到的就是将目标I/O请求发送至了第一存储节点,之后接收到了第一存储节点返回的I/O请求处理完成通知。可见申请实施例无需客户端设备进行改进,便可以提高存储系统处理I/O的效率,能够提高本申请实施例所示方案的适用范围。
第三方面,提供了一种处理I/O请求的方法,应用于第三存储节点,该方法包括:
接收网络转发设备发送的添加处理后的目标I/O请求,添加处理后的目标I/O请求中添加有已处理标识;接收第二存储节点发送的第一I/O请求处理完成通知;向网络转发设备发送第二I/O请求处理完成通知,以使网络转发设备将第二I/O请求处理完成通知转发至下发目标I/O请求的客户端设备。
本申请实施例所示的方案,第一存储节点在接收到网络转发设备发送的添加处理后的目标I/O请求后,可以不对添加处理后的目标I/O请求进行I/O请求处理,当接收到第二存储节点发送的第一I/O请求处理完成通知;向网络转发设备发送第二I/O请求处理完成通知。可见通过网络转发设备就可以直接将目标I/O请求发送至实际处理目标I/O请求的存储节点,无需目标I/O请求在存储系统中的各存储节点转发,能够提高处理目标I/O请求的效率。并且对于客户端设备,感知到的就是将目标I/O请求发送至了第一存储节点,之后接收到了第一存储节点返回的I/O请求处理完成通知。可见申请实施例无需客户端设备进行改进,便可以提高存储系统处理I/O的效率,能够提高本申请实施例所示方案的适用范围。
在一种可能的实现方式中,确定添加处理后的目标I/O请求是否为立即数写请求;如果确定添加处理后的目标I/O请求为立即数写请求,则确定立即数写请求对应的写请求信息,其中,写请求信息中包括立即数写请求的源地址、目的地址、以及立即数写请求对应的多个写数据报文对应的报文标识范围;当接收到非I/O请求的报文时,获取非I/O请求的报文的源地址、目的地址、以及序列号,并基于立即数写请求的写请求信息,确定接收到的报文是否属于立即数写请求对应的写数据报文;如果确定接收到的报文为立即数写请求对应的写数据报文,则不对写数据报文进行处理。
本申请实施例所示的方案,目标I/O请求还可以包括立即数写请求,立即数写请求与读I/O请求或写I/O请求不同,立即数写请求中可以携带有部分待写入存储系统的数据,剩余待写入存储系统的数据可分别携带在立即数写请求之后的多个连续的写数据报文。所以在本申请实施例所示的方案,当确定目标I/O请求为立即数写请求时,可以获取立即数写请求的写请求信息,即源地址、目的地址、以及立即数写请求对应的至少一个写数据报文的序列号范围。如此,可以根据立即数写请求的写请求信息确定之后接收到的报文是否为立即数写请求对应的写数据报文,如果是,则可以不对写数据报文进行处理。如此,对客户端设备,感知到的就是将目标I/O请求发送至了第一存储节点,并接收到了第一存储节点返回的I/O请求处理完成通知。
第四方面,提供了一种处理I/O请求的装置,应用于网络转发设备,该装置包括:
接收模块,用于接收目标I/O请求,所述目标I/O请求中携带有目的地址与目标逻辑块地址,所述目的地址为所述第一存储节点的节点地址;
确定模块,用于基于预设的逻辑块地址与存储节点的对应关系,确定所述目标逻辑块地址对应的第二存储节点;
修改模块,用于如果所述第二存储节点与所述第一存储节点不一致,则将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;
发送模块,用于发送所述修改目的地址后的目标I/O请求。
在一种可能的实现方式中,所述修改模块,用于:
将所述目标I/O请求中的目的地址修改为所述第二存储节点对应的存储节点地址,并在所述目标I/O请求中添加所述第一存储节点的节点地址,得到修改目的地址后的目标I/O请求,其中,所述修改目的地址后的目标I/O请求用于,指示所述第二存储节点在接收到所述修改目的地址后的目标I/O请求后,基于所述修改目的地址后的目标I/O请求进行I/O请求处理;在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知。
在一种可能的实现方式中,所述发送模块,还用于:
将所述目标I/O请求添加已处理标识,得到添加处理后的目标I/O请求;
将所述添加处理后的目标I/O请求发送至所述第一存储节点,所述已处理标识用于指示所述第一存储节点不对所述添加处理后的目标I/O请求进行I/O请求处理,并在接收到所述第二存储节点发送的第一I/O请求处理完成通知后,向所述网络转发设备发送第二I/O请求处理完成通知;
所述接收模块,还用于:接收所述第一存储节点发送的所述第二I/O请求处理完成通知;
所述发送模块,还用于:将所述第二I/O请求处理完成通知发送至下发所述目标I/O请求的客户端设备。
在一种可能的实现方式中,所述确定模块还用于:
确定所述目标I/O请求是否为立即数写请求;
如果确定所述目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的至少一个写数据报文的序列号范围;
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则将所述写数据报文中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的写数据报文;
所述发送模块,还用于:发送所述修改目的地址后的写数据报文。
第五方面,提供了一种处理I/O请求的装置,应用于第二存储节点,该装置包括:
接收模块,用于接收网络转发设备发送的修改目的地址后的目标I/O请求,所述修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;
处理模块,用于基于所述修改目的地址后的目标I/O请求,进行I/O请求处理;
发送模块,用于在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知,所述第一I/O请求处理完成通知用于指示所述第一存储节点在接收到所述第一I/O请求处理完成通知后,向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知转发至下发所述目标I/O请求的客户端设备。
第六方面,提供了一种处理I/O请求的装置,应用于第一存储节点,该装置包括:
接收模块,用于接收网络转发设备发送的添加处理后的目标I/O请求,所述添加处理后的目标I/O请求中添加有已处理标识,接收第二存储节点发送的第一I/O请求处理完成通知;
发送模块,用于向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知转发至下发所述目标I/O请求的客户端设备。
在一种可能的实现方式中,所述装置还包括确定模块,用于:
确定所述添加处理后的目标I/O请求是否为立即数写请求;如果确定所述添加处理后的目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的多个写数据报文对应的报文标识范围;
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则不对所述写数据报文进行处理。
第七方面,提供了一种处理I/O请求的系统,该系统包括网络转发设备、第一存储节点、第二存储节点,其中:
网络转发设备用于,接收目标I/O请求,目标I/O请求中携带有目的地址与目标逻辑块地址,目的地址为第一存储节点的节点地址;基于预设的逻辑块地址与存储节点的对应关系,确定目标逻辑块地址对应的第二存储节点;如果第二存储节点与第一存储节点不一致,则将目标I/O请求中的目的地址修改为第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;发送修改目的地址后的目标I/O请求;
第二存储节点用于,接收网络转发设备发送的修改目的地址后的目标I/O请求,修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;基于修改目的地址后的目标I/O请求,进行I/O请求处理;在完成I/O请求处理后,基于第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知;
第一存储节点用于,接收网络转发设备发送的添加处理后的目标I/O请求,添加处理后的目标I/O请求中添加有已处理标识;接收第二存储节点发送的第一I/O请求处理完成通知;向网络转发设备发送第二I/O请求处理完成通知。
第八方面,提供了一种网络转发设备,网络转发设备包括存储器和处理器,存储器用于存储计算机指令;处理器执行存储器存储的计算机指令,以使网络转发设备执行如上第一方面或第一方面的任意一种可能的实现方式中方法。
第九方面,提供了一种存储节点,存储节点包括存储器和处理器,存储器用于存储计算机指令;处理器执行存储器存储的计算机指令,以使存储节点执行如上第二方面或第二方面的任意一种可能的实现方式中方法,以及执行如上第三方面或第三方面的任意一种可能的实现方式中方法。
第十方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序代码,当计算机程序代码被计算机设备执行时,计算机设备实现上述第一方面、第二方面、第三方面、第一方面任意可能的实现方式、第二方面任意可能的实现方式或第三方面任意可能的实现方式的方法。
第十一方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现上述第一方面、第二方面、第三方面、第一方面任意可能的实现方式、第二方面任意可能的实现方式或第三方面任意可能的实现方式的方法。
附图说明
图1是本申请实施例提供的一种系统框架示意图;
图2是本申请实施例提供的一种处理I/O请求的方法流程图;
图3是本申请实施例提供的一种处理I/O请求的方法流程图;
图4是本申请实施例提供的一种处理I/O请求的方法流程图;
图5是本申请实施例提供的一种处理I/O请求的方法流程图;
图6是本申请实施例提供的一种处理I/O请求的装置结构示意图;
图7是本申请实施例提供的一种处理I/O请求的装置结构示意图;
图8是本申请实施例提供的一种处理I/O请求的装置结构示意图。
具体实施方式
本申请实施例提供了一种处理I/O(Input/Output,输入/输出)请求的方法,该方法可以应用在存储系统中。其中,该存储系统可以是分布式存储系统,如图1所示,本实施例提供的存储系统中包括多个存储节点100(图1中示出了三个存储节点100,但不限于三个存储节点100)、至少一个计算节点200和网络转发设备300。
存储节点100可以是服务器、台式计算机或者存储阵列的控制器、硬盘框等。存储节点100之间可以互联,在功能上,存储节点100主要用于对数据进行计算、存储等。在硬件上,如图1所示,存储节点100至少包括控制器101和存储器102。其中,控制器101中可以包括处理器,如中央处理器(Central Processing Unit,CPU),用于处理来自存储节点100外部的数据,或者存储节点100内部生成的数据。存储器102,是指用于存储数据的装置,例如可以是固态硬盘(Solid-State Drive,SSD)。
计算节点200是可以用户侧的一种计算设备,如服务器、台式计算机等。在硬件层面,计算节点200中设置有处理器和内存。在软件层面,计算节点200上运行有应用程序(application)201(简称应用)和客户端程序202(简称客户端)。应用201是对用户呈现的各种应用程序的统称。客户端202用于接收由应用201触发的数据处理请求,并且与存储节点100交互,向存储节点100发送数据处理请求。客户端202还用于接收来自存储节点的数据,并向应用201转发数据。可以理解的是,当客户端202是软件程序时,客户端202的功能由计算节点200所包含的处理器运行内存中的程序来实现。客户端202也可以由位于计算节点200内部的硬件组件来实现。
网络转发设备300可以是网络中负责转发报文的设备,例如可以是交换机、路由器等。网络转发设备300可包括设置有处理器和接收器和发送器(图1中未示出),在存储系统中可用于处理、接收和发送存储节点10和计算节点200之间的数据信息。
其中,存储系统中的各存储节点100中包括的固态硬盘可组成存储池,用于对数据进行统一存储。技术人员可以将存储池中的存储空间虚拟化为逻辑单元(Logical Unit,LU)提供给计算节点200使用。每个逻辑单元具有唯一的逻辑单元号(Logical UnitNumber,LUN)。由于计算节点200能直接感知到逻辑单元号,本领域技术人员通常直接用LUN代指逻辑单元。每个LUN具有LUN ID,用于标识LUN。此时,内存池以页为粒度为LUN提供存储空间,换句话说,当存储节点200向内存池申请空间时,内存池以一个页或者页的整数倍为其分配空间。一个页的大小可以是4KB,也可以是8KB等等,本申请不对页的大小进行限定。数据位于一个LUN内的具体位置可以由起始地址和该数据的长度(Length)确定。对于起始地址,本领域技术人员通常称作逻辑块地址(Logical Block Address,LBA)。可以理解的是,LUN ID、LBA和Length这三个因素标识一个确定的地址段,一个地址段可以索引到一个全局地址。
在现有方案中,计算节点200的客户端程序202可以是第三方多路径软件,计算节点200需要在存储池中读写数据时,可以通过第三方多路径软件随机向存储节点100发送相应的I/O请求,在I/O请求中可以携带有对应存储节点100的地址信息和待读写的数据在存储池中的LBA。计算节点200可以将I/O请求发送至网络转发设备300,网络转发设备300可以将I/O请求转发至对应的存储节点100。但是在现有技术中,在存储节点100会设置数据处理策略,即处理I/O请求的策略,存储节点100在接收到网络转发设备300发送的I/O请求后,可以根据处理I/O请求的策略,确定处理该I/O请求的目标存储节点100,然后将I/O请求目标存储节点100。如此对于任一I/O请求可能会在存储系统的存储节点之间进行转发,且存储节点对I/O请求进行转发时,还会触发控制器中CPU的中断,进而导致I/O请求的处理效率较低。
本申请提供的处理I/O请求的方法,可以应用在存储系统中,可以避免I/O请求在存储系统的存储节点之间进行转发,可以提高I/O请求的处理效率。
为了便于对本申请实施例的理解,下面首先介绍所涉及到的一些概念进行解释说明:
高速串行计算机扩展总线标准(Peripheral Component Interconnect express,PCIe),PCIe最大的意义在于它的通用性,不仅可以让它用于南桥和其他设备的连接,也可以延伸到芯片组间的连接,甚至也可以用于连接图形处理器,这样,整个I/O系统重新统一起来,将更进一步简化计算机系统,增加计算机的可移植性和模块化。
非易失性存储器规范(Non-Volatile Memory express,NVMe),是一个逻辑设备接口规范。它是基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCIe总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器)。
总线之上的NVMe(NVMe over Fabric,NVMe-oF),是NVMe中的一个细分协议,其中以NVMe为主协议,规范了客户端对盘的读写、访问以及资源管理等功能。NVMe-oF主要是基于NVMe的网络协议规范,可以将基于融合以太网的RDMA(RDMA over Converged Ethernet,RoCE)等网络协议与NVMe进行结合起来。
非易失性内存主机控制器接口规范(Remote Direct Memory Access,RDMA)是一种绕过远程主机操作系统内核访问其内存中数据的技术,由于不经过操作系统,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其在大规模并行计算机集群中有广泛应用。
基于融合以太网的RDMA(RDMA over Converged Ethernet,RoCE),是一种通过以太网络应用RDMA的技术。
下面对本申请的具体实施例进行详细介绍,如下:
本申请实施例提供的一种处理I/O请求的方法,可以提高存储系统处理I/O请求的效率,该方法可应用于存储系统中的网络转发设备,如图2所示,图2为本申请实施例提供的一种处理I/O请求的方法流程图,下面将结合具体实施方式,对网络转发设备的处理流程进行详细的说明,内容可以如下:
步骤201、接收目标I/O请求,目标I/O请求中携带有目的地址与目标逻辑块地址,目的地址为第一存储节点的节点地址。
目标I/O请求可以是任一计算节点通过第三方多路径软件经网络转发设备(后续可称为交换机)向存储节点发送的I/O请求。其中,在计算节点发送I/O请求中可以携带带有任一存储节点的目的地址,即第一存储节点的节点地址,如第一存储节点的互联网协议(Internet Protocol,IP)地址和媒体存取控制(Media Access Control,MAC)地址等。并且在I/O请求中可以携带有目标逻辑块地址(LBA),该目标逻辑块地址为计算节点请求在存储池中读或写数据的起始逻辑地址。另外,需要说明的是,在本申请中无需第三方多路径软件进行适应性的改进,第三方多路径软件可以按照任意I/O请求下发规则,将I/O请求发送至存储系统的任一存储节点。
在交换机接收到任一报文时,可以确定报文是否为I/O请求的报文。如计算节点和存储节点之间基于RDMA实现远端的数据读写时,对应的I/O请求可以是携带NVMe协议标准中的提交队列条目(Submission Queue Entry,SQE)信息的报文(后续可称为SQE报文)。在交换机在接收到SQE报文之后,可以对SQE报文解封装,得到SQE字段。可以根据SQE字段中前四个字节记录的命令“元数据”确定接收到的报文否为I/O命令。如果确定接收到的报文属于I/O请求时,则可以获取报文中的IP地址、MAC地址等。该IP地址、MAC地址为第一存储节点的地址信息。第一存储节点为计算节点原本要将目标I/O请求发送至的目的存储节点。
步骤202、基于预设的逻辑块地址与存储节点的对应关系,确定目标逻辑块地址对应的第二存储节点。
其中,在逻辑块地址与存储节点的对应关系中,逻辑块地址对应的存储节点即为在该逻辑块地址上进行数据读写处理的存储节点。技术人员可以预先设置逻辑块地址与存储节点的对应关系。如表一所示,在表一中包括多个逻辑地址段,如LUN ID0,LBA0,Length、LUN ID1,LBA1,Length、LUN ID2,LBA2,Length等,以及每个逻辑地址段对应的存储节点,其中,在表一中可以通过存储的存储节点的节点标识或节点地址等,用于标识对应的存储节点。另外,表一是对逻辑块地址与存储节点的对应关系示意性举例,具体可由技术人员根据实际处理需求设置。该对应关系可以为上述提到的数据处理策略。
表一.逻辑地址与存储节点对应关系
逻辑地址段 | 存储节点 |
LUN ID0,LBA0,Length | 存储节点0 |
LUN ID1,LBA1,Length | 存储节点1 |
LUN ID2,LBA2,Length | 存储节点2 |
…… | …… |
在交换机确定目标I/O请求中携带的目标逻辑块地址后,可以在该对应关系中,确定对应目标逻辑块地址的存储节点(第二存储节点),该第二存储节点即为存储系统中实际处理目标I/O请求的存储节点。例如,当确定目标I/O请求中携带的目标逻辑块命中LUNID0、LBA0、Length等对应的逻辑地址段,根据表一,可以确定处理目标I/O请求的存储节点为存储节点0。
步骤203、如果第二存储节点与第一存储节点不一致,则将目标I/O请求中的目的地址修改为第二存储节点的节点地址,得到修改目的地址后的目标I/O请求。
在根据逻辑块地址与存储节点的对应关系,确定目标逻辑块地址对应的第二存储节点后,例如确定第二存储节点对应的节点地址或节点标识后,可以确定第二存储节点是否为计算节点想要将I/O请求发送至的第一存储节点,例如可以对比第一存储节点和第二存储节点对应的节点地址。
如果确定第一存储节点和第二存储节点一致,也就是第一存储节点和第二存储节点为同一个存储节点,则可以直接对目标I/O请求进行发送处理,即可以将I/O请求发送至第一存储节点(或第二存储节点),由第一存储节点(或第二存储节点)对目标I/O请求进行处理。
如果确定第一存储节点和第二存储节点不一致,则说明如果将目标I/O请求发送至第一存储节点,则第一存储节点还需要将目标I/O请求转发至第二存储节点。因此在本步骤中,可以将目标I/O请求中的目的地址(也就是第一存储节点的地址)修改为第二存储节点的地址。具体的,可以先对目标I/O请求进行复制,得到复制后的目标I/O请求,然后可以在复制后的目标I/O请求基础上,对目标地址进行修改,得到修改目的地址后的目标I/O请求。而对于原目标I/O请求,可以发送至第一存储节点。对于第一存储节点对原目标I/O请求的处理,此处先不进行介绍。
步骤204、发送修改目的地址后的目标I/O请求。
在对目标I/O请求中的目的地址进行修改后,交换机可以将修改目的地址后的目标I/O请求进行转发,即发送至第二存储节点。这样第二存储节点在接收到修改目的地址后的目标I/O请求后,可以直接进行I/O请求处理。可见本申请可以避免I/O请求在第一存储节点与第二存储节点之间转发,进而可以提高I/O请求的处理效率。
本申请实施例,通过网络转发设备确定,待将目标I/O请求转发至的存储节点是否为处理目标I/O请求的存储节点,如果不是,则可以修改目标I/O请求中的目的地址,进而直接将目标I/O请求发送至实际处理目标I/O请求的存储节点,可以避免目标I/O请求在存储系统中的各存储节点转发,能够提高处理目标I/O请求的效率。
在本申请中,计算节点以及存储节点之前,可以基于NVMe-oF、RDMA、RoCE等协议,实现计算节点在存储节点读、写数据的处理。在本申请中,I/O请求包括读I/O请求、写I/O请求、以及立即数写请求。其中,当I/O请求为读I/O请求和写I/O请求时,对应的处理可参见图3。
图3是本申请实施例提供的一种处理I/O请求的方法流程图,应用于网络转发设备和存储节点,参见图3,该方法包括:
步骤301、网络转发设备将目标I/O请求添加已处理标识,得到添加处理后的目标I/O请求,将添加处理后的目标I/O请求发送至第一存储节点。
其中,在本申请实施例中,计算节点和存储节点之间可基于RDMA协议进行数据的读写处理。
交换机可以将目标I/O请求发送至第一存储节点,不过在将目标I/O请求发送至第一存储节点之前,可以在目标I/O请求中添加已处理标识。例如,在本申请中,可以应用NVMe协议标准中双字组指令0(Command Double Word,CDW0)的4bits保留位,用来标识存储节点中控制器要做的处理。如在本步骤中可以将CDW0的4bits保留位置设置为1111,作为已处理标识。
在得到添加处理后的目标I/O请求后,可以将添加处理后的目标I/O请求发送至第一存储节点,用于指示第一存储节点不对添加处理后的目标I/O请求进行I/O请求处理,并在接收到第二存储节点发送的第一I/O请求处理完成通知后,向网络转发设备发送第二I/O请求处理完成通知,其中,在NVMe协议中,I/O请求可以是SQE报文,当存储节点完成后可以向发送I/O请求的计算节点返回完成队列条目(Complete Queue Entry,CQE)报文(后续可称为CQE报文)。第一I/O请求处理完成通知可以是任意用于标识第二存储节点完成I/O请求处理的通知,对应目标I/O请求为SQE报文,第二I/O请求处理完成通知可以为CQE报文。
步骤302、网络转发设备将目标I/O请求中的目的地址更改为第二存储节点对应的存储节点地址,并在目标I/O请求中添加第一存储节点的节点地址,得到修改目的地址后的目标I/O请求,发送修改目的地址后的目标I/O请求至第二存储节点。
对应上述步骤203,交换机在将目标I/O请求中的目的地址进行修改后,还可以在目标I/O请求中添加第一存储节点的节点地址,即在目标I/O请求中保留原始的目的地址,例如可以将原始的目的地址添加到SQE报文中的CDW2~CDW5字段中。除此之外,还可以在目标I/O请求中添加已转发标识,用于表示I/O请求,是由交换机通过更改目的地址发到至存储节点的,例如可以将CDW0字段设置为1100,作为已转发标识。在得到修改目的地址后的目标I/O请求,可以将修改目的地址后的目标I/O请求发送至第二存储节点。进而指示第二存储节点基于修改目的地址后的目标I/O请求进行I/O请求处理;在完成I/O请求处理后,基于第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知。
其中,需要说明的是,对于步骤301和步骤302中分别目标I/O请求中的字段进行的修改,可以理解为,在执行步骤301和步骤302之前,可以先对目标I/O请求进行复制,得到复制后的目标I/O请求,在步骤301中,对目标IO请求的处理,可以是在原目标IO请求的基础上进行的,在步骤302中,对目标IO请求的处理,可以是在复制后的目标IO请求的基础上进行的。
步骤303、第一存储节点接收网络转发设备发送的添加处理后的目标I/O请求,添加处理后的目标I/O请求中添加有已处理标识。
第一存储节点在每次接收到网络转发设备发送的I/O请求后,可以确定接收到的I/O请求是否为添加处理后的目标I/O请求。沿用上述步骤301举例,第一存储节点可以对接收的I/O请求中的CDW0的4bits保留位的值是否为已处理标识对应的数值,即是否为1111。
如果确定接收到的I/O请求不是添加处理后的目标I/O请求,则可以正常的对接收到的I/O请求进行处理。如在本申请中,如果网络转发设备确定第一存储节点和第二存储节点为统一存储节点,则可以将CDW0的4bits保留位的值设置为0000,用于标识对应的I/O请求由接收到该IO请求的存储节点处理,且由该存储节点提交CQE报文。如果确定接收到的I/O请求是添加处理后的目标I/O请求,则可以不对接收到的添加处理后的目标I/O请求进行处理,如可以将添加处理后的目标I/O请求的处理进程挂起,等待处理对应目标I/O请求的第二存储节点发送第一I/O请求处理完成通知。
步骤304、第二存储节点接收网络转发设备发送的修改目的地址后的目标I/O请求,修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址,基于修改目的地址后的目标I/O请求,进行I/O请求处理,在完成I/O请求处理后,基于第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知。
第二存储节点在每次接收到网络转发设备发送的I/O请求后,可以确定接收到的I/O请求是否为修改目的地址后的目标I/O请求。沿用上述步骤302的举例,第二存储节点确定接收的I/O请求中的CDW0的4bits保留位的值是否为已转发标识对应的数值,即是否为1100。
如果确定接收到的I/O请求不是修改目的地址后的目标I/O请求,则可以正常的对接收到的I/O请求进行处理,此时CDW0的4bits保留位的值可以为0000。如果确定接收到的I/O请求是修改目的地址后的目标I/O请求,可以对接收到的添加已转发标识后的目标I/O请求进行处理,并在第二存储节点在完成I/O请求处理后,基于目标IO请求中携带的第一存储节点的节点地址,向第一存储节点发送第一I/O请求处理完成通知。其中,该第一I/O请求处理完成通知可以是任意用于表示第二存储节点完成对应I/O请求处理的通知。
步骤305、第一存储节点接收第二存储节点发送的第一I/O请求处理完成通知。
步骤306、第一存储节点向网络转发设备发送第二I/O请求处理完成通知。
第一存储节点在接收到第二存储节点发送的第一I/O请求处理完成通知后,可以向网络转发设备发送第二I/O请求处理完成通知,其中,第二I/O请求处理完成通知可以CQE报文。
其中,需要说明的是,在本申请中第一存储节点和第二存储节点仅是为了清楚地介绍方案,而对存储节点进行的区分。实际上第一存储节点和第二存储节点可以是存储系统中,任意两个存储节点,在存储系统中的任一存储节点都可以实现如第一存储节点和第二存储节点所执行的操作。
步骤307、网络转发设备在接收第一存储节点发送的第二I/O请求处理完成通知后,将第二I/O请求处理完成通知转发至发送目标I/O请求的客户端设备。
交换机在接收到第一存储节点发送的第二I/O请求处理完成通知后,可以将第二I/O请求处理完成通知发送至发送目标I/O请求的客户端设备(计算节点)。如此对于客户端设备,感知到的就是将目标I/O请求发送至了第一存储节点并接收到了第一存储节点返回的I/O请求处理完成通知。也就是,本申请实施例提供的处理I/O请求的方法只需要应用在网络转发设备和存储节点,客户端设备无需进行相应的改进,这样可以提高本申请实施例对于各种客户端设备、第三方多路径软件的适用性。
本申请实施例,通过网络转发设备确定,待将目标I/O请求转发至的存储节点是否为处理目标I/O请求的存储节点,如果不是,则可以修改目标I/O请求中的目的地址,将目标I/O请求发送至实际处理目标I/O请求的存储节点,无需目标I/O请求在存储系统中的各存储节点转发,能够提高处理目标I/O请求的效率。
图4是本申请实施例提供的一种处理I/O请求的方法流程图,应用于网络转发设备,该方法是对I/O请求为立即数写请求时的处理,参见图4,该方法包括:
步骤401、确定目标I/O请求是否为立即数写请求。
其中,立即数写请求可以由计算节点发起,在立即数写请求同时携带有待写入的数据,由于待写入的数据一般大于报文中可携带数据的最大值。因此,待写入的数据可以拆分到多个不同的报文中。多个报文中的首包可称为立即数写请求,非首包后续可称为写数据报文。
对应上述步骤101的处理,在交换机在接收任一报文时,可以确定报文是否为I/O请求对应的报文。并且在确定报文是否为I/O请求时,还可以确定I/O请求的类型。例如可以通过SQE字段中前四个字节记录的命令“元数据”确定接收到的SQE报文否为I/O命令以及I/O命令的类型。其中,I/O命令的类型包括写I/O请求、读I/O请求以及立即数写请求。
步骤402、如果确定目标I/O请求为立即数写请求,则确定立即数写请求对应的写请求信息。
其中,写请求信息中包括立即数写请求的源地址、目的地址、以及立即数写请求对应的至少一个写数据报文的序列号范围。
如果确定目标I/O请求为立即数写请求时,则可以获取目标I/O请求中立即数写请求中的写请求信息。在立即数写请求中,可携带有立即数写请求的序列号以及立即写请求对应的写数据的大小。由于立即写请求对应的首包和非首包之间是连续发送的,可以通过写数据的大小以及每个各包中携带数据的大小,确定写数据报文的个数,进而根据立即数写请求的序列号,确定立即数写请求对应各个包的序列号范围。
并且可以获取立即数写请求中的源地址和目标地址。可以根据源地址和目的地址建立立即数转发表。另外,RDMA协议中,计算节点和存储节点之间还可以建立通道连接,且在立即数写请求中还可以携带有通道连接标识。因此还可以获取立即数写请求中通道连接标识也添加到立即数转发表中。如表二所示,表二为对立即数转发表示意性举例,其中,ScrIP为源地址,DstIP为目的地址、DstQP(Destination Queue Pair)为通道连接标识。
表二.立即数转发表
ScrIP | DstIP | DstQP | |
立即数请求0 | 1.111.111.10 | 1.111.111.11 | QP0-QP1 |
立即数请求1 | 1.111.111.20 | 1.111.111.21 | QP0-QP2 |
立即数请求2 | 1.111.111.30 | 1.111.111.31 | QP0-QP3 |
…… | …… | …… | …… |
步骤403、当接收到非I/O请求的报文时,基于立即数写请求的写请求信息,确定接收到的报文是否属于立即数写请求对应的写数据报文。
在接收到非I/O请求的报文时,可以获取报文中的源地址、目的地址以及通道连接标识。确定建立的立即数转发表是否存在对应的源地址、目的地址以及通道连接标识。如果存在则说明,该报文可能是某个立即数写请求对应的非首包,之后可以确定该报文的序列号是否在对应的序列号范围内,如果在序列号范围内,则可以确定接收到的报文属于立即数写请求对应的写数据报文。
步骤404、如果确定接收到的报文为立即数写请求对应的写数据报文,则将写数据报文中的目的地址修改为第二存储节点的节点地址,得到修改目的地址后的写数据报文。
如果确定接收到的报文为立即数写请求对应的写数据报文,则将写数据报文中的目的地址修改为第二存储节点的节点地址,得到修改目的地址后的写数据报文。
步骤405、发送修改目的地址后的写数据报文。
在得到修改后的目的地址后,可以将修改后目的地址后的写数据报文发送至第二存储节点进行处理。另外,需要说明的是,交换机仍然可以修改目的地址前的写数据报文发送至第一存储节点。例如,可以是在确定接收到的报文为立即数写请求对应的写数据报文时,可以先对写数据报文进行复制,得到复制后的写数据报文。对于复制后的写数据报文可以执行步骤404-405,对于原写数据报文可以发送至第一存储节点。
其中,在将原写数据报文发送至第一存储节点之前,可以将写数据报文中携带的写数据删除,仅保留写数据报文对应的报头信息,如此可以降低向第一存储节点发送写数据报文所占用的带宽,提高向第一存储节点发送写数据报文的效率。对于第一存储节点接收写数据报文后的处理,此处先不就行介绍,可参见图5对应的方法流程。
本申请实施例,通过网络转发设备待将计算节点发送的目标I/O请求转发至的存储节点是否为处理目标I/O请求的存储节点,如果不是,则可以修改目标I/O请求中的目的地址,将目标I/O请求发送至实际处理目标I/O请求的存储节点,无需目标I/O请求在存储系统中的各存储节点转发,能够提高处理目标I/O请求的效率。
图5是本申请实施例提供的一种处理I/O请求的方法流程图,应用于第一存储节点,该方法是对I/O请求为立即数写请求时的处理,参见图5,该方法包括:
步骤501、确定添加处理后的目标I/O请求是否为立即数写请求。
第一存储节点在接收任一报文时,可以确定报文是否为I/O请求对应的报文。并且在确定报文是否为I/O请求时,还可以确定I/O请求的类型。例如可以通过SQE字段中前四个字节记录的命令“元数据”确定接收到的SQE报文否为I/O命令以及I/O命令的类型。
步骤502、如果确定添加处理后的目标I/O请求为立即数写请求,则确定立即数写请求对应的写请求信息,其中,写请求信息中包括立即数写请求的源地址、目的地址、以及立即数写请求对应的多个写数据报文对应的报文标识范围。
其中,写请求信息中包括立即数写请求的源地址、目的地址、以及立即数写请求对应的至少一个写数据报文的报文标识范围。立即数写请求,一般会分为多个报文携带数据,但只有在
如果确定目标I/O请求为立即数写请求时,则可以获取目标I/O请求中立即数写请求中的写请求信息。在立即数写请求中,可携带有立即数写请求的序列号以及立即写请求对应的写数据的大小。由于立即写请求对应的首包和非首包之间是连续发送的,因此可以确定立即数写请求对应的各个包的序列号范围,并且可以获取立即数写请求中的源地址和目标地址。可以根据源地址和目的地址建立立即数转发表。另外,RDMA协议中,计算节点和存储节点之间还可以建立通道连接,且在立即数写请求中还可以携带有通道连接标识。因此还可以获取立即数写请求中通道连接标识也添加到立即数转发表中。其中,立即数转发表可参见表二。
步骤503、当接收到非I/O请求的报文时,基于立即数写请求的写请求信息,确定接收到的报文是否属于立即数写请求对应的写数据报文。
在接收到非I/O请求的报文时,可以获取报文中的源地址、目的地址以及通道连接标识。确定建立的立即数转发表是否存在对应的源地址、目的地址以及通道连接标识。如果存在则说明,该报文可能是某个立即数写请求对应的非首包,之后可以确定该报文的序列号是否在对应的序列号范围内,如果在序列号范围内,则可以确定接收到的报文属于立即数写请求对应的写数据报文。
步骤504、如果确定接收到的报文为立即数写请求对应的写数据报文,则不对写数据报文进行处理。
如果确定接收到的报文为立即数写请求对应的写数据报文,则不对写数据报文进行处理,当接收到第二存储节点在完成对立即数写请求的处理后发送的第一I/O请求处理完成通知时,可以向网络转发设备发送第二I/O请求处理完成通知,进而通过网络转发设备将第二I/O请求处理完成通知转发至客户端设备。
本申请实施例,通过网络转发设备确定,待将计算节点发送的目标I/O请求转发至的存储节点是否为处理目标I/O请求的存储节点,如果不是,则可以修改目标I/O请求中的目的地址,将目标I/O请求发送至实际处理目标I/O请求的存储节点,无需目标I/O请求在存储系统中的各存储节点转发,能够提高处理目标I/O请求的效率。
基于相同的技术构思,本申请实施例还提供了一种处理I/O请求的装置,该装置可以是上述实施例中的网络转发设备,如图6所示,该装置包括:
接收模块610,用于接收目标I/O请求,所述目标I/O请求中携带有目的地址与目标逻辑块地址,所述目的地址为所述第一存储节点的节点地址;具体可以实现上述步骤201中的接收功能,以及其他隐含步骤。
确定模块620,用于基于预设的逻辑块地址与存储节点的对应关系,确定所述目标逻辑块地址对应的第二存储节点;具体可以实现上述步骤202中的确定功能,以及其他隐含步骤。
修改模块630,用于如果所述第二存储节点与所述第一存储节点不一致,则将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;具体可以实现上述步骤203中的修改功能,以及其他隐含步骤。
发送模块640,用于发送所述修改目的地址后的目标I/O请求;具体可以实现上述步骤204中的发送功能,以及其他隐含步骤。
在一种可能的实现方式中,所述修改模块630,用于:
将所述目标I/O请求中的目的地址修改为所述第二存储节点对应的存储节点地址,并在所述目标I/O请求中添加所述第一存储节点的节点地址,得到修改目的地址后的目标I/O请求,其中,所述修改目的地址后的目标I/O请求用于,指示所述第二存储节点在接收到所述修改目的地址后的目标I/O请求后,基于所述修改目的地址后的目标I/O请求进行I/O请求处理;在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知。
在一种可能的实现方式中,所述发送模块640,还用于:
将所述目标I/O请求添加已处理标识,得到添加处理后的目标I/O请求;
将所述添加处理后的目标I/O请求发送至所述第一存储节点,所述已处理标识用于指示所述第一存储节点不对所述添加处理后的目标I/O请求进行I/O请求处理,并在接收到所述第二存储节点发送的第一I/O请求处理完成通知后,向所述网络转发设备发送第二I/O请求处理完成通知;
所述接收模块610,还用于:接收所述第一存储节点发送的所述第二I/O请求处理完成通知;
所述发送模块640,还用于:将所述第二I/O请求处理完成通知转发至下发所述目标I/O请求的客户端设备。
在一种可能的实现方式中,所述确定模块620还用于:
确定所述目标I/O请求是否为立即数写请求;
如果确定所述目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的至少一个写数据报文的序列号范围;
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则将所述写数据报文中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的写数据报文;
所述发送模块,还用于:发送所述修改目的地址后的写数据报文。
基于相同的技术构思,本申请实施例还提供了一种处理I/O请求的装置,该装置可以是上述实施例中的第二存储节点,如图7所示,该装置包括:
接收模块710,用于接收网络转发设备发送的修改目的地址后的目标I/O请求,所述修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;具体可以实现上述步骤304中的接收功能,以及其他隐含步骤。
处理模块720,用于基于所述修改目的地址后的目标I/O请求,进行I/O请求处理;具体可以实现上述步骤304中的处理功能,以及其他隐含步骤。
发送模块730,用于在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知,所述第一I/O请求处理完成通知用于指示所述第一存储节点在接收到所述第一I/O请求处理完成通知后,向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知发送至下发所述目标I/O请求的客户端设备。具体可以实现上述步骤304中的发送功能,以及其他隐含步骤。
基于相同的技术构思,本申请实施例还提供了一种处理I/O请求的装置,该装置可以是上述实施例中的第一存储节点,如图8所示,该装置包括:
接收模块810,用于接收网络转发设备发送的添加处理后的目标I/O请求,所述添加处理后的目标I/O请求中添加有已处理标识,接收第二存储节点发送的第一I/O请求处理完成通知;具体可以实现上述步骤305中的接收功能,以及其他隐含步骤。
发送模块820,用于向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知发送至下发所述目标I/O请求的客户端设备。具体可以实现上述步骤306中的发送功能,以及其他隐含步骤。
在一种可能的实现方式中,所述装置还包括确定模块830,用于:
确定所述添加处理后的目标I/O请求是否为立即数写请求;如果确定所述添加处理后的目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的多个写数据报文对应的报文标识范围;
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则不对所述写数据报文进行处理。
需要说明的是:上述实施例提供的处理I/O请求的装置在处理I/O请求时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将源服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的处理I/O请求的装置与处理I/O请求的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本申请实施例还提供了一种处理I/O请求的系统,所述系统包括网络转发设备、第一存储节点、第二存储节点,其中:
所述网络转发设备用于,接收目标I/O请求,所述目标I/O请求中携带有目的地址与目标逻辑块地址,所述目的地址为所述第一存储节点的节点地址;基于预设的逻辑块地址与存储节点的对应关系,确定所述目标逻辑块地址对应的第二存储节点;如果所述第二存储节点与所述第一存储节点不一致,则将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;发送所述修改目的地址后的目标I/O请求;
所述第二存储节点用于,接收所述网络转发设备发送的修改目的地址后的目标I/O请求,所述修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;基于所述修改目的地址后的目标I/O请求,进行I/O请求处理;在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知;
所述第一存储节点用于,接收网络转发设备发送的添加处理后的目标I/O请求,所述添加处理后的目标I/O请求中添加有已处理标识;接收第二存储节点发送的第一I/O请求处理完成通知;向所述网络转发设备发送所述第二I/O请求处理完成通知。
需要说明的是:上述实施例提供的存储系统与数据下刷的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种网络转发设备,所述网络转发设备包括存储器和处理器,所述存储器用于存储计算机指令;所述处理器执行所述存储器存储的计算机指令,以使所述网络转发设备执行上述实施例中处理I/O请求方法。
本申请实施例还提供了一种存储节点,如图1所示,存储节点中包括控制器和处理器,所述存储器用于存储计算机指令;所述处理器执行所述存储器存储的计算机指令,以使所述存储节点执行上述实施例中处理I/O请求方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在设备上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (18)
1.一种处理I/O请求的方法,其特征在于,应用于网络转发设备,所述方法包括:
接收目标I/O请求,所述目标I/O请求中携带有目的地址与目标逻辑块地址,所述目的地址为所述第一存储节点的节点地址;
基于预设的逻辑块地址与存储节点的对应关系,确定所述目标逻辑块地址对应的第二存储节点;
如果所述第二存储节点与所述第一存储节点不一致,则将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;
发送所述修改目的地址后的目标I/O请求。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求,包括:
将所述目标I/O请求中的目的地址修改为所述第二存储节点对应的存储节点地址,并在所述目标I/O请求中添加所述第一存储节点的节点地址,得到修改目的地址后的目标I/O请求,其中,所述修改目的地址后的目标I/O请求用于,指示所述第二存储节点在接收到所述修改目的地址后的目标I/O请求后,基于所述修改目的地址后的目标I/O请求进行I/O请求处理;在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述目标I/O请求添加已处理标识,得到添加处理后的目标I/O请求;
将所述添加处理后的目标I/O请求发送至所述第一存储节点,所述已处理标识用于指示所述第一存储节点不对所述添加处理后的目标I/O请求进行I/O请求处理,并在接收到所述第二存储节点发送的第一I/O请求处理完成通知后,向所述网络转发设备发送第二I/O请求处理完成通知;
所述方法还包括:
接收所述第一存储节点发送的所述第二I/O请求处理完成通知;
将所述第二I/O请求处理完成通知转发至下发所述目标I/O请求的客户端设备。
4.根据权利要求1所述的方法,其特征在于,所述接收目标I/O请求之后,所述方法还包括:
确定所述目标I/O请求是否为立即数写请求;
如果确定所述目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的至少一个写数据报文的序列号范围;
所述方法还包括:
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则将所述写数据报文中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的写数据报文;
发送所述修改目的地址后的写数据报文。
5.一种处理I/O请求的方法,其特征在于,应用于第二存储节点,所述方法包括:
接收网络转发设备发送的修改目的地址后的目标I/O请求,所述修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;
基于所述修改目的地址后的目标I/O请求,进行I/O请求处理;
在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知,所述第一I/O请求处理完成通知用于指示所述第一存储节点在接收到所述第一I/O请求处理完成通知后,向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知转发至下发所述目标I/O请求的客户端设备。
6.一种处理I/O请求的方法,其特征在于,应用于第一存储节点,所述方法包括:
接收网络转发设备发送的添加处理后的目标I/O请求,所述添加处理后的目标I/O请求中添加有已处理标识;
接收第二存储节点发送的第一I/O请求处理完成通知;
向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知转发至下发所述目标I/O请求的客户端设备。
7.根据权利要求6所述的方法,其特征在于,所述接收网络转发设备发送的添加处理后的目标I/O请求之后,所述方法还包括:
确定所述添加处理后的目标I/O请求是否为立即数写请求;
如果确定所述添加处理后的目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的多个写数据报文对应的报文标识范围;
所述方法还包括:
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则不对所述写数据报文进行处理。
8.一种处理I/O请求的装置,其特征在于,应用于网络转发设备,所述装置包括:
接收模块,用于接收目标I/O请求,所述目标I/O请求中携带有目的地址与目标逻辑块地址,所述目的地址为所述第一存储节点的节点地址;
确定模块,用于基于预设的逻辑块地址与存储节点的对应关系,确定所述目标逻辑块地址对应的第二存储节点;
修改模块,用于如果所述第二存储节点与所述第一存储节点不一致,则将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;
发送模块,用于发送所述修改目的地址后的目标I/O请求。
9.根据权利要求8所述的装置,其特征在于,所述修改模块,用于:
将所述目标I/O请求中的目的地址修改为所述第二存储节点对应的存储节点地址,并在所述目标I/O请求中添加所述第一存储节点的节点地址,得到修改目的地址后的目标I/O请求,其中,所述修改目的地址后的目标I/O请求用于,指示所述第二存储节点在接收到所述修改目的地址后的目标I/O请求后,基于所述修改目的地址后的目标I/O请求进行I/O请求处理;在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知。
10.根据权利要求9所述的装置,其特征在于,所述发送模块,还用于:
将所述目标I/O请求添加已处理标识,得到添加处理后的目标I/O请求;
将所述添加处理后的目标I/O请求发送至所述第一存储节点,所述已处理标识用于指示所述第一存储节点不对所述添加处理后的目标I/O请求进行I/O请求处理,并在接收到所述第二存储节点发送的第一I/O请求处理完成通知后,向所述网络转发设备发送第二I/O请求处理完成通知;
所述接收模块,还用于:接收所述第一存储节点发送的所述第二I/O请求处理完成通知;
所述发送模块,还用于:将所述第二I/O请求处理完成通知转发至下发所述目标I/O请求的客户端设备。
11.根据权利要求9所述的装置,其特征在于,所述确定模块还用于:
确定所述目标I/O请求是否为立即数写请求;
如果确定所述目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的至少一个写数据报文的序列号范围;
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则将所述写数据报文中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的写数据报文;
所述发送模块,还用于:发送所述修改目的地址后的写数据报文。
12.一种处理I/O请求的装置,其特征在于,应用于第二存储节点,所述装置包括:
接收模块,用于接收网络转发设备发送的修改目的地址后的目标I/O请求,所述修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;
处理模块,用于基于所述修改目的地址后的目标I/O请求,进行I/O请求处理;
发送模块,用于在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知,所述第一I/O请求处理完成通知用于指示所述第一存储节点在接收到所述第一I/O请求处理完成通知后,向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知发送至下发所述目标I/O请求的客户端设备。
13.一种处理I/O请求的装置,其特征在于,应用于第一存储节点,所述装置包括:
接收模块,用于接收网络转发设备发送的添加处理后的目标I/O请求,所述添加处理后的目标I/O请求中添加有已处理标识,接收第二存储节点发送的第一I/O请求处理完成通知;
发送模块,用于向所述网络转发设备发送所述第二I/O请求处理完成通知,以使所述网络转发设备将所述第二I/O请求处理完成通知发送至下发所述目标I/O请求的客户端设备。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括确定模块,用于:
确定所述添加处理后的目标I/O请求是否为立即数写请求;如果确定所述添加处理后的目标I/O请求为立即数写请求,则确定所述立即数写请求对应的写请求信息,其中,所述写请求信息中包括所述立即数写请求的源地址、目的地址、以及所述立即数写请求对应的多个写数据报文对应的报文标识范围;
当接收到非I/O请求的报文时,获取所述非I/O请求的报文的源地址、目的地址、以及序列号,并基于所述立即数写请求的写请求信息,确定接收到的报文是否属于所述立即数写请求对应的写数据报文;
如果确定所述接收到的报文为所述立即数写请求对应的写数据报文,则不对所述写数据报文进行处理。
15.一种处理I/O请求的系统,其特征在于,所述系统包括网络转发设备、第一存储节点、第二存储节点,其中:
所述网络转发设备用于,接收目标I/O请求,所述目标I/O请求中携带有目的地址与目标逻辑块地址,所述目的地址为所述第一存储节点的节点地址;基于预设的逻辑块地址与存储节点的对应关系,确定所述目标逻辑块地址对应的第二存储节点;如果所述第二存储节点与所述第一存储节点不一致,则将所述目标I/O请求中的目的地址修改为所述第二存储节点的节点地址,得到修改目的地址后的目标I/O请求;发送所述修改目的地址后的目标I/O请求;
所述第二存储节点用于,接收所述网络转发设备发送的修改目的地址后的目标I/O请求,所述修改目的地址后的目标I/O请求中携带有第一存储节点的节点地址;基于所述修改目的地址后的目标I/O请求,进行I/O请求处理;在完成所述I/O请求处理后,基于所述第一存储节点的节点地址,向所述第一存储节点发送第一I/O请求处理完成通知;
所述第一存储节点用于,接收网络转发设备发送的添加处理后的目标I/O请求,所述添加处理后的目标I/O请求中添加有已处理标识;接收第二存储节点发送的第一I/O请求处理完成通知;向所述网络转发设备发送所述第二I/O请求处理完成通知。
16.一种网络转发设备,其特征在于,所述网络转发设备包括存储器和处理器,所述存储器用于存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,以使所述网络转发设备执行上述权利要求1至4中任一项所述的方法。
17.一种存储节点,其特征在于,所述存储节点包括存储器和处理器,所述存储器用于存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,以使所述存储节点执行上述权利要求5至7中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算机设备执行时,所述计算机设备实现上述权利要求1至7中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111013237.XA CN115729440A (zh) | 2021-08-31 | 2021-08-31 | 处理i/o请求的方法、装置、系统、设备及存储介质 |
PCT/CN2022/115524 WO2023030256A1 (zh) | 2021-08-31 | 2022-08-29 | 处理i/o请求的方法、装置、系统、设备及存储介质 |
EP22863392.1A EP4383682A1 (en) | 2021-08-31 | 2022-08-29 | I/o request processing method and apparatus, system, device, and storage medium |
US18/590,268 US20240201881A1 (en) | 2021-08-31 | 2024-02-28 | I/O Request Processing Method, Apparatus, and System, Device, and Storage Medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111013237.XA CN115729440A (zh) | 2021-08-31 | 2021-08-31 | 处理i/o请求的方法、装置、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729440A true CN115729440A (zh) | 2023-03-03 |
Family
ID=85291589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111013237.XA Pending CN115729440A (zh) | 2021-08-31 | 2021-08-31 | 处理i/o请求的方法、装置、系统、设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240201881A1 (zh) |
EP (1) | EP4383682A1 (zh) |
CN (1) | CN115729440A (zh) |
WO (1) | WO2023030256A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104951238A (zh) * | 2014-03-24 | 2015-09-30 | 国际商业机器公司 | 用于在分布式虚拟环境中管理数据存储的方法和装置 |
CN106164898B (zh) * | 2014-10-11 | 2018-06-26 | 华为技术有限公司 | 数据处理方法和装置 |
US10126962B2 (en) * | 2016-04-22 | 2018-11-13 | Microsoft Technology Licensing, Llc | Adapted block translation table (BTT) |
US10642779B2 (en) * | 2018-03-26 | 2020-05-05 | Microsoft Technology Licensing, Llc | Group-based data replication in multi-tenant storage systems |
CN113315845B (zh) * | 2021-07-28 | 2022-01-04 | 阿里云计算有限公司 | 数据传输方法、装置及分布式存储系统 |
-
2021
- 2021-08-31 CN CN202111013237.XA patent/CN115729440A/zh active Pending
-
2022
- 2022-08-29 EP EP22863392.1A patent/EP4383682A1/en active Pending
- 2022-08-29 WO PCT/CN2022/115524 patent/WO2023030256A1/zh unknown
-
2024
- 2024-02-28 US US18/590,268 patent/US20240201881A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4383682A1 (en) | 2024-06-12 |
US20240201881A1 (en) | 2024-06-20 |
WO2023030256A1 (zh) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636052B2 (en) | Non-volatile memory express (NVMe) data processing method and system | |
US20200278880A1 (en) | Method, apparatus, and system for accessing storage device | |
WO2020259418A1 (zh) | 一种数据访问方法、网卡及服务器 | |
US20220222016A1 (en) | Method for accessing solid state disk and storage device | |
WO2022007470A1 (zh) | 一种数据传输的方法、芯片和设备 | |
EP3465450B1 (en) | Improving throughput in openfabrics environments | |
EP4421631A1 (en) | Data migration method and apparatus, and electronic device | |
WO2022032990A1 (zh) | 一种命令信息传输方法、系统、装置及可读存储介质 | |
WO2023116438A1 (zh) | 一种数据访问方法、装置以及设备 | |
CN104731635A (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
WO2023165309A1 (zh) | 可共享远程直接数据存取链接的创建方法及装置 | |
US20240273050A1 (en) | Network storage method, storage system, data processing unit, and computer system | |
US10853255B2 (en) | Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover | |
US8055817B2 (en) | Efficient handling of queued-direct I/O requests and completions | |
WO2019244656A1 (ja) | ストレージ装置 | |
US20230244417A1 (en) | Storage node, storage device, and network chip | |
CN115729440A (zh) | 处理i/o请求的方法、装置、系统、设备及存储介质 | |
US20060277326A1 (en) | Data transfer system and method | |
CN116418848A (zh) | 网络节点的配置和访问请求的处理方法、装置 | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
WO2024193272A1 (zh) | 一种数据共享方法、装置及设备 | |
WO2024152588A1 (zh) | 内存访问的页错误处理方法及装置 | |
WO2017020572A1 (zh) | 一种中断处理方法、ioapic及计算机系统 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
US20240356886A1 (en) | Network Node Configuration Method and Apparatus, and Access Request Processing Method and Apparatus |
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 |