在iSCSI中实现错误返回的系统及其方法

文档序号:7611440阅读:320来源:国知局
专利名称:在iSCSI中实现错误返回的系统及其方法
技术领域
本发明涉及一种返回错误信息的系统及其方法,特别是指应用在储存网络上,通过在目标设备内建立一虚拟SCSI磁盘装置,可直接返回错误命令信息的系统及其方法。
背景技术
储存网络是特指连结储存设备与服务器的网络,由于储存网络是以网络串联储存设备,故其较RAID及SCSI等将服务器与储存设备直接连结的技术,除了具有高速传输能力,也不会因服务器本身而限制储存设备的扩充与备份,扩充性与可靠性佳。目前Fiber Channel是最为常用的储存网络的连结技术的代表。
另一个新兴起的储存网络技术,则是刚完成标准制定的iSCSI(internetSCSI)传输协议。此传输协议主要的功能是将SCSI的命令及数据,通过iSCSI的协议数据单元(PDU,Protocol Data Units)在目前发展已非常成熟的IP网络上传送,借由iSCSI协议,将使IP网络亦可成为储存网络。以IP网络作为储存网络时的最大优点是,对使用者而言,其只需将其服务器及储存设备换成iSCSI接口,使用原有的IP网络的交换设备,就可建置出价廉物美的储存网络,而且使用上好像它们是″直接存取装置″一样。iSCSI可以实现在IP网络上营运SCSI协议,使其能够在高速千兆Ethernet上进行路由选择。
iSCSI传输协议为互联网工程任务组织(IETF,Internet Engineering TaskForce)所制定的标准,定义了启动设备(Initiator Machine),也就是发出存取数据要求的一方,通常为服务器端或使用者计算机,及目标设备(TargetMachine),也就是接收并响应要求的一方,通常为储存设备端,两者之间的传输方式,包括了有两者之间的传送的iSCSI PDU的格式,Session的建立及终止,以及SCSI Task的开始及结束。
对传统SCSI而言,iSCSI协议是架构在TCP/IP协议之上,而再往上则是与SCSI接口相接,因此不必再受限于SCSI的最远距离只能到25公尺,只要有网络的地方即可建构,由于是采取SCSI的接口方式来传送命令,而执行一个SCSI命令只能有2种结果正确或错误。启动设备把命令传递给目标设备后,会一直等待命令的执行结果。若是执行错误,目标设备必须返回错误信息给启动设备,才能保证启动设备能够正常运行。
请参照图1,此为iSCSI传递SCSI命令的过程示意图。当启动设备端270从SCSI层100发出一格式为命令描述块(CDB,Command DescriptorBlock)的命令101到iSCSI层110,iSCSI层110则再包上一层协议数据单元111,最后再加上TCP/IP标头(header),成为一IP封包后,才能传送到因特网上到达目标设备端280。
而当目标设备端280自TCP/IP网络120上接收到此封包后,先由网络层将TCP/IP标头解除后,传到iSCSI层110将PDU111的标头去除后,最后才将命令描述块格式数据101传到SCSI层100。由于从目标设备端280所返回的错误信息必须包含在IP封包中,但是如果目标设备端280在协议数据单元的标头中加入错误信息,则在启动设备端270的分层拆解过程将导致错误信息到SCSI层100丢失,如此一来,启动设备端270的SCSI磁盘装置将得不到命令执行的结果,以至于导致启动设备端270与目标设备端280的操作异常,甚至于造成系统停止运作的危险。

发明内容
本发明的主要目的是提供一种在iSCSI中实现错误返回的系统,其在目标设备内的iSCSI模块中就能够把错误信息处理完,并返回给启动设备端的SCSI层,以解决现有技术中的上述问题,正确的处理错误信息,保证错误能够返回到启动设备端的SCSI层。
为达到上述目的,本发明一种在iSCSI中实现错误返回的系统,对于原本iSCSI系统中一启动设备端所传送出去的一IP封包,需经由一目标设备内一iSCSI层将其协议数据单元拆解后,再由一SCSI层解读剩余的SCSI命令描述块格式数据及命令,并于一SCSI磁盘装置中执行,其特征在于该系统还包含一虚拟SCSI磁盘装置,当该目标设备内包含一LVM/RAID装置时,可以在该iSCSI模块中就判别出一个以上错误命令,并立即反馈给该启动设备端,使每个SCSI命令都能够得到实时的确认,避免信息的丢失,以利将该IP封包重送。
该虚拟SCSI磁盘装置可以解读多个SCSI命令描述块的多个命令信息。
该虚拟SCSI磁盘装置可将错误信息加入各该SCSI命令描述块中。
该启动设备端的SCSI层可解读由该虚拟SCSI磁盘装置所加入错误信息的各该SCSI命令描述块。
该虚拟SCSI磁盘装置检查SCSI命令描述块的各该命令信息无误后,则仍可将各该命令信息交由SCSI磁盘装置来执行。
本发明还提供一种在iSCSI中实现错误返回的方法,该方法包含下列步骤接收一启动设备端发出的IP封包;去除一协议数据单元及一SCSI命令描述块的标头;自该SCSI命令描述块中取出多个SCSI命令的设备信息;当该设备信息正常时,将该SCSI命令描述块信息传给一文件系统;当发现该设备信息错误时,在该SCSI命令描述块中加入一个以上的错误处理信息;及处理完毕后,向该启动设备端发送确认信息。
该设备信息为一SCSI磁盘装置执行的命令。
该启动设备端接收到该错误信息回复时,可立即将该SCSI命令重送。
该虚拟SCSI磁盘装置可判读SCSI磁盘装置的READ CAPACITY(10)、MODE SENSE(6)、REPORT LUNS、INQUIRY、TEST UNIT READY、VERIFY(10)、READ(10)、WRITE(10)等命令。
也就是说,本发明提供一种在iSCSI中实现错误返回的系统,其特征在于于目标设备的iSCSI层除原有的iSCSI模块外,还包含一虚拟SCSI磁盘装置(Virtual SCSI disk driver),使处于iSCSI层的iSCSI协议,不需传送到SCSI层即能准确的把SCSI命令的错误执行结果反馈给启动设备,使每个SCSI命令都能够得到实时的确认,避免信息的丢失,从而达到目标设备端与启动设备端的信息互通,最后保证了目标设备端与启动设备端能维持稳定运作的目的。
至于在iSCSI中实现错误返回的方法上,则包含下列步骤首先,在目标设备端接收启动设备发出的IP封包;接着,去除协议数据单元及命令描述块的标头;然后,自命令描述块中取出SCSI的命令;判断内含的设备信息是否正常?如果不是,则在命令描述块中加入错误处理信息,否则就直接将命令描述块信息传给文件系统(file system),最后,向启动设备发送确认信息。
有关本发明的特征与实作,兹配合附图作最佳实施例详细说明如下。


图1为公知的系统结构图;图2是本发明的系统结构图;及图3是本发明的方法流程图。
其中,附图标记说明如下100—SCSI层;101—SCSI命令(CDB)110—iSCSI层;111—iSCSI命令(PDU);120—TCP/IP网络;200—SCSI磁盘装置;210—LVM/RAID装置;220—文件系统;230—虚拟SCSI磁盘装置;240—iSCSI模块;250—网络系统;260—IP封包;270—启动设备端;280—目标设备端;步骤300—接收启动设备端发出的IP封包;步骤310—去除PDU及CDB的标头;步骤320—自CDB中取出SCSI的命令;步骤330—设备信息是否正常?;步骤340—将CDB信息传给文件系统;步骤350—向启动设备端发送确认信息;步骤360—在CDB中加入错误处理信息;具体实施方式
本发明提出一种在iSCSI中实现错误返回的系统及其方法,可借由在目标设备280内的iSCSI模块240中,来对错误信息作直接的处理,以防止信息的丢失。
请参照图1,此图为公知的iSCSI传递SCSI命令的过程示意图。如图中所示,启动设备端270与目标设备端280两者对SCSI磁盘装置200的操作,实际上都是对SCSI磁盘驱动程序即SCSI层100的操作,所以,iSCSI层110可以把命令描述块直接传递给SCSI层100的磁盘驱动程序,这和以往的对本机SCSI磁盘操作很类似。原来的本机SCSI磁盘,操作系统只要把SCSI命令描述块传递给SCSI层100的驱动程序即可,SCSI层100的驱动程序在接收到SCSI命令描述块后,可独立完成命令的处理,之后,把执行结果回传给操作系统。而且,假如SCSI命令执行有误,则SCSI层100的驱动程序会自动把错误信息记录到SCSI命令描述块中,最后,把SCSI命令描述块再返回给操作系统。
请参照图2,此图为本发明的系统结构图。与图1的不同点在于,本系统后端的储存设备为一LVM(Logical Volume Manager)/RAID(RedundantArray ofInexpensive Disks)装置210,而在启动设备端270内部的系统结构则与图1相同,故本图的启动设备端270仅省略为以一方块代替。而原本iSCSI系统为单纯的SCSI磁盘装置200,因此依据SCSI层100的磁盘驱动程序在处理SCSI命令时,会自动把错误信息加入到SCSI命令描述块中,而iSCSI模块240则无须判断SCSI命令描述块的内容,可以直接把SCSI命令描述块传递给SCSI层100的磁盘驱动程序作处理。
在SCSI层100的磁盘驱动程序处理完命令描述块后,如果有错误发生,则命令描述块中已包含错误信息,iSCSI层110只需要把此SCSI命令描述块打包成协议数据单元后,发给启动设备端270即可。而启动设备端270在得到SCSI命令描述块后,再对自目标设备端280所发出的结果作分析,这部分则和处理本机SCSI磁盘一样。
因此,对本机直接通过网络储存TCP/IP方式120,连接一iSCSI磁盘装置而言,iSCSI层110只需要直接把SCSI命令描述块发给启动设备端270即可,全部的错误处理和判断都在目标设备端280及启动设备端270,各自的SCSI层100的磁盘驱动程序内部完成。
但是假如iSCSI模块240要操控的是LVM/RAID装置210,则必须通过设备文件访问的方式,这与原先的iSCSI系统直接操纵SCSI层100的磁盘驱动程序并不相同,必须先通过文件系统220,才能对相应设备作控制。如图2所示,当启动设备端270发出I/O(Input/Output)要求时,iSCSI模块240却不能直接将此要求送至SCSI磁盘装置200,也就是说,SCSI命令描述块并不能直接传递到SCSI磁盘装置200,同时,SCSI磁盘装置200也无法将错误信息上传给iSCSI模块240。因此,我们必须让iSCSI模块240拥有可以自己完成错误处理的功能。
我们采取在iSCSI模块240中,建立一虚拟SCSI磁盘装置230,代替了SCSI磁盘装置200来处理发生错误的工作。针对READ CAPACITY(10)、MODE SENSE(6)、REPORT LUNS、INQUIRY、TEST UNIT READY、VERIFY(10)、READ(10)、WRITE(10)等命令做逐一判读,如果发现异常,则直接修改SCSI命令描述块,根据具体问题来组织相对应的错误信息。
请参照图3,此为本发明的方法流程图。首先,目标设备端280接收启动设备端270所发出的IP封包260(步骤300)后,则网络系统250会先将IP标头给去除,接着将剩余的数据往下传到iSCSI模块240,将协议数据单元的标头去掉,剩下的就是由SCSI磁盘装置200所要判读的命令描述块格式,原先的做法是要等传到底层的SCSI磁盘装置200才能判断命令是否有错。
而我们的做法是利用在iSCSI模块240中,建立一个虚拟SCSI磁盘装置230,其对于判断命令描述块格式的能力与SCSI磁盘装置200相同,故能直接去除命令描述块的标头(步骤310),并自命令描述块中读取SCSI的命令(步骤320),并对这些命令作检查,判断是否有错误发生(步骤330)。
假如检查的结果是发现有异常,则直接修改命令描述块,在其中加入错误处理信息(步骤360),并将加入错误码的命令描述块往下传到iSCSI模块240;假如检查结果并没有发现异常情形,则将命令描述块的信息直接传给文件系统220(步骤340),文件系统220再与LVM/RAID装置210沟通后,最后将命令描述块传给SCSI磁盘装置200执行;当命令描述块信息正常无误的执行,则回传给启动设备端270一正常执行的回复信息,否则,则将先前加入错误处理信息的命令描述块回传。
当启动设备端270收到目标设备端280所回复的信息也是按相反顺序米作逐层拆解,由于虚拟SCSI磁盘装置230是按照SCSI协议标准来组织错误信息,因此传到启动设备端270可以被正常判读,当启动设备端270读完命令描述块的内容后,发现在命令执行上有错误产生,则立即取消此命令的执行,否则,此命令将会令启动设备端270一直处于等待结果状态,最终可能导致系统陷入当机的状态之中。
虽然本发明以前述的较佳实施例揭露如上,然其并非用以限定本发明,任何熟悉相像技术者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的专利保护范围须视本说明书所附的权利要求书为准。
权利要求
1.一种在iSCSI中实现错误返回的系统,对于原本iSCSI系统中一启动设备端所传送出去的一IP封包,需经由一目标设备内一iSCSI层将其协议数据单元拆解后,再由一SCSI层解读剩余的SCSI命令描述块格式数据及命令,并于一SCSI磁盘装置中执行,其特征在于,该系统还包含一虚拟SCSI磁盘装置,当该目标设备内包含一LVM/RAID装置时,可以在该iSCSI模块中就判别出一个以上错误命令,并立即反馈给该启动设备端,使每个SCSI命令都能够得到实时的确认,避免信息的丢失,以利将该IP封包重送。
2.如权利要求1所述的在iSCSI中实现错误返回的系统,其特征在于,该虚拟SCSI磁盘装置可以解读多个SCSI命令描述块的多个命令信息。
3.如权利要求1所述的在iSCSI中实现错误返回的系统,其特征在于,该虚拟SCSI磁盘装置可将错误信息加入各该SCSI命令描述块中。
4.如权利要求1所述的在iSCSI中实现错误返回的系统,其特征在于,该启动设备端的SCSI层可解读由该虚拟SCSI磁盘装置所加入错误信息的各该SCSI命令描述块。
5.如权利要求1所述的在iSCSI中实现错误返回的系统,其特征在于,该虚拟SCSI磁盘装置检查SCSI命令描述块的各该命令信息无误后,则仍可将各该命令信息交由SCSI磁盘装置来执行。
6.一种在iSCSI中实现错误返回的方法,该方法包含下列步骤接收一启动设备端发出的IP封包;去除一协议数据单元及一SCSI命令描述块的标头;自该SCSI命令描述块中取出多个SCSI命令的设备信息;当该设备信息正常时,将该SCSI命令描述块信息传给一文件系统;当发现该设备信息错误时,在该SCSI命令描述块中加入一个以上的错误处理信息;及处理完毕后,向该启动设备端发送确认信息。
7.如权利要求6所述的在iSCSI中实现错误返回的方法,其特征在于,该设备信息为一SCSI磁盘装置执行的命令。
8.如权利要求6所述的在iSCSI中实现错误返回的方法,其特征在于,该启动设备端接收到该错误信息回复时,可立即将该SCSI命令重送。
9.如权利要求6所述的在iSCSI中实现错误返回的方法,其特征在于,该虚拟SCSI磁盘装置可判读SCSI磁盘装置的READ CAPACITY(10)、MODE SENSE(6)、REPORT LUNS、INQUIRY、TEST UNIT READY、VERIFY(10)、READ(10)、WRITE(10)等命令。
全文摘要
一种在因特网小计算机系统接口,以下均简称iSCSI(internet SCSI),中实现错误返回的系统及其方法,利用在目标设备(Target Machine)内的iSCSI模块(module)中,建立一虚拟SCSI磁盘装置(Virtual SCSI disk driver),当启动设备(Initiator Machine)端发出命令至目标设备端后,能够不必通过文件系统(filesystem)传送到SCSI layer,即可快速辨识命令的正确性,并立即将错误命令信息回传给启动设备。
文档编号H04L29/06GK1805328SQ200510004310
公开日2006年7月19日 申请日期2005年1月14日 优先权日2005年1月14日
发明者宋建福, 刘文涵, 李卓印 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1