基于因特网小型计算机系统接口的命令处理方法及装置的制作方法

文档序号:7566941阅读:138来源:国知局
专利名称:基于因特网小型计算机系统接口的命令处理方法及装置的制作方法
技术领域
本发明涉及存储技术领域,具体涉及基于因特网小型计算机系统接口(iSCSI, Internet Small Computer System Interface)的命令处理方法及装置。
背景技术
目前,在监控系统中使用因特网协议存储区域网络(IPSAN,InternetProtocol Storage Area Network)作为存储体普遍应用,将摄像头的数据存储到IPSAN中,当用户需要查看历史录像时,从IPSAN中读取录像数据。图1为现有的典型IP监控组网图。如图1所示,主要包括录像存储过程编码器(EC,Encoder)通过iSCSI连接到IPSAN,将录像数据写入 IPSAN0录像回放过程视频客户端(VC,Video Client)或解码器(DC,Decoder)向视频管理(VM,Video Management)服务器发出申请,由数据管理(DM,Data Management)服务器读取IPSAN中的数据转发给VC。录像存储过程对存储实时性要求比较高,由于EC缓存资源有限,当IPSAN上的阵列在重建或同步时,对客户端的输入输出(IOJnput Output)响应会变慢,EC由于10延时太大导致EC缓存数据下刷很慢,最终导致EC存储丢包。而对于录像回放过程,当存在多路回放时,由于DM跟IPSAN只建立一个iSCSI会话,从而导致所有回放业务都运行在一个会话上,而每个会话只有一个命令队列,导致多个回放业务相互影响,当其中一个存储逻辑单元上的回放业务的10响应慢时会导致其它存储逻辑单元上的回放业务的10响应也变慢。

发明内容
本发明提供基于iSCSI的命令处理方法及装置,以提高基于iSCSI的命令处理效率。本发明的技术方案是这样实现的一种基于因特网小型计算机系统接口 iSCSI的命令处理方法,该方法包括当存储系统与主机建立iSCSI会话后,存储系统接收主机发来的为本次iSCSI会话针对的各个逻辑单元号LUN设置的业务参数,所述业务参数包括最大响应时长;存储系统接收主机发来的iSCSI输入输出10命令,该命令中设置有业务优化标志,所述业务优化标志为关键数据标志和/或响应时长限制标志;存储系统判断该命令中是否设置了响应时长限制标志,若是,判断该命令中是否设置了关键数据标志,若设置了, 确定优先调度该命令,若未设置,则根据该命令的接收时刻以及该命令中的LUN对应的最大响应时长,计算该命令的应完成时刻,计算该命令的应完成时刻与当前时刻的差值,若该差值小于预设阈值,则确定优先调度该命令;否则,确定正常调度该命令。所述阈值为所述iSCSI 10命令中的LUN对应的最大响应时长除以m所得的商值,其中,m > 1。当所述iSCSI IO命令为读命令时,存储系统判定该命令中设置了响应时长限制标志之后、判断该命令中是否设置了关键数据标志之前进一步包括判断是否已对该命令中的LUN对应的存储逻辑单元启用预读功能,若已启用,则确定正常调度该命令;若未启用,则执行所述判断该命令中是否设置了关键数据标志的动作。当所述iSCSI IO命令为读命令且为顺序读时,所述iSCSI IO命令中进一步包括 顺序读标志;且,当存储系统处理完该读命令,并向主机返回读响应后,对该读命令中的LUN对应的存储逻辑单元启用并执行预读功能。当所述iSCSI IO命令为读命令且命令中包含响应时长限制标志时,当存储系统处理完该读命令,并向主机返回读响应后,根据该读命令的最大响应时长判断读响应是否超时,若超时,判断读命令中的LUN对应的存储逻辑单元是否已启用预读功能,若未启用,则启用;若已启用,则关闭该预读功能,且,当接收到后续读命令时,若该读命令中设置了关键数据标志,则处理该读命令,否则,丢弃该读命令。一种基于iSCSI的命令处理装置,包括第一模块当与主机建立iSCSI会话后,接收并记录主机发来的为本次iSCSI会话针对的各个LUN设置的业务参数,所述业务参数包括最大响应时长;第二模块接收主机发来的iSCSI IO命令,该命令中设置有业务优化标志,所述业务优化标志为关键数据标志和/或响应时长限制标志,判断该命令中是否设置了响应时长限制标志,若是,判断该命令中是否设置了关键数据标志,若设置了,确定优先调度该命令,若未设置,根据该命令的接收时刻以及第一模块记录的该命令中的LUN对应的最大响应时长,计算该命令的应完成时刻,计算该命令的应完成时刻与当前时刻的差值,若该差值小于预设阈值,则确定优先调度该命令;否则,确定正常调度该命令。所述第二模块进一步用于,当所述iSCSI IO命令为读命令时,在判定该命令中设置了响应时长限制标志之后,判断是否已对该命令中的LUN对应的存储逻辑单元启用预读功能,若已启用,则确定正常调度该命令;若未启用,则执行所述判断该命令中是否设置了关键数据标志的动作。所述第二模块进一步用于,当所述iSCSI IO命令为读命令且包含顺序读标志时, 当处理完该读命令,并向主机返回读响应后,对该读命令中的LUN对应的存储逻辑单元启用并执行预读功能。所述第二模块进一步用于,当所述iSCSI IO命令为读命令且命令中包含响应时长限制标志时,当处理完该读命令,并向主机返回读响应后,根据该读命令的最大响应时长判断读响应是否超时,若超时,判断读命令中的LUN对应的存储逻辑单元是否已启用预读功能,若未启用,则启用;若已启用,则关闭该预读功能,且,当接收到后续读命令时,若该读命令中设置了关键数据标志,则处理该读命令,否则,丢弃该读命令。所述装置位于iSCSI存储系统中。与现有技术相比,本发明中,可以使得主机控制iSCSI命令的响应,从而提高了基于iSCSI的命令处理效率。
另外,本发明实施例中,当主机的读命令为顺序读时,存储系统可以启动预读功能,或者,当存储系统响应超时后启动预读功能,从而加快了读响应,提高了读性能,进一步提高了基于iscsi的命令处理效率。


