Raid控制器及其命令处理方法

文档序号:6535497阅读:378来源:国知局
Raid控制器及其命令处理方法
【专利摘要】本发明涉及RAID控制器及其命令处理方法。该RAID控制器包括:第一串行接口、第二串行接口和控制单元。主机装置连接至第一串行接口。第二串行接口具有多个端口,能够执行命令的存储装置连接至多个端口中的每一个。控制单元控制第二串行接口,使得当有效值被写入预定的控制寄存器时,该值被看作用于指定与引发执行命令的存储装置连接的端口的端口信息,并且经由通过端口信息所指定的端口将该命令传送至存储装置,该预定的控制寄存器在被写入参数的控制寄存器组之中,是针对通过第一串行接口从主机装置获得的命令的类型,被确定为在串行接口标准上未使用的。
【专利说明】RAID控制器及其命令处理方法
[0001]相关申请的交叉引用
[0002]本申请要求于2013年I月18日提交的日本在先专利申请JP2013-007351的优先权,将其全部内容通过引用结合于此。
【技术领域】
[0003]本公开涉及使用串行ATA接口的RAID控制器及其命令处理方法。
【背景技术】
[0004]作为与存储装置等的接口,已知的是串行ATA(串行AT附加设备)。串行ATA是与并行ATA软件兼容的标准。对于串行ATA,作为将多个串行ATA装置连接至主机装置的功能,提供了将主机装置的一个端口分支成多个端口的端口多路器。
[0005]在串行ATA标准中,为了使得能够使用端口多路器,在FIS (帧信息结构)中定义4位的PM端口指定单元。PM端口指定单元是用于从连接至端口多路器的多个端口的存储装置中指定连接至给定命令的端口的存储装置的部分。
[0006]在与串行ATA兼容的多个存储装置形成RAID (廉价磁盘的冗余阵列)的环境下,端口多路器作为用于指定存储装置和从主机装置访问装置的工具是有用的。例如,可将端口多路器用于通过主机装置所获得的与设置在存储装置上的诸如S.M.A.R.T(自监测、分析和报告技术)的自我诊断功能的诊断结果有关的信息的情形,并且管理存储装置的劣化条件。
[0007]应当注意,日本专利申请公开第2000-207137号和第2009-110162号公开了涉及使用串行ATA接口的RAID控制器及其命令处理方法的现有技术文献。

【发明内容】

[0008]为了通过使用端口多路器的功能从主机装置访问构成RAID的单独的存储装置,主机总线适配器和RAID控制器必须兼容于端口多路器。然而,目前,在很多情况下,主机总线适配器与端口多路器不兼容。
[0009]可替换地,可设想这样的方法:通过CPU切换RAID控制器的RAID引擎的操作并且将命令发送至单独的存储装置。然而,在此方法中,必须为RAID控制器中的CPU提供程序等,这导致了成本的增加。
[0010]考虑到上述情况,需要一种在不使用端口多路器的功能的情况下以低成本增加用于从主机装置访问构成RAID的存储装置的自由度的技术。
[0011]此外,当从主机装置接收到识别装置命令时,与串行ATA兼容的常规RAID控制器返回诸如一个集成存储装置的容量、名称和性能的装置信息,并且形成RAID的多个存储装置作为一个集成的存储装置。因此,难以单独地获得每个存储装置的装置信息。
[0012]考虑到上述情况,期望提供能够增加从主机装置访问构成RAID的存储装置的自由度的RAID控制器及其命令处理方法。
[0013]根据本公开的实施方式,提供了一种RAID控制器,包括:第一串行接口、第二串行接口以及控制单元。主机装置可连接至第一串行接口。第二串行接口具有多个端口,该多个端口中的每一个均能够连接至能够执行命令的存储装置。控制单元被配置为控制第二串行接口,使得在将有效值写入预定的控制寄存器时,该值被看作是用于指定连接至被迫使执行命令的存储装置的端口的端口信息,并且经由通过端口信息所指定的端口将命令传送至存储装置,该预定的控制寄存器是被写入参数的控制寄存器组中,针对通过第一串行接口从主机装置所获得的命令的类型确定在串行接口标准上是未使用的。
[0014]当该有效值未被写入未使用的控制寄存器时,控制单元可控制第二串行接口以将来自主机装置的命令转换成用于操作RAID (廉价磁盘的冗余阵列)的命令,并且将用于操作RAID的命令经由多个端口传送至多个存储装置中的每一个。
[0015]即使主机装置和RAID控制器与端口多路器不兼容,也可以通过RAID控制器从主机装置单独地访问连接至RAID控制器的存储装置。因为主机装置与RAID控制器之间的命令协议改变的范围足够,所以可以抑制成本增加。
[0016]第一串行接口和第二串行接口可以是串行ATA (串行AT附加设备)接口。
[0017]当控制单元从主机装置接收第一识别装置命令时,控制单元可将第二识别装置命令发送至连接至多个端口的多个存储装置,从每一个存储装置获得装置信息,并且将装置信息返回至主机装置。
[0018]控制单元可将一个集成存储装置的装置信息和存储装置的装置信息返回至主机装置,并且连接至多个端口的多个存储装置作为一个集成存储装置。
[0019]根据本公开的另一实施方式,提供了一种命令处理方法,包括:将主机装置连接至第一串行接口,并将能够执行命令的每个存储装置连接至第二串行接口的多个端口 ;通过第一串行接口从主机装置获得命令和参数,确定有效值是否写入预定的控制寄存器,该预定的控制寄存器是被写入参数的控制寄存器组中,针对所获得的命令的类型被确定为在串行接口标准上是未使用的;并且当写入有效值时,将该值看作用于指定与被迫使执行命令的存储装置连接的端口的端口信息,并且经由通过端口信息所指定的端口将命令传送至存储装置。
[0020]如上所述,根据本公开的实施方式,增加了从主机装置访问构成RAID的存储装置的自由度。
[0021]根据以下对本公开的最佳方式的实施方式的详细描述,本公开的这些以及其他的目标、特征与优点将变得更加显而易见,如在附图中所示。
【专利附图】

