发布信息

IO请求处理方法、装置、主机和计算机可读存储介质与流程 专利技术说明

作者:admin      2023-07-26 11:27:36     302



计算;推算;计数设备的制造及其应用技术io请求处理方法、装置、主机和计算机可读存储介质技术领域1.本发明涉及分布式存储技术领域,具体而言,涉及一种io请求处理方法、装置、主机和计算机可读存储介质。背景技术:2.为了支撑不断增加的海量数据的存储需求,分布式存储系统以横向方式进行规模化地扩展,分布式存储系统中的存储节点数量越来越多,各存储节点不均衡地的问题极大地影响了分布式存储系统整体存储性能。技术实现要素:3.本发明的目的在于提供了一种io请求处理方法、装置、主机和计算机可读存储介质,其能够使得分布式存储系统各存储节点尽量均衡,以提高分布式存储系统整体存储性能。4.本发明的实施例可以这样实现:第一方面,本发明提供一种io请求处理方法,应用于分布式存储系统中的主机,所述分布式存储系统还包括多个存储节点,每一所述存储节点包括多块硬盘,所述主机与客户端及多个所述存储节点均通信连接,所述的io请求处理方法包括:接收所述客户端发送的写请求,所述写请求包括待写对象;基于所述写请求,按照容量均衡策略从多个硬盘组中确定目标硬盘,其中,每一所述硬盘组包括各存储节点的至少一块硬盘,每一所述硬盘只属于一个硬盘组,所述容量均衡策略用于保证多个所述硬盘组间的容量均衡和所述目标硬盘所属的硬盘组内的容量均衡;确定所述目标硬盘的当前io处理负载;根据所述目标硬盘的当前io处理负载,对所述待写对象进行写处理,以使所述目标硬盘的负载达到均衡。5.在可选的实施方式中,所述基于所述写请求,按照容量均衡策略从多个硬盘组中确定目标硬盘的步骤包括:计算每一所述硬盘组的剩余容量百分比;根据每一所述硬盘组的剩余容量百分比,从多个所述硬盘组中确定目标硬盘组;计算所述目标硬盘组中每一块硬盘的剩余容量百分比;根据所述目标硬盘组中每一块硬盘的剩余容量百分比,从所述目标硬盘组中确定目标硬盘。6.在可选的实施方式中,所述根据每一所述硬盘组的剩余容量百分比,从多个所述硬盘组中确定目标硬盘组的步骤包括:若多个所述硬盘组的剩余容量百分比中的最大值与最小值之间的差值大于预设均衡差值,则将除剩余容量百分比最小的硬盘组之外的硬盘组作为初选硬盘组;若多个所述硬盘组的剩余容量百分比中的最大值与最小值之间的差值不大于预设均衡差值,则将所有所述硬盘组作为初选硬盘组;从所述初选硬盘组中确定所述目标硬盘组。7.在可选的实施方式中,确定所述目标硬盘的当前io处理负载的步骤包括:计算所述目标硬盘所属的目标存储节点的节点带宽压力;获取所述目标硬盘当前正在处理的io数量及io大小;将所述节点带宽压力、io数量及io大小确定为所述目标硬盘的当前io处理负载。8.在可选的实施方式中,所述计算所述目标硬盘所属的目标存储节点的节点带宽压力的步骤包括:根据所述目标存储节点中每一硬盘当前正在处理的io及其io长度,计算所述目标存储节点中每一硬盘当前正在处理的数据量;将所述目标存储节点中所有硬盘当前正在处理的数据量求和,得到所述节点带宽压力。9.在可选的实施方式中,所述主机还包括存储级别内存scm,所述根据所述目标硬盘的当前io处理负载,对所述待写对象进行写处理的步骤包括:根据所述当前io处理负载,判断所述目标硬盘是否满足预设负载条件;若所述目标硬盘满足所述预设负载条件,则将所述待写对象写入至所述目标硬盘;若所述目标硬盘不满足所述预设负载条件,则将所述待写对象暂存至所述scm。10.在可选的实施方式中,所述目标硬盘为多个,每一所述目标硬盘的当前io处理负载均包括节点带宽压力、io数量及io大小,所述根据所述当前io处理负载,判断所述目标硬盘是否满足预设负载条件的步骤包括:根据每一所述目标硬盘的节点带宽压力、所述io数量及所述io大小,计算每一所述目标硬盘的负载评分;若所述目标硬盘中存在负载评分不大于预设值的硬盘,则判定所述目标硬盘满足所述预设负载条件,否则,判定所述目标硬盘不满足所述预设负载条件。11.在可选的实施方式中,所述目标硬盘为多个,每一所述目标硬盘的当前io处理负载均包括节点带宽压力、io数量及io大小,所述根据所述当前io处理负载,判断所述目标硬盘是否满足预设负载条件的步骤还包括:若所述目标硬盘中存在节点带宽压力小于预设压力、io数量小于预设数量、且io大小小于预设大小的硬盘,则判定所述目标硬盘满足所述预设负载条件,否则,判定所述目标硬盘不满足所述预设负载条件。12.第二方面,本发明提供一种io请求处理装置,应用于分布式存储系统中的主机,所述分布式存储系统还包括多个存储节点,每一所述存储节点包括多块硬盘,所述主机与客户端及多个所述存储节点均通信连接,所述io请求处理装置包括:接收模块,用于接收所述客户端发送的写请求,所述写请求包括待写对象;确定模块,用于基于所述写请求,按照容量均衡策略从多个硬盘组中确定目标硬盘,其中,每一所述硬盘组包括各存储节点的至少一块硬盘,每一所述硬盘只属于一个硬盘组,所述容量均衡策略用于保证多个所述硬盘组间的容量均衡和所述目标硬盘所属的硬盘组内的容量均衡;所述确定模块,还用于确定所述目标硬盘的当前io处理负载;处理模块,用于根据所述目标硬盘的当前io处理负载,对所述待写对象进行写处理,以使所述目标硬盘的负载达到均衡。13.第三方面,本发明提供一种主机,包括处理器和存储器,所述存储器用于存储程序,所述处理器用于在执行所述程序时,实现前述实施方式中任一项所述的io请求处理方法。14.第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现前述实施方式中任一项所述的io请求处理方法。15.与现有技术相比,本发明中的存储节点包括多个硬盘组,每一硬盘组包括各存储节点的至少一块硬盘,一块硬盘只属于一个硬盘组,先基于接收的写请求、按照容量均衡策略从多个硬盘组中确定目标硬盘,保证多个硬盘组间的容量均衡和目标硬盘所属的硬盘组内的容量均衡,然后根据目标硬盘的当前io处理负载,对写请求中的待写对象进行写处理,以使目标硬盘的负载达到均衡,通过容量均衡和负载均衡,使得分布式存储系统各存储节点尽量均衡,提高了分布式存储系统整体存储性能。附图说明16.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。17.图1为本发明实施例提供的应用场景的示例图。18.图2为本发明实施例提供的硬盘组的示例图。19.图3为本发明实施例提供的主机的方框示例图。20.图4为本发明实施例提供的io请求处理方法的流程示例图。21.图5为本发明实施例提供的io请求处理装置的方框示例图。22.图标:10-主机;11-处理器;12-存储器;13-总线;20-存储节点;30-客户端;100-io请求处理装置;110-接收模块;120-确定模块;130-处理模块。具体实施方式23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。24.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。25.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。26.需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。27.请参考图1,图1为本发明实施例提供的应用场景的示例图,图1中,主机10与分布式存储系统通信连接,分布式存储系统包括多个存储节点20,每个存储节点20包括多块硬盘,客户端30和主机10通信连接。28.主机10可以是物理的计算机设备或者能够实现与物理的计算机设备相同功能的虚拟机,主机10可以是单独一台计算机设备,也可以是由多台计算机设备组成的计算机集群。29.存储节点20可以是一台存储服务器、或者存储阵列等提供数据存储服务的存储设备。30.客户端30可以、但不限于手机、笔记本电脑、台式电脑、业务服务器等需要存储数据的电子设备。31.客户端30发送写请求至主机10,主机10将数据写入至分布式存储系统,实际上,主机10写入的数据是分散至各存储节点20的各硬盘上。若各存储节点20不均衡,可能会出现写数据在某一时刻集中于一个存储节点20、或者集中于一个存储节点20的一个硬盘,由此会导致分布式存储系统整体性能下降。32.基于图1的应用场景,为了更好地实现存储节点的均衡,本实施例将多块硬盘划分为多个硬盘组,每一硬盘组包括各存储节点的至少一块硬盘,每一硬盘只属于一个硬盘组,请参照图2,图2为本发明实施例提供的硬盘组的示例图,图2中,存储节点为3个:a、b、c。硬盘组1包括存储节点a的硬盘a1、存储节点b的硬盘b1及存储节点c的硬盘c1,硬盘组2包括存储节点a的硬盘a2、存储节点b的硬盘b2及存储节点c的硬盘c2。例如,当需求写待写数据时,首先从硬盘组中确定要写入的待写硬盘组(例如硬盘组2),再从待写硬盘组2中确定目标硬盘(例如硬盘b2、c2),以实现硬盘组1和硬盘组2间的容量均衡和硬盘组2中硬盘a1、b2和c2间的容量均衡,最后根据b2、c2的当前io处理负载对待写数据进行处理,以使目标硬盘b2、c2的负载达到均衡。33.接下来,本实施例将基于图1和图2,对能够实现分布式存储系统各存储节点尽量均衡的io请求处理方法、装置、主机和计算机可读存储介质进行详细描述。34.首先,对应用本实施例提供的io请求处理方法的图1中的主机进行描述,请参照图3,图3为本发明实施例提供的主机10的方框示例图,主机10包括处理器11、存储器12、总线13。处理器11、存储器12通过总线13连接。35.处理器11可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器11中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器11可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。36.存储器12用于存储程序,例如本实施例中的io请求处理装置100,io请求处理装置100均包括至少一个可以软件或固件(firmware)的形式存储于存储器12中的软件功能模块,处理器11在接收到执行指令后,执行程序以实现本发明实施例中的io请求处理方法。37.存储器12可能包括高速随机存取存储器(ram:random access memory),也可能还包括非易失存储器(non-volatile memory),还可能包括存储级别内存scm(storage class memory,scm),scm是一种物理计算机内存,其访问数据的速度比固态硬盘、传统硬盘和外部存储阵列中的数据访问速度要快。scm 比 dram (即动态ram)更耐用,读取和写取数据的速度比闪存芯片快 10 倍。可选地,存储器12可以是内置于处理器11中的存储装置,也可以是独立于处理器11的存储装置。38.总线13可以是isa总线、pci总线或eisa总线等。图3仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。39.然后,本实施例对提供的io请求处理方法进行详细描述,请参照图4,图4为本发明实施例提供的io请求处理方法的流程示例图,该方法包括以下步骤:步骤s101,接收客户端发送的写请求,写请求包括待写对象。40.在本实施例中,待写对象通常包括待写对象标识和待写数据,待写对象标识唯一表征该待写对象,待写数据为客户端30真正需要存储的数据。41.步骤s102,基于写请求,按照容量均衡策略从多个硬盘组中确定目标硬盘,其中,每一硬盘组包括各存储节点的至少一块硬盘,每一硬盘只属于一个硬盘组,容量均衡策略用于保证多个硬盘组间的容量均衡和目标硬盘所属的硬盘组内的容量均衡。42.在本实施例中,容量均衡策略是根据硬盘组的容量保证硬盘组间的容量均衡,根据目标硬盘所属的硬盘组内硬盘的容量保证该硬盘组内的容量均衡。43.步骤s103,确定目标硬盘的当前io处理负载。44.在本实施例中,当前io处理负载表征目标硬盘的当前io处理压力,负载越大,则当前io处理压力越大,反之越小,影响当前io处理压力的因素包括、但不限于io数量、io大小等中的至少一种。45.步骤s104,根据目标硬盘的当前io处理负载,对待写对象进行写处理,以使目标硬盘的负载达到均衡。46.在本实施例中,可以将待写对象写入至目标硬盘中当前io处理负载最小的硬盘,也可以在目标硬盘中当前io处理负载最小的硬盘的负载仍然比较大时,将待写对象先暂存,再利用后台线程利用预设的刷盘策略将待写对象写入硬盘中,以实现目标硬盘的负载均衡。47.本实施例提供的上述方法,通过容量均衡策略保证从硬盘组中选目标硬盘时,各硬盘组间和选出的目标硬盘组内各硬盘间的容量均衡,再根据目标硬盘的当前io处理负载对待写对象进行写处理,以实现目标硬盘的负载均衡,通过容量均衡和负载均衡使得分布式存储系统各存储节点尽量均衡,提高了分布式存储系统整体存储性能。48.在可选的实施方式中,为了实现容量均衡,一种基于写请求,按照容量均衡策略从多个硬盘组中确定目标硬盘的方式为:首先,计算每一硬盘组的剩余容量百分比;在本实施例中,对于任一硬盘组而言,先计算该硬盘组中的每一块硬盘的剩余容量,求硬盘组中所有硬盘的剩余容量之和,再计算该硬盘组中所有硬盘的总容量,将剩余容量之和与总容量的比值作为该硬盘组的剩余容量百分比。49.其次,根据每一硬盘组的剩余容量百分比,从多个硬盘组中确定目标硬盘组;在本实施例中,为了确保硬盘组间的容量均衡,若所有硬盘组的剩余容量百分比之间的差别过大,则采用的方式不能使差别进一步加大,可以将剩余容量百分比最小的排除后,再按照预设选取策略从剩余的硬盘组中确定目标硬盘组,若所有硬盘组的剩余容量百分比之间的差别不太大,则无需排除,直接按照预设选取策略从多个硬盘组中确定目标硬盘组,预设选取策略可以是随机选取、哈希选取、轮流选取等策略,一种实现方式为:若多个硬盘组的剩余容量百分比中的最大值与最小值之间的差值大于预设均衡差值,则将除剩余容量百分比最小的硬盘组之外的硬盘组作为初选硬盘组;若多个硬盘组的剩余容量百分比中的最大值与最小值之间的差值不大于预设均衡差值,则将所有硬盘组作为初选硬盘组;从初选硬盘组中确定目标硬盘组。50.在本实施例中,预设均衡差值可以根据实际容量均衡的需要设置,例如,预设均衡差值设置为6%。51.在本实施例中,一种确定方式可以是采取哈希策略,可以采用待写对象的对象id和初选硬盘组的个数,从初选硬盘组中确定目标硬盘组,以保证不同id的待写对象分布在不同的硬盘组。当然,也可以采用随机选取等其他方式确定目标硬盘组。52.第三,计算目标硬盘组中每一块硬盘的剩余容量百分比;第四,根据目标硬盘组中每一块硬盘的剩余容量百分比,从目标硬盘组中确定目标硬盘。53.在本实施例中,从多个目标硬盘组中的多个硬盘中确定目标硬盘的方式与前述确定初选硬盘组的方式类似:若目标硬盘组中硬盘的剩余容量百分比的最大值与最小值之间的差值大于预设均衡差值,则将除剩余容量百分比最小的硬盘之外的硬盘作为目标硬盘;若目标硬盘组中硬盘的剩余容量百分比的最大值与最小值之间的差值不大于预设均衡差值,则将目标硬盘组中的所有硬盘作为目标硬盘。54.在本实施例中,为了实现目标硬盘之间的负载均衡,先确定目标硬盘的当前io处理负载,再根据目标硬盘的当前io处理负载,对待写对象进行写处理。55.在可选的实施方式中,目标硬盘的当前io处理负载受节点带宽压力、io数量及io大小等多种因素中的一种或者多种的影响,一种确定当前io处理负载的方式为:计算目标硬盘所属的目标存储节点的节点带宽压力;获取目标硬盘当前正在处理的io数量及io大小;在本实施例中,当前正在处理的io数量为当前正在处理的io个数,io大小可以为当前正在处理的io的大小之和,例如,io个数为3,各io的大小分别为2kb、10kb及5kb,则io大小为:2kb+10kb+5kb=17kb。io大小也可以为当前正在处理的io的大小的平均值,io大小还可以为当前正在处理的io大小的最大值等。56.将节点带宽压力、io数量及io大小确定为目标硬盘的当前io处理负载。57.在本实施例中,一种计算目标存储节点的节点带宽压力的方式为:计算目标存储节点中每一块硬盘当前正在处理的数据量,将目标存储节点中所有硬盘当前正在处理的数据量求和,得到目标存储节点的节点带宽压力。每一块硬盘当前正在处理的数据量可以通过每一块硬盘当前正在处理的所有io及每一io的大小计算得到,一种具体实现方式为:根据目标存储节点中每一硬盘当前正在处理的io及其io长度,计算目标存储节点中每一硬盘当前正在处理的数据量;将目标存储节点中所有硬盘当前正在处理的数据量求和,得到节点带宽压力。58.在本实施例中,为了在目标硬盘的当前io处理负载过大的情况,不进一步增加目标硬盘的负载,导致目标硬盘成为性能瓶颈,本实施例提供了一种处理方式:根据当前io处理负载,判断目标硬盘是否满足预设负载条件;若目标硬盘满足预设负载条件,则将待写对象写入至目标硬盘;若目标硬盘不满足预设负载条件,则将待写对象暂存至scm。59.在本实施例中,预设负载条件用于表征目标硬盘是否处于能够正常处理io的状态,若目标硬盘满足预设负载条件,意味着目标硬盘能够正常处理io,即能够继续处理写入待写对象的写请求,否则,意味着目标硬盘已经处理超负荷处理状态,如果再继续处理写入待写对象的写请求,则目标硬盘则会成为性能瓶颈。60.需要说明的是,对于暂存至scm中的待写对象,仍然按照本实施例提供的io请求处理方法对其进行处理,直至将其写入硬盘中。例如,对于scm中的待写对象,基于预测刷盘策略,按照容量均衡策略从多个硬盘组中确定目标硬盘,其中,每一所述硬盘组包括各存储节点的至少一块硬盘,每一所述硬盘只属于一个硬盘组,所述容量均衡策略用于保证多个硬盘组间的容量均衡和所述目标硬盘所属的硬盘组内的容量均衡;确定所述目标硬盘的当前io处理负载;根据所述目标硬盘的当前io处理负载,对所述待写对象进行写处理,以使所述目标硬盘的负载达到均衡。其中的处理细节均与本发明实施方式中的一致,不再重复描述。61.还需要说明的是,在待写对象写入后,若需读取该对象,则首先判断该对象的存储区域:是暂存于scm中还是硬盘中,以便从对应的存储区域中读取该对象。62.在本实施例中,目标硬盘可以为多个,若其中任一个目标硬盘满足预设负载条件,则判定目标硬盘满足预设负载条件,并将待写对象写入至满足预设负载条件的目标硬盘,若所有目标硬盘均不满足预设负载条件,则判定目标硬盘不满足预设负载条件,为了更合理地判断出任一目标硬盘是否满足预设负载条件,本实施例提供了两种判断方式:方式一:根据每一目标硬盘的节点带宽压力、io数量及io大小,计算每一目标硬盘的负载评分;在本实施例中,对于任一目标硬盘而言,可以根据实际应用场景中节点带宽压力、io数量及io大小对于该目标硬盘的负载能力的影响给予其不同的权重,再根据节点带宽压力、io数量及io大小及对应的权重,计算该目标硬盘的负载评分,例如,任一目标硬盘的负载评分=节点带宽压力×w1+io数量×w2+io大小×w3,其中,w1、w2及w3分别是节点带宽压力、io数量及io大小的权重。63.若目标硬盘中存在负载评分不大于预设值的硬盘,则判定目标硬盘满足预设负载条件,否则,判定目标硬盘不满足预设负载条件。64.在本实施例中,预设值可以根据实际需要设置。65.方式二:若目标硬盘中存在节点带宽压力小于预设压力、io数量小于预设数量、且io大小小于预设大小的硬盘,则判定目标硬盘满足预设负载条件,否则,判定目标硬盘不满足预设负载条件。66.在本实施例中,预设压力、预设数量及预设大小均可以根据实际场景设置,例如,预设压力为32mb/s,预设数量为12,预设大小为12mb。67.需要说明的是,方式一和方式二中的节点带宽压力、io数量及io大小在描述当前io处理负载确定方式时已有说明,此处不再赘述。68.还需要说明的是,若满足预设负载条件的目标硬盘为多块时,可以按照预设选择策略从多个目标硬盘中选择一块硬盘,并将待写对象写入该硬盘,较佳的预设选择策略可以是选择目标硬盘中负载最小的盘,当然也可以采用其他预设选择策略,例如随机选择,或者记录每块硬盘的最近预设时段内的选择次数,选择最近最少选择次数的盘。69.还需要说明的是,若待写对象是多副本的方式存储,则在满足预设负载条件的目标硬盘为多块时,需要从目标硬盘中选择与副本数相同个数的硬盘,再以多副本的形式将待写对象写入选出的多块硬盘。在读取以多副本存储的对象时,也可以根据多副本的硬盘的节点带宽压力、io数量及io大小,从中选择负载最小的硬盘读取,例如,根据多副本的硬盘的节点带宽压力、io数量及io大小计算负载评分,选择负载评分表征的负载最小的硬盘,并从其中读取需要读取的对象,或者选取硬盘的节点带宽压力、io数量及io大小均比较小的硬盘,并从其中读取需要读取的对象,以使读数据时也能达到较好的存储节点之间的负载均衡。70.为了执行上述实施例及各个可能的实施方式中的相应步骤,下面给出一种io请求处理装置的实现方式。请参照图5,图5为本发明实施例提供的io请求处理装置100的方框示例图。需要说明的是,本实施例所提供的io请求处理装置100,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。71.io请求处理装置100,应用于分布式存储系统中的主机,分布式存储系统还包括多个存储节点,每一存储节点包括多块硬盘,主机与客户端及多个存储节点均通信连接,io请求处理装置100包括接收模块110、确定模块120及处理模块130。72.接收模块110,用于接收客户端发送的写请求,写请求包括待写对象;确定模块120,用于基于写请求,按照容量均衡策略从多个硬盘组中确定目标硬盘,其中,每一硬盘组包括各存储节点的至少一块硬盘,每一硬盘只属于一个硬盘组,容量均衡策略用于保证多个硬盘组间的容量均衡和目标硬盘所属的硬盘组内的容量均衡;确定模块120,还用于确定目标硬盘的当前io处理负载;处理模块130,用于根据目标硬盘的当前io处理负载,对待写对象进行写处理,以使目标硬盘的负载达到均衡。73.在可选的实施方式中,确定模块120具体用于:计算每一硬盘组的剩余容量百分比;根据每一硬盘组的剩余容量百分比,从多个硬盘组中确定目标硬盘组;计算目标硬盘组中每一块硬盘的剩余容量百分比;根据目标硬盘组中每一块硬盘的剩余容量百分比,从目标硬盘组中确定目标硬盘。74.在可选的实施方式中,确定模块120在用于根据每一硬盘组的剩余容量百分比,从多个硬盘组中确定目标硬盘组时,具体用于:若多个硬盘组的剩余容量百分比中的最大值与最小值之间的差值大于预设均衡差值,则将除剩余容量百分比最小的硬盘组之外的硬盘组作为初选硬盘组;若多个硬盘组的剩余容量百分比中的最大值与最小值之间的差值不大于预设均衡差值,则将所有硬盘组作为初选硬盘组;从初选硬盘组中确定目标硬盘组。75.在可选的实施方式中,确定模块120具体还用于:计算目标硬盘所属的目标存储节点的节点带宽压力;获取目标硬盘当前正在处理的io数量及io大小;将节点带宽压力、io数量及io大小确定为目标硬盘的当前io处理负载。76.在可选的实施方式中,确定模块120在具体用于计算目标硬盘所属的目标存储节点的节点带宽压力时,具体用于:根据目标存储节点中每一硬盘当前正在处理的io及其io长度,计算目标存储节点中每一硬盘当前正在处理的数据量;将目标存储节点中所有硬盘当前正在处理的数据量求和,得到节点带宽压力。77.在可选的实施方式中,主机还包括存储级别内存scm,处理模块130具体用于:根据当前io处理负载,判断目标硬盘是否满足预设负载条件;若目标硬盘满足预设负载条件,则将待写对象写入至目标硬盘;若目标硬盘不满足预设负载条件,则将待写对象暂存至scm。78.在可选的实施方式中,目标硬盘为多个,每一目标硬盘的当前io处理负载均包括节点带宽压力、io数量及io大小,处理模块130在用于根据当前io处理负载,判断目标硬盘是否满足预设负载条件时具体用于:根据每一目标硬盘的节点带宽压力、io数量及io大小,计算每一目标硬盘的负载评分;若目标硬盘中存在负载评分不大于预设值的硬盘,则判定目标硬盘满足预设负载条件,否则,判定目标硬盘不满足预设负载条件。79.在可选的实施方式中,目标硬盘为多个,每一目标硬盘的当前io处理负载均包括节点带宽压力、io数量及io大小,处理模块130在用于根据当前io处理负载,判断目标硬盘是否满足预设负载条件时具体还用于:若目标硬盘中存在节点带宽压力小于预设压力、io数量小于预设数量、且io大小小于预设大小的硬盘,则判定目标硬盘满足预设负载条件,否则,判定目标硬盘不满足预设负载条件。80.本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现前述实施方式中任一项的io请求处理方法。81.综上所述,本发明实施例提供了一种io请求处理方法、装置、主机和计算机可读存储介质,应用于分布式存储系统中的主机,分布式存储系统还包括多个存储节点,每一存储节点包括多块硬盘,主机与客户端及多个存储节点均通信连接,方法包括:接收客户端发送的写请求,写请求包括待写对象;基于写请求,按照容量均衡策略从多个硬盘组中确定目标硬盘,其中,每一硬盘组包括各存储节点的至少一块硬盘,每一硬盘只属于一个硬盘组,容量均衡策略用于保证多个硬盘组间的容量均衡和目标硬盘所属的硬盘组内的容量均衡;确定目标硬盘的当前io处理负载;根据目标硬盘的当前io处理负载,对待写对象进行写处理,以使目标硬盘的负载达到均衡。与现有技术相比,本发明实施例至少具有以下优势:(1)将分布式存储系统中的存储节点中的硬盘划分为硬盘组,利用容量均衡策略实现多个硬盘组间的容量均衡和目标硬盘所属的硬盘组内的容量均衡,实现了数据在分布式存储系统中的分散均衡存储;(2)写io下发至硬盘组,硬盘组中包括各存储节点的硬盘,有效缓解写请求的带宽瓶颈;(3)根据目标硬盘的当前io处理负载,对待写对象进行写处理,在兼顾容量均衡的同时,也兼顾了目标硬盘的负载均衡;(4)在目标硬盘的负载过大时,将待写对象暂存至scm中,避免了io处理性能的波动,有效地保证了分布式存储系统整体性能的稳定。82.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部