发明内容
本发明的目的是提供一种增强网络存储可靠性的方法和一种网络设备,以解决现有技术中因无法控制外部请求导致存储控制器过载导致,造成外部请求被随意丢弃,造成当前已有会话的数据传输中断,进而严重影响存储可靠性的问题。
为解决上述问题,本发明公开了一种增强网络存储系统可靠性的方法,所述方法包括:获取网络存储系统当前的资源使用情况;为向所述网络存储系统发起请求的应用主机或用户设置优先级;根据所述资源使用情况按预定规则控制响应外部请求,所述资源使用情况为存储控制器的资源占用率和网络接入链路的带宽占用率;
其中,控制响应外部请求的预定规则包括:
当存储控制器的资源占用率大于预置的阀值时,若发起请求的是新应用主机或新用户,丢弃该请求;若发起请求的是已建立会话的主机或用户,不允许重新发起新的会话;或者,
在同等条件下,优先响应优先级较高的应用主机或用户。
优选的,所述获取网络存储系统当前的资源使用情况以及控制响应外部请求是由所述网络存储系统的网络接入设备实施,该接入设备位于请求发起端与目标端之间。
优选的,所述根据网络存储系统当前的资源使用情况按预定规则控制响应外部请求包括:若所述资源使用情况超出预置阀值,则拒绝响应新的外部请求。
其中,所述预定规则还包括:判断所述存储控制器当前的网络接入链路当前带宽占用率是否超出预置阀值,若超出,则按一控制方式拒绝来自外部的新请求。
优选的,所述控制方式是配置访问控制列表ACL。
优选的,所述获取网络存储系统当前的资源使用情况之前还包括:预置一时间周期;启动定时器;若达到所述时间周期,则执行后续步骤。
本发明还公开了一种增强网络存储系统可靠性的网络设备,该网络设备位于存储网络发起端和目标端之间,用于为向所述网络存储系统发起请求的应用主机或用户设置优先级,该网络设备包括:
获取单元,用于获取网络存储系统当前的资源使用情况;
请求控制单元,用于根据获取单元所获取的资源使用情况按预定规则控制响应外部请求,所述资源使用情况为存储控制器的资源占用率和网络接入链路的带宽占用率;
其中,控制响应外部请求的预定规则包括:
当存储控制器的资源占用率大于预置的阀值时,若发起请求的是新应用主机或新用户,丢弃该请求;若发起请求的是已建立会话的主机或用户,不允许重新发起新的会话;或者,
在同等条件下,优先响应优先级较高的应用主机或用户。
其中,所述获取单元包括:存储控制器资源获取单元,用于获取存储控制器当前的资源占用率;
网络接入链路获取单元,用于获取网络接入链路当前带宽占用率;
所述请求控制单元还包括:
通信控制单元,用于按一控制方式拒绝外部新的请求通过;
判断单元,用于判断存储控制器资源获取单元所获取的存储控制器当前的网络接入链路获取单元所获取的网络接入链路当前带宽占用率是否超出预置阀值,若超出,通知通信控制单元拒绝外部新的请求通过。
优选的,所述通信控制单元拒绝外部请求通过的控制方式是配置访问控制列表ACL。
优选的,所述设备还包括:定时器,用于周期性计时;周期控制单元,用于判断定时器是否达到预置时间周期,若达到,则通知请求控制单元控制响应外部请求。
根据上述一技术方案,本发明具有以下效果:
目前的网络存储系统中,由于存储控制器承载着外部iSCSI报文到存储系统内部报文的转换以及对存储介质操作的重要工作,因此其运行正常与否将直接影响到整个存储系统的可靠性。但是,随着网络上用户和应用主机的增加,常常出现大量用户同时访问存储系统的现象,并由此造成存储控制器负载的急剧增加,甚至资源耗尽,例如CPU使用率达到100%。针对这一现象,存储控制器为了避免发生拥塞以至于影响整个存储业务,通常会采取随机的方式丢弃当前会话,但是这样一来,则极有可能导致正在传输数据的会话被丢弃,造成数据传输中断或存储失败。本发明通过获取存储系统当前的资源使用情况,然后按一定规则将所述使用控制在一个合理的范围内,使得存储控制器有足够的资源保证当前会话的稳定和完整,从而很好地解决了现有技术存在的上述问题。
具体实施方式
为克服现有技术中大量不受控制的外部请求造成存储控制器满载或者超载运行,导致用户存储中断的问题,本发明提出通过获取网络存储系统当前的资源使用情况,然后根据所述资源使用情况按预定规则控制响应外部请求,这样使得存储控制器的负载控制在一个合理的范围内,保证其能够正常稳定地运行,很好地解决了现有技术存在的上述问题。
概括而言,本发明所述方法包括以下步骤:
s1,获取网络存储系统当前的资源使用情况。
s2,根据所述资源使用情况按预定规则控制响应外部请求。
网络存储系统的资源既可以是网络存储系统内部的资源,如存储系统内部的存储控制器、前端交换机、后端交换机、磁盘阵列等;也可以是网络存储系统的网络接入链路或其它相关设备等资源。上述资源能否正常运行将直接或间接影响到网络存储系统数据存储的完整性和可靠性。优选的,获取存储控制器当前的资源占用率作为判断存储系统当前资源使用情况的依据,如CPU占用率。
在获取网络存储系统当前的资源使用情况时,可通过实时分析、统计各资源的使用情况,根据预先获知的所述资源的性能参数,计算出资源的使用情况。例如,已知存储系统内部的前端交换机的一个端口的最大速率是100Mbps,通过统计,当前该交换机的该端口在10秒内处理500Mbit的数据,因此该交换机的该端口此段时间内的带宽使用率为50%。
所述预定规则优选的可按下述方式实现:预置一阀值,若存储系统当前的资源使用情况超出该阀值,则按一控制方式拒绝来自外部的新请求,该控制方式可以是通过配置ACL(Access Control List,访问控制列表)实现,也可以是通过锁定物理端口等其它方式实现。例如,判断当前存储控制器的CPU使用率是否超出预置阀值,若超出则拒绝响应来自外部的新请求。当然,所述阀值的取值可根据存储系统当前资源使用情况的具体内容,以及存储系统性能等因素综合考虑设定。按上述方法,通过将存储系统资源的使用控制在一个合理的范围内,从而避免了资源的使用超出其相应的最大负载,使得其有足够的资源处理基于当前连接和会话的请求,因此有效地保证了存储的完整性和可靠性。
优选的,在执行上述步骤s1之前可预置一时间周期,然后周期性地执行步骤s1、s2。当然,采用随机或其它方式执行上述步骤也是可以的。
需要指出,上述按预置阀值控制外部请求只是本发明推荐的一种实现方式,至于在实施本发明时选择哪种资源的使用情况进行比较,以及使用何种预定规则和控制方式控制外部请求可由本领域技术人员根据实际需要自行决定,本发明对此不作限制,例如,可按照外部请求的来源进行访问控制,如过滤特定IP地址的请求,或者按外部请求的优先级进行控制等。
下面,参见图2,以获取存储系统内部存储控制器的资源使用情况为例,对本发明所述方法进行描述。
步骤201,启动定时器。
步骤202,若到达预置时间周期,则执行以下步骤。
时间周期的设定可综合考虑存储系统的性能、网络带宽等多种因素。本例中将时间周期设置为10s,即每隔10s执行以下步骤。
步骤203,获取存储控制器CPU的当前使用率。
在实际应用中,存储控制器的资源使用情况可体现为多个方面,例如,内存占用率、CPU使用率等。为便于说明,下面均以CPU使用率为例进行说明。
步骤204,若CPU当前使用率大于80%,执行205;否则,返回执行步骤202。
步骤205,拒绝用于建立新会话的I/O请求。
在基于iSCSI协议的存储过程中,Initiator与Target之间的所有会话是建立TCP连接之上的。TCP报文中每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。对于每个会话,可以通过ISID(Initiator SessionID,发起端会话标识)、TSIH(Target Assigned Session Identifying Handle,目标端分配的会话标识句柄)、CID(Connection ID,连接标识)参数唯一确定一个会话。这样一来,我们就可根据上述信息记录当前已有的TCP连接和会话。
当网络设备收到I/O请求后:首先,从该请求信息中获取相应的源端IP地址、源端口、目的端IP地址、目的端口以及ISID等信息;然后基于该获取的信息进行判断:若该请求基于已有的会话,则正常处理;若该请求来自已有的Initiator,但请求的是新连接或新会话或者该请求是新的Initiator发起的,则可以予以丢弃;另外可以通过配置ACL的方式实现,比如利用自定义的ACL过滤所有请求报文。
以上描述了根据存储控制器当前的CPU使用率来决定是否允许I/O请求建立新会话的过程,本发明所述方法的另一实施例中通过判断存储系统网络接入链路带宽当前的占用率来控制外部请求,详细描述如下:
若将整个存储系统看作一个LAN(Local Area Network,局域网),该存储系统通过网络接入设备接入外部的WAN(Wide Area Network,广域网络),而网络接入设备将承载所有IP网络上的iSCSI报文并转发给存储系统的存储控制器,因此,对存储系统而言,从存储系统到网络接入设备之间的链路(以下简称网络接入链路)就成为关键链路。之所以称其为关键链路是因为它容易成为数据链路传送过程中的瓶颈。例如广域网中的很多用户需要同时向存储系统存储数据,所有的数据报文都需要经过网络接入链路到达存储系统,如果同一时间发起数据存储读写请求的用户数很多,而且这些用户发送报文的流量之和超出了网络接入链路的最大带宽,为避免拥塞,超过带宽部分的数据会被随机丢弃,这样一来,导致很多数据在未到达存储系统之前就被丢弃了,造成数据传输失败。现有的网络存储系统大多是通过优化存储系统内部各设备间的可靠性连接来提高存储系统整体的可靠性,例如,存储控制器、磁盘等重要设备硬件链路的双归属连接。但是,如上文所述,即使存储系统内部具有很高的可靠性,但依然无法避免网络接入链路的占用超出最大带宽导致的数据传输失败,本发明通过将网络接入链路带宽的当前占用率控制在一个合理的范围内,从而彻底解决了现有技术存在的上述问题,大大提高了存储的可靠性。
下面,是对该实施例的详细描述:
步骤301,启动定时器。
步骤302,若到达预置时间周期,则执行以下步骤。
步骤303,获取存储系统网络接入链路带宽的当前占用率。
统计一段时间内通过网络接入链路总的报文数,然后得出每秒钟通过的报文总数,再根据网络报文的特征,对报文选取一个平均长度,这样就能够计算出网络接入链路当前被占用的带宽以及该网络接入链路带宽的当前占用率。例如,假设链路带宽为100mbps,若通过计算得到每秒钟通过的报文数为2000个,报文的平均长度为15182byte,那么该网络接入链路当前被占用的带宽为(2000*1518byte*8)/106=24.28mbps,所以网络接入链路带宽当前占用率为24.28%。或者统计每秒钟网络设备转发给存储系统的bit总数,然后得出带宽占用率。
步骤304,若网络接入链路带宽的当前占用率超出80%,执行305;否则,返回执行步骤302。
步骤305,拒绝用于建立新会话的I/O请求。
以上分别以存储控制器的CPU使用率和存储系统网络接入链路带宽的占用率为例,对本发明所述方法作了说明。需要指出,本领域技术人员不但可以选择上述任何一种存储系统资源和相应的控制规则,而且可根据实际需要选择多种资源和规则组合后使用。下面,我们就以同时使用存储控制器的CPU使用率和网络接入链路带宽的占用率为例,说明如何实施本发明。
假设,我们对向存储系统发起I/O请求的应用主机或用户设置有优先级,在同等条件下,优先响应优先级较高的应用主机或用户。
本例中,优选的在存储系统的接入网络设备上实现获取存储控制器CPU的当前使用率和网络接入链路带宽当前占用率、以及控制对外部请求的处理,这样既可以利用现有的设备,而且不会对存储系统造成影响,当然,通过其它设备或接入新的设备来实现也是可以的。
步骤501,启动定时器。
步骤502,若到达预置时间周期,则执行以下步骤。
步骤503,获取网络接入链路带宽的当前占用率。
步骤504,获取存储控制器CPU的当前使用率。
步骤505,判断存储控制器CPU的当前使用率和网络接入链路带宽的当前占用率,然后按以下规则处理:
1)若存储控制器CPU的当前使用率大于80%:
若发起I/O请求的是新应用主机或新用户,配置ACL或者将网络设备相应的物理端口锁定,直接丢弃该请求;若发起I/O请求的是已建立会话的主机或用户,不允许重新发起新的会话,对于新发起的会话配置ACL直接丢弃。
2)若存储控制器CPU的当前使用率大于50%且小于80%:
a)若网络接入链路带宽当前占用率大于80%,对于优先级较高的新应用主机或者新用户发起的I/O请求,正常处理,允许建立会话;对于优先级低的新应用主机或者新用户发起的I/O,若发起I/O请求的是新应用主机或新用户,配置ACL或者将网络设备相应的物理端口锁定,直接丢弃该请求;若发起I/O请求的是已建立会话的主机或用户,不允许重新发起新的会话,对于新发起的会话配置ACL直接丢弃。
b)若网络接入链路带宽当前占用率大于50%小于80%时,对于优先级低的新应用主机或者新用户发起的I/O请求,配置ACL或者锁定相应的物理端口直接丢弃,其他情况都允许建立会话。
3)若存储控制器CPU的当前使用率小于50%:
a)若网络接入链路带宽当前占用率大于80%时,对于优先级低的新应用主机或者新用户发起的I/O请求,配置ACL或者锁定相应的物理端口,直接丢弃;
b)其他情况都正常处理,允许建立新会话。
以上通过具体的例子描述了本发明所述的一种增强网络存储可靠性的方法,下面参照上文所述内容,同时参照图3,对本发明所述的一种增强网络存储可靠性的网络设备的实施例进行介绍。如图3所示,所述设备包括:
获取单元310,用于获取网络存储系统当前的资源使用情况;
请求控制单元320,用于根据获取单元310所获取的资源使用情况按预定规则控制响应外部请求。
其中,所述获取单元310还包括:
存储控制器资源获取单元3101,用于获取存储控制器当前的资源占用率;
网络接入链路获取单元3102,用于获取网络接入链路当前带宽占用率。
需要说明的是,在具体实施时获取单元310即可以只包括存储控制器资源获取单元3101,也可以只包括网络接入链路获取单元3102,当然,也可以同时包括上述两个单元。
所述请求控制单元320还包括:
通信控制单元3201,用于按一控制方式拒绝外部新的请求通过;
判断单元3202,用于判断存储控制器资源获取单元所获取的存储控制器当前的资源占用率;和/或网络接入链路获取单元所获取的网络接入链路当前带宽占用率是否超出预置阀值,若超出,通知通信控制单元拒绝外部新的请求通过。
所述通信控制单元拒绝外部请求通过的控制方式可以通过配置访问控制列表ACL实现。
所述设备还可以包括:定时器330,用于周期性计时;周期控制单元340,用于判断定时器330是否达到预置时间周期,若达到,则通知请求控制单元320控制响应外部请求。
下面,对应用上述网络设备实现增强网络存储系统可靠性的一个优选过程进行描述:
首先,启动定时器,周期控制单元判断定时器是否达到预置时间周期,若达到,则通知请求控制单元控制响应外部请求;请求控制单元中的网络接入链路获取单元获取网络接入链路当前带宽占用率,然后,判断单元比较网络接入链路获取单元所获取的网络接入链路当前带宽占用率和预置阀值,若超出,则通知通信控制单元;通信控制单元收到通知后通过配置ACL拒绝新的外部请求通过。
应用上述装置,本发明还公开了一种网络存储系统,该系统包括:存储控制器、存储介质和网络控制设备,其中,该网络控制设备包括:
获取单元,用于获取网络存储系统当前的资源使用情况;
请求控制单元,用于根据获取单元所获取的资源使用情况按预定规则控制响应外部请求。
上述设备和系统的实现细节,请参见上文关于方法实施例的描述,这里不再赘述。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上对本发明所提供的一种增强网络存储可靠性的方法和一种网络设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,说明书内容不应理解为对本发明的限制。