【附图说明】
[0022]图1是示出了根据本公开第一实施方式的RAID系统的结构的框图;
[0023]图2是单独访问图1中所示的RAID系统中的存储装置的示意图;
[0024]图3是图2中所示的单独访问存储装置的操作的流程图;
[0025]图4是通过图1中所示的RAID系统访问存储装置的装置信息的示意图;
[0026]图5是图4中所示的访问存储装置的装置信息的操作的流程图;
[0027]图6是示出了在识别装置命令的ATA标准上的输入任务文件寄存器的结构的示图;
[0028]图7是用于说明使用在图6中所示的识别装置命令的输入任务文件寄存器中的未使用寄存器来传送端口信息的说明性示图;
[0029]图8是示出了在写DMA EXT命令的ATA标准上的输入任务文件寄存器的结构的示图;以及
[0030]图9是用于说明使用在图8中所示的在写DMA EXT命令的输入任务文件寄存器中的未使用寄存器来传送端口信息的示图。
【具体实施方式】
[0031]在下文中,将参考附图描述本公开的实施方式。
[0032]<第一实施方式>
[0033]首先,将描述根据本公开的第一实施方式的使用RAID控制器的RAID系统的概要。
[0034](RAID系统的概要)
[0035]图1是示出了根据本公开的第一实施方式的RAID系统的结构的框图。
[0036]RAID系统I包括主机装置10、RAID控制器20和多个存储装置30。主机装置10和RAID控制器20经由串行ATA总线40彼此连接。此外,RAID控制器20和存储装置30经由串行ATA总线50彼此分别连接。
[0037]主机装置10包括CPU11、存储器12、串行ATA接口 13等。主机装置10可以是AT兼容的个人计算机等。主机装置10通过串行ATA接口 13经由串行ATA总线40将各种ATA命令发送至RAID控制器20,并经由串行ATA总线40从RAID控制器20接收ATA命令的执
行结果。
[0038]RAID控制器20执行用于将多个连接的存储装置30逻辑上作为一个存储装置进行操作的处理。可将诸如RAID0、RAID3和RAID5的各种RAID级别应用至RAID控制器20。在此实施方式中,例如,所做的假设是应用了用于以分布式的方式将数据写入多个存储装置30的RAIDO (分条)。
[0039]RAID控制器20设置有RAID引擎21、CPU22、存储器23、在主机装置10侧的串行ATA接口 24和在存储装置30侧的串行ATA接口 25。在主机装置10侧的串行ATA接口 24对应于在所附权利要求的范围内的第一串行接口,以及在存储装置30侧的串行ATA接口 25对应于在所附权利要求范围内的第二串行接口。
[0040]RAID引擎21是执行用于RAID操作的各种计算的计算器。RAID引擎21对应于在所附权利要求的范围内的控制单元。
[0041]例如,RAID引擎21基于由主机装置10所发出的参数和ATA命令产生要发送至存储装置30的命令。CPU22执行对RAID控制器20的整体控制。存储器23存储RAID引擎21的固件等。将多个端口 25-0、25-1、25-2和25-3设置在存储装置30侧上的串行ATA接口 25。存储装置30连接至端口 25-0、25-1、25-2和25-3。
[0042]应当注意,RAID控制器20可以与端口多路器兼容或者不兼容。
[0043]每个存储装置30具有ATA装置的功能,该ATA装置是符合ATA标准的驱动器。存储装置30包括诸如硬盘驱动器(HDD)和固态驱动器(SSD)的存储单元31。存储装置30设置有串行ATA接口 32,该串行ATA接口 32经由串行ATA总线50分别连接至RAID控制器20的在存储装置30侧上的串行ATA接口 25的端口 25-0、25_1、25_2和25_3。
[0044](RAID系统的操作)[0045]在RAID系统I中,可执行从主机装置10对构成RAID的多个存储装置30的下述访问。
[0046] 1.单独访问存储装置
[0047]2.访问存储装置的装置信息
[0048]在下文中,将描述上文所述的访问。
[0049]在RAID系统I中,通过改变主机装置10与RAID控制器20之间的命令协议,使得能够从主机装置10通过RAID控制器20访问单独的存储装置30。
[0050]根据ATA标准,在控制寄存器(任务文件寄存器)中,根据ATA命令的类型存在未用于传送参数的寄存器(未使用的寄存器)。通过使用未使用的寄存器,可将端口信息从主机装置10传送至RAID控制器20。因此,能够在没有使用端口多路器的功能的情况下,从主机装置10单独地访问连接至RAID控制器20的存储装置30。
[0051]应当注意,控制寄存器中未使用的寄存器具体包括下列。
[0052]图6是示出了识别装置命令的ATA标准上的输入任务文件寄存器的结构的示图。这里,被写入“na”的寄存器指代未使用的寄存器。因此,根据ATA标准,在识别装置命令的情况下,例如,扇区计数寄存器是未使用的寄存器。因此,如在图7中所示,可通过将扇区计数寄存器用作未使用的寄存器来传送端口信息(端口号码值)。
[0053]应当注意,在图7的示例中,端口信息(端口号码值)可采用“00”至“03”中的任一值。这里,端口信息(端口号码值)的值“00”至“03”分别对应于RAID控制器20中的串行ATA 接口 25 的四个端口 25-0、25-1、25-2 和 25-3 ?
[0054]图8是示出了在写DMA EXT命令的ATA标准上的输入任务文件寄存器的结构的示图。在写DMA EXT命令的情况下,特征寄存器为“保留”,其是未使用的寄存器。因此,如在图9中所示,可通过将特征寄存器的当前部分用作未使用的寄存器来传送端口信息(端口号码值)。
[0055]除此之外,存在对应于ATA命令的未使用的寄存器,所以可通过以同样的方式使用那些来传送端口信息(端口号码值)。
[0056]随后,将详细描述此操作。
[0057]图2是示出了通过根据本实施方式的RAID系统I单独访问存储装置30的示意图。图3是其流程图。
[0058]首先,主机装置10的CPUll将ATA命令的参数写入控制寄存器并且将ATA命令写入命令寄存器(步骤SlOl)。
[0059]此时,在执行对存储装置30的单独访问的情况下,主机装置10的CPUl I将诸如期望访问的存储装置30所连接至的端口的端口号的端口信息写入根据ATA命令的类型所预先确定的未使用的寄存器,该期望被访问的存储装置30来自连接至RAID控制器20的串行ATA接口 25的端口 25-0、25-1、25-2和25_3的多个存储装置。
[0060]主机装置10的串行ATA接口 13基于写入控制寄存器的值和命令寄存器的值来产生FIS41,并经由串行ATA总线40将FIS41传送至RAID控制器20 (步骤S102)。
[0061]RAID控制器20的在主机装置10侧的串行ATA接口 24将从主机装置10所传送的FIS41的内容写入到设置于其上的控制寄存器和命令寄存器。RAID控制器20的RAID引擎21确认针对写入串行ATA接口 24的命令寄存器的ATA命令的类型所预先确定的未使用的寄存器的值(步骤S103)。
[0062]在此确认中,在不将有效值设置为针对ATA命令的类型而预先确定的未使用的寄存器的值的情况下(在步骤S104中的否),RAID控制器20的RAID引擎21转换ATA命令以执行普通的RAID操作并将所转换的命令发送至存储装置30 (步骤S105)。
[0063]此外,在将有效值设置为针对ATA命令的类型而预先确定的未使用的寄存器的值的情况下(在步骤S104中的是),RAID控制器20的RAID引擎21将ATA命令看作是用于单独访问存储装置30的ATA命令并且执行以下处理。
[0064]g卩,RAID控制器20的RAID引擎21确定在存储装置30侧的串行ATA接口 25中对应于未使用的寄存器的值的端口 25-0、25-1、25-3或者25_3,并且将FIS42传送至连接至所述端口的存储装置30 (步骤S106),该FIS42的内容与所接收的FIS41相同。应当注意,FIS42可以不包括端口信息。
[0065]存储装置30的串行ATA接口 32将所接收的FIS41的内容写入控制寄存器和命令寄存器。存储装置30的存储单元31基于写入控制寄存器的参数和写入命令寄存器的ATA命令执行处理,并将执行结果43返回至RAID控制器20 (步骤S107)。
[0066]RAID控制器20的RAID引擎21将从存储装置30所返回的执行结果43传送至主机装置10 (步骤S108)。主机装置10的CPUll接收从RAID控制器20所返回的执行结果43 (步骤 S109)。
[0067]通过上述处理,在不使用端口多路器功能的情况下完成对存储装置30的单独访问。
[0068](2.访问存储装置的装置信息)
[0069]在RAID系统I中,当从主机装置10接收识别装置命令(第一识别装置命令)时,RAID控制器20将识别装置命令(第二识别装置命令)发送至多个存储装置30,从存储装置30获得装置信息,并且将装置信息返回至主机装置10,其中该装置信息添加至集成存储装置的装置信息。
[0070]随后,将详细描述此操作。
[0071]图4是示出了通过根据本实施方式的RAID系统I访问存储装置30的装置信息的不意图。图5是其流程图。
[0072]首先,基于FIS将识别装置命令51从主机装置10发送至RAID控制器20 (步骤S201)。
[0073]当接收识别装置命令51时,RAID控制器20执行以下两个处理(步骤S202)。
[0074]1.产生与集成存储装置相关的装置信息DA。
[0075]2.基于FIS将识别装置命令52传送至每个存储装置30。
[0076]一旦接收到识别装置命令52,存储装置30产生诸如其容量、名称和性能的装置信息作为几条单独的装置信息DO、DU D2和D3,并将该信息返回至RAID控制器20 (步骤S203)。
[0077]RAID控制器20的RAID引擎21将从所有的存储装置30返回的几条单独的装置信息DO、Dl、D2和D3和集成存储装置的装置信息DA作为识别装置命令51的执行结果53返回至主机装置10 (步骤S204)。
[0078]主机装置10接收从RAID控制器20返回的执行结果53 (步骤S205)。[0079]通过上述处理,完成对存储装置30的装置信息的访问。
[0080]如上所述,通过根据本实施方式的RAID系统1,可以获得以下效果。
[0081 ] 1.即使主机装置10和RAID控制器20与端口多路器不兼容,也可以执行从主机装置10对连接至RAID控制器20的存储装置30的单独访问。因为主机装置10与RAID控制器20之间的命令协议改变的范围足够,所以可以抑制成本上升。
[0082]2.可以通过主机装置10获得连接至RAID控制器20的存储装置30的装置信息。
[0083]在此实施方式中,串行ATA被用作串行接口。本技术也能够应用于使用诸如串行SCSI (小型计算机系统接口)的另一个串行接口的情况。
[0084]应当注意,本公开可以采用以下构造。
[0085](I) 一种RAID控制器,包括:
[0086]第一串行接口,连接至主机装置;
[0087]第二串行接口,具有多个端口,所述多个端口中的每一个均连接至能够执行命令的存储装置;以及
[0088]控制单元,被配置为控制所述第二串行接口,使得当有效值被写入预定的控制寄存器时,所述值被看作为用于指定被迫使执行命令的所述存储装置所连接的所述端口的端口信息,并且所述命令经由通过所述端口信息指定的所述端口被传送至所述存储装置,其中所述预定的控制寄存器在被写入参数的控制寄存器组中,是针对通过所述第一串行接口从所述主机装置获得的所述命令的类型被确定为在串行接口标准上未使用的。
[0089](2 )根据项(I)所述的RAID控制器,其中
[0090]当所述有效值未被写入所述未使用的控制寄存器时,所述控制单元控制所述第二串行接口以将来自所述主机装置的所述命令转换成用于操作RAID (廉价磁盘的冗余阵列)的命令,并且经由所述多个端口将用于操作所述RAID的所述命令传送至所述多个存储装置中的每一个。
[0091](3)根据项(I)或项(2)所述的RAID控制器,其中
[0092]第一串行接口和第二串行接口是串行ATA (串行AT附加设备)接口。
[0093](4)根据项(I)至项(3)的任何一项所述的RAID控制器,其中
[0094]当所述控制单元从所述主机装置接收第一识别装置命令时,所述控制单元将第二识别装置命令发送至连接至所述多个端口的所述多个存储装置,从每个所述存储装置中获得装置信息,以及将所述装置信息返回至所述主机装置。
[0095]本领域中的普通技术人员应当理解,在所附权利要求或其等同物的范围内,根据设计需求和其它因素可以出现各种变形、组合、子组合以及变更。
【权利要求】
1.一种RAID控制器,包括: 第一串行接口,主机装置能够连接至所述第一串行接口 ; 第二串行接口,具有能够执行命令的存储装置能够连接至的多个端口 ;以及 控制单元,被配置为控制所述第二串行接口,使得当有效值被写入预定的控制寄存器时,所述值被看作为用于指定被迫使执行命令的所述存储装置所连接的所述端口的端口信息,并且所述命令经由通过所述端口信息指定的所述端口被传送至所述存储装置,其中所述预定的控制寄存器在被写入参数的控制寄存器组中,是针对通过所述第一串行接口从所述主机装置获得的所述命令的类型被确定为在串行接口标准上未使用的。
2.根据权利要求1所述的RAID控制器,其中 当所述有效值未被写入所述未使用的控制寄存器时,所述控制单元控制所述第二串行接口以将来自所述主机装置的所述命令转换成用于操作RAID (廉价磁盘的冗余阵列)的命令,并且经由所述多个端口将用于操作所述RAID的所述命令传送至所述多个存储装置中的每一个。
3.根据权利要求2所述的RAID控制器,其中 所述第一串行接口和所述第二串行接口为串行ATA (串行AT附加设备)接口。
4.根据权利要求1所述的RAID控制器,其中 当所述控制单元从所述主机装置接收第一识别装置命令时,所述控制单元将第二识别装置命令发送至连接至所述多个端口的所述多个存储装置,从每个所述存储装置中获得装置信息,以及将所述装置信息返回至所述主机装置。
5.根据权利要求4所述的RAID控制器,其中 所述控制单元将一个集成存储装置的装置信息和所述多个存储装置的所述装置信息返回至所述主机装置,其中连接至所述多个端口的所述多个存储装置作为所述一个集成存储装置。
6.—种命令处理方法,包括: 将主机装置连接至第一串行接口,并且将能够执行命令的每个存储装置连接至第二串行接口的多个端口; 通过所述第一串行接口从所述主机装置获得所述命令和参数; 确定有效值是否写入了预定的控制寄存器,所述预定的控制寄存器在被写入所述参数的控制寄存器组之中,是针对所获得的所述命令的类型被确定为在串行接口标准上未使用的;以及 当写入所述有效值时,将所述值看作用于指定被迫使执行所述命令的所述存储装置所连接至的端口的端口信息,并且经由通过所述端口信息指定的所述端口将所述命令传送至所述存储装置。
7.根据权利要求6所述的命令处理方法,进一步包括: 如果所述有效值未被设置为针对所获得的所述命令的类型而预先确定的未使用的寄存器的值的情况下,转换所述命令以执行普通的RAID操作并将所转换的命令发送至所述存储装置。
【文档编号】G06F13/16GK103942007SQ201410012545
【公开日】2014年7月23日 申请日期:2014年1月10日 优先权日:2013年1月18日
【发明者】浅野隆一, 坂井千春, 藤本吉秀, 夏秋力也 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1