CN107707620A - 处理io请求的方法及装置 - Google Patents

处理io请求的方法及装置 Download PDF

Info

Publication number
CN107707620A
CN107707620A CN201710761359.4A CN201710761359A CN107707620A CN 107707620 A CN107707620 A CN 107707620A CN 201710761359 A CN201710761359 A CN 201710761359A CN 107707620 A CN107707620 A CN 107707620A
Authority
CN
China
Prior art keywords
node
request
components
target
service sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710761359.4A
Other languages
English (en)
Other versions
CN107707620B (zh
Inventor
蒋立新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710761359.4A priority Critical patent/CN107707620B/zh
Publication of CN107707620A publication Critical patent/CN107707620A/zh
Application granted granted Critical
Publication of CN107707620B publication Critical patent/CN107707620B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种处理IO请求的方法及装置,属于计算机存储技术领域。所述方法包括:当第一节点中的通信子组件确定第一节点中的服务子组件当前正在升级时,该第一节点中的通信子组件从第一节点所在的伙伴组中选择第二节点,并将目标IO请求发送至第二节点中的通信子组件,由第二节点中的通信子组件和第二节点中的服务子组件将目标IO请求发送至服务器。也即,在本申请中,由于伙伴组内的节点相互之间可以进行通信,因此,当第一节点中的通信子组件当前正在升级时,可以由第一节点所在的伙伴组中的其他节点代为处理目标IO请求,以避免由于服务子组件升级时调用的函数不能用热补丁替换而导致正在处理的目标IO请求中断。

Description

处理IO请求的方法及装置
技术领域
本申请涉及计算机存储技术领域,特别涉及一种处理输入输出(Input/Output,IO)请求的方法及装置。
背景技术
目前,处理IO请求的***主要包括业务***和存储***,其中,业务***包括业务集群,存储***包括客户端集群(client)和服务器(server),业务集群和客户端集群均是由多个节点(node)构成,且客户端集群中每个节点均包括基于小型计算机***接口的虚拟控制(Virtual Small Computer System Interface Control,VSC)组件和虚拟块存储***(Virtual Block System,VBS)组件。
若当前传输IO请求的协议为小型计算机***接口(Small Computer SystemInterface,SCSI)协议,当业务集群中的节点发起IO请求时,该业务集群中的节点将该IO请求发送至客户端集群对应的节点的VSC组件,VSC组件在接收到该IO请求时将该IO请求发送至VBS组件,由VBS组件将该IO请求发送至服务器,以使服务器根据该IO请求进行数据的读或写。若当前传输IO请求的协议为基于网络的小型计算机***接口(Internet SmallComputer System Interface,iSCSI)协议,当业务集群中的节点发起IO请求时,该业务集群中的节点将该IO请求发送至客户端集群对应的节点的VBS组件,由VBS组件将该IO请求发送至服务器,以使服务器根据该IO请求进行数据的读或写。
在上述处理IO请求的***中,当客户端集群中的节点需要进行升级时,为了避免由于该节点的升级导致该节点正在处理的IO请求中断,在该节点升级的进程中,若接收到业务集群中的节点发送的IO请求,采用热补丁替换当前升级进程中正在调用的函数,由于热补丁允许该节点在升级的过程中处理IO请求,因此,该节点可以继续利用该热补丁进行升级,同时处理该IO请求。
但是,在客户端集群中的节点升级进程中,并不是所有的函数都可以用热补丁来替换,比如,VBS组件中负责处理IO请求的组件升级时调用的函数,因此若当前升级进程中正在调用的函数不能采用热补丁来替换,将仍然导致此时正在处理的IO请求中断。
发明内容
为了解决相关技术中若当前升级进程中正在调用的函数不能采用热补丁来替换,将仍然导致此时正在处理的IO请求中断的问题,本申请提供了一种处理IO请求的方法及装置。所述技术方案如下:
第一方面,提供了一种处理IO请求的方法,客户端集群中包括多个伙伴组,每个伙伴组包括至少两个节点,所述伙伴组内的节点相互之间允许进行通信,所述客户端集群中的任一节点的VBS组件包括通信子组件和服务子组件,所述通信子组件用于管理伙伴组内节点之间的通信,所述服务子组件为所述VBS组件中负责处理IO请求的子组件,所述方法包括:
在接收到来自业务集群中节点的目标IO请求,且第一节点中的通信子组件确定所述第一节点中的服务子组件当前正在升级时,从所述第一节点所在的伙伴组中选择第二节点,所述第一节点为所述客户端集群中的任一节点;
所述第一节点中的通信子组件将目标IO请求发送至所述第二节点中的通信子组件,由所述第二节点中的通信子组件将所述目标IO请求发送至所述第二节点中的服务子组件,以使所述第二节点中的服务子组件将所述目标IO请求发送至服务器。
在本申请中,当第一节点中的服务子组件当前正在升级时,第一节点中的通信子组件可以将目标IO请求转发至该第一节点所在伙伴组的其他节点代为处理,从而可以避免该目标IO请求的中断。
可选地,所述目标IO请求为在SCSI协议中传输的IO请求,所述第一节点还包括基于小型计算机***接口的VSC组件;
所述在接收到来自业务集群中节点的目标IO请求,且第一节点中的通信子组件确定所述第一节点中的服务子组件当前正在升级,包括:
所述第一节点中的VSC组件接收所述业务集群中的节点发送的所述目标IO请求;
当所述第一节点中的VSC组件确定自身没有升级时,判断是否已接收到所述第一节点中的服务子组件发送的升级通知,所述升级通知用于指示所述第一节点中的服务子组件正在升级;
当所述第一节点中的VSC组件已接收到所述升级通知时,确定所述第一节点中的服务子组件当前正在升级;
所述第一节点中的VSC组件将所述目标IO请求发送至所述第一节点中的通信子组件;
所述第一节点中的通信子组件接收到所述目标IO请求时,确定所述第一节点中的服务子组件当前正在升级。
当目标IO请求为在SCSI协议中传输的IO请求时,此时,是由第一节点中的VSC组件接收业务集群中的节点发送的目标IO请求,为了保证第一节点可以顺利处理该目标IO请求,第一节点中的VSC组件需在自身没有升级的前提下,先确定第一节点中的服务子组件当前是否在升级。
可选地,所述判断是否已接收到所述第一节点中的服务子组件发送的升级通知之后,还包括:
当所述第一节点中的VSC组件未接收到所述升级通知时,确定所述第一节点中的服务子组件当前没有升级;
所述第一节点中的VSC组件将所述目标IO请求发送至所述第一节点中的服务子组件;
当所述第一节点中的服务子组件接收到所述目标IO请求时,将所述目标IO请求发送至服务器。
进一步地,当第一节点中的VSC组件确定第一节点中的服务子组件当前没有升级时,可以直接由该第一节点的服务子组件处理该目标IO请求。
可选地,所述第一节点中的VSC组件接收所述业务集群中的节点发送的所述目标IO请求之后,还包括:
当所述第一节点中的VSC组件确定自身当前正在升级时,缓存所述目标IO请求;
当所述第一节点中的VSC组件确定自身升级完成时,执行判断是否已接收到所述第一节点中的服务子组件发送的升级通知的操作。
由于升级VSC组件的几率较小,且升级VSC组件所需的时间较短,因此,当第一节点中的VSC组件自身当前正在升级时,可以暂时中断该目标IO请求,在该第一节点中的VSC组件升级完成时,重新处理该目标IO请求。
可选地,所述目标IO请求为在基于网络的小型计算机***接口iSCSI协议中传输的IO请求;
所述在接收到来自业务集群中节点的目标IO请求,且第一节点中的通信子组件确定所述第一节点中的服务子组件当前正在升级,包括:
所述第一节点中的通信子组件接收所述业务集群中的节点发送的所述目标IO请求;
所述第一节点中的通信子组件判断是否已接收到所述第一节点中的服务子组件发送的升级通知,所述升级通知用于指示所述第一节点中的服务子组件正在升级;
当所述第一节点中的通信子组件已接收到所述升级通知时,确定所述第一节点中的服务子组件当前正在升级。
当目标IO请求为在iSCSI协议中传输的IO请求时,此时,是由第一节点中的通信子组件接收业务集群中的节点发送的目标IO请求,为了保证第一节点可以顺利处理该目标IO请求,第一节点中的通信子组件需在自身没有升级的前提下,先确定第一节点中的服务子组件当前是否在升级。
可选地,所述判断是否已接收到所述第一节点中的服务子组件发送的升级通知之后,还包括:
当所述第一节点中的通信子组件未接收到所述升级通知时,确定所述第一节点中的服务子组件当前没有升级;
所述第一节点中的通信子组件将所述目标IO请求发送至所述第一节点中的服务子组件;
当所述第一节点中的服务子组件接收到所述目标IO请求时,将所述目标IO请求发送至服务器。
进一步地,当第一节点中的通信子组件确定第一节点中的服务子组件当前没有升级时,可以直接由该第一节点的服务子组件处理该目标IO请求。
可选地,所述从所述第一节点所在的伙伴组中选择第二节点,包括:
对于所述第一节点所在的伙伴组中除所述第一节点之外的其他节点,所述第一节点中的通信子组件将所述其他节点中处理IO请求压力最小的节点确定为所述第二节点;或者,
对于所述第一节点所在伙伴组中除所述第一节点之外的其他节点,所述第一节点中的通信子组件按照存储的优先级与节点之间的对应关系,将所述其他节点中优先级最高的节点确定为所述第二节点。
为了减轻客户端集群中各个节点处理IO请求的压力,第一节点中的通信子组件可以按照上述方法从该第一节点所在的伙伴组中选择第二节点。
第二方面,提供了一种处理IO请求的装置,所述处理IO请求的装置具有实现上述第一方面中处理IO请求的方法行为的功能。所述处理IO请求的装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的处理IO请求的方法。
第三方面,提供了一种处理IO请求的装置,所述处理IO请求的装置的结构中包括处理器和存储器,所述存储器用于存储支持处理IO请求的装置执行上述第一方面所提供的处理IO请求的方法的程序,以及存储用于实现上述第一方面所提供的处理IO请求的方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的处理IO请求的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的处理IO请求的方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请提供的技术方案带来的有益效果是:
在本申请中,当第一节点中的通信子组件确定第一节点中的服务子组件当前正在升级时,该第一节点中的通信子组件从第一节点所在的伙伴组中选择第二节点,并将目标IO请求发送至第二节点中的通信子组件,由第二节点中的通信子组件将目标IO请求发送至第二节点中的服务子组件,以使第二节点中的服务子组件将目标IO请求发送至服务器。也即,在本申请中,由于伙伴组内的节点相互之间可以进行通信,因此,当第一节点中的通信子组件当前正在升级时,可以由第一节点所在的伙伴组中的其他节点代为处理目标IO请求,以避免由于第一服务子组件升级时调用的函数不能用热补丁替换而导致正在处理的目标IO请求中断。
附图说明
图1A是本发明实施例提供的一种处理IO请求的***示意图;
图1B是本发明实施例提供的一种IO请求的路径示意图;
图2是本发明实施例提供的一种计算机设备的结构示意图;
图3是本发明实施例提供的一种处理IO请求的方法流程图;
图4是本发明实施例提供的另一种处理IO请求的方法流程图;
图5是本发明实施例提供的另一种处理IO请求的方法流程图;
图6A是本发明实施例提供的一种处理IO请求的装置框图;
图6B是本发明实施例提供的另一种处理IO请求的装置框图;
图6C是本发明实施例提供的另一种处理IO请求的装置框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本发明实施例提供的处理IO请求的方法进行详细解释说明之前,先对本发明实施例涉及的处理IO请求的***进行介绍。
如图1A所示,该处理IO请求的***100包括业务***101和存储***102,其中业务***101包括业务集群1011,存储***102包括客户端集群1021和服务器1022。其中,业务集群1011和客户端集群1021均是由多个节点构成。
其中,业务集群中的节点与客户端集群中节点通过有线或无线方式进行通信,客户端集群中节点与服务器之间也是通过有线或无线方式进行通信。
另外,如图1A所示,客户端集群中包括多个伙伴组,每个伙伴组包括至少两个节点,伙伴组内的节点相互之间允许进行通信,且客户端集群中的任一节点的VBS组件包括通信子组件和服务子组件。其中,通信子组件用于管理伙伴组内节点之间的通信,服务子组件为VBS组件中负责处理IO请求的子组件。也即,在图1A所示的处理IO请求的***中,伙伴组内的节点相互之间可以进行通信,为了后续便于说明,将客户端集群中的任一节点称为第一节点。实际应用中,可以将通信子组件标记为VBS-COMM,服务子组件标记为VBS-Service。
当业务集群1011中的某个节点发起IO请求时,按照预先确定的路径将该IO请求发送至客户端集群1021对应的节点,由客户端集群1021对应的节点将该IO请求发送至服务器。其中,由客户端集群1021对应的节点将该IO请求发送至服务器的过程将在下述方法实施例中解释说明,在此先不详细阐述。为了后续便于说明,将IO请求从业务集群传输至服务器的过程称为该IO请求的路径。
需要说明的是,客户端集群中的节点可以和业务集群中的节点部署在同一个物体实体上,可以部署在不同的物理实体上。当客户端集群中的节点和业务集群中的节点部署在同一个物理实体上时,传输IO请求的协议为SCSI协议。当客户端集群中的节点和业务集群中的节点部署在不同的物理实体上时,传输IO请求的协议为iSCSI协议。
另外需要说明的是,对于客户端集群中每个节点包括的VSC组件和VBS组件,该VSC组件为内核态的组件,该VBS组件为用户态的组件。其中,内核态和用户态是指程序运行时的权利,也即运行在内核态的程序必须依靠操作***帮助才能完成,而运行在用户态的程序则不能访问操作***内核数据结构和程序。
因此,当在不同的协议中传输IO请求时,该IO请求的路径也不同。具体地,如图1B所示,对于SCSI协议传输的IO请求,由于SCSI协议中客户端集群中的节点和业务集群中的节点部署在同一个物理实体上,因此业务集群中节点发送的IO请求必须先通过内核态的VSC组件,才能通过用户态的VBS组件。也即,此时该IO请求的路径为:业务集群中的节点→客户端集群中对应的节点的VSC组件→客户端集群中对应的节点的VBS组件→服务器。
对于iSCSI协议传输的IO请求,由于iSCSI协议中客户端集群中的节点和业务集群中的节点部署在不同的物理实体上,因此,该IO请求不需要经过内核态的VSC组件,可以直接通过用户态的VBS组件。也即,此时,该IO请求的路径为:业务集群中的节点→客户端集群中对应的节点的VBS组件→服务器。
值得注意的是,当服务器接收到IO请求时,服务器根据该IO请求进行数据的读/写,生成与该IO请求对应的IO返回信息,并将该IO返回信息按照该IO请求的路径原路返回至发起该IO请求的业务集群中的节点。也即,IO返回信息从服务器传输至业务集群中的节点的路径和该IO请求从业务集群中的节点传输至服务器的路径完全相同,在此不再详细说明。
另外,业务集群中的节点以及客户端中的节点均可以部署在物体实体上,该物理实体可以为任意计算机设备,比如,计算机、平板电脑以及笔记本等。
图2是本发明实施例提供的一种计算机设备的结构示意图。图1A和图1B所示的业务集群中的节点以及客户端集群中的节点可以部署在图2所示的计算机设备中。参见图2,该计算机设备包括至少一个处理器201,通信总线202,存储器203以及至少一个通信接口204。
处理器201可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线202可包括一通路,在上述组件之间传送信息。
存储器203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器203可以是独立存在,通过通信总线202与处理器201相连接。存储器203也可以和处理器201集成在一起。
通信接口204,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
在具体实现中,作为一种实施例,处理器201可以包括一个或多个CPU。
在具体实现中,作为一种实施例,计算机设备可以包括多个处理器。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备还可以包括输出设备和输入设备。输出设备和处理器201通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备和处理器201通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(PersonalDigital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本发明实施例不限定计算机设备的类型。
其中,存储器203用于存储执行本申请方案的程序代码,并由处理器201来控制执行。处理器201用于执行存储器203中存储的程序代码。程序代码中可以包括一个或多个软件模块(例如:特征提取引擎、特征变换引擎、相似度计算引擎、相似度迭代对齐引擎和用户界面展示模块等)。图1A以及图1B所示的客户端集群中的节点可以通过处理器201以及存储器203中的程序代码中的一个或多个软件模块来处理IO请求。
接下来对本发明实施例提供的处理IO请求的方法进行解释说明,如图3所示,本发明实施例提供了一种处理IO请求的方法,该方法应用于图1A所示的处理IO请求的***,具体地,该方法包括以下两个步骤:
步骤301:在接收到来自业务集群中节点的目标IO请求,且第一节点中的通信子组件确定该第一节点中的服务子组件当前正在升级时,从该第一节点所在的伙伴组中选择第二节点,该第一节点为该客户端集群中的任一节点。
在本发明实施例中,由于伙伴组内的节点相互之间可以通信,因此,当第一节点中的通信子组件确定该第一节点中的服务子组件当前正在升级时,可以从第一节点所在的伙伴组中选择第二节点,以通过下述步骤302实现由该第二节点代为处理目标IO请求。
其中,第一节点中的通信子组件选择第二节点的实现方式将在下述实施例中详细介绍,在此先不阐述。
步骤302:该第一节点中的通信子组件将目标IO请求发送至该第二节点中的通信子组件,由该第二节点中的通信子组件将该目标IO请求发送至该第二节点中的服务子组件,以使该第二节点中的服务子组件将该目标IO请求发送至服务器。
通过步骤302,第一节点中的通信子组件可以将目标IO请求发送至第二节点,由第二节点代为处理该目标IO请求,以避免该目标IO请求中断。
在本申请中,当第一节点中的通信子组件确定第一节点中的服务子组件当前正在升级时,该第一节点中的通信子组件从第一节点所在的伙伴组中选择第二节点,并将目标IO请求发送至第二节点中的通信子组件,由第二节点中的通信子组件将目标IO请求发送至第二节点中的服务子组件,以使第二节点中的服务子组件将目标IO请求发送至服务器。也即,在本申请中,由于伙伴组内的节点相互之间可以进行通信,因此,当第一节点中的通信子组件当前正在升级时,可以由第一节点所在的伙伴组中的其他节点代为处理目标IO请求,以避免由于第一服务子组件升级时调用的函数不能用热补丁替换而导致正在处理的目标IO请求中断。
需要说明的是,由于传输IO请求的协议可以为SCSI协议,也可以为iSCSI协议,并且IO请求在这两种协议中传输的路径不同,因此,本发明实施例提供的处理IO请求的方法包括两个方面的内容,一是在SCSI协议处理IO请求的过程,二是在iSCSI协议中处理IO请求的过程。下述实施例将分别对这两种情况进行解释说明。
如图4所示,本发明实施例提供了一种处理IO请求的方法,该方法应用于图1A所示的处理IO请求的***,且该方法应用于传输IO请求的协议为SCSI协议的场景,具体地,该方法包括下述几个步骤:
步骤401:第一节点中的VSC组件接收业务集群中的节点发送的目标IO请求。
当传输IO请求的协议为SCSI协议时,业务集群中的节点和客户端集群中与该业务集群中的节点对应的节点部署在同一个物理实体上,因此当业务集群中的节点发起目标IO请求时,业务集群中的节点将该目标IO请求发送至客户端集群中对应的节点的VSC组件,也即由第一节点的VSC组件接收业务集群中节点发送的目标IO请求。
当第一节点的VSC组件接收到该目标IO请求时,若自身正在升级,将无法继续处理该目标IO请求,因此,当第一节点的VSC组件接收到该目标IO请求时,需先判断自身是否在升级。
具体地,当第一节点中的VSC组件确定自身没有升级时,可以通过下述步骤402至406来继续处理该目标IO请求。当第一节点中的VSC组件确定自身当前正在升级时,可以通过下述步骤407来继续处理该目标IO请求。
步骤402:当该第一节点中的VSC组件确定自身没有升级时,判断是否已接收到该第一节点中的服务子组件发送的升级通知。
当该第一节点中的VSC组件确定自身没有升级时,由于服务子组件为VBS组件中负责处理IO请求的子组件,因此,若该第一节点中的服务子组件当前正在升级,该第一节点中的服务子组件也无法处理该目标IO请求。因此,在本发明实施例中,当该第一节点中的VSC组件确定自身没有升级时,该第一节点的VSC组件还需判断是否已接收到该第一节点中的服务子组件发送的升级通知,以便于确定该第一节点中的服务子组件是否正在升级。
其中,该升级通知用于指示该第一节点中的服务子组件正在升级,也即,当第一节点中的服务子组件正在升级时,该第一节点中的服务子组件将向第一节点中的VSC组件发送升级通知。另外,在第一节点中的服务子组件升级完成时,该第一节点中的服务子组件向第一节点中的VSC组件发送升级结束通知,以提示第一节点中的VSC组件该第一节点中的服务子组件升级完成。
可选地,由于通信子组件用于管理伙伴组内节点之间的通信,因此,当第一节点中的服务子组件正在升级时,该第一节点中的服务子组件也向第一节点中的通信子组件发送升级通知。相应地,在第一节点中的服务子组件升级完成时,该第一节点中的服务子组件向第一节点中的通信子组件发送升级结束通知,以提示第一节点中的通信子组件该第一节点中的服务子组件升级完成。
由于第一节点中的VSC组件可能已接收到该第一节点中的服务子组件发送的升级通知,也可能未接收到该升级通知,当第一节点中的VSC组件已接收到该第一节点中的服务子组件发送的升级通知时,可以通过下述步骤403至405对该目标IO请求继续进行处理,当第一节点中的VSC组件未接收到该升级通知时,可以通过下述步骤406对该目标IO请求继续进行处理。
步骤403:当第一节点中的VSC组件已接收到该第一节点中的服务子组件发送的升级通知时,确定该第一节点中的服务子组件当前正在升级,该第一节点中的VSC组件将该目标IO请求发送至该第一节点中的通信子组件,该第一节点中的通信子组件接收到该目标IO请求时,确定该第一节点中的服务子组件当前正在升级。
当第一节点中的VSC组件确定该第一节点中的服务子组件当前正在升级时,表明该第一节点将无法处理该目标IO请求,此时为了避免该目标IO请求中断,可以由该第一节点所在的伙伴组内的其他节点处理该目标IO请求。由于该第一节点和该第一节点所在的伙伴组内的其他节点部署于不同的物理实体上,因此,第一节点如果需要与该第一节点所在的伙伴组内的其他节点进行通信,需通过节点中的用户态的组件进行通信,也即需通过第一节点以及与该第一节点所在的伙伴组内的其他节点中的通信子组件进行通信。
因此,当第一节点中的VSC组件确定该第一节点中的服务子组件当前正在升级时,该第一节点中的VSC组件将该目标IO请求发送至该第一节点中的通信子组件,由该第一节点中的通信子组件将该目标IO请求转发至该第一节点所在伙伴组内的其他节点代为处理。具体地,第一节点中的通信子组件可以通过下述步骤404至步骤405来实现该过程。
步骤404:在第一节点中的通信子组件确定该第一节点中的服务子组件当前正在升级时,从该第一节点所在的伙伴组中选择第二节点。
具体地,第一节点中的通信子组件可以通过下述两种可能的方式来实现步骤404。
第一种可能的方式,对于该第一节点所在的伙伴组中除该第一节点之外的其他节点,该第一节点中的通信子组件将该其他节点中处理IO请求压力最小的节点确定为该第二节点。
也即,第一节点中的通信子组件中存储有该其他节点的处理IO请求压力,为了提高处理该目标IO请求的速度,第一节点中的通信子组件可以将该目标IO请求转发至其他节点中处理IO请求压力最小的节点代为处理,也即转发至第二节点代为处理。
其中,节点的处理IO请求压力用于表征该节点处理IO请求能力的大小,该处理IO请求压力与该节点部署的物理实体的磁盘空间的大小相关。也即,该节点部署的物理实体的磁盘空间越大,该节点的处理IO请求压力越小,该节点部署的物理实体的磁盘空间越小,该节点的处理IO请求压力越大。
第二种可能的方式,对于该第一节点所在伙伴组中除该第一节点之外的其他节点,该第一节点中的通信子组件按照存储的优先级与节点之间的对应关系,将该其他节点中优先级最高的节点确定为该第二节点。
也即,第一节点中的通信子组件中存储该第一节点所在的伙伴组内的每个节点的优先级,例如,第一节点所在的伙伴组内有四个节点,分别标记为A、B、C和D,节点A对应的优先级为1、节点B对应的优先级为2,节点C对应的优先级为3,节点D对应的优先级为D。假设第一节点为节点A,由于节点B、节点C以及节点D中节点D的优先级最高,因此第一节点可以将节点D确定为第二节点。
值得注意的是,当第一节点中的通信子组件按照上述两种可能的方式确定第二节点之后,若第二节点当前正处理其他IO请求,该第二节点将不能代为处理该目标IO请求,此时,第一节点还需从第一节点所在伙伴组中除第一节点和第二节点之外的其他节点中重新确定第二节点。其中,第一节点重新确定第二节点的实现方式可以参考上述两种可能的方式,在此不再详细阐述。
例如,第一节点将优先级最高的节点D确定为第二节点,若节点D当前正在处理其他IO请求,第一节点则从节点C和节点B中重新选择一个优先级最高的节点,也即重新将节点C确定为第二节点。
为了使第一节点中的通信子组件及时掌握该第一节点所在伙伴组中其他节点当前是否正在处理IO请求,对于客户端集群中的任一伙伴组,当该伙伴组内的某个节点正在处理IO请求,该某个节点的通信子组件将向该伙伴组内的其他节点发送提示信息,该提示信息用于指示该某个节点当前正在处理IO请求,当该伙伴组内的其他节点接收到该提示信息时,确定该某个节点当前正在处理IO请求。也即,对于该伙伴组内的任一节点,该节点的通信子组件实时掌握该伙伴组内其他节点处理IO请求的动态。
另外,除了以上两种可能的方式,第一节点也可以通过其他可能方式确定第二节点,比如,第一节点可以随机从第一节点所在的伙伴组中选择一个节点作为第二节点,本发明实施例在此不做具体限定。
步骤405:该第一节点中的通信子组件将目标IO请求发送至该第二节点中的通信子组件,由该第二节点中的通信子组件将该目标IO请求发送至该第二节点中的服务子组件,以使该第二节点中的服务子组件将该目标IO请求发送至服务器。
由于第一节点和第二节点部署在不同的物理实体上,因此,第一节点和第二节点需通过各自的通信子组件进行通信。也即,第二节点的通信子组件将接收到接到第一节点的通信子组件发送的目标IO请求。由于实际处理该目标IO请求为第二节点中的服务子组件,因此,第二节点中的通信子组件需将该目标IO请求发送至第二节点中的服务子组件,当第二节点中的服务子组件接收到该目标IO请求时,对该目标IO请求中携带的信息进行识别,以便于将该目标IO请求发送至对应的服务器。
步骤406:当该第一节点中的VSC组件未接收到该升级通知时,确定该第一节点中的服务子组件当前没有升级,该第一节点中的VSC组件将该目标IO请求发送至该第一节点中的服务子组件,当该第一节点中的服务子组件接收到该目标IO请求时,将该目标IO请求发送至服务器。
当该第一节点中的VSC组件未接收到该升级通知时,表明第一节点中的服务子组件当前没有升级,此时无需将该目标IO请求转发至第二节点代为处理,也即,此时由第一节点中的服务子组件直接处理该目标IO请求。
值得注意的是,由于第一节中的VSC组件和第一节点中的服务子组件属于同一个节点中组件,因此无需通过用户态的通信子组件进行通信,也即,第一节点中的VSC组件直接将该目标IO请求发送至该第一节点中的服务子组件,由该第一节点中的服务子组件对该目标IO请求进行处理。其中,第一节点中的服务子组件对该目标IO请求进行处理的方式和步骤405中第二节点中的服务子组件对该目标IO请求进行处理的方式相同,在此不再详细阐述。
以上步骤402至步骤406为该第一节点中的VSC组件确定自身没有升级时对目标IO请求的处理过程,当该第一节点中的VSC组件确定自身当前正在升级时,可以通过下述步骤407对该目标IO请求进行处理。
步骤407:当该第一节点中的VSC组件确定自身当前正在升级时,缓存该目标IO请求,当该第一节点中的VSC组件确定自身升级完成时,执行判断是否已接收到该第一节点中的服务子组件发送的升级通知的操作。
需要说明的是,对于客户端集群中的节点的VSC组件,该VSC组件的主要功能为向上层应用提供虚拟逻辑单元号(Logical Unit Number,LUN)管理,因此对于客户端集群中的不同节点,该VSC组件为相同的组件,也即VSC组件为固定组件。而客户端集群中节点在升级时,对固定组件也即VSC组件升级的概率较低,比如,在1000次升级该节点的过程中,可能只有1次需要升级该节点的VSC组件。并且,相对于升级节点的服务子组件,升级节点的VSC组件所需的时间较短。
因此,当该第一节点中的VSC组件确定自身当前正在升级时,可以通过步骤407暂时中断该目标IO请求,在该第一节点中的VSC组件确定自身升级完成时,重新处理该目标IO请求,也即,在该第一节点中的VSC组件确定自身升级完成时,按照上述步骤402至步骤406处理该目标IO请求。
在本发明实施例中,当第一节点中的通信子组件确定第一节点中的服务子组件当前正在升级时,该第一节点中的通信子组件从第一节点所在的伙伴组中选择第二节点,并将目标IO请求发送至第二节点中的通信子组件,由第二节点中的通信子组件将目标IO请求发送至第二节点中的服务子组件,以使第二节点中的服务子组件将目标IO请求发送至服务器。也即,由于伙伴组内的节点相互之间可以进行通信,因此,当第一节点中的通信子组件当前正在升级时,可以由第一节点所在的伙伴组中的其他节点代为处理目标IO请求,以避免由于第一服务子组件升级时调用的函数不能用热补丁替换而导致正在处理的目标IO请求中断。
如图5所示,本发明实施例提供了另一种处理IO请求的方法,该方法应用于图1A所示的处理IO请求的***,且该方法应用于传输IO请求的协议为iSCSI协议的场景,具体地,该方法包括下述几个步骤:
步骤501:第一节点中的通信子组件接收业务集群中的节点发送的目标IO请求。
当传输IO请求的协议为iSCSI协议时,业务集群中的节点和客户端集群中与该业务集群中的节点对应的节点部署在不同的物理实体上,因此业务集群中的节点和客户端集群中的节点需通过各自的用户态的通信子组件进行通信。也即,当业务集群中的节点发起目标IO请求时,业务集群中的节点将该目标IO请求发送至客户端集群中对应的节点的通信子组件,也即由第一节点的通信子组件接收业务集群中节点发送的目标IO请求。
当第一节点的通信子组件接收到该目标IO请求时,可以通过下述步骤502至506来继续处理该目标IO请求。
步骤502:该第一节点中的通信子组件判断是否已接收到该第一节点中的服务子组件发送的升级通知。
由于服务子组件为VBS组件中负责处理IO请求的子组件,因此,若该第一节点中的服务子组件当前正在升级,该第一节点中的服务子组件也无法处理该目标IO请求。因此,在本发明实施例中,该第一节点的通信子组件需判断是否已接收到该第一节点中的服务子组件发送的升级通知,以便于确定该第一节点中的服务子组件是否正在升级。
其中,该升级通知用于指示该第一节点中的服务子组件正在升级,也即,当第一节点中的服务子组件正在升级时,该第一节点中的服务子组件将向第一节点中的通信子组件发送升级通知。另外,在第一节点中的服务子组件升级完成时,该第一节点中的服务子组件向第一节点中的通信子组件发送升级结束通知,以提示第一节点中的通信子组件该第一节点中的服务子组件升级完成。
由于第一节点中的通信子组件可能已接收到该第一节点中的服务子组件发送的升级通知,也可能未接收到该升级通知,当第一节点中的通信子组件已接收到该第一节点中的服务子组件发送的升级通知时,可以通过下述步骤503至505对该目标IO请求继续进行处理,当第一节点中的通信子组件未接收到该升级通知时,可以通过下述步骤506对该目标IO请求继续进行处理。
步骤503:当第一节点中的通信子组件已接收到该第一节点中的服务子组件发送的升级通知时,确定该第一节点中的服务子组件当前正在升级。
当第一节点中的通信子组件确定该第一节点中的服务子组件当前正在升级时,表明该第一节点将无法处理该目标IO请求,此时为了避免该目标IO请求中断,可以由该第一节点所在的伙伴组内的其他节点处理该目标IO请求。具体地,第一节点中的通信子组件可以通过下述步骤504至步骤505来实现该过程。
步骤504:在第一节点中的通信子组件确定该第一节点中的服务子组件当前正在升级时,从该第一节点所在的伙伴组中选择第二节点。
其中,步骤504的实现方式和图4所示实施例中的步骤404的实现方式相同,在此不再详细阐述。
步骤505:该第一节点中的通信子组件将目标IO请求发送至该第二节点中的通信子组件,由该第二节点中的通信子组件将该目标IO请求发送至该第二节点中的服务子组件,以使该第二节点中的服务子组件将该目标IO请求发送至服务器。
其中,步骤503的实现方式和图4所示实施例中的步骤405的实现方式相同,在此不再详细阐述。
步骤506:当该第一节点中的通信子组件未接收到该升级通知时,确定该第一节点中的服务子组件当前没有升级,该第一节点中的通信子组件将该目标IO请求发送至该第一节点中的服务子组件,当该第一节点中的服务子组件接收到该目标IO请求时,将该目标IO请求发送至服务器。
当该第一节点中的通信子组件未接收到该升级通知时,表明第一节点中的服务子组件当前没有升级,此时无需将该目标IO请求转发至第二节点代为处理,也即,此时由第一节点中的服务子组件直接处理该目标IO请求。
其中,第一节点中的服务子组件对该目标IO请求进行处理的方式和步骤505中第二节点中的服务子组件对该目标IO请求进行处理的方式相同,在此不再详细阐述。
以上步骤502至步骤506为该第一节点中的通信子组件确定自身没有升级时对目标IO请求的处理过程,当该第一节点中的通信子组件确定自身当前正在升级时,可以通过下述步骤507对该目标IO请求进行处理。
值得注意的是,当该第一节点中的通信子组件自身当前正在升级时,第一节点的通信子组件将不再接收IO请求,当该第一节点中的通信子组件自身升级完成时,该第一节点的通信子组件才继续接收IO请求,并执行上述步骤501至步骤506的操作。
在本发明实施例中,当第一节点中的通信子组件确定第一节点中的服务子组件当前正在升级时,该第一节点中的通信子组件从第一节点所在的伙伴组中选择第二节点,并将目标IO请求发送至第二节点中的通信子组件,由第二节点中的通信子组件将目标IO请求发送至第二节点中的服务子组件,以使第二节点中的服务子组件将目标IO请求发送至服务器。也即,由于伙伴组内的节点相互之间可以进行通信,因此,当第一节点中的通信子组件当前正在升级时,可以由第一节点所在的伙伴组中的其他节点代为处理目标IO请求,以避免由于第一服务子组件升级时调用的函数不能用热补丁替换而导致正在处理的目标IO请求中断。
在本发明实施例中,除了提供上述实施例所述的处理IO请求的方法,还提供了处理IO请求的装置,接下来的实施例用于对本发明实施例提供的处理IO请求的装置进行详细说明。
参见图6A,本发明实施例提供了一种处理IO请求的装置600,该装置600应用于图1A所示的处理IO请求的***,如图6A所示,该装置600包括第一节点中的通信子组件601:
第一节点中的通信子组件601,用于执行图4实施例中的步骤404或图5实施例中步骤504。
该第一节点中的通信子组件601,还用于执行图4实施例中的步骤405或图5实施例中步骤505。
可选地,参见图6B,该装置还包括第一节点中的VSC组件602:
该第一节点中的VSC组件602,用于执行图4实施例中的步骤401;
该第一节点中的VSC组件602,还用于执行图4实施例中的步骤402;
该第一节点中的VSC组件602,还用于执行图4实施例中的步骤403。
可选地,参见图6C,该装置还包括第一节点中的服务子组件603:
该第一节点中的VSC组件602和该第一节点中的服务子组件603,还用于执行图4实施例中的步骤406。
可选地,该第一节点中的VSC组件,还用于执行图4实施例中的步骤407。
可选地,该第一节点中的通信子组件601,还用于执行图5实施例中的步骤501;
该第一节点中的通信子组件601,还用于执行图5实施例中的步骤502。
该第一节点中的通信子组件601,还用于执行图5实施例中的步骤503。
可选地,该第一节点中的通信子组件601和该第一节点中的服务子组件603,还用于执行图5实施例中的步骤506。
可选地,该第一节点中的通信子组件601具体用于:
对于该第一节点所在的伙伴组中除该第一节点之外的其他节点,将该其他节点中处理IO请求压力最小的节点确定为该第二节点;或者,
对于该第一节点所在伙伴组中除该第一节点之外的其他节点,按照存储的优先级与节点之间的对应关系,将该其他节点中优先级最高的节点确定为该第二节点。
在本发明实施例中,当第一节点中的通信子组件确定第一节点中的服务子组件当前正在升级时,该第一节点中的通信子组件从第一节点所在的伙伴组中选择第二节点,并将目标IO请求发送至第二节点中的通信子组件,由第二节点中的通信子组件将目标IO请求发送至第二节点中的服务子组件,以使第二节点中的服务子组件将目标IO请求发送至服务器。也即,由于伙伴组内的节点相互之间可以进行通信,因此,当第一节点中的通信子组件当前正在升级时,可以由第一节点所在的伙伴组中的其他节点代为处理目标IO请求,以避免由于第一服务子组件升级时调用的函数不能用热补丁替换而导致正在处理的目标IO请求中断。
需要说明的是:上述实施例提供的处理的IO请求的装置在处理IO请求时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的处理的IO请求的装置与处理的IO请求的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (14)

1.一种处理输入输出IO请求的方法,其特征在于,客户端集群中包括多个伙伴组,每个伙伴组包括至少两个节点,所述伙伴组内的节点相互之间允许进行通信,所述客户端集群中的任一节点的虚拟块存储***VBS组件包括通信子组件和服务子组件,所述通信子组件用于管理伙伴组内节点之间的通信,所述服务子组件为所述VBS组件中负责处理IO请求的子组件,所述方法包括:
在接收到来自业务集群中节点的目标IO请求,且第一节点中的通信子组件确定所述第一节点中的服务子组件当前正在升级时,从所述第一节点所在的伙伴组中选择第二节点,所述第一节点为所述客户端集群中的任一节点;
所述第一节点中的通信子组件将目标IO请求发送至所述第二节点中的通信子组件,由所述第二节点中的通信子组件将所述目标IO请求发送至所述第二节点中的服务子组件,以使所述第二节点中的服务子组件将所述目标IO请求发送至服务器。
2.如权利要求1所述的方法,其特征在于,所述目标IO请求为在小型计算机***接口SCSI协议中传输的IO请求,所述第一节点还包括基于小型计算机***接口的虚拟控制VSC组件;
所述在接收到来自业务集群中节点的目标IO请求,且第一节点中的通信子组件确定所述第一节点中的服务子组件当前正在升级,包括:
所述第一节点中的VSC组件接收所述业务集群中的节点发送的所述目标IO请求;
当所述第一节点中的VSC组件确定自身没有升级时,判断是否已接收到所述第一节点中的服务子组件发送的升级通知,所述升级通知用于指示所述第一节点中的服务子组件正在升级;
当所述第一节点中的VSC组件已接收到所述升级通知时,确定所述第一节点中的服务子组件当前正在升级;
所述第一节点中的VSC组件将所述目标IO请求发送至所述第一节点中的通信子组件;
所述第一节点中的通信子组件接收到所述目标IO请求时,确定所述第一节点中的服务子组件当前正在升级。
3.如权利要求2所述的方法,其特征在于,所述判断是否已接收到所述第一节点中的服务子组件发送的升级通知之后,还包括:
当所述第一节点中的VSC组件未接收到所述升级通知时,确定所述第一节点中的服务子组件当前没有升级;
所述第一节点中的VSC组件将所述目标IO请求发送至所述第一节点中的服务子组件;
当所述第一节点中的服务子组件接收到所述目标IO请求时,将所述目标IO请求发送至服务器。
4.如权利要求2或3所述的方法,其特征在于,所述第一节点中的VSC组件接收所述业务集群中的节点发送的所述目标IO请求之后,还包括:
当所述第一节点中的VSC组件确定自身当前正在升级时,缓存所述目标IO请求;
当所述第一节点中的VSC组件确定自身升级完成时,执行判断是否已接收到所述第一节点中的服务子组件发送的升级通知的操作。
5.如权利要求1所述的方法,其特征在于,所述目标IO请求为在基于网络的小型计算机***接口iSCSI协议中传输的IO请求;
所述在接收到来自业务集群中节点的目标IO请求,且第一节点中的通信子组件确定所述第一节点中的服务子组件当前正在升级,包括:
所述第一节点中的通信子组件接收所述业务集群中的节点发送的所述目标IO请求;
所述第一节点中的通信子组件判断是否已接收到所述第一节点中的服务子组件发送的升级通知,所述升级通知用于指示所述第一节点中的服务子组件正在升级;
当所述第一节点中的通信子组件已接收到所述升级通知时,确定所述第一节点中的服务子组件当前正在升级。
6.如权利要求5所述的方法,其特征在于,所述判断是否已接收到所述第一节点中的服务子组件发送的升级通知之后,还包括:
当所述第一节点中的通信子组件未接收到所述升级通知时,确定所述第一节点中的服务子组件当前没有升级;
所述第一节点中的通信子组件将所述目标IO请求发送至所述第一节点中的服务子组件;
当所述第一节点中的服务子组件接收到所述目标IO请求时,将所述目标IO请求发送至服务器。
7.如权利要求1至6任一所述的方法,其特征在于,所述从所述第一节点所在的伙伴组中选择第二节点,包括:
对于所述第一节点所在的伙伴组中除所述第一节点之外的其他节点,所述第一节点中的通信子组件将所述其他节点中处理IO请求压力最小的节点确定为所述第二节点;或者,
对于所述第一节点所在伙伴组中除所述第一节点之外的其他节点,所述第一节点中的通信子组件按照存储的优先级与节点之间的对应关系,将所述其他节点中优先级最高节点确定为所述第二节点。
8.一种处理输入输出IO请求的装置,其特征在于,客户端集群中包括多个伙伴组,每个伙伴组包括至少两个节点,所述伙伴组内的节点相互之间允许进行通信,所述客户端集群中的任一节点的虚拟块存储***VBS组件包括通信子组件和服务子组件,所述通信子组件用于管理伙伴组内节点之间的通信,所述服务子组件为所述VBS组件中负责处理IO请求的子组件,所述装置包括第一节点中的通信子组件:
所述第一节点中的通信子组件,用于在确定所述第一节点中的服务子组件当前正在升级时,从所述第一节点所在的伙伴组中选择第二节点,所述第一节点为所述客户端集群中的任一节点;
所述第一节点中的通信子组件,还用于将来自业务集群中的节点的目标IO请求发送至所述第二节点中的通信子组件,由所述第二节点中的通信子组件将所述目标IO请求发送至所述第二节点中的服务子组件,以使所述第二节点中的服务子组件将所述目标IO请求发送至服务器。
9.如权利要求8所述的装置,其特征在于,所述目标IO请求为在小型计算机***接口SCSI协议中传输的IO请求,所述第一节点还包括基于小型计算机***接口的虚拟控制VSC组件;
所述装置还包括第一节点中的VSC组件:
所述第一节点中的VSC组件,用于接收所述业务集群中的节点发送的所述目标IO请求;
所述第一节点中的VSC组件,还用于当确定自身没有升级时,判断是否已接收到所述第一节点中的服务子组件发送的升级通知,所述升级通知用于指示所述第一节点中的服务子组件正在升级;
所述第一节点中的VSC组件,还用于当已接收到所述升级通知时,确定所述第一节点中的服务子组件当前正在升级;
所述第一节点中的VSC组件,还用于将所述目标IO请求发送至所述第一节点中的通信子组件;
所述第一节点中的通信子组件,还用于接收到所述目标IO请求时,确定所述第一节点中的服务子组件当前正在升级。
10.如权利要求9所述的装置,其特征在于,所述装置还包括第一节点中的服务子组件:
所述第一节点中的VSC组件,还用于当未接收到所述升级通知时,确定所述第一节点中的服务子组件当前没有升级;
所述第一节点中的VSC组件,还用于将所述目标IO请求发送至所述第一节点中的服务子组件;
所述第一节点中的服务子组件,用于当接收到所述目标IO请求时,将所述目标IO请求发送至服务器。
11.如权利要求9或10所述的装置,其特征在于:
所述第一节点中的VSC组件,还用于当确定自身当前正在升级时,缓存所述目标IO请求;
所述第一节点中的VSC组件,还用于当确定自身升级完成时,执行判断是否已接收到所述第一节点中的服务子组件发送的升级通知的操作。
12.如权利要求8所述的装置,其特征在于,所述目标IO请求为在基于网络的小型计算机***接口iSCSI协议中传输的IO请求;
所述第一节点中的通信子组件,还用于接收所述业务集群中的节点发送的所述目标IO请求;
所述第一节点中的通信子组件,还用于判断是否已接收到所述第一节点中的服务子组件发送的升级通知,所述升级通知用于指示所述第一节点中的服务子组件正在升级;
所述第一节点中的通信子组件,还用于当已接收到所述升级通知时,确定所述第一节点中的服务子组件当前正在升级。
13.如权利要求12所述的装置,其特征在于,所述装置还包括第一节点中的服务子组件:
所述第一节点中的通信子组件,还用于当未接收到所述升级通知时,确定所述第一节点中的服务子组件当前没有升级;
所述第一节点中的通信子组件,还用于将所述目标IO请求发送至所述第一节点中的服务子组件;
所述第一节点中的服务子组件,用于当接收到所述目标IO请求时,将所述目标IO请求发送至服务器。
14.如权利要求8至13任一所述的装置,其特征在于,所述第一节点中的通信子组件具体用于:
对于所述第一节点所在的伙伴组中除所述第一节点之外的其他节点,将所述其他节点中处理IO请求压力最小的节点确定为所述第二节点;或者,
对于所述第一节点所在伙伴组中除所述第一节点之外的其他节点,按照存储的优先级与节点之间的对应关系,将所述其他节点中优先级最高的节点确定为所述第二节点。
CN201710761359.4A 2017-08-30 2017-08-30 处理io请求的方法及装置 Active CN107707620B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710761359.4A CN107707620B (zh) 2017-08-30 2017-08-30 处理io请求的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710761359.4A CN107707620B (zh) 2017-08-30 2017-08-30 处理io请求的方法及装置

Publications (2)

Publication Number Publication Date
CN107707620A true CN107707620A (zh) 2018-02-16
CN107707620B CN107707620B (zh) 2020-09-11

Family

ID=61169985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710761359.4A Active CN107707620B (zh) 2017-08-30 2017-08-30 处理io请求的方法及装置

Country Status (1)

Country Link
CN (1) CN107707620B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673799A (zh) * 2019-09-26 2020-01-10 苏州浪潮智能科技有限公司 一种集群伙伴关系建立方法、***、设备及计算机介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511805A (zh) * 2015-11-26 2016-04-20 深圳市中博科创信息技术有限公司 集群文件***的数据处理方法和装置
US20160188415A1 (en) * 2014-12-31 2016-06-30 Netapp. Inc. Methods and systems for clone management
CN106357813A (zh) * 2016-11-02 2017-01-25 龙存科技(北京)股份有限公司 一种应用于共享文件***的任务再调度方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160188415A1 (en) * 2014-12-31 2016-06-30 Netapp. Inc. Methods and systems for clone management
CN105511805A (zh) * 2015-11-26 2016-04-20 深圳市中博科创信息技术有限公司 集群文件***的数据处理方法和装置
CN106357813A (zh) * 2016-11-02 2017-01-25 龙存科技(北京)股份有限公司 一种应用于共享文件***的任务再调度方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAOMING GAO等: "Supporting Cloud Computing with the Virtual Block Store System", 《2009 FIFTH IEEE INTERNATIONAL CONFERENCE ON E-SCIENCE》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673799A (zh) * 2019-09-26 2020-01-10 苏州浪潮智能科技有限公司 一种集群伙伴关系建立方法、***、设备及计算机介质
CN110673799B (zh) * 2019-09-26 2023-01-10 苏州浪潮智能科技有限公司 一种集群伙伴关系建立方法、***、设备及计算机介质

Also Published As

Publication number Publication date
CN107707620B (zh) 2020-09-11

Similar Documents

Publication Publication Date Title
CN104781795B (zh) 存储层的动态选择
CN104008064A (zh) 用于多级存储器压缩的方法和***
US11797494B2 (en) Snapshot management in distributed file systems
CN108011949B (zh) 用于获取数据的方法和装置
CN112130748A (zh) 一种数据访问方法、网卡及服务器
US9335862B1 (en) Virtual multi-device navigation in surface computing system
CN103444152B (zh) 一种信息操纵方法和***
CN113568860A (zh) 基于深度学习的拓扑映射方法、装置、介质及程序产品
US20230069079A1 (en) Statistical K-means Clustering
CN113992662A (zh) 文件传输方法、装置及存储介质
CN110119386A (zh) 数据处理方法、数据处理装置、介质和计算设备
CN107707620A (zh) 处理io请求的方法及装置
CN113778270A (zh) 一种拖动图标的方法和装置
WO2021012554A1 (zh) 区块链中数据字段的更新方法、装置、介质、电子设备
US11941445B2 (en) RLC channel management for low memory 5G devices
US10067678B1 (en) Probabilistic eviction of partial aggregation results from constrained results storage
US8219668B2 (en) Resource property aggregation in a multi-provider system
JP2024506131A (ja) 仮想マシンのメモリ共有方法および装置
US10684898B2 (en) In-line event handlers across domains
KR102064466B1 (ko) 가상화 시스템에서의 가상 데스크톱을 할당하는 방법 및 그 가상화 시스템
CN116113962A (zh) 跨分布式机器学习环境的张量比较
US10664342B2 (en) Leak protection of executables with debug information
US10649869B2 (en) Burn process data retrieval and notification
CN111988195A (zh) 用于分组测试的应答方案确定方法、装置、设备及介质
CN112711572A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220211

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.