图1为现有的典型IP监控组网图;图2为本发明实施例提供的基于iSCSI的命令处理方法流程图;图3为本发明实施例提供的设置业务参数的方法流程图;图4为本发明实施例提供的基于iSCSI的读流程图;图5为本发明实施例提供的基于iSCSI的写流程图;图6为本发明实施例提供的基于iSCSI的命令处理装置的组成图。
具体实施例方式下面结合附图及具体实施例对本发明再作进一步详细的说明。图2为本发明实施例提供的基于iSCSI的命令处理方法流程图,如图2所示,其具体步骤如下步骤201 当主机与存储系统建立iSCSI会话后,为本次iSCSI会话针对的各个 LUN设置业务参数,主机将该本次iSCSI会话针对的各LUN的业务参数发送给存储系统,其中,业务参数包括IO块大小和/或最大响应时长。步骤202 主机向存储系统发送iSCSI IO命令,该命令中设置有业务优化标志,其中,业务优化标志为关键数据标志和/或响应时长限制标志。步骤203 存储系统接收iSCSI IO命令,判断该命令中是否设置了响应时长限制标志,若是,执行步骤204 ;否则,执行步骤207。步骤204 存储系统判断该命令中是否设置了关键数据标志,若是,执行步骤208 ; 否则,执行步骤205。步骤205 存储系统根据该命令的接收时刻以及该命令中的LUN的最大响应时长, 计算该命令的应完成时刻。步骤206 存储系统判断该命令的应完成时刻与当前时刻的差值是否大于或等于预设阈值,若是,执行步骤207 ;否则,执行步骤208。这里,预设阈值可取命令中的LUN的最大响应时长/m,其中,m为大于1的整数。步骤207 存储系统正常调度该命令,本流程结束。步骤208 存储系统优先调度该命令。图3为本发明实施例提供的设置业务参数的方法流程图,如图3所示,其具体步骤如下步骤301 主机与存储系统建立iSCSI会话,主机将本次会话针对的各LUN的业务参数携带在业务参数设置请求报文中发送给存储系统。LUN的业务参数包括IO块大小(Blocksize)、最大响应时长。可由上层应用单元或管理员根据业务需求,在主机上设置本次iSCSI会话针对的各LUN的业务参数,不同LUN 的业务参数不一定相同。
本步骤中的业务参数设置请求报文有两个字段为本发明实施例扩展字段1、Time-limit 表示最大响应时长。2、IO Blocksize 10块大小,即每次读、写操作的数据块大小。另外,报文中的type字段的取值可为iSCSI协议的任一预留值,这里取Oxlc。步骤302 存储系统接收业务参数设置请求报文,判断报文中的业务参数是否可行,若是,执行步骤304 ;否则,执行步骤303。存储系统可根据自身性能规格判断业务参数是否可行。步骤303 存储系统向主机返回指示失败的业务参数设置响应报文,本流程结束。步骤304 存储系统向主机返回指示成功的业务参数设置响应报文,同时将各LUN 的业务参数记录到本次会话的描述信息中。对于业务参数设置响应报文,本发明实施例扩展了一个字段status字段,用于表示业务参数设置成功还是失败,如取值为1时,表示成功,取值为O时,表示失败。且,其中的type字段的取值可为iSCSI协议的任一预留值,当然,取值也必须与业务参数设置请求报文不同,这里取0x3c。当业务参数设置成功后,就可进行IO过程了,以下分别给出iSCSI读过程和iSCSI 写过程的
具体实施例方式图4为本发明实施例提供的基于iSCSI的读流程图,如图4所示,其具体步骤如下步骤401 主机向存储系统发送iSCSI读命令,该命令中携带业务优化标志位。这里,业务优化标志位包括顺序读标志位C、响应时长限制标志位T、关键数据标志位。例如,可设定当C为1时,表示本主机当前发起的iSCSI读命令为顺序读命令,即相邻读命令针对的是相邻的数据块;当C为O时,表示本主机当前发起的iSCSI读命令不为顺序读命令;当T为1时,表示本iSCSI读命令有响应时长限制;当T为O时,表示本iSCSI读命令没有响应时长限制。现有的iSCSI报文中包含attr字段,这里,可将iSCSI读命令中的attr字段的最高位作为关键数据标志位,例如当其置1时表示本次所读数据为关键数据。步骤402 存储系统接收iSCSI读命令,根据该读命令中的T,判断该读命令是否有响应时长限制,若是,执行步骤403 ;否则,执行步骤407。步骤403 存储系统根据该读命令中的attr,判断本次所读数据是否为关键数据, 若是,执行步骤408 ;否则,执行步骤404。步骤404 存储系统判断该读命令中的LUN对应存储逻辑单元是否已启用预读功能,若是,执行步骤407 ;否则,执行步骤405。步骤405:存储系统根据读命令中的LUN,在自身记录的本次会话描述信息中查找到该LUN对应的最大响应时长,根据该读命令的接收时刻和该最大响应时长,计算出该读命令的应完成时刻。读命令的应完成时刻=读命令的接收时刻+读命令中的LUN的最大响应时长。步骤406 存储系统判断读命令的应完成时刻-当前时刻>读命令中的LUN的最大响应时长/2是否成立,若是,执行步骤407 ;否则,执行步骤408。步骤407 存储系统将该读命令的优先级设置为正常,将该读命令和优先级放入本次会话的命令队列中,转至步骤409。步骤408 存储系统将该读命令的优先级设置为高,将该读命令和优先级放入本次会话的命令队列中,转至步骤409。步骤409 存储系统根据命令队列中各命令的优先级确定各命令的处理顺序,当存储系统从命令队列中取出上述读命令时,根据读命令中的LUN以及本次会话描述信息中该LUN对应的IO块大小,从对应逻辑存储单元中读取一个IO块大小的数据,将该数据携带在读响应中返回给主机。步骤410 存储系统根据读命令中的C,判断该读命令是否为顺序读,若是,执行步骤411 ;否则,本流程结束。步骤411 存储系统判断该读命令中的LUN对应的存储逻辑单元是否已启用预读功能,若是,执行步骤412;否则,执行步骤413。步骤412 存储系统对该读命令中的LUN对应的存储逻辑单元执行预读功能即,将当前读取的数据之后一个IO块大小的数据放入读缓存,本流程结束。步骤413 存储系统对该读命令中的LUN对应的存储逻辑单元启用预读功能,同时将当前读取的数据之后一个IO块大小的数据放入读缓存。将读取的数据之后一个IO块大小的数据放入读缓存,这样,当此后再收到读命令时,就可直接将读缓存中的数据返回给主机了,而不需再进行从存储逻辑单元中读取数据的操作了,从而提高了读性能。在步骤406中,只为读命令的应完成时刻与当前时刻的差值设置了一个阈值读命令中的LUN的最大响应时长若大于该阈值,则确定读命令的优先级为正常;否则,确定读命令的优先级为高。在实际应用中,当存储系统支持多个优先级时,可设置多个阈值, 以对优先级进行进一步细分。在图4所示实施例中,当存储系统向主机返回读响应时,还可进一步判断该读响应返回时刻是否大于步骤405计算出的读命令的应完成时刻,若大于,则通过如下步骤优化后续读性能步骤01 判断当前读命令中的LUN对应的存储逻辑单元是否已启用预读功能,若是,执行步骤03 ;否则,执行步骤02。步骤02 对该读命令中的LUN对应的存储逻辑单元启用预读功能,本流程结束。步骤03 在本次会话描述信息中设置读响应超时标志。步骤04 当接收到后续iSCSI读命令时,发现本次会话描述信息中有读响应超时标志,判断该读命令中的LUN对应的存储逻辑单元是否已启用预读功能,若是,执行步骤 05 ;否则,执行步骤06。步骤05 关闭该预读功能。关闭预读功能后,此后当处理完一个iSCSI读命令后,不再将当前读取的数据之后一个IO块大小的数据放入读缓存。步骤06 根据该后续读命令中的attr,判断当前所读数据是否为关键数据,若是, 按照步骤408、409处理该读命令;否则,不处理该读命令,直接向主机返回指示失败的读响应。图5为本发明实施例提供的基于iSCSI的写流程图,如图5所示,其具体步骤如
8下步骤501 主机向存储系统发送iSCSI写命令,该命令中携带业务优化标志位。这里,业务优化标志位包括响应时长限制标志位T、关键数据标志位。例如,可设定当T为1时,表示本iSCSI写命令有响应时长限制;当T为0时,表示本iSCSI写命令没有响应时长限制。这里,可将iSCSI写命令中的attr字段的最高位作为关键数据位,例如 当其置1来表示本次写入数据为关键数据。步骤502 存储系统接收iSCSI写命令,根据写命令中的T,判断该写命令是否有响应时长限制,若是,执行步骤503 ;否则,执行步骤506。步骤503 存储系统根据该写命令中的attr,判断本次写入数据是否为关键数据, 若是,执行步骤507 ;否则,执行步骤504。步骤504 存储系统根据写命令中的LUN,在自身记录的本次会话描述信息中查找到该LUN对应的最大响应时长,根据该写命令的接收时刻和该最大响应时长,计算出该写命令的应完成时刻。写命令的应完成时刻=写命令的接收时刻+写命令中的LUN的最大响应时长。步骤505 存储系统判断写命令的应完成时刻-当前时刻>写命令中的LUN的最大响应时长/2是否成立,若是,执行步骤506 ;否则,执行步骤507。步骤506 存储系统将该写命令的优先级设置为正常,将该写命令和优先级放入本次会话的命令队列中,转至步骤508。步骤507 存储系统将该写命令的优先级设置为高,将该写命令和优先级放入本次会话的命令队列中,转至步骤508。步骤508 存储系统根据命令队列中各命令的优先级确定各命令的处理顺序,当存储系统从命令队列中取出上述写命令时,根据写命令中的LUN,将写命令中的数据写入对应存储逻辑单元,写入完毕,向主机返回指示成功的写响应。在步骤505中,只为写命令的应完成时刻与当前时刻的差值设置了一个阈值写命令中的LUN的最大响应时长若大于该阈值,则确定写命令的优先级为正常;否则,确定写命令的优先级为高。在实际应用中,当存储系统支持多个优先级时,可设置多个阈值, 以对优先级进行进一步细分。图6为本发明实施例提供的基于iSCSI的命令处理装置的组成图,如图6所示,其主要包括第一模块61和第二模块62,其中第一模块61 当与主机建立iSCSI会话后,接收并记录主机发来的为本次iSCSI 会话针对的各个LUN设置的业务参数,所述业务参数包括10块大小和/或最大响应时长。第二模块62 接收主机发来的iSCSI IO命令,该命令中设置有业务优化标志,所述业务优化标志为关键数据标志和/或响应时长限制标志,判断该命令中是否设置了响应时长限制标志,若是,判断该命令中是否设置了关键数据标志,若设置了,确定优先调度该命令,若未设置,从第一模块61获取该命令中的LUN对应的最大响应时长,根据该命令的接收时刻以及该获取的最大响应时长,计算该命令的应完成时刻,计算该命令的应完成时刻与当前时刻的差值,若该差值小于预设阈值,则确定优先调度该命令;否则,确定正常调度该命令。第二模块62还可用于,当所述iSCSI IO命令为读命令时,在判定该命令中设置了响应时长限制标志之后,判断是否已对该命令中的LUN对应的存储逻辑单元启用预读功能,若已启用,则确定正常调度该命令;若未启用,则执行所述判断该命令中是否设置了关键数据标志的动作。第二模块还可用于,当所述iSCSI IO命令为读命令且包含顺序读标志时,当处理完该读命令,并向主机返回读响应后,对该读命令中的LUN对应的存储逻辑单元启用并执行预读功能。第二模块还可用于,当所述iSCSI IO命令为读命令且命令中包含响应时长限制标志时,当处理完该读命令,并向主机返回读响应后,根据该读命令的最大响应时长判断读响应是否超时,若超时,判断读命令中的LUN对应的存储逻辑单元是否已启用预读功能,若未启用,则启用;若已启用,则关闭该预读功能,且,当接收到后续读命令时,若该读命令中设置了关键数据标志,则处理该读命令,否则,丢弃该读命令。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种基于因特网小型计算机系统接口 iscsi的命令处理方法,其特征在于,该方法包括当存储系统与主机建立iSCSI会话后,存储系统接收主机发来的为本次iSCSI会话针对的各个逻辑单元号LUN设置的业务参数,所述业务参数包括最大响应时长;存储系统接收主机发来的iSCSI输入输出IO命令,该命令中设置有业务优化标志,所述业务优化标志为关键数据标志和/或响应时长限制标志;存储系统判断该命令中是否设置了响应时长限制标志,若是,判断该命令中是否设置了关键数据标志,若设置了,确定优先调度该命令,若未设置,则根据该命令的接收时刻以及该命令中的LUN对应的最大响应时长,计算该命令的应完成时刻,计算该命令的应完成时刻与当前时刻的差值,若该差值小于预设阈值,则确定优先调度该命令;否则,确定正常调度该命令。
2.根据权利要求1所述的方法,其特征在于,所述阈值为所述iSCSIIO命令中的LUN 对应的最大响应时长除以m所得的商值,其中,m > 1。
3.根据权利要求1所述的方法,其特征在于,当所述iSCSIIO命令为读命令时,存储系统判定该命令中设置了响应时长限制标志之后、判断该命令中是否设置了关键数据标志之前进一步包括判断是否已对该命令中的LUN对应的存储逻辑单元启用预读功能,若已启用,则确定正常调度该命令;若未启用,则执行所述判断该命令中是否设置了关键数据标志的动作。
4.根据权利要求1所述的方法,其特征在于,当所述iSCSIIO命令为读命令且为顺序读时,所述iSCSI IO命令中进一步包括顺序读标志;且,当存储系统处理完该读命令,并向主机返回读响应后,对该读命令中的LUN对应的存储逻辑单元启用并执行预读功能。
5.根据权利要求1所述的方法,其特征在于,当所述iSCSIIO命令为读命令且命令中包含响应时长限制标志时,当存储系统处理完该读命令,并向主机返回读响应后,根据该读命令的最大响应时长判断读响应是否超时,若超时,判断读命令中的LUN对应的存储逻辑单元是否已启用预读功能,若未启用,则启用;若已启用,则关闭该预读功能,且,当接收到后续读命令时,若该读命令中设置了关键数据标志,则处理该读命令,否则,丢弃该读命令。
6.一种基于iSCSI的命令处理装置,其特征在于,包括第一模块当与主机建立iSCSI会话后,接收并记录主机发来的为本次iSCSI会话针对的各个LUN设置的业务参数,所述业务参数包括最大响应时长;第二模块接收主机发来的iSCSI IO命令,该命令中设置有业务优化标志,所述业务优化标志为关键数据标志和/或响应时长限制标志,判断该命令中是否设置了响应时长限制标志,若是,判断该命令中是否设置了关键数据标志,若设置了,确定优先调度该命令,若未设置,根据该命令的接收时刻以及第一模块记录的该命令中的LUN对应的最大响应时长,计算该命令的应完成时刻,计算该命令的应完成时刻与当前时刻的差值,若该差值小于预设阈值,则确定优先调度该命令;否则,确定正常调度该命令。
7.根据权利要求6所述的装置,其特征在于,所述第二模块进一步用于,当所述iSCSI IO命令为读命令时,在判定该命令中设置了响应时长限制标志之后,判断是否已对该命令中的LUN对应的存储逻辑单元启用预读功能,若已启用,则确定正常调度该命令;若未启用,则执行所述判断该命令中是否设置了关键数据标志的动作。
8.根据权利要求6所述的装置,其特征在于,所述第二模块进一步用于,当所述iSCSI IO命令为读命令且包含顺序读标志时,当处理完该读命令,并向主机返回读响应后,对该读命令中的LUN对应的存储逻辑单元启用并执行预读功能。
9.根据权利要求6所述的装置,其特征在于,所述第二模块进一步用于,当所述iSCSI IO命令为读命令且命令中包含响应时长限制标志时,当处理完该读命令,并向主机返回读响应后,根据该读命令的最大响应时长判断读响应是否超时,若超时,判断读命令中的LUN 对应的存储逻辑单元是否已启用预读功能,若未启用,则启用;若已启用,则关闭该预读功能,且,当接收到后续读命令时,若该读命令中设置了关键数据标志,则处理该读命令,否则,丢弃该读命令。
10.根据权利要求6至9任一所述的装置,其特征在于,所述装置位于iSCSI存储系统中。
全文摘要
本发明公开了基于因特网小型计算机系统接口的命令处理方法及装置。方法包括当存储系统与主机建立iSCSI会话后,接收主机发来的为本次iSCSI会话的各LUN设置的业务参数,业务参数包括最大响应时长;存储系统接收主机发来的iSCSI IO命令,命令中设置有业务优化标志,业务优化标志为关键数据标志和/或响应时长限制标志;存储系统判断命令中是否设置了响应时长限制标志,若是,判断命令中是否设置了关键数据标志,若设置了,优先调度命令,若未设置,计算命令的应完成时刻,计算命令的应完成时刻与当前时刻的差值,若差值小于预设阈值,优先调度命令;否则,正常调度命令。本发明提高了基于iSCSI的命令处理效率。
文档编号H04L29/08GK102185874SQ20111002210
公开日2011年9月14日 申请日期2011年1月19日 优先权日2011年1月19日
发明者陈乾业 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1