CN110007859B - 一种i/o请求处理方法、装置及客户端 - Google Patents
一种i/o请求处理方法、装置及客户端 Download PDFInfo
- Publication number
- CN110007859B CN110007859B CN201910239212.8A CN201910239212A CN110007859B CN 110007859 B CN110007859 B CN 110007859B CN 201910239212 A CN201910239212 A CN 201910239212A CN 110007859 B CN110007859 B CN 110007859B
- Authority
- CN
- China
- Prior art keywords
- address
- storage unit
- offset
- logical storage
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0638—Organizing or formatting or addressing of data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提出一种I/O请求处理方法、装置及客户端,涉及存储技术领域。该方法及装置用于根据接收到的I/O请求确定目标地址,并根据目标地址的优先级确定地址偏移量,然后根据根据目标地址及地址偏移量得到偏移地址,并基于根据偏移地址对第一逻辑存储单元或第二逻辑存储单元发起I/O请求。通过本方法可实现同一LUN内存储地址粒度的优先级识别,从而可以保证检测I/O的带宽,避免无法及时响应检测I/O请求的问题,保障系统的稳定性。
Description
技术领域
本发明涉及存储技术领域,具体而言,涉及一种I/O请求处理方法、装置及客户端。
背景技术
随着计算机技术以及网络技术的高速发展,计算机自带的存储器逐渐难以满足存储需求,于是发展出相对独立的存储设备。通常地,存储设备可以通过创建逻辑单元号(Logical Unit Number,LUN)对计算机主机提供磁盘空间。
现有技术中,计算机主机可以对同一LUN同时发起检测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为本发明中第一逻辑存储单元及第二逻辑存储单元的地址范围示例图。
图3为本发明提供的进一步的应用场景图。
图4为本发明提供的应用于客户端的I/O请求处理方法的流程图。
图5为本发明提供的应用于客户端的I/O请求处理方法具体的流程图。
图6为本发明提供的应用于客户端的I/O请求处理方法进一步的流程图。
图7为本发明提供的应用于客户端的I/O请求处理装置的功能模块图。
图8为本发明提供的应用于存储设备的I/O请求处理方法具体的流程图。
图9为本发明提供的应用于存储设备的I/O请求处理装置的功能模块图。
图标:110-客户端;112-处理器;114-逻辑块设备;116-第一块设备;118-第二块设备;120-存储设备;122-第一逻辑存储单元;124-第二逻辑存储单元;200-第一I/O请求处理装置;210-处理模块;220-请求发送模块;300-第二I/O请求处理装置;310-指令接收模块;320-新建模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
现有技术中,通常在存储设备中创建一个容量很大的逻辑单元号LUN(LogicalUnit Number,LUN),在存储领域,LUN通常也称为逻辑存储单元。同时,客户端常常需要通过存储网络对LUN发起I/O请求。I/O请求可被划分为检测I/O请求以及业务I/O请求。通常地,检测I/O为客户端每隔预设定时间向固定地址发起的I/O,如获取心跳等。业务I/O则为客户端运行时需要对存储设备进行访问而发起的I/O,如存储或下载文件。然而在系统负载较高时,业务I/O常常会抢占检测I/O的带宽,导致存储设备无法及时响应该检测I/O请求,从而引发检测误判带来的系统问题。
同时,现有的存储设备可以做到基于LUN级别的粒度做服务质量保证(Quality ofService,QoS),也即可以实现一个LUN的优先级高于另一个LUN的优先级,而无法做到基于存储地址粒度的QoS,也即,无法使属于LUN的地址A的优先级高于属于同一LUN的地址B的优先级。因此,本发明提供了一种I/O请求处理方法、装置及客户端来解决上述问题。
请参阅图1,为本发明的应用场景图。在该应用场景图中,客户端110与存储设备120通信连接。其中,存储设备120中预先创建了第一逻辑存储单元122(图示为LUN1)和第二逻辑存储单元124(图示为LUN2)。
同时,第二逻辑存储单元124为存储设备120根据客户端110发送的新建命令而建立的。其中,新建命令用于指示存储设备120根据从第一逻辑存储单元122的地址范围中截选的存储地址建立第二逻辑存储单元124。也即,第一逻辑存储单元122的地址范围包含第二逻辑存储单元124的地址范围。
具体地,第二逻辑存储单元124包含的存储地址即为客户端110发起的检测I/O请求需要访问的地址。如图2所示,第一逻辑存储单元122完整的地址范围为0~100,若客户端110会固定对第一逻辑存储单元122中的第2、3、4、5个地址发起I/O请求,此时便将第2、3、4、5个地址作为第二逻辑存储单元124的地址范围,从而建立第二逻辑存储单元124。
同时,第二逻辑存储单元124的优先级高于第一逻辑存储单元122的优先级。从而,当存储设备120同时接收到访问第二逻辑存储单元124和访问第一逻辑存储单元122的I/O请求时,便会优先处理访问第二逻辑存储单元124的I/O请求,从而提高了处理检测I/O请求的优先级。
由于第一逻辑存储单元122与第二逻辑存储单元124的存储地址部分重合,若第一逻辑存储单元122和第二逻辑存储单元124均为可见的,很可能引起操作混乱。因此,请参阅图3,为本发明提供的进一步的应用场景图。其中,客户端110包括与第一逻辑存储单元122存在映射关系的第一块设备116,与第二逻辑存储单元124存在映射关系的第二块设备118,处理器112以及逻辑块设备114。
可以理解地,处理器112可通过逻辑块设备114和第一块设备116访问第一逻辑存储单元122,或通过逻辑块设备114和第二块设备118访问第二逻辑存储单元124。
其中,逻辑块设备114是处理器112基于预设定的通用设备映射机制(DeviceMapper,DM),将第一块设备116及第二块设备118绑定而成的,使得第一块设备116与第二块设备118对于处理器112而言,以逻辑块设备114这一个块设备的形式存在;同时使得第一块设备116与第二块设备118对于存储设备120而言,还是分别对应第一逻辑存储单元122和第二逻辑存储单元124。
建立逻辑块设备114的好处在于,对于用户而言,通过客户端110访问第一逻辑存储单元122和第二逻辑存储单元124的入口为同一个,避免了操作混乱。也即,无论用户是想访问第一逻辑存储单元122还是第二逻辑存储单元124,从一个入口发起I/O操作即可。
本发明提供了一种I/O请求处理方法,应用于图1中的客户端110。该I/O请求处理方法用于准确识别I/O请求的类型,以确定其对应的逻辑存储单元,从而实现对检测I/O请求的优先处理。请参阅图4,为本发明提供的I/O请求处理方法的流程图。该I/O请求处理方法包括:
S401,根据接收到的I/O请求确定目标地址。
客户端110与存储设备120的第一逻辑存储单元122及第二逻辑存储单元124建立访问连接后,用户便能直接通过客户端110对第一逻辑存储单元122和/或第二逻辑存储单元124发起I/O请求。其中,I/O请求包括目标地址以及目标数据,客户端110可通过目标地址找到目标数据。
另外,目标地址具有对应的优先级。在一种可选的实施方式中,优先级包括第一优先级以及第二优先级,且第一优先级低于第二优先级。S402,根据目标地址的优先级确定地址偏移量。
请参阅图5,为本发明提供的I/O请求处理方法进一步的流程图。S402包括:
S4021,确定目标地址的优先级为第一优先级或第二优先级,若目标地址的优先级为第一优先级,则执行S4022;若目标地址的优先级为第二优先级,则执行S4023。
由于检测I/O请求的存储地址通常是固定的,在本实施例中,将检测I/O请求的存储地址设置为高优先级的地址,而将同一LUN中的其他存储地址设置为低优先级的地址。具体地,将第二逻辑存储单元124包含的存储地址设置为高优先级的地址,将第一逻辑存储单元122中,除第二逻辑存储单元124包含的存储地址以外的其他存储地址设置为低优先级的地址。
在一种可选的实施方式中,可以为每个存储地址设置优先级。也即,将第二逻辑存储单元124包含的存储地址的优先级设置为第二优先级,而将第一逻辑存储单元122中,除第二逻辑存储单元124包含的存储地址以外的其他存储地址的优先级设置为第一优先级,使得存储地址具备优先级这一固有属性。从而,通过目标地址的固有属性则能确定目标地址的优先级为第一优先级或第二优先级。
在另一种可选的实施方式中,可以将第二逻辑存储单元124包含的存储地址形成一个集合,若目的地址属于这一集合,则确定该目的地址的优先级较高,也即优先级为第二优先级;反之,则确定该目的地址的优先级较低,也即优先级为第一优先级。
S4022,将预设定的第一偏移量确定为地址偏移量。
可以理解地,不同的优先级对应有不同的地址偏移量。具体地,当目标地址的优先级为较低的第一优先级时,将预设定的第一偏移量作为地址偏移量。在一种优选的实施方式中,预设定的第一偏移量为0。
S4023,将预设定的第二偏移量确定为地址偏移量。
若目标地址的优先级为第一优先级,则将预设定的第二偏移量确定为所述地址偏移量。其中,第二偏移量大于或等于预设定的地址范围的最大值,预设定的地址范围与预设定的第一偏移量及第一逻辑存储单元122的地址范围关联。
具体地,在第一逻辑存储单元122的地址范围上叠加预设定的第一偏移量,便可以得到预设定的地址范围。例如,预设定的第一偏移量为10,且第一逻辑存储单元122的地址范围为0~10,那么预设定的地址范围就应该为10~20。此时,第二偏移量应该大于或等于20。若预设定的第一偏移量为0,则预设定的地址范围即为第一逻辑存储单元122的地址范围本身,而第二偏移量应该大于或等于第一逻辑存储单元122的最大存储地址。
S403,根据目标地址及地址偏移量得到偏移地址。
请继续参阅图5,S403包括:
S4031,在目标地址的基础上叠加预设定的第一偏移量以得到偏移地址。
若目标地址的优先级为第一优先级,则在目标地址的基础上叠加预设定的第一偏移量以得到偏移地址。例如,目标地址为3,预设定的第一偏移量为10,则偏移地址为10+3=13。
在一种优选的实施例中,第一偏移量为0,而当第一偏移量为0时,可以直接将目标地址确定为偏移地址,而无需进行一次叠加操作。
S4032,在目标地址的基础上叠加预设定的第二偏移量以得到偏移地址。
若目标地址的优先级为第二优先级,则在目标地址的基础上叠加预设定的第二偏移量以得到偏移地址。例如,目标地址为3,预设定的第二偏移量为100,则偏移地址为103。
S404,根据偏移地址及地址偏移量对第一逻辑存储单元122或第二逻辑存储单元124发起I/O请求。
请继续参阅图5,S404包括:
S4041,判断偏移地址是否超过预设定的地址范围,如果否,则执行S4042;如果是,则执行S4043。
其中,预设定的地址范围与预设定的第一偏移量及第一逻辑存储单元122的地址范围关联。例如,预设定的第一偏移量为10,且第一逻辑存储单元122的地址范围为0~10,那么预设定的地址范围就应该为10~20。
由于不同的优先级对应的地址偏移量不同,从而叠加预设定的第一偏移量后的偏移地址与叠加预设定的第二偏移量后的偏移地址必然不同。因而通过判断偏移地址是否超过预设定的地址范围,便能确定目标地址的优先级,从而确定客户端110实际想访问的是第一逻辑存储单元122还是第二逻辑存储单元124。
S4042,根据偏移地址及预设定的第一偏移量对第一逻辑存储单元122发起I/O请求。
具体地,根据偏移地址及预设定的第一偏移量对第一逻辑存储单元122发起I/O请求的过程中:由于偏移地址是目标地址叠加了第一偏移量得到的,实际上第一逻辑存储单元122中是不存在这个偏移地址的,因此为了能够顺利访问目标地址,客户端110需要基于预设定的第一偏移量,对偏移地址进行还原操作得到目标地址,然后基于还原操作后的目标地址对第一逻辑存储单元122发起I/O请求。
需要说明的是,在第一偏移量为0的情况下,由于偏移地址即为目标地址本身,因此此时也无需再根据第一偏移量进行还原操作,可直接根据偏移地址对第一逻辑存储单元122发起I/O请求。
在一种可选的实施方式中,第一逻辑存储单元122与第一块设备116存在映射关系,处理器112可通过第一块设备116对第一逻辑存储单元122发起I/O请求。
S4043,根据偏移地址及预设定的第二偏移量对第二逻辑存储单元124发起所述I/O请求。
具体地,根据偏移地址对第二逻辑存储单元124发起I/O请求的过程中:由于偏移地址是目标地址叠加了第二偏移量得到的,实际上第二逻辑存储单元124中是不存在这个偏移地址的,因此为了能够顺利访问目标地址,客户端110需要基于预设定的第二偏移量,对偏移地址进行还原操作得到目标地址,然后基于还原操作后的目标地址对第二逻辑存储单元124发起I/O请求。
在一种可选的实施方式中,第二逻辑存储单元124与第二块设备118存在映射关系,处理器112可通过第二块设备118对第二逻辑存储单元124发起I/O请求。
根据步骤S402~S404可知,不同优先级的目标地址对应于不同的逻辑存储单元。因此,为确保存储设备120会优先处理访问高优先级的目标地址的I/O请求,高优先级的目标地址对应的逻辑存储单元的优先级也较高,低优先级的目标地址对应的逻辑存储单元的优先级较低。
需要说明的是,本发明还可以存在其他实施方式,只要是能实现对于不同优先级的地址,对应有不同的偏移地址,从而对应不同的逻辑存储单元,并完成对第一逻辑存储单元122或第二逻辑存储单元124的访问这一过程的方法均可。
步骤S401~S404均为在建立了第一存储逻辑单元、第二存储逻辑单元的情况下,直接利用第一存储逻辑单元、第二存储逻辑单元的过程。本方法还包括在使用前,建立如图1所示的应用场景的方法。因此,请参阅图6,在S401之前,该I/O请求处理方法还包括:
S405,向存储设备120发送新建命令以使存储设备120建立第二逻辑存储单元124。
首先,存储设备120已经预先建立好了第一逻辑存储单元122。此时,用户通过客户端110向存储设备120发送新建命令,该新建命令包含第二逻辑存储单元124的名称、地址范围以及target名称。例如,该新建命令可以指示,名称为lun1x,地址范围为2、3、4、5、6,target名称为iqn.AAA.shadow。
存储设备120接收到新建命令以后,便根据新建命令包含的名称、地址范围以及tgt名称等信息建立第二逻辑存储单元124,从而可通过第二逻辑存储单元124实现对地址范围2、3、4、5、6的访问。
S406,建立第一块设备116与第一逻辑存储单元122的映射关系。
客户端110使用initiator工具,并利用存储设备120的ip地址、第一逻辑存储单元122的target名称连接第一逻辑存储单元122,实现对第一逻辑存储单元122的访问。具体地,客户端110通过建立第一块设备116与第一逻辑存储单元122的映射关系的方式,实现对第一逻辑存储单元122的访问。
S407,建立第二块设备118与第二逻辑存储单元124的映射关系。
同样地,客户端110使用initiator工具,并利用存储设备120的ip地址、第二逻辑存储单元124的target名称连接第二逻辑存储单元124,实现对第二逻辑存储单元124的访问。具体地,客户端110通过建立第二块设备118与第二逻辑存储单元124的映射关系的方式,实现对第二逻辑存储单元124的访问。
S408,基于预设定的通用设备映射机制,将第一块设备116及第二块设备118绑定形成逻辑块设备114,以使客户端110通过逻辑块设备114和第一块设备116向第一逻辑存储单元122发起I/O请求或通过逻辑块设备114和第二块设备118向第二逻辑存储单元124发起I/O请求。
需要说明的是,每个块设备都具有iqn(iscsi qualified name)名字,通常地,块设备的iqn名字与其存在映射关系的逻辑存储单元的target名称一致。例如,可以均为iqn.CCC。
在一种可选的实施方式中,在预设定的通用设备映射机制中,会将两个具有相同前缀的iqn名字的块设备,绑定形成逻辑块设备114。例如,第一块设备116的iqn名字为iqn.AAA,第二块设备118的iqn名字为iqn.AAA.shadow,从而由于第一块设备116的iqn名字与第二块设备118的iqn名字具备相同的前缀“iqn.AAA”,客户端110在建立第一块设备116与第一逻辑存储单元122的映射关系,以及建立建立第二块设备118与第二逻辑存储单元124的映射关系后,便会自动将第一块设备116及第二块设备118绑定形成逻辑块设备114。
其中,逻辑块设备114是处理器112基于预设定的通用设备映射机制(DeviceMapper,DM),将第一块设备116及第二块设备118绑定而成的,使得第一块设备116与第二块设备118对于处理器112而言,以逻辑块设备114这一个块设备的形式存在;同时使得第一块设备116与第二块设备118对于存储设备120而言,还是分别对应第一逻辑存储单元122和第二逻辑存储单元124。
建立逻辑块设备114的好处在于,对于用户而言,通过客户端110访问第一逻辑存储单元122和第二逻辑存储单元124的入口为同一个,避免了操作混乱。也即,无论用户是想访问第一逻辑存储单元122还是第二逻辑存储单元124,从一个入口发起I/O操作即可。
接下来的内容,将结合前述内容,举例说明本发明提供的I/O请求处理方法是如何实现属于LUN的地址A的优先级高于属于同一LUN的地址B的优先级,从而解决检测io带宽被业务io抢占的问题的。
假设LUN1的地址为0~10,其中的0~4作为检测I/O的固定地址,由客户端110根据地址“0~4”向存储设备120发送新建命令,从而建立地址范围为“0~4”的LUN2,并规定LUN2的优先级高于LUN1的优先级。同时,预先设定第一偏移量为0,第二偏移量为11,则预设定的地址范围即为LUN1的地址范围;在客户端110建立对LUN1和LUN2的访问后,若客户端110对地址6发起I/O请求,则此时偏移地址为6本身,并未超过LUN1的地址范围,则此时通过第一块设备116找到对应的LUN1,实现对LUN1的访问。若客户端110对地址0发起I/O请求,则此时偏移地址为11+0=11,超出了LUN1的地址范围0~10,从而通过第一块设备116找到对应的LUN2,实现对LUN2的访问。
而对于存储设备120而言,若存储设备120同时接收到对LUN1和LUN2的I/O请求,由于LUN2的优先级高于LUN1的优先级,则会优先处理对LUN2的I/O请求,也即会优先处理对地址0的I/O请求,而非对地址6的I/O请求,使得属于LUN1的地址0的优先级高于实际上同属于LUN1的地址6的优先级,从而即使解决了检测I/O带宽被业务I/O抢占的问题。
还需要说明的是,本发明提供的方法还适用于三个及以上的优先级的情况。仅需在得到偏移地址时,为不同优先级的目标地址叠加不同的地址偏移量,并在后续过程中,通过判断偏移地址所在的范围找到其对应的块设备,便能实现对多个LUN的访问。
另外,本发明提供的客户端110除包含处理器112以外,还包含存储器,存储器存储有能够被处理器112执行的机器可执行指令,处理器112可执行机器可执行指令以实现步骤S401~S408。
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种第一I/O请求处理装置200的实现方式,可选地,该第一I/O请求处理装置200可以采用上述图1所示的客户端110的器件结构。进一步地,请参阅图7,图7为本发明实施例提供的一种第一I/O请求处理装置200的功能模块图。需要说明的是,本实施例所提供的第一I/O请求处理装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该第一I/O请求处理装置200包括:处理模块210以及请求发送模块220。
其中,处理模块210用于根据接收到的I/O请求确定目标地址。
可以理解地,在一种可选的实施方式中,处理模块210可用于执行S401。
处理模块210还用于根据目标地址的优先级确定地址偏移量。
具体地,处理模块210用于确定目标地址的优先级为第一优先级或第二优先级,若目标地址的优先级为第一优先级,则将预设定的第一偏移量确定为地址偏移量;若目标地址的优先级为第二优先级,则将预设定的第二偏移量确定为地址偏移量;其中,第二偏移量大于或等于预设定的地址范围的最大值,预设定的地址范围与预设定的第一偏移量及第一逻辑存储单元122的地址范围关联。
可以理解地,在一种可选的实施方式中,处理模块210可用于执行S402、S4021、S4022以及S4023。
处理模块210还用于根据目标地址及地址偏移量得到偏移地址。
具体地,处理模块用于当目标地址的优先级为第一优先级时,在目标地址的基础上叠加预设定的第一偏移量以得到偏移地址;以及用于当目标地址的优先级为第二优先级时,在目标地址的基础上叠加预设定的第二偏移量以得到偏移地址。
可以理解地,在一种可选的实施方式中,处理模块210可用于执行S403、S4031以及S4032。
请求发送模块220根据偏移地址及预设定的第一偏移量对第一逻辑存储单元122发起I/O请求。
具体地,请求发送模块220用于若偏移地址未超过预设定的地址范围,则基于偏移地址及预设定的第一偏移量对第一逻辑存储单元122发起I/O请求。请求发送模块220还用于若偏移地址超过预设定的地址范围,则基于偏移地址及预设定的第二偏移量对第二逻辑存储单元124发起I/O请求。
可以理解地,在一种可选的实施方式中,请求发送模块220可用于执行S404、S4041、S4042以及S4043。
请求发送模块220还用于向存储设备120发送新建命令以使存储设备120建立第二逻辑存储单元124。
可以理解地,在一种可选的实施方式中,请求发送模块220可用于执行S405。
处理模块210还用于建立第一块设备116与第一逻辑存储单元122的映射关系,建立第二块设备118与第二逻辑存储单元124的映射关系,并基于第一块设备116及第二块设备118建立逻辑块设备114,以使客户端110通过逻辑块设备114和第一块设备116向第一逻辑存储单元122发起I/O请求或通过逻辑块设备114和第二块设备118向第二逻辑存储单元124发起I/O请求。
可以理解地,在一种可选的实施方式中,处理模块210可用于执行S406、S407、S408。
可选地,上述模块可以软件或固件(Firmware)的形式存储于图2所示的存储器中或固化于该客户端110的操作系统(Operating System,OS)中,并可由图2中的处理器112执行。同时,执行上述模块所需的数据、程序的代码等可以存储在存储器中。
本发明还提供了一种I/O请求处理方法,应用于图1中的存储设备120。请参阅图8,为本发明提供的I/O请求处理方法的流程图。该I/O请求处理方法包括:
S801,接收客户端110发送的新建命令。
其中,新建命令用于指示存储设备120根据从第一逻辑存储单元122的地址范围中截选的存储地址建立第二逻辑存储单元124。
S802,根据新建命令建立第二逻辑存储单元124,以便客户端110在建立预先建立的第一逻辑存储单元122与第一块设备116的映射关系以及建立第二逻辑存储单元124与第二块设备118的映射关系后,向存储设备120发送基于目标地址的优先级及与优先级对应的地址偏移量确定的对第一逻辑存储单元122或第二逻辑存储单元124的I/O请求。
其中,第二逻辑存储单元124的优先级高于第一逻辑存储单元122的优先级,且第一逻辑存储单元122的地址范围包含第二逻辑存储单元124的地址范围。
本发明还提供了一种第二I/O请求处理装置300,应用于图1中的存储设备120。请参阅图9,为本发明提供的I/O请求处理方法的流程图。该I/O请求处理方法装置:指令接收模块310以及新建模块320。
其中,指令接收模块310用于接收客户端110发送的新建命令。
可以理解地,在一种可选的实施方式中,指令接收模块310可用于执行S801。
新建模块320用于根据新建命令建立第二逻辑存储单元124,以便客户端110在建立预先建立的第一逻辑存储单元122与第一块设备116的映射关系以及建立第二逻辑存储单元124与第二块设备118的映射关系后,向存储设备120发送基于目标地址的优先级及与优先级对应的地址偏移量确定的对第一逻辑存储单元122或第二逻辑存储单元124的I/O请求;其中,第二逻辑存储单元124的优先级高于第一逻辑存储单元122的优先级,且第一逻辑存储单元122的地址范围包含第二逻辑存储单元124的地址范围。
可以理解地,在一种可选的实施方式中,新建模块320可用于执行S802。
综上所述,本发明提供的I/O请求处理方法、装置及客户端,用于根据接收到的I/O请求确定目标地址,并根据目标地址的优先级确定地址偏移量,然后根据根据目标地址及地址偏移量得到偏移地址,并基于根据偏移地址对第一逻辑存储单元或第二逻辑存储单元发起I/O请求,以使存储设备基于第一逻辑存储单元及第二逻辑存储单元的优先级确定处理I/O请求的顺序。由于不同优先级的目标地址对应不同的块设备,也即分别对应第二逻辑存储单元和第一逻辑存储单元,但由于第二逻辑存储单元的优先级高于第一逻辑存储单元的优先级,从而存储设备在同时接收到对第一逻辑存储单元和第二逻辑存储单元请求时,会优先处理对第二逻辑存储单元的I/O请求,从而实现了在同时接收到两种优先级目标地址对应的I/O请求时,会优先处理访问优先级高的目标地址的I/O请求,实现了同一逻辑存储单元内存储地址粒度的优先级识别,从而可以保证检测I/O的带宽,避免无法及时响应检测I/O请求的问题,保障系统的稳定性。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种I/O请求处理方法,其特征在于,应用于与存储设备通信连接的客户端,所述存储设备包括预先建立的第一逻辑存储单元及预先根据所述客户端发送的新建命令而建立的第二逻辑存储单元,其中,所述新建命令用于指示所述存储设备根据从所述第一逻辑存储单元的地址范围中截选的存储地址建立所述第二逻辑存储单元,且所述第二逻辑存储单元的优先级高于所述第一逻辑存储单元的优先级,所述方法包括:
根据接收到的I/O请求确定目标地址,所述目标地址具有对应的优先级;
根据所述目标地址的优先级确定地址偏移量;
根据所述目标地址及所述地址偏移量得到偏移地址;
根据所述偏移地址及所述地址偏移量对所述第一逻辑存储单元或所述第二逻辑存储单元发起所述I/O请求,以使所述存储设备基于所述第一逻辑存储单元及所述第二逻辑存储单元的优先级确定处理所述I/O请求的顺序。
2.根据权利要求1所述的I/O请求处理方法,其特征在于,所述根据所述目标地址的优先级确定地址偏移量的步骤包括:
若所述目标地址的优先级为第一优先级,则将预设定的第一偏移量确定为所述地址偏移量;
若所述目标地址的优先级为第二优先级,则将预设定的第二偏移量确定为所述地址偏移量;其中,所述第一优先级低于所述第二优先级,所述第二偏移量大于或等于预设定的地址范围的最大值,所述预设定的地址范围与所述预设定的第一偏移量及所述第一逻辑存储单元的地址范围关联。
3.根据权利要求2所述的I/O请求处理方法,其特征在于,所述根据所述偏移地址及所述地址偏移量对所述第一逻辑存储单元或所述第二逻辑存储单元发起所述I/O请求的步骤包括:
若所述偏移地址不超过所述预设定的地址范围,则根据所述偏移地址及所述预设定的第一偏移量对所述第一逻辑存储单元发起所述I/O请求;
若所述偏移地址超过所述预设定的地址范围,则根据所述偏移地址及所述预设定的第二偏移量对所述第二逻辑存储单元发起所述I/O请求。
4.根据权利要求3所述的I/O请求处理方法,其特征在于,所述根据所述偏移地址及所述预设定的第一偏移量对所述第一逻辑存储单元发起所述I/O请求的步骤包括:
基于所述预设定的第一偏移量,对所述偏移地址进行还原操作得到所述目标地址;
基于所述还原操作后的所述目标地址对所述第一逻辑存储单元发起所述I/O请求;
所述根据所述偏移地址及所述预设定的第二偏移量对所述第二逻辑存储单元发起所述I/O请求的步骤包括:
基于所述预设定的第二偏移量,对所述偏移地址进行还原操作得到所述目标地址;
基于所述还原操作后的所述目标地址对所述第二逻辑存储单元发起所述I/O请求。
5.根据权利要求1所述的I/O请求处理方法,其特征在于,所述客户端包括第一块设备和第二块设备,在所述根据接收到的I/O请求确定目标地址的步骤之前,所述方法还包括:
建立所述第一块设备与所述第一逻辑存储单元的映射关系;
建立所述第二块设备与所述第二逻辑存储单元的映射关系;
基于预设定的通用设备映射机制,将所述第一块设备及所述第二块设备绑定形成逻辑块设备,以使所述客户端通过所述逻辑块设备和所述第一块设备向所述第一逻辑存储单元发起I/O请求或通过所述逻辑块设备和所述第二块设备向所述第二逻辑存储单元发起I/O请求。
6.一种I/O请求处理方法,其特征在于,应用于与客户端通信连接的存储设备,所述I/O请求处理方法包括:
接收所述客户端发送的新建命令,其中,所述新建命令用于指示所述存储设备根据从预先建立的第一逻辑存储单元的地址范围中截选的存储地址建立第二逻辑存储单元;
根据所述新建命令建立所述第二逻辑存储单元,以便所述客户端在建立所述第一逻辑存储单元与第一块设备的映射关系以及建立所述第二逻辑存储单元与第二块设备的映射关系后,向所述存储设备发送基于目标地址的优先级及与所述优先级对应的地址偏移量确定的对所述第一逻辑存储单元或所述第二逻辑存储单元的I/O请求;其中,所述第二逻辑存储单元的优先级高于所述第一逻辑存储单元的优先级。
7.一种I/O请求处理装置,其特征在于,应用于与存储设备通信连接的客户端,所述存储设备包括预先建立的第一逻辑存储单元及预先根据所述客户端发送的新建命令而建立的第二逻辑存储单元,其中,所述新建命令用于指示所述存储设备根据从所述第一逻辑存储单元的地址范围中截选的存储地址建立所述第二逻辑存储单元,且所述第二逻辑存储单元的优先级高于所述第一逻辑存储单元的优先级,所述装置包括:
处理模块,用于根据接收到的I/O请求确定目标地址,所述目标地址具有对应的优先级;
所述处理模块还用于根据所述目标地址的优先级确定地址偏移量;
所述处理模块还用于根据所述目标地址及所述地址偏移量得到偏移地址;
请求发送模块,用于根据所述偏移地址及所述地址偏移量对所述第一逻辑存储单元或所述第二逻辑存储单元发起所述I/O请求,以使所述存储设备基于所述第一逻辑存储单元及所述第二逻辑存储单元的优先级确定处理所述I/O请求的顺序。
8.根据权利要求7所述的I/O请求处理装置,其特征在于,所述处理模块还用于若所述目标地址的优先级为第一优先级,则将预设定的第一偏移量确定为所述地址偏移量;
所述处理模块还用于若所述目标地址的优先级为第二优先级,则将预设定的第二偏移量确定为所述地址偏移量;其中,所述第一优先级低于所述第二优先级,所述第二偏移量大于或等于预设定的地址范围的最大值,所述预设定的地址范围与所述预设定的第一偏移量及所述第一逻辑存储单元的地址范围关联。
9.根据权利要求8所述的I/O请求处理装置,其特征在于,所述请求发送模块用于若所述偏移地址不超过所述预设定的地址范围,则根据所述偏移地址及所述预设定的第一偏移量对所述第一逻辑存储单元发起所述I/O请求;
所述请求发送模块还用于若所述偏移地址超过所述预设定的地址范围,则根据所述偏移地址及所述预设定的第二偏移量对所述第二逻辑存储单元发起所述I/O请求。
10.一种客户端,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现权利要求1-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910239212.8A CN110007859B (zh) | 2019-03-27 | 2019-03-27 | 一种i/o请求处理方法、装置及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910239212.8A CN110007859B (zh) | 2019-03-27 | 2019-03-27 | 一种i/o请求处理方法、装置及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110007859A CN110007859A (zh) | 2019-07-12 |
CN110007859B true CN110007859B (zh) | 2022-04-08 |
Family
ID=67168483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910239212.8A Active CN110007859B (zh) | 2019-03-27 | 2019-03-27 | 一种i/o请求处理方法、装置及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110007859B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606097A (zh) * | 2003-10-08 | 2005-04-13 | 三星电子株式会社 | 闪速存储器控制装置、存储器管理方法、及存储器芯片 |
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN103366801A (zh) * | 2012-03-29 | 2013-10-23 | 三星电子株式会社 | 存储器装置及其操作方法 |
US9274710B1 (en) * | 2014-03-31 | 2016-03-01 | Amazon Technologies, Inc. | Offset-based congestion control in storage systems |
CN106326134A (zh) * | 2015-06-30 | 2017-01-11 | 华为技术有限公司 | Ftl地址映射的方法及装置 |
CN108228470A (zh) * | 2016-12-21 | 2018-06-29 | 北京忆恒创源科技有限公司 | 一种处理向nvm写入数据的写命令的方法和设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690694B2 (en) * | 2011-09-27 | 2017-06-27 | Sandisk Technologies, Llc | Apparatus, system, and method for an address translation layer |
JP5918906B2 (ja) * | 2012-12-28 | 2016-05-18 | 株式会社日立製作所 | ストレージ装置及びストレージ制御方法 |
-
2019
- 2019-03-27 CN CN201910239212.8A patent/CN110007859B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606097A (zh) * | 2003-10-08 | 2005-04-13 | 三星电子株式会社 | 闪速存储器控制装置、存储器管理方法、及存储器芯片 |
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN103366801A (zh) * | 2012-03-29 | 2013-10-23 | 三星电子株式会社 | 存储器装置及其操作方法 |
US9274710B1 (en) * | 2014-03-31 | 2016-03-01 | Amazon Technologies, Inc. | Offset-based congestion control in storage systems |
CN106326134A (zh) * | 2015-06-30 | 2017-01-11 | 华为技术有限公司 | Ftl地址映射的方法及装置 |
CN108228470A (zh) * | 2016-12-21 | 2018-06-29 | 北京忆恒创源科技有限公司 | 一种处理向nvm写入数据的写命令的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110007859A (zh) | 2019-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9973394B2 (en) | Eventual consistency among many clusters including entities in a master member regime | |
US7539762B2 (en) | Method, system and program product for determining an initial number of connections for a multi-source file download | |
EP3398089A1 (en) | Methods and apparatuses for accessing cloud storage service by using traditional file system interface | |
US8001327B2 (en) | Method and apparatus for managing placement of data in a tiered storage system | |
US20150046979A1 (en) | Storage Detection Apparatus, System, and Method | |
US20140214922A1 (en) | Method of providing virtual machine and service gateway for real-time virtual desktop service | |
EP2153309B1 (en) | Physical network interface selection | |
EP3618352A1 (en) | Virtual machine management | |
US8600999B2 (en) | System and method for efficient resource management | |
US9965302B2 (en) | Systems and methods for providing an emulator | |
US20190079791A1 (en) | Data Storage Method and Apparatus | |
US8793334B1 (en) | Network-attached storage (NAS) bandwidth manager | |
CN106648838B (zh) | 一种资源池管理的配置方法及装置 | |
US8527586B1 (en) | Multi-protocol global namespace mechanism for network attached storage | |
CN110928557A (zh) | 一种操作系统迁移的实现方法、装置及系统 | |
CN114465956B (zh) | 虚拟机流量限速的方法、装置、电子设备及存储介质 | |
CN110933191B (zh) | Ip地址获取方法、装置、上位机和存储介质 | |
WO2016101662A1 (zh) | 一种数据处理方法及相关服务器 | |
CN104601666A (zh) | 日志服务方法及云平台 | |
CN110007859B (zh) | 一种i/o请求处理方法、装置及客户端 | |
US11073996B2 (en) | Host rescan for logical volume migration | |
CN105765542B (zh) | 访问文件的方法、分布式存储系统和存储节点 | |
US9940332B1 (en) | Storage pool-backed file system expansion | |
CN110908807B (zh) | 一种io任务处理方法、装置、设备及可读存储介质 | |
US10735245B2 (en) | Information processing apparatus and information processing method |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |