使用盘驱动器构成独立盘冗余阵列系统的方法和设备的制作方法

文档序号:6548267阅读:128来源:国知局
专利名称:使用盘驱动器构成独立盘冗余阵列系统的方法和设备的制作方法
背景技术
本发明涉及构成由多个盘驱动器形成的RAID(独立盘冗余阵列)系统的方法和设备。
背景技术
通常,称作独立盘冗余阵列(RAID)系统或盘阵列系统的盘存储系统被众所周知。当与单个盘驱动器比较时,RAID系统可以实现具有较大存储容量和较高可靠性的盘存储设备。
然而,RAID系统需要称作RAID控制器(盘阵列控制器)的专用控制设备。当与使用多个盘驱动器的情况比较时,RAID系统是大规模和复杂的结构。
在现有技术中提出不使用RAID控制器构成RAID系统的方法(例如,参见日本专利申请KOKAI出版物No.2003-99210)。在该方法中,通过使用分别连接到构成集群系统的多个计算机的盘驱动器来实现所谓的虚拟RAID系统。
在现有技术的方法中,由于RAID系统是通过使用多个计算机实现RAID控制器功能来构成的,总系统是大规模和复杂的结构。

发明内容
根据本发明的一个方面,提供了一种盘驱动器,包含与其它盘驱动器协作构成RAID系统的设备。
盘驱动器包括充当单个盘驱动器的驱动器机构;与其它盘驱动器交换用于构成RAID系统的信息的通信单元;以及通过使用通信单元与其它盘驱动器交换信息的控制器,控制器通过控制该驱动器机构和其它盘驱动器的驱动器机构来实现RAID系统。


被并入说明书并构成说明书一部分的附解了本发明的实施例,并且与上面给出的一般描述及下面给出的实施例的详细描述一起来说明本发明的原理。
图1的模块图示出了基于本发明的第一实施例的RAID系统的结构;图2的模块图示出了基于第一实施例的盘驱动器的主要部分;图3的视图示出了基于第一实施例的分布式RAID表的结构;图4的视图示出了基于第一实施例的RAID结构表的结构;图5,6,7A和7B的流程图说明了基于第一实施例的RAID系统的构成操作;图8A到8C和9A到9C的视图说明了基于第一实施例的每个盘驱动器的模块结构;图10A和10B的视图说明了第一实施例中RAID系统的构成操作,该系统被应用于RAID类型1;图11到14的流程图说明了基于第一实施例的数据读取操作的第一特定例子;图15,16,17A,17B和18的流程图说明了基于第二实施例的数据读取操作的第二特定例子;图19和20的流程图说明了基于第三实施例的数据读取操作的第三特定例子;图21到24的流程图说明了基于第一实施例的数据写入操作的第一特定例子;图25,26,27A,27B和28的流程图说明了基于第二实施例的数据写入操作的第二特定例子;图29和30的流程图说明了基于第三实施例的数据写入操作的第三特定例子;图31的模块图示出了基于第二实施例的RAID系统的结构;图32的模块图示出了基于第三实施例的RAID系统的结构;图33的视图示出了基于第三实施例的通信分组的格式;
图34的流程图示出了基于第三实施例的RAID构成过程;以及图35的流程图示出了基于第三实施例的盘驱动器之间的通信过程。
具体实施例方式
现在参照附图描述本发明的实施例。
(第一实施例)图1的模块图示出了基于第一实施例的RAID系统的系统配置。图2示出了每个盘驱动器的主要部分。
(系统配置)在第一实施例中,多个盘驱动器103到106的每个具有分别操作的驱动器机构。驱动器机构分别包含盘介质10到13以及盘控制器20到23。如后面所述,每个盘控制器20到23具有构成RAID系统的功能。为了方便,有时盘驱动器103到105被称作盘驱动器#1到#3。
盘驱动器103到106通过主机接口总线101被连接到主机系统100。对于诸如ATA和SCSI的接口规范,主机接口总线101包含用于控制盘驱动器的物理规范和命令系统。例如,物理规范包含管脚排列和信号电平,其中通过它们,盘驱动器103到106被分别从主机系统100进行控制以执行数据写入/读取。
主机接口总线101也具有命令系统,其中盘驱动器103到106相互彼此协作以构成RAID系统。类似于常规的接口,可以在每个盘驱动器103到106中提供在主机总线接口的盘驱动器端的连接器。
在第一实施例中,每个盘驱动器103到106包含用于盘驱动器之间的连接的连接器107,以及用于到主机系统100的连接的连接器108。在用于盘驱动器之间的连接的连接器107中,当多个盘驱动器103到106被彼此连接时,主机系统100和彼此连接的盘驱动器之间的连接可以通过经由连接器108连接主机系统100和盘驱动器之一(在这里,盘驱动器104)来实现。
相互通信总线102是一接口,通过它,盘驱动器103到106相互彼此协作以在构成RAID系统的盘驱动器间实施通信。如图1所示,除通过连接器107相互连接盘驱动器的模式之外,相互通信总线102也可以具有不使用物理导线作为传输介质,而是通过功率守恒(power-conservation)无线通信实施通信的模式。
(盘驱动器的结构)图2的模块图具体示出了在盘驱动器103到106的每个结构中的盘控制器的主要部分。为了方便,将典型地描述盘驱动器(#1)103的结构。
盘控制器20包含分布式RAID模式命令处理模块200,分布式RAID处理表(此后称作分布式RAID表)210,单模式命令处理模块220,盘间通信控制模块230,数据恢复模块240,以及奇偶检验信息产生模块250。
当分布式RAID模式命令处理模块200通过主机接口总线101从主机系统100接收命令时,分布式RAID模式命令处理模块200执行RAID系统构成处理。单模式命令处理模块220处理主机命令,以便以通常的单模式操作盘驱动器。
分布式RAID模式命令处理模块200使用具有图3中示出的信息的分布式RAID处理表210执行RAID系统构成处理。分布式RAID处理表210包含RAID模式标志211,RAID组号212,以及RAID配置表213。
当从主机系统100接收命令中的RAID系统构成命令时,设置RAID模式标志211。当分布式RAID表210的RAID模式标志211未被设置时,盘控制器20传送控制到单模式命令处理模块220,使得盘驱动器操作为单个盘驱动器。
当RAID模式标志211被设置时,分布式RAID模式命令处理模块200基于RAID配置表213的信息通过盘间通信控制模块230与其它盘驱动器交换控制信息和数据。
当盘驱动器根据RAID配置表213的信息充当奇偶检验驱动器时,分布式RAID模式命令处理模块200使奇偶检验信息产生模块250基于在其它盘驱动器中记录的数据产生奇偶检验信息,并且分布式RAID模式命令处理模块200在盘介质10中记录奇偶检验信息。在这种情况下,当其它盘驱动器被破坏并且必须通过奇偶检验信息恢复数据时,数据恢复模块240基于在其它盘驱动器中存储的数据和奇偶检验信息恢复因破坏而丢失的记录数据。
如图4所示,例如,当通过组合盘驱动器103(#1)至105(#3)而构成RAID系统时,在RAID配置表213中设置用于定义每个盘驱动器的块结构的信息。在该信息中,P是指其中记录奇偶检验信息的块。
(RAID系统的构成操作)参考图5至7B和图8A至8C以及图9A至9C示出的流程图,描述构成RAID类型4或RAID类型5的RAID系统的情况下的操作。
在这种情况下,假定三个盘驱动器(#1)至(#3)被连接到主机接口总线101,并且盘驱动器(#1)至(#3)也被连接到相互通信总线102。盘驱动器(#1)至(#3)可以通过相互通信总线102彼此交换信息。
如图5所示,主机系统100向盘驱动器#1发出RAID系统构成命令(分配组0 RAID类型5)(步骤S1)。接着,主机系统100向盘驱动器#2和#3发出RAID系统构成命令(增加组0 RAID类型5)(步骤S2和S3)。
主机系统100向任意一个盘驱动器#1至#3,或向所有盘驱动器#1至#3查询关于组号0的成员列表,并且主机系统100确认RAID系统构成命令是否被正确识别(步骤S4和S5)。当RAID系统构成命令被正确识别时,例如,主机系统100发出命令(配置RAID组0条尺寸3),用于转变到构成RAID类型5的RAID系统的操作模式,该类型中一个条(strip)由每个盘驱动器#1至#3中的三个块形成(在步骤S5中的″是″和步骤S6)。
如图6所示,盘驱动器#1的盘控制器20通过从主机系统100接收的RAID类型5识别出盘驱动器#1被分配作为具有组#0的RAID系统的初始盘驱动器(步骤S11)。
具体地,如图3所示,分布式RAID模式命令处理模块200在分布式RAID表210中设置号0作为RAID组号212(步骤S12)。
接着,盘驱动器#1的盘控制器20等待通过相互通信总线102从加入到RAID组#0的其它盘驱动器发送的查询(步骤S13)。当盘控制器20从加入到RAID组#0的其它盘驱动器接收到查询时,盘控制器20通过向RAID配置表213增加发送消息的盘驱动器来更新分布式RAID表210中的RAID配置表213(在步骤S13中的″是″,以及步骤S14和S15)。
当盘驱动器#1的盘控制器20从主机系统100接收命令(配置RAID组0条尺寸3)时,盘控制器20填充图4示出的、分布式RAID表210中的RAID配置表213的内容,以设置RAID模式标志211中的RAID类型号(步骤S17以及S18)。
这里,例如,当盘驱动器为单独的时,RAID类型号被设置成″-1″。
另一方面,当每个盘驱动器#2以及#3从主机系统100接收命令时,盘驱动器#2和#3识别出盘驱动器#2和#3被增加作为构成RAID类型5的RAID系统结构以及组号0的RAID系统的盘驱动器(步骤S21)。
具体地,如图3所示,每个盘驱动器#2和#3的分布式RAID模式命令处理模块200设置号0作为分布式RAID表210中的RAID组号212(步骤S22)。
盘驱动器#2和#3通过相互通信总线102发送广播消息,使得属于组号0的盘驱动器发送驱动器号(步骤S23)。当盘驱动器#1响应广播消息向盘驱动器#2和#3通知盘驱动器#1属于组号0时,盘驱动器#2和#3识别出盘驱动器#1是成员,并且盘驱动器#2和#3通过向RAID配置表213增加盘驱动器#1来更新分布式RAID表210中的RAID配置表213(步骤S25和S26)。
接着,盘驱动器#2和#3等待通过相互通信总线102从加入到RAID组号0的其它盘驱动器发送的查询(步骤S27)。当盘驱动器#2和#3从加入到RAID组#0的其它盘驱动器接收到查询时,盘驱动器#2和#3通过向RAID配置表213增加发送消息的盘驱动器来更新分布式RAID表210中的RAID配置表213(在步骤S27中的″是″,以及步骤S28和S29)。
当盘驱动器#2和#3的盘控制器20从主机系统100接收命令(配置RAID组0条尺寸3)时,盘控制器20填充图4示出的、分布式RAID表210中的RAID配置表213的内容,以设置RAID模式标志211中的RAID类型号(步骤S31以及S32)。
因而,盘驱动器#1至#3通过主机系统和盘驱动器#1至#3之间的相互通信识别出每个盘驱动器#1向#3是RAID组0的成员。盘驱动器#1至#3设置RAID配置表213和RAID模式标志211,并且盘驱动器#1至#3充当构成分布式RAID系统的盘驱动器。
如图8A至8C所示,在每个盘驱动器#1至#3中,假定块的总数是12。每个盘驱动器#1至#3可以基于组中盘驱动器的数量和RAID配置表213中每个盘驱动器的盘驱动器号的顺序,识别出在RAID系统中逻辑地址和奇偶检验块的分配具有图9A至9C示出的配置。
当构成RAID系统时,例如,在盘驱动器#1的存储容量被增加的同时主机系统100进行访问。假定24个块存在于盘驱动器#1中,主机系统100访问单个盘驱动器的盘驱动器#1。
当主机系统100访问盘驱动器#1时,每个盘驱动器#1至#3基于RAID配置表213中的逻辑地址确定主机系统100是否访问自身或访问相同组中的另一个盘驱动器,或其它驱动器的具有奇偶检验信息的数据。
(RAID类型1的特定例子)图10A和10B的视图示出了当第一实施例的构成RAID系统的方法被应用于构造RAID类型1的RAID系统时的特定例子。
在这种情况下,假定盘驱动器#1和#2被连接到主机接口总线101。盘驱动器#1和#2可以被连接到相互通信总线102以相互交换信息。
主机系统100向一个盘驱动器,例如盘驱动器#1发出RAID系统构成命令(分配组0 RAID类型1)。接收RAID系统构成命令的盘驱动器#1识别出盘驱动器#1被指定作为RAID类型1中组号0的RAID系统的初始盘驱动器。盘驱动器#1等待通过相互通信总线102从加入到组号0的其它盘驱动器发送的查询。
接着,主机系统100向盘驱动器#2发出命令(增加组0 RAID类型1)。接收命令的盘驱动器#2识别出盘驱动器#2被增加为构成RAID类型1中组号0的RAID系统的盘驱动器。
盘驱动器#2通过相互通信总线102发送广播消息,使得属于组号0的盘驱动器发送驱动器号。当盘驱动器#1接收广播消息以向盘驱动器#2通知盘驱动器#1属于组号0时,这里,盘驱动器#1和#2识别出盘驱动器#1和#2是RAID类型1的组号0中的成员。
主机系统100向盘驱动器#1和#2之一或向两个盘驱动器#1和#2进行关于组#0的成员列表的查询,并且主机系统100确认RAID系统构成命令是否被正确识别。当RAID系统构成命令被正确识别时,例如,主机系统100发出命令(配置RAID组0)。主机系统100指示到诸如盘驱动器#1和#2的操作模式以构成RAID类型1的RAID系统。
接着,主机系统可以进行与访问单个盘驱动器#1相同的访问。在这种情况下,盘驱动器#2识别出对驱动器#1的访问的逻辑地址是对驱动器#2的相同块地址的访问。
(数据读取控制的第一特定例子)接着,将参照图11至14示出的流程图描述当在第一实施例中构成RAID类型4或RAID类型5的RAID系统的情况下的数据读取控制。
当如图9A至9C所示配置RAID系统时,主机系统100发出读命令,用于从逻辑地址7读取数据(步骤S41)。通过主机接口总线101接收读命令的盘驱动器#1可以识别出用于从逻辑地址7读取数据的读命令是对盘驱动器#1自身的块4的访问,使得盘驱动器#1在数据就绪时返回就绪通知到主机系统(在步骤S42中的″是″和步骤S52)。
在盘驱动器#1识别出用于从逻辑地址7读取数据的读命令是对盘驱动器#1自身的块4的访问时,盘驱动器#1通过相互通信总线102向具有数据的奇偶检验信息的盘驱动器#2通知盘驱动器#1响应于主机系统(在步骤S51)。
盘驱动器#1响应于来自主机系统的请求发送正常读取的数据,并且盘驱动器#1返回状态信息到主机系统(在步骤S53中的″是″,以及步骤S54和S56)。这里,盘驱动器#1向盘驱动器#2通知正常终止(步骤S55)。因此,主机系统100从盘驱动器#1接收读取的数据,并且在状态信息被返回时结束数据读出(步骤S43以及在步骤S44中的″是″)。
当对应于逻辑地址7的地址4的数据被破坏并且数据不能被正常读取时,盘驱动器#1向具有奇偶检验信息的盘驱动器#2通知由盘驱动器#2向主机系统100传送所恢复的数据以及状态信息(在步骤S53中的″否″以及步骤S57)。
当盘驱动器#1被破坏时,如图13所示,由于具有奇偶检验信息的盘驱动器#2未通过相互通信总线102接收通知以使用盘驱动器#2的奇偶检验信息恢复初始数据,盘驱动器#2向盘驱动器#3通知由盘驱动器#3读取与逻辑地址7共享相同奇偶检验的逻辑地址10中的数据(在步骤S61中的″否″以及步骤S62)。
如图14所示,盘驱动器#3读取对应于逻辑地址10的盘驱动器#3的块4中的数据,并且盘驱动器#3通过相互通信总线102向盘驱动器#2传送数据(在步骤S71中的″是″以及步骤S73)。
如图13所示,盘驱动器#2根据从盘驱动器#3传送的奇偶检验信息和数据恢复丢失的逻辑地址7的数据(步骤S63以及S64)。盘驱动器#2返回就绪通知到主机系统100,并且盘驱动器#2响应来自主机系统100的请求传送数据。最后,盘驱动器#2返回状态信息到主机系统100(步骤S65至S68)。
(数据读取控制的第二特定例子)下面将参照图15,16,17A,17B以及18示出的流程图描述在访问数据分布于多个盘驱动器的情况下,第一实施例的RAID类型4或RAID类型5的RAID系统中的数据读取控制。
如图15所示,主机系统100的读取请求从逻辑地址8延伸到逻辑地址11(步骤S81)。在这种情况下,例如,盘驱动器#1响应来自主机系统的命令,并且盘驱动器#1也在执行命令之后执行状态的响应(步骤S82到S84)。
如图16所示,盘驱动器#1通过相互通信总线102向具有数据的奇偶检验信息的盘驱动器#3和盘驱动器#2通知盘驱动器#1响应来自主机系统100的命令(步骤S91)。
盘驱动器#1在存储在盘驱动器#1中的数据就绪时返回就绪通知到主机系统100(步骤S92)。接着,盘驱动器#1响应主机系统100的请求传送逻辑地址8和9中的数据段(步骤S94)。盘驱动器#1通过相互通信总线102向盘驱动器#3通知盘驱动器#3开始传送数据(步骤S95)。
如图18所示,当数据传送被终止时,盘驱动器#3通过相互通信总线102向盘驱动器#1通知数据传送的状态和终止(步骤S135和S136)。
当盘驱动器#1从盘驱动器#3接收传送终止通知时,盘驱动器#3在盘驱动器#1向盘驱动器#2通知传送终止的同时返回命令的执行结果状态到主机系统100(在步骤S97中的″是″以及步骤S98和S99)。
这里,如图17A所示,当盘驱动器#2未通过相互通信总线102接收通知时,具有奇偶检验信息的盘驱动器#2确定盘驱动器#1被破坏,并且盘驱动器#2使用奇偶检验信息执行恢复初始数据的处理(在步骤S111中的″否″)。盘驱动器#2向盘驱动器#3通知盘驱动器#3读取与逻辑地址8和9共享奇偶检验的数据地址11和12(步骤S112)。
如图18所示,盘驱动器#3读取数据,即盘驱动器#2请求通过相互通信总线102向盘驱动器#2传送数据(在步骤S133中的″是″和步骤S138)。
如图17A所示,盘驱动器#2根据从从盘驱动器#3传送的奇偶检验信息和数据恢复丢失的数据(步骤S113以及S114)。在这种情况下,将被传送的数据出现在盘驱动器的缓冲区上,使得盘驱动器#2返回就绪通知到主机系统100(在步骤S115中的″否″和步骤S116)。
盘驱动器#2响应来自主机系统100的请求传送数据(步骤S117)。盘驱动器#2通过相互通信总线102向盘驱动器#3通知盘驱动器#3开始传送数据(步骤S118)。
如图18所示,在数据传送之后,盘驱动器#3通过相互通信总线102向盘驱动器#2通知数据传送的状态和终止(在步骤134中的″是″和步骤S135和S136)。
当盘驱动器#2从盘驱动器#3接收传送终止通知时,盘驱动器#2返回命令的执行结果状态到主机系统100(在步骤S119中的″是″以及步骤S121)。
另一方面,在驱动器#3出现问题的情况下,如图16所示,盘驱动器#1不能确认在盘驱动器#3中逻辑地址10和11的数据段就绪,使得盘驱动器#1确定盘驱动器#3被破坏(在步骤S96中的″否″)。
盘驱动器#1向具有奇偶检验信息的盘驱动器#2通知盘驱动器#2代表盘驱动器#3恢复数据和传送数据到主机系统100(步骤S101)。
如图17B所示,为了恢复逻辑地址10和11的数据段,盘驱动器#2请求盘驱动器#1通过相互通信总线102传送逻辑地址8和9的数据段(在步骤S123中的″是″和步骤S124)。
因此,盘驱动器#1通过相互通信总线102向盘驱动器#2传送逻辑地址8和9的数据段(步骤S102)。可选地,盘驱动器#2识别出盘驱动器#1向主机接口总线101上发送必要数据,使得盘驱动器#2不发送数据传送请求,但是盘驱动器#2可以监视从盘驱动器#1传送到主机系统100的数据。
在盘驱动器#2向主机系统100传送所恢复的数据之后,盘驱动器#2向盘驱动器#1通知数据传送的状态和终止(步骤S126和S127)。当盘驱动器#1从盘驱动器#2接收通知时,盘驱动器#2返回状态到主机系统100(在步骤S103中的″是″及步骤S99)。
(数据读取控制的第三特定例子)将参照图19及20示出的流程图描述第一实施例的RAID类型1的RAID系统中的数据读取控制。
在图10A及10B中示出的RAID系统结构中,主机系统100发出读命令,用于从如图19所示的逻辑地址7读取数据(步骤S141)。当主机系统100接收来自盘驱动器#1或#2的请求数据及状态时,主机系统100结束读取操作(步骤S143及在步骤S144中的″是″)。
如图20所示,盘驱动器#1和#2响应读命令而访问块地址7的数据(步骤S145)。在前成功访问数据的盘驱动器#1和#2之一通过相互通信总线102向其它盘驱动器发送就绪通知,以及返回就绪通知到主机系统(步骤S146至S148)。
假定盘驱动器#1发送就绪通知,盘驱动器#1占有所有下列读取操作的主动权。即,盘驱动器#1读取主机系统100向盘驱动器#1的盘请求的所有数据段以传送所有数据段(步骤S149)。可选地,盘驱动器#1预测其上的数据读出被寻道操作延迟的地址,并且盘驱动器#2从相同地址预取数据以传送数据到主机系统100。盘驱动器#1在数据传送被终止时返回状态到主机系统100(步骤S150)。
在RAID类型1中,当盘驱动器#1和#2之一被破坏时,就绪通知未被发送,并且对数据传送替换请求的响应也未被返回。因此,只有其它盘驱动器充当单个盘驱动器。
(数据写入控制的第一特定例子)接着,将参照图21至24描述第一实施例的RAID类型4或RAID类型5的RAID系统中的数据写入控制。
在图9A至9C中示出的RAID系统结构中,主机系统100发出写命令,用于在如图21所示的逻辑地址7中写入数据(步骤S151)。当主机系统100传送写数据到盘驱动器#1并且从盘驱动器#1接收状态时,主机系统100终止写操作(步骤S153和在步骤S154中的″是″)。
当盘驱动器#1在主机接口总线101上接收写命令时,盘驱动器#1识别出在逻辑地址7中写入数据的写命令是对盘驱动器#1自身的块4的访问。这里,如图22所示,盘驱动器#1向具有数据的奇偶检验信息的盘驱动器#2通知盘驱动器#1通过相互通信总线102响应来自主机系统100的命令(步骤S161)。
盘驱动器#2识别出针对逻辑地址7的奇偶检验信息存在于盘驱动器#2自身的块4中。盘驱动器#2也识别出涉及奇偶检验产生的逻辑地址10的数据(=盘驱动器#3的块4)未被更新。因此,盘驱动器#2读取块4的数据到缓冲区中,以便更新所写数据的奇偶检验。
如图23所示,盘驱动器#2请求盘驱动器#1通过相互通信总线102传送作为更新对象的逻辑地址7的旧数据到盘驱动器#2(在步骤S171中的″是″和步骤S172)。盘驱动器#2产生块4的数据和旧数据的异或以准备奇偶检验更新(步骤S174和S175)。
另一方面,如图22所示,在盘驱动器#1向盘驱动器#2传送逻辑地址7的旧数据之后,盘驱动器#1确认盘驱动器#2是否通过相互通信总线102发送就绪通知(在步骤S164中的″是″和步骤S165)。当盘驱动器#1从盘驱动器#2接收就绪通知时,盘驱动器#1立即返回就绪通知到主机系统100(步骤S166)。
然而,即使在由于盘驱动器#2被破坏而未发送响应的情况下,盘驱动器#1仍然在盘驱动器#1准备好写入时返回就绪通知,并且盘驱动器#1继续命令的执行。盘驱动器#1接收从主机系统100传送的数据以在盘中写入数据(步骤S167)。
如图23所示,盘驱动器#2同时接收从主机系统100传送到盘驱动器#1的数据,并且盘驱动器#2产生从主机系统100传送的数据和在奇偶检验更新缓冲区上的数据的异或,并且更新块4中的奇偶检验(步骤S176)。
盘驱动器#1通过相互通信总线102确认对盘驱动器#1的块4的写操作的状态以及盘驱动器#2的奇偶检验的写操作的状态。当对块4的写操作的状态和奇偶检验的写操作的状态之一为成功时,盘驱动器#1返回完成状态信息到主机系统100(步骤S169)。当对块4的写操作的状态和奇偶检验的写操作的状态都不成功时,盘驱动器#1返回出错状态到主机系统100。
如图23所示,当未通过相互通信总线102发送通知时,具有奇偶检验信息的盘驱动器#2确定盘驱动器#1被破坏(在步骤S171中的″否″)。在这种情况下,盘驱动器#2识别出盘驱动器#2应当响应主机系统100。此外,由于盘驱动器#2不能从盘驱动器#1接收将被更新的数据,所以盘驱动器#2通过相互通信总线102请求盘驱动器#3读取奇偶检验产生所必需的逻辑地址10的数据(步骤S177)。
如图24所示,盘驱动器#3传送盘驱动器#2请求盘驱动器#3传送的数据。当盘驱动器#3接收处理终止通知时,盘驱动器#3结束处理(步骤S183至S185)。
当盘驱动器#2从盘驱动器#3接收数据时,盘驱动器#2返回就绪通知到主机系统100(在步骤S178及S179)。盘驱动器#2接收盘驱动器#2请求主机系统100传送的数据。盘驱动器#2产生从主机系统100传送的数据和从盘驱动器#3传送的、缓冲区的逻辑地址10的数据的异或,并且更新块4中的奇偶检验(步骤S180)。最后,在盘驱动器#2向其它盘驱动器通知处理终止的同时,盘驱动器#2返回状态到主机系统100(步骤S181和S182)。
(数据写入控制的第二特定例子)下面参照图25,26,27A,27B以及28示出的流程图描述在访问数据扩展到多个盘驱动器的情况下第一实施例的RAID类型4或RAID类型5的RAID系统中的数据写入控制。
在图9A至9C中示出的RAID系统结构中,主机系统100发出写命令,用于在如图25所示的逻辑地址7至12中写入数据(步骤S191)。主机系统100传送写数据到例如盘驱动器#1。当主机系统100接收状态时,主机系统100结束写操作(步骤S193和在步骤S194中的″是″)。
在这种情况下,例如,盘驱动器#1响应来自主机系统的命令,并且盘驱动器#1也在执行命令之后执行状态的响应。
如图26所示,盘驱动器#1向盘驱动器#3和具有数据的奇偶检验信息的盘驱动器#2通知盘驱动器#1通过相互通信总线102响应来自主机系统100的命令(步骤S195)。
盘驱动器#2识别出逻辑地址7至12的各段奇偶检验信息存在于盘驱动器#2自身的块4至6中。盘驱动器#2也识别出所有涉及奇偶检验产生的数据段被更新。因此,盘驱动器#2识别出不必读取旧奇偶检验信息以更新奇偶检验信息。
盘驱动器#1确认盘驱动器#2和#3是否通过相互通信总线102发送就绪通知。当盘驱动器#1确认盘驱动器#2和#3的就绪通知时,盘驱动器#1立即返回就绪通知到主机系统100(步骤S196)。然而,即使在盘驱动器#2和#3之一被破坏并且没有响应的情况下,盘驱动器#1仍然在盘驱动器#1准备好写入时返回就绪通知到主机系统100,并且盘驱动器#1继续命令的操作。盘驱动器#1请求主机系统100以接收从主机系统100传送的数据。
当盘驱动器#2和#3都被破坏时,由于数据不能被写入逻辑地址10至12处,盘驱动器#1返回出错状态。
如图27A所示,盘驱动器#2同时接收从主机系统100传送到盘驱动器#1的数据,并且盘驱动器#2在缓冲区中存储数据以便更新奇偶检验。然而,盘驱动器#2仍未写入数据(步骤S212)。
盘驱动器#1请求主机系统100传送数据。当盘驱动器#1接收从主机系统100传送的数据时,盘驱动器#1在块4至6中写入数据,并且盘驱动器#1通过相互通信总线102向盘驱动器#3通知盘驱动器#3开始数据传送(步骤S197以及S198)。当盘驱动器#1从盘驱动器#3接收传送终止通知时,盘驱动器#1返回命令的执行结果状态到主机系统100(在步骤S200中的″是″以及步骤S202)。
如图28所示,当数据传送被终止时,盘驱动器#3通过相互通信总线102向盘驱动器#1通知状态和数据传送终止(步骤S225至S227)。
如图27A所示,盘驱动器#2同时接收从主机系统100向盘驱动器#3传送的数据。盘驱动器#2产生新奇偶检验并且在块4至6中写入新奇偶检验数据。新奇偶检验由从主机系统100传送的数据和存储在缓冲区中的数据的异或组成(步骤S214和S216)。
这里,如果来自驱动器#1的通知未通过相互通信总线102发送,则具有奇偶检验信息的盘驱动器#2确定盘驱动器#1被破坏(在步骤S211中的″否″)。在这种情况下,如图27B所示,盘驱动器#2通过相互通信总线102确认盘驱动器#3的就绪通知,并且盘驱动器#2返回就绪通知到主机系统100(在步骤S217中的″是″和步骤S218)。
此外,盘驱动器#2请求主机系统传送数据,并且盘驱动器#2接收从主机系统传送的数据。接着,盘驱动器#2通过相互通信总线102向盘驱动器#3通知盘驱动器#3开始数据传送(步骤S219和S220)。
当数据传送被终止时,盘驱动器#3通过相互通信总线102向盘驱动器#2通知状态和数据传送终止。最后,盘驱动器#2返回命令的执行结果状态到主机系统100(步骤S223)。
如果盘驱动器#2被破坏,尽管奇偶检验信息未被写入,然而处理像正常操作一样继续进行。如果盘驱动器#3被破坏,则在数据被传送到驱动器#1的同时,像正常操作一样,盘驱动器#2同时接收从主机系统100向盘驱动器#1传送的数据,并且盘驱动器#2在缓冲区中存储数据以更新奇偶检验。然而,盘驱动器#2仍未写入数据。
盘驱动器#1请求主机系统100传送数据。在盘驱动器#1接收从主机系统100传送的数据之后,盘驱动器#1通过相互通信总线102向盘驱动器#2通知盘驱动器#2开始从主机接收数据(步骤S203)。
盘驱动器#2请求主机系统100传送数据,并且盘驱动器#2接收从主机系统100传送的数据。接着,盘驱动器#2更新奇偶检验并且在块4至6中写入奇偶检验。新奇偶检验由从主机系统100传送的数据和存储在缓冲区中的数据的异或组成,以产生奇偶检验更新数据(步骤S216)。当数据传送被终止时,盘驱动器#2通过相互通信总线102向盘驱动器#1通知状态和数据传送终止。最后,盘驱动器#1返回命令的执行结果状态到主机系统100(步骤S202)。
(数据写入控制的第三特定例子)将参照图29及30示出的流程图描述第一实施例的RAID类型1的RAID系统中的数据写入控制。
在图10A及10B中示出的RAID系统结构中,主机系统100发出写命令,用于向如图29所示的逻辑地址7写入数据(步骤S231)。主机系统100传送数据到盘驱动器#1或#2。当主机系统100接收来自盘驱动器#1或#2的状态时,主机系统100终止写操作(步骤S233和在步骤S234中的″是″)。
如图30所示,盘驱动器#1和#2响应写命令访问块地址7的数据(步骤S235)。盘驱动器#1和#2分别寻找到块地址7的数据位置。在前成功寻找到块7的数据位置的盘驱动器#1和#2之一通过相互通信总线102向其它盘驱动器发送就绪通知,以及返回就绪通知到主机系统(步骤S236至S238)。
假定盘驱动器#1发送就绪通知,盘驱动器#1占有所有下列写操作的主动权。即,盘驱动器#1请求主机系统100传送数据,并且盘驱动器#1接收从主机系统100传送的数据。当数据传送被终止时,盘驱动器#1也执行对主机系统100的状态响应(步骤S239和S240)。然而,盘驱动器#2监视传送到盘驱动器#1的数据以与盘驱动器#2自身相同的块中写入数据。
在RAID类型1中,当盘驱动器#1和#2之一被破坏时,由于未从有问题的驱动器发送就绪通知,所以只有其它盘驱动器作为单个盘驱动器操作。
对于数据写入操作,由于可在处理之前在缓冲区中存储数据,甚至是在寻找到所需块位置之前,在这种情况下,盘驱动器#1被配置成始终提供就绪通知。当盘驱动器#1因其被破坏而未提供就绪通知时,盘驱动器#2作为独立驱动器操作。
相互通信总线102是由多个盘驱动器共享的总线。例如,类似于SCSI接口,相互通信总线102包含8至32个数据总线线路和控制信号线,诸如RST,ATN,ACK,REQ,MSG,I/O,C/D,SEL和BSY。例如,相互通信总线102具有仲裁功能和广播消息协议,并且根据诸如驱动器的序号,连接到BUS的盘驱动器可以彼此分配驱动器号。
当主机接口总线101依照ATA时,在主机接口总线101上识别的盘驱动器的数量限于两个盘驱动器。当至少三个盘驱动器被连接到主机接口总线101时,盘驱动器之一被设置成主盘驱动器,其它盘驱动器被设置成辅助盘驱动器。
从主机系统100向主盘驱动器发出用于构成RAID的命令。应对其实际执行RAID构成命令的驱动器号被指定为命令参数。当接收RAID构成命令的主盘驱动器从命令参数识别出RAID构成命令应当由其它盘驱动器执行时,主盘驱动器通过相互通信总线102传送RAID构成命令到指定盘驱动器。
所指定的盘驱动器通过相互通信总线102接收RAID构成命令,所指定的盘驱动器通过相互通信总线102返回状态到主盘驱动器。从所指定的盘驱动器接收状态的主盘驱动器通过主机接口总线101传送状态到主机系统。
(第二实施例)图31的模块图示出了基于第二实施例的RAID系统的结构。
在第二实施例中,只有一个盘驱动器(#1)103被连接到主机系统100,并且通过将未被连接到主机系统100的连接器连接到另一个盘驱动器来形成RAID系统。
假定通过串行接口101和102实施主机系统100和盘驱动器103之间的通信及盘驱动器之间的通信。串行接口101和102包含信号线,诸如发送TX+,发送TX-,接收RX+以及接收RX-。
串行接口通过使用诸如物理层,链路层以及传送层的层次结构发送和接收命令,状态以及数据。在物理层中,定义信号线的类型和电平。在链路层中,发送和接收信息帧。在传送层中,信息帧被构成以供发送,并且接收的信息帧被解析。
通过盘驱动器(#1)103的盘控制器20执行与主机系统100的通信。盘控制器20接收从主机系统100发出的命令以确定后续处理的内容。
盘驱动器#1的控制器20和盘驱动器#2的控制器21互相用与连接主机系统100和盘驱动器#1的控制器20的电缆相同的电缆连接。通过直到物理层和链路层的相同通信模式连接控制器20和控制器21。
多个盘驱动器可以通过上述连接结构被串联连接。理论上,如图31所示,n个盘驱动器被彼此串联连接以形成RAID系统。
(第三实施例)图32的模块图示出了基于第三实施例的RAID系统的结构。
在第三实施例中,主机接口总线101具有与图1所示的第一实施例相同的总线结构。另一方面,通过串行接口实施盘驱动器之间的通信。串行接口包含信号线,诸如发送TX+,发送TX-,接收RX+以及接收RX-。即,第三实施例的系统采用通过与串行接口发送和接收信息帧在盘驱动器之间实施通信的方法。
图33示出了第三实施例中的盘驱动器之间的通信中使用的分组330的格式。
分组330的前端部分331是命令标识部分,其标识命令是否这样的命令,其中盘驱动器被主机系统作为单个盘驱动器来控制,或是否这样的命令,其中盘驱动器被RAID系统控制。此外,格式包含命令和消息部分332,用于指定将被访问的盘控制器号的代码部分333,数据开始部分334,数据部分335,以及用于指示分组的结束的部分336。
图34的流程图示出了基于第三实施例的RAID构成过程。
具体地,按连接到主机系统100的盘驱动器的顺序分配ID(标识)号(步骤S251)。具有ID号1的盘驱动器(#1)的盘控制器(20)具有诸如RAID结构中盘驱动器数量和盘驱动器的存储容量的管理信息(步骤S252)。
具有ID号1的盘控制器20构成具有由来自主机系统100的命令指定的RAID级别的RAID(例如,类型4或类型5)(步骤S253)。具有ID号1的盘控制器20拷贝其管理数据到其它盘驱动器的控制器(步骤S254)。
当上述过程被正常终止时,RAID系统构成处理结束(步骤S255和S256)。当上述过程未被正常终止时,具有ID号1的盘控制器向主机系统100通知出错状态,并且RAID系统构成处理结束(步骤S257)。
图35的流程图示出了基于第三实施例的每个盘驱动器之间的通信过程。
盘驱动器#1的源盘控制器20指定目的盘控制器号以发送分组(帧)(步骤S261)。接收分组的盘控制器比较分组中的目的盘控制器号和其自身的盘控制器号。如果分组中的目的盘控制器号未对应于其自身的盘控制器号,则接收分组的盘控制器传送分组到相邻盘驱动器(在步骤S263中的″否″和步骤S266)。
如果分组中的目的盘控制器号对应于其自身的盘控制器号,则目的控制器分析所接收命令以执行基于命令的处理。即,执行盘访问处理(在步骤S263中的″是″和步骤S264)。目的控制器通知源控制器20接收完成(步骤S265)。
如上所述,基于第一至第三实施例,能够作为独立盘驱动器操作的盘驱动器包含通过通信彼此协作而构成RAID系统的功能。基于来自主机系统100的RAID系统构成命令,每个盘驱动器能够低成本地简单地构成RAID系统。
即,使用非专用控制器,诸如RAID控制器,通过其中RAID控制器功能被分散到盘驱动器的结构,实现RAID系统。
特别地,通过彼此连接多个驱动器以便能够彼此相互通信,多个小盘驱动器彼此协作地构成RAID系统。因此,具有较高可靠性和大存储容量的RAID系统可以简单地构成,但不具有大尺寸结构。
本领域的技术人员容易想到其它优点和修改。因此本发明就其广泛的方面并不限于在这里所述和所示的特定细节和代表性实施例。因此可以进行各种修改,但不违背如所附权利要求和它们的等同表述所定义的总的发明构思的精神或范围。
权利要求
1.一种盘驱动器,其特征在于包括驱动器机构(10),其作为单个盘驱动器操作;通信单元(102,107),其与其它盘驱动器交换用于构成RAID系统的信息;以及控制器(20),其通过使用通信单元(102,107)与其它盘驱动器交换信息,所述控制器通过控制所述驱动器机构和其它盘驱动器的驱动器机构来实现所述RAID系统。
2.如权利要求1所述的盘驱动器,其特征在于控制器(20)基于从主机系统接收的命令中的构成命令执行用于实现所述RAID系统的控制操作,所述构成命令指示构造所述RAID系统,以及当所述命令是指示作为单个盘驱动器操作的命令时,所述控制器执行用于单个地操作该盘驱动器的控制操作。
3.如权利要求1所述的盘驱动器,其特征在于控制器(20)包含RAID表(210)以设置所述RAID系统的RAID类型,用于指定包含在RAID系统中的所述盘驱动器的组信息,以及使能RAID功能的标志信息中的每个。
4.如权利要求2所述的盘驱动器,其特征在于控制器(20)包含RAID表(210)以基于从所述主机系统接收的所述构成命令设置所述RAID系统的RAID类型,用于指定包含在RAID系统中的所述盘驱动器的组信息,以及使能RAID功能的标志信息中的每个。
5.如权利要求2所述的盘驱动器,其特征在于还包括;接口(101,108),其被用于所述盘驱动器被单个地操作的情况和构成所述RAID系统的情况。
6.如权利要求1所述的盘驱动器,其特征在于控制器(20)包含RAID结构表,其被用于在数据或奇偶检验信息的地址分配方面确定RAID系统结构中的块结构。
7.如权利要求2所述的盘驱动器,其特征在于控制器(20)被配置成作为针对所述RAID系统的构造而对所述主机系统的命令响应,或响应来自所述主机系统的指示而作为针对其它盘驱动器的发送端。
8.如权利要求1所述的盘驱动器,其特征在于所述通信单元是串行接口或无线通信单元。
9.一种RAID系统,其特征在于包括多个盘驱动器(103至106),其具有操作为单个盘驱动器的驱动器机构(10至13);通信单元(102,107),其在所述盘驱动器间交换用于构成所述RAID系统的信息;以及多个控制器(20至23),其通过使用通信单元(102,107)与所述其它盘驱动器交换信息,所述控制器被分别安排在盘驱动器中以通过分散方式实现RAID控制器。
10.如权利要求9所述的RAID系统,其特征在于每个控制器(20至23)基于从主机系统接收的命令中的构成命令执行用于实现所述RAID系统的控制操作,所述构成命令指示构造所述RAID系统,以及当所述命令是用于单个地操作盘驱动器的命令时,所述控制器执行用于单个地该盘驱动器的控制操作。
11.一种在具有驱动器机构的盘驱动器中构成RAID系统的方法,所述驱动器机构用作单个盘驱动器,和与其它盘驱动器交换用于构成所述RAID系统的信息的通信单元,所述方法的特征在于包括接收来自主机系统的RAID系统构成命令;基于所述RAID系统构成命令通过使用所述通信单元与其它盘驱动器交换所述信息;以及通过控制所述驱动器机构和其它盘驱动器的驱动器机构来实现所述RAID系统。
12.如权利要求11所述的方法,其特征在于所述盘驱动器具有RAID处理表,并且在所述RAID处理表中设置所述RAID系统的RAID类型,用于指定包含在RAID系统中的所述盘驱动器的组信息,以及用于使能RAID功能的各个标志信息段的RAID表中的每个。
13.如权利要求11所述的方法,其特征在于所述RAID处理表包含RAID结构表,其被用于在数据或奇偶检验信息的地址分配方面确定RAID系统结构中的块结构。
全文摘要
盘驱动器包含控制器(20),其中引用与其它盘驱动器协作构成RAID系统的功能。控制器(20)也被单个地操作。控制器(20)基于来自主机系统的命令被操作为RAID控制器。
文档编号G06F11/00GK1690981SQ200510066809
公开日2005年11月2日 申请日期2005年4月26日 优先权日2004年4月28日
发明者冈本丰, 小岛秀一 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1