对阵列中的纠错编码区块配置位置进行管理的存储装置、存储控制器以及方法

文档序号:6494486阅读:128来源:国知局
对阵列中的纠错编码区块配置位置进行管理的存储装置、存储控制器以及方法
【专利摘要】根据实施方式,存储装置的存储控制器具备阵列管理部,该阵列管理部对具备配置有纠错编码区块以及多个数据区块的组的多个磁条组的阵列进行管理。所述多个磁条组分别由多个固态驱动器内的物理位置所对应的磁条区块的组构成。所述阵列管理部以使配置有所述纠错编码区块的数目在所述多个固态驱动器之间不均匀的方式,将所述纠错编码区块以及所述多个数据区块规则地配置于所述多个磁条组中。
【专利说明】对阵列中的纠错编码区块配置位置进行管理的存储装置、存储控制器以及方法
【技术领域】
[0001]本发明的实施方式涉及对阵列中的纠错编码区块配置位置进行管理的存储(storage)装置、存储控制器以及方法。
【背景技术】
[0002]以往,已知有具备磁盘阵列的存储装置。磁盘阵列一般是使用多个硬盘驱动器(HDD)由 RAID (Redundant Arrays of Independent Disks (独立磁盘冗余阵列)或者Redundant Arrays of Inexpensive Disks (廉价磁盘冗余阵列))来构成的。这样的磁盘阵列(以下称为第一阵列)因奇偶数据那样的纠错编码数据的应用而具有冗余性。
[0003]此外近年来,还出现了具备由多个固态驱动器(SSD)构成的阵列(以下称为第二阵列)的存储装置。SSD由NAND型闪存那样的非易失性可重写的存储器构成。因此,SSD的访问(access)性能与在数据的读出/写入中伴随机械式的动作的HDD相比要高。但是,SSD的寿命例如依赖于数据向该SSD的写入的次数。
[0004]在所述第一阵列中,为了分散负荷,一般是纠错编码区块(例如奇偶区块)以被称为磁条组(strip set)的区域为单位,均匀地分散配置于所述多个HDD中。于是,在第二阵列中也是,纠错编码区块以磁条组为单位均匀地分散配置于该多个SSD中。在这种情况下,向多个SSD的每一个的数据写入的次数被均匀化,该多个SSD在同时期发生故障的可能性变高。因此在第二阵列中,要求使多个SSD各自的写入次数变得不均匀。
[0005]因此在现有技术中,所述存储装置内的控制器(存储控制器)对多个SSD各自的写入次数进行监视。该监视的结果是,在产生了使该写入次数不均匀的需要的情况下,所述控制器以磁条组为单位,对纠错编码区块的配置位置以及数据区块的配置位置动态地进行变更。此外所述控制器为了该配置位置变更,利用映射表将纠错编码区块配置位置以及数据区块配置位置按每个磁条组来进行管理。
[0006]现有技术文献
[0007]专利文献
[0008]专利文献1:日本特开2010-15516号公报。
[0009]发明的概要
[0010]发明要解决的课题
[0011]然而,在现有技术中,伴随近年来的阵列的大容量化,有储存映射表所需的存储器容量增加的趋势。此外,当纠错编码区块配置位置以及数据区块配置位置的变更过度进行时,伴随该变更,各SSD的写入次数也会增大。

【发明内容】

[0012]本发明要解决的课题在于提供一种能简单地管理阵列中的纠错编码区块配置位置的存储装置、存储控制器以及方法。[0013]用于解决课题的手段
[0014]根据实施方式,存储装置具备固态驱动器的组和存储控制器。所述固态驱动器的组包含具备被区分为多个磁条区块的第一存储区域的多个固态驱动器。所述存储控制器具备管理阵列的阵列管理部。所述阵列具备被区分为多个磁条组的第二存储区域,该多个磁条组配置有用于储存纠错编码的纠错编码区块以及用于储存数据的多个数据区块的组。所述多个磁条组分别由所述多个固态驱动器内的物理位置所对应的所述磁条区块的组构成。所述阵列管理部以使配置有所述纠错编码区块的数目在所述多个固态驱动器之间不均匀的方式,基于预先确定的配置规则,将所述纠错编码区块以及所述多个数据区块规则地配置于所述多个磁条组,基于所述配置规则,对所述纠错编码区块的配置位置进行管理。
【专利附图】

【附图说明】
[0015]图1是表示实施方式的存储系统的典型的硬件构成的框图。
[0016]图2是表示图1所示的存储控制器的功能构成的框图。
[0017]图3是表不RAID等级5的固态驱动器(SSD)阵列中的每磁条组的奇偶区块以及数据区块的配置的例子的图。
[0018]图4是表示在相同实施方式中应用的阵列管理表的数据构造例的图。
[0019]图5是与阵列管理表相关联地表示在相同实施方式中应用的SSD阵列中的奇偶区块以及数据区块的配置的例子的图。
[0020]图6是用于说明在相同实施方式中应用的奇偶区块配置位置计算处理的典型的步骤的流程图。
[0021]图7是用于说明在相同本实施方式中应用的数据区块配置位置计算处理的典型的步骤的流程图。
[0022]图8A是表示用于说明在相同实施方式中应用的区块确定处理的典型的步骤的流程图的一部分的图。
[0023]图SB是表示用于说明所述区块确定处理的典型的步骤的流程图的剩余部分的图。
[0024]图9是对于在相同实施方式中应用的区块再配置,以奇偶区块以及数据区块的再配置全部结束之后的状态为例,与阵列管理表相关联地进行表示的图。
[0025]图10是以表形式表示相同实施方式中的参数值切换的例子的图。
[0026]图11是用于说明在相同实施方式中应用的再配置完成/再配置未完成判定处理的典型的步骤的流程图。
[0027]图12是对于在相同实施方式中应用的区块再配置,以奇偶区块以及数据区块的再配置过程中的状态为例,与阵列管理表相关联地进行表示的图。
[0028]图13是对于在所述实施方式的变形例中应用的区块再配置,以奇偶区块以及数据区块的再配置全部结束之后的状态为例,与阵列管理表相关联地进行表示的图。
【具体实施方式】
[0029]以下,对于实施方式,参照附图来进行说明。
[0030]图1是表示一个实施方式的存储系统的典型的硬件构成的框图。存储系统包括存储装置1、主机计算机(以下称为主机)2、以及网络3。存储装置I经由网络3与主机2连接。主机2将存储装置I用作外部存储装置。网络3例如是储存区域网络(SAN)、互联网或内联网。互联网或内联网例如由以太网(注册商标)构成。
[0031]存储装置I具备多个SSD (固态驱动器)例如7个SSDll-O至11_6 (SSD- # O至SSD- # 6)、存储控制器12和驱动器接口总线13。SSDll-O至11-6分别由能重写的非易失性存储器(例如闪存)的集合构成。SSDll-O至11-6分别经由驱动器槽# O至6连接于驱动器接口总线13。对驱动器槽# O至# 6分配了固有的驱动器槽编号O至6。驱动器槽编号O至6是固定分配给驱动器槽# O至# 6的顺编号。在以下的说明中,将驱动器槽编号O至6方便地表述为SSD- # O至SSD- # 6。SSD- # O至SSD- # 6还表示是连接于驱动器槽# 0至# 6的SSDll-O至11-6的属性用在后述的SSD阵列110-*中的SSD(也就是说SSD阵列110-*的要素)。此外,在以下的说明中,也有时将连接于驱动器槽# O至# 6的SSDll-O 至 11-6 表述为 SSD- # O 至 SSD- # 6。
[0032]存储控制器12经由驱动器接口总线13与SSDl 1-0至11-6(SSD-# O至SSD-# 6)连接。驱动器接口总线13的接口种类例如为小型计算机系统接口(SCSI)、光纤信道(FC)、串行附加SCSI (SAS)、或串行AT配件(SATA)。
[0033]存储控制器12对SSDll-O至11-6进行控制。存储控制器12使用SSD11-0至11_6中的3个以上来构成具有冗余性的阵列(以下称为SSD阵列)而且对其进行管理。在图1的例子中,作为具有冗余性的阵列,示出了 3个SSD阵列110-0至110-2。SSD阵列110-0至110-2例如是RAID构成的阵列(也就是说RAID阵列)。RAID阵列作为逻辑驱动器进行管理。在以下的说明中,在无需特别区别SSD阵列110-0至110-2的情况下,将SSD阵列110-0至110-2的各个表述为SSD阵列110-*。同样地,在无需特别区别SSDll-O至11_6的情况下,将SSDll-O至11-6的各个表述为SSDl1-*。
[0034]存储控制器12具备主机接口(主机I / F) 121、驱动器接口(驱动器I / F) 122、高速缓冲存储器123、高速缓冲存储器控制器124、闪速ROM (FROM) 125、本地存储器126、CPU127、芯片组128、内部总线129。存储控制器12利用主机I / F121经由网络3与主机2连接。主机I / F121的接口种类例如是FC或互联网SCSI (iSCSI)。
[0035]主机I / F121对与主机2之间的数据转送(数据转送协议)进行控制。主机I /F121接收对来自主机2的逻辑卷的数据访问请求(读取请求或者写请求),返回对该数据访问请求的响应。逻辑卷将SSD阵列110-*内的一部分数据储存区域在逻辑上作为实体来进行实现。主机I / F121当设从主机2接收数据访问请求时,将该请求经由内部总线129、芯片组128传递到CPU127。接受了数据访问请求的CPU127按照后述的存储控制程序,对该数据访问请求进行处理。
[0036]如果数据访问请求是写请求,则CPU127确定与由该写请求指定的访问区域(逻辑卷内的访问区域)相符的SSD阵列110-*内的数据区域,对数据写进行控制。具体地说,CPU127对第一数据写入或者第二数据写入进行控制。第一数据写入是在将写数据暂时储存于高速缓冲存储器123之后,将该数据写入到SSD阵列110-*内的所述确定的区域的动作。第二数据写入是将写数据立即直接写入到所述确定的区域的动作。在本实施方式中,设实施第一数据写入。
[0037]另一方面,若数据访问请求为读取请求,则CPU127确定与由该读取的请求指定的访问区域相符的SSD阵列110-*内的数据区域,对数据读取的进行控制。具体地说,CPU127对第一数据读出或者第二数据读出进行控制。所述第一数据读出在所述确定的数据区域的数据储存于高速缓冲存储器123内的情况下进行实施。也就是说所述第一数据读出是通过从高速缓冲存储器123读出所述确定的数据区域的数据,并将该读出的数据返回给主机I / F121,从而使该读出的数据返回给主机2的动作。所述第二数据读出在所述确定的数据区域的数据未储存于高速缓冲存储器123内的情况下进行实施。也就是说所述第二数据读出是通过从SSD阵列110-*内的所述确定的数据区域读出数据,并将该读出的数据立即返回给主机I / F121,从而使该读出的数据返回给主机2的动作。
[0038]驱动器I / F122按照CPU127 (存储控制程序)所接收的来自主机2的数据访问请求(对逻辑卷的写请求或者读取请求),对SSD阵列110-*的SSD11-*发送写请求或者读取请求,并接收其响应。高速缓冲存储器123在由主机I / F121接收到来自主机2的数据访问请求的情况下,用作对该数据访问请求(写请求或者读取请求)的完成响应的高速化用的缓冲器。
[0039]在数据访问请求为写请求的情况下,CPU127使用高速缓冲存储器控制器124,暂时将写数据储存于高速缓冲存储器123,由此使写处理完成,对主机2返回响应。其后CPU127在任意的时机将所述写数据写入SSD阵列110-*。而且,CPU127使用高速缓冲存储器控制器124,对储存有所述写数据的高速缓冲存储器123的存储区域进行释放。另一方面,在数据访问请求为读取请求的情况下,若所请求的数据(也就是说应读取的数据)储存于高速缓冲存储器123,则CPU127按如下那样来进行动作。即CPU127使用高速缓冲存储器控制器124从高速缓冲存储器123取得所请求的数据,并对主机2返回响应(第一数据读出)。
[0040]高速缓冲存储器控制器124按照来自CPU127 (存储控制程序)的命令,实施来自高速缓冲存储器123的数据的读出。高速缓冲存储器控制器124此外还按照来自CPU127的命令,也实施向高速缓冲存储器123的数据的写入。
[0041]FROMl25是能重写的非易失性存储器。FR0M125用于储存由CPU127执行的存储控制程序。CPU127在启动存储控制器12时的最初的处理中,将储存于FR0M125的存储控制程序拷贝到本地存储器126。另外,也可以取代FR0M125而使用只读的非易失性存储器例如ROM。
[0042]本地存储器126是DRAM那样的能重写的易失性存储器。本地存储器126的一部分区域用于储存从FR0M125拷贝的存储控制程序。本地存储器126的另一部分区域被用作CPU127用的工作区域。CPU127按照储存于本地存储器126的存储控制程序的程序代码,对存储装置I整体(特别是存储控制器12内的各部)进行控制。也就是说CPU127通过将储存于本地存储器126上的存储控制程序经由芯片组128来执行,从而对存储装置I整体进行控制。
[0043]芯片组128是将CPU127及其外围电路耦合到内部总线129的桥接电路。内部总线129为通用总线,例如为PCI (Peripheral Component Interconnect,外设部件互连标准)express总线。主机I / F121、驱动器I / F122以及芯片组129利用内部总线210而相互连接。此外,高速缓冲存储器控制器124、FR0M125、本地存储器126以及CPU127经由芯片组128连接于内部总线129。[0044]图2是表示图1所示的存储控制器12的功能构成的框图。该功能构成通过图1所示的存储控制器12的CPU127执行所述存储控制程序而实现。存储控制器12具备阵列管理部21、奇偶区块配置计算部22、数据区块配置计算部23、区块确定部24、驱动器交换控制器25、区块再配置判定部26、阵列访问控制器27、阵列管理表28 (# O)和阵列管理表29 (# I)。阵列管理部21包含阵列生成部210。驱动器交换控制器25包含区块再配置部250。对于这些要素将在后面叙述。
[0045]那么,SSD阵列110-*如前述那样由3个以上的SSD11-*构成,通过RAID技术的使用而作为称作RAID阵列的一个逻辑驱动器进行管理。SSD11-*拥有储存于该SSD11-* (该SSD11-*内的闪存)的数据为非易失性而且数据转送速度是比HDD显著高的高速的优点。作为其相反面是,在SSD11-*中,在向该SSD11-*的数据的写入的次数(更详细地说是可写入的次数)上存在上限。也就是说,在SSD11-*中存在取决于写入的次数的寿命,在该点上SSDl1-*与HDD相比较差。
[0046]在此,对SSD阵列110-*所应用的RAID等级进行说明。作为在使用多个HDD (更详细地说是3个以上的HDD)构成的RAID阵列中一般常采用的RAID等级,已知有RAID等级5。在RAID等级5中,例如奇偶数据以称作磁条组的区域为单位,均匀地分散配置于多个HDD 中。
[0047]在RAID等级5的RAID阵列中,即使在该RAID阵列内I台的HDD发生故障,也能将该故障HDD的数据从其他全部HDD的数据进行复原。此外在RAID等级5的RAID阵列中,每当产生向磁条组内的区域的数据的写入时,就会产生该磁条组内的奇偶数据的重写。但是在RAID等级5的RAID阵列中,能利用磁条组单位的奇偶数据的均匀的分散配置,防止访问(负荷)集中于确定的HDD。也就是说,能将针对向RAID阵列的写入访问的RAID控制的响应性能的降低抑制到最小限度。
[0048]于是,SSD阵列110-*还假设为使用RAID等级5技术来构成。在这种情况下,利用磁条组单位的奇偶数据的均匀的分散配置,而处于SSD阵列110-*内的各SSD11-*的写入次数被均匀化的趋势。作为其结果,在SSD阵列110-*内的多个SSDl1-*中,该多个SSDl1-*的写入次数同时期达到上限的概率会增高。如果变成了这样,则成为与在SSD阵列110-*内所述多个SSD同时产生故障等价的状况,因此无法维持SSD阵列110-*的冗余性。
[0049]由CPU127执行的存储控制程序包含以下所述的第一至第五功能。第一功能是对向各SSD11-*的写入的次数进行计数的功能。第二功能是对各SSD11-*所提供的写入次数信息所示的该SSD11-*的写入次数进行监视的功能。第三功能是利用各SSD11-*所拥有的被称作 SMART (Self Monitoring And Reporting Technology,自我监视和报告技术)的监视通知功能的功能。该监视通知功能包含将SSD11-*的写入次数接近上限作为障碍预兆由该SSD11-*自身进行通知的功能。
[0050]第四功能是通过利用所述第一至第三功能的任一功能,从而将写入次数接近上限的SSD11-*检测为产生故障的概率高的第一 SSD的功能。第五功能是用于将所述第一 SSD与维持SSD阵列110-*能访问的状态的另外的第二 SSD进行交换的驱动器预防性维护功能。第五功能相当于后述的驱动器交换控制器25的功能,包含以下的第六至第九功能。
[0051]第六功能是将储存于所述第一 SSD的数据退避到预先处于待机状态的热备用(hot spare) SSD的功能。第七功能是在该退避之后将热备用SSD暂时作为所述第一 SSD的代替SSD发挥功能,由此成为将所述第一 SSD从SSD阵列110-*切去的状态的功能。第八功能是在从SSD阵列110-*切去的所述第一 SSD交换为另外的第二 SSD后,将热备用SSD上的数据重写到所述第二 SSD中的功能。第九功能是在所述重写的完成后解除热备用SSD的代替SSD状态的功能。利用这些功能,能将写入次数接近于上限的第一 SSD在如前述那样维持SSD阵列110-*能访问的状态的状态下与第二 SSD进行交换。
[0052]在此,设在SSD阵列110-*内多个SSD11-*的写入次数同时期接近上限。在这样的状况下,设利用所述驱动器预防性维护功能一台一台地执行写入次数接近于上限的所述多个SSDl1-*的预防性维护。在这种情况下,处于预防性维护执行的等待状态的其他SSDl1-*的写入次数有可能因与时间的经过一起产生的数据写入的反复而达到上限。
[0053]于是,考虑利用所述驱动器预防性维护功能同时执行写入次数接近于上限的所述多个SSD11-*的预防性维护的构成。但是,为了多个SSD11-*的同时预防性维护,需要预先准备在SSD阵列110-*中使用的SSD11-*的台数的量的热备用SSD。由此,多个SSD11-*的同时预防性维护当考虑SSD与HDD相比较每恒定容量平均的单价为高成本时是不现实的。
[0054]考虑到这些点,对存储装置I的存储控制器12,请求抑制在SSD阵列110-*内多个SSDl1-*的写入次数同时达到上限。于是存储控制器12以SSD阵列内的多个SSD11-*的写入次数变得不均匀的方式,如后面所述那样,对SSD阵列110-*中的奇偶区块的配置位置以及数据区块的配置位置进行管理。
[0055]以下,对以往已知的SSD阵列中的奇偶区块以及数据区块的配置位置进行说明。在此,SSD阵列假设为RAID等级5的RAID阵列。在这样的SSD阵列中,构成该SSD阵列的多个SSD各自的存储区域(第一存储区域)被区分为恒定容量的多个磁条区块。所述多个SSD内的物理位置按每个相同的磁条区块的集合来对磁条组进行定义。对多个磁条组分配用于识别该磁条组的连续的磁条组编号。在此,设构成SSD阵列的SSD的数目为M。
[0056]在RAID 等级5的SSD阵列中,以与构成该SSD阵列的SSD的数目M —致的个数(也就是说M个)的磁条组为单位,奇偶(奇偶数据)均匀地分散储存于该M个SSD。也就是说奇偶以M个磁条组为单位,按预定的配置规则,均匀地分散储存于该M个磁条组内的各不相同的SSD的磁条区块。由此,在SSD阵列内一个SSD发生故障的情况下,能将该故障SSD的数据按每个磁条组基于剩余的SSD的数据以及奇偶进行复原。在以下的说明中,将储存有奇偶的磁条区块称为奇偶区块,将储存有数据的磁条区块称为数据区块。
[0057]图3表示上述那样的RAID等级5的SSD阵列中的每磁条组的奇偶区块以及数据区块的配置位置的例子。另外,图3的例子是以SSD阵列由与图1所示的SSDll-O至11_6相当的7个SSD构成的情况(M = 7)为前提的。在此,7个SSD为了方便表述为SSD- # O至 SSD- # 6。
[0058]在图3的例子中,配置有与SSD阵列内的SSD- # O至SSD- # 6数目相同的奇偶区块,而且,该数目相同的奇偶区块均匀地分散配置于SSD- # O至SSD- # 6。在此,SSD阵列的各磁条组由一个奇偶区块P和6个数据区块DO至D5构成。根据图3的SSD阵列,写入访问均等地分散于SSD- # O至SSD- # 6,能防止负荷集中于确定的SSD。然后,当产生向磁条组内的任一数据区块Dj (j =0,1,…,5)的数据写入时,需要进行储存于该磁条组内的奇偶区块P的奇偶的重写。因此,奇偶区块P成为在磁条组内的全部磁条区块中写入的次数极端增大的热点。[0059]在此,设向一个磁条组内的全部数据区块DO至D5的数据写入分别产生I次。在这样的状况中,每当进行数据写入时,就进行储存于奇偶区块P的奇偶的重写。在这种情况下,向奇偶区块P的写入的次数成为与磁条组内的数据区块DO至D5的数目相同的6。
[0060]一般来说,在RAID等级5的阵列(RAID阵列)中,成为上述那样的数据写中的热点的奇偶区块按各个相同数目来分散配置于该阵列内的全部驱动器中。利用这样的RAID等级5所特有的奇偶配置,写入访问被分散于全部驱动器中。由此能防止写入访问集中于确定的驱动器。也就是说能降低伴随RAID控制的写入访问性能降低。
[0061]这样的效果在构成阵列的驱动器是与SSD相比响应速度非常慢而且伴随机械式的动作的HDD的情况下高。但是,在构成阵列的驱动器为SSD的情况下,该SSD本身为充分高速而且不伴随机械式的动作。在这种情况下,RAID等级5的阵列中那样的奇偶区块的均匀分散配置在写入访问性能方面几乎不会做出贡献。并且,有写入访问在全部驱动器中大致均匀进行的趋势。因此,在阵列(SSD阵列)内的多个SSD中,同时接近写入次数的上限的可能性增高,导致该阵列的闭塞(所谓的RAID闭塞)的概率增高。由此,未必一定优选对由多个SSD构成的阵列应用RAID等级5。
[0062]于是,要求在由多个SSD构成而且具有由奇偶带来的冗余性的RAID阵列(SSD阵列)阵列内,排除同时产生写入次数达到上限的多个SSD的可能性。因而在现有技术中,以多个SSD各自的写入次数变得不均匀的方式,奇偶区块不均匀地分散配置于所述多个SSD中。具体地说,在产生了使多个SSD各自的写入次数变得不均匀的需要的情况下,以磁条组为单位,动态地变更奇偶区块以及数据区块的配置位置。为了该配置位置变更(也就是说再配置),奇偶区块以及数据区块的配置位置利用映射表(配置位置管理表)按每个磁条组进行管理。
[0063]但是,伴随SSD阵列的大容量化,储存映射表所需的存储器容量会增加。因此,要求一边应用将奇偶区块不均匀地分散配置于构成SSD阵列的多个SSD的构成、一边使奇偶区块以及数据区块的配置位置不使用映射表地能简单进行管理的结构的实现。此外,当过度地进行奇偶区块以及数据区块的配置位置的变更时,伴随该变更,各SSD的写入次数也会增大。因此,还要求防止过度进行奇偶区块以及数据区块的配置位置的变更。
[0064]于是在本实施方式中存储控制器12以使配置于构成SSD阵列110-*的SSD- # O至SSD- # 6 (SSDl 1-0至11-6)的奇偶区块P的数目在该SSD- # O至SSD- # 6之间全部不同的方式(也就是说以不均匀的方式),以磁条组为单位地对奇偶区块P进行分散配置。特别是存储控制器12以磁条组编号连续的预先确定的N个磁条组为单位,将N个奇偶区块P规则地而且不均匀地分散配置于SSD- # O至SSD- # 6。在本实施方式中,当设构成SSD阵列110-*的SSD的数目为M时,N由M (M-1) / 2表示。也就是说,在M为7的情况下N =21。
[0065]能利用这样的本实施方式特有的奇偶区块P的配置,使向SSD- # O至SSD- # 6的访问(特别是写入访问)的次数不均匀化。此外在本实施方式中存储控制器12为了将奇偶区块P不均匀地配置于SSD- # O至SSD- # 6,不是应用随机的配置,而是应用以N个(N=M (M-1) / 2)的磁条组为单位的规则的配置(也就是说图案化后的配置)。
[0066]因此存储控制器12能基于预先确定的配置规则(也就是说配置图案),对奇偶区块P的配置位置以及数据区块DO至D5的配置位置进行管理。也就是说在本实施方式中,与RAID等级5的SSD阵列同样地,利用逻辑分配给构成SSD阵列110-*的SSD- # O至SSD- # 6的后述的驱动器成员编号,基于所述配置规则,对奇偶区块配置位置以及数据区块配置位置进行管理。因此,在奇偶区块配置位置以及数据区块配置位置的管理中,无需大量消耗存储器容量的映射表(配置位置管理表)。
[0067]不过,在本实施方式中的SSD阵列110-*和RAID等级5的SSD阵列中,应用的配置规则不同。也就是说,在本实施方式中的SSD阵列110-*中,如上述那样,以N个(N = M(M-1) / 2)的磁条组为单位,将N个奇偶区块P规则地而且不均匀地分散配置于SSD- # O至SSD- # 6。与此相对地,在RAID等级5的SSD阵列中,如图3所示那样,以M个(M = 7)的磁条组为单位,将奇偶区块P规则地均匀地配置于SSD- # O至SSD- # 6。在此M是构成SSD阵列110-*以及RAID等级5的SSD阵列的每一个的SSD的数目。
[0068]以下,对在本实施方式中应用的SSD阵列110-*中的奇偶区块配置以及数据区块配置的具体例进行说明。另外在以下的说明中,也有时将奇偶区块配置以及数据区块配置分别称为奇偶配置以及数据配置。
[0069]首先,对与在本实施方式中应用的SSD阵列110-*有关的用语依次进行说明。
[0070].阵列内驱动器数(drv — num)
[0071]阵列内驱动器数表示构成SSD阵列110-*的驱动器(也就是说SSD)的数目。在SSD阵列110-*由SSD- # O至SSD- # 6 (更详细地说是连接于驱动器槽和# O至# 6的SSD- # O至SSD- # 6)构成的本实施方式中,阵列内驱动器数为7 (drv —num = 7)。
[0072]?磁条尺寸(sb — sz)
[0073]磁条尺寸表示各磁条区块的容量。
[0074].磁条组尺寸(Sg — sz)`
[0075]磁条组尺寸表示各磁条组内的全部数据区块的容量。磁条组尺寸尺寸与RAID等级5的阵列同样地,是通过对从阵列内驱动器数(drv —num)减去了 I (磁条组内的奇偶区块P的数目)的值乘以磁条尺寸(Sb — sz)从而得到的值。
[0076].管理区块
[0077]管理区块构成为以磁条组编号连续的多个磁条组的集合为单位。奇偶配置(更详细地说是奇偶配置以及数据配置)以管理区块为单位来进行图案化。也就是说管理区块是用于管理奇偶区块配置位置的区块。所述配置图案(以下称为奇偶配置图案)表示各管理区块中的磁条组单位的奇偶区块P的配置位置(奇偶区块配置位置)。更详细地说,所述奇偶配置图案表示各管理区块中的磁条组单位的奇偶区块P以及数据区块DO至D5的配置位置(奇偶区块配置位置以及数据区块配置位置)。
[0078]所述奇偶配置图案的特征在于,配置于管理区块的奇偶区块P的数目表示在构成SSD阵列110-*的SSD- # O至SSD- # 6之间全部不同那样的奇偶配置。具体地说,根据所述奇偶配置图案,在驱动器成员编号最大的SSD中未配置有奇偶区块P。此外,根据所述奇偶配置图案,以每当驱动器成员编号减I就使奇偶配置数加I的方式,配置奇偶区块P。
[0079]?管理区块尺寸(blk—sz)
[0080]管理区块尺寸表示构成所述管理区块的磁条组的数目。在上述的奇偶配置图案的情况下,管理区块尺寸由drv — num (drv — num-1) / 2表示。在此,drv — num表示阵列内驱动器数。在阵列内驱动器数(drv —num)为7的本实施方式中,管理区块尺寸为21。也就是说管理区块由磁条组编号(Sg —no)连续的21的磁条组构成。
[0081]?管理区块边界偏移(bdr — ofs)
[0082]管理区块边界偏移在以磁条组为单位计算奇偶区块P的配置位置、进而计算数据区块Dj Cj = 0,1,…,5)的配置位置的情况下使用。所述管理区块边界偏移在刚生成(或者定义或者构建)了 SSD阵列110-*之后设定为O。此外所述管理区块边界偏移每当开始奇偶再配置处理时就加I。
[0083]上述奇偶再配置处理是对奇偶区块P以及数据区块Dj进行再配置的处理。所述奇偶再配置处理在检测到在SSD阵列110-*内存在写入次数达到上限的SSD并对该SSD进行了交换的情况下执行。在加I后的管理区块边界偏移与管理区块尺寸(管理区块内的磁条组数)一致的情况下,该管理区块边界偏移返回到O。也就是说所述管理区块边界偏移表示所述奇偶配置图案(管理区块的)的开始磁条组的位置。所述管理区块边界偏移在利用所述奇偶再配置处理从主机2请求对奇偶区块以及数据区块的再配置完成的区域的访问的情况下,为了确定访问对象的奇偶区块P和数据区块Dj而使用。 [0084].再配置前区块边界偏移
[0085]再配置前区块边界偏移(以下称为PR区块边界偏移)在以磁条组为单位来计算奇偶区块P的配置位置进而计算数据区块Dj的配置位置的情况下使用。所述PR区块边界偏移在生成(构成)SSD阵列110-*之后,设定为与所述管理区块边界偏移相同的值。此外所述PR区块边界偏移在所述奇偶再配置处理开始时,设定为更新前的管理区块边界偏移。所述PR区块边界偏移在从主机2请求了对所述奇偶再配置处理的期间中奇偶区块以及数据区块的再配置处理为未执行的区域的访问的情况下,为了确定访问对象的奇偶区块P和数据区块Dj而使用。
[0086].奇偶再配置过程中磁条组编号
[0087]奇偶再配置过程中磁条组编号(以下称为R磁条组编号)表示所述奇偶再配置处理中的执行位置,也就是说奇偶再配置执行过程中的磁条组编号。
[0088].数据区块编号
[0089]数据区块编号表示固定分配给磁条组内的数据区块DO至D5的顺编号。在此,对数据区块DO至D5分别分配数据区块编号O至5。
[0090].驱动器槽编号
[0091]驱动器槽编号表示固定地分配给构成SSD11-*的全部的SSD(也就是说SSDll-O至11-6)的顺编号。在此,对SSDll-O至11-6的驱动器槽编号,使用分配给连接了该SSDll-O至11-6的驱动器槽的编号O至6 (SSD- # O至SSD- #6)。
[0092].奇偶再配置过程中驱动器槽编号
[0093]奇偶再配置过程中驱动器槽编号(以下称为R驱动器槽编号)表示奇偶再配置执行过程中的磁条组中的奇偶区块或者数据区块的再配置的执行位置,也就是说表示包含再配置执行过程中的磁条区块的SSD (驱动器)的驱动器槽编号。
[0094].驱动器成员编号
[0095]驱动器成员编号是分配给构成SSD阵列110-*的SSDll-O至11_6的逻辑的顺编号。在本实施方式中,在SSDll-O的刚生成之后,阵列管理部21 (更详细地说是阵列管理部21内的阵列生成部210)将SSDll-O至11_6的驱动器成员编号设定为与该SSDll-O至11_6的驱动器槽编号相同的值。此外在所述奇偶再配置处理开始时,区块再配置部250将被更换为SSDll-O至11-6中的一个(也就是说,达到了写入次数的上限的SSD)的SSD的驱动器成员编号设定为0,使剩余的SSD的驱动器成员编号加I。构成SSD阵列110-*的各SSD的驱动器成员编号在利用所述奇偶再配置处理从主机2请求了对奇偶区块以及数据区块的再配置完成的区域的访问的情况下,为了确定访问对象的奇偶区块和数据区块而使用。
[0096].再配置前成员编号
[0097]再配置前成员编号(以下称为PR成员编号)表示在开始所述奇偶再配置处理之前分配给构成SSD阵列110-*的SSDll-O至11_6的逻辑顺序编号。在刚生成了 SSD阵列110-*之后,阵列管理部21将SSD11-*的所述PR成员编号设定为与该SSD11-*的驱动器槽编号相同的值。此外,在所述奇偶再配置处理开始时,区块再配置部250将SSD11-*的所述PR成员编号设定为该SSDl1-*的更新前的驱动器成员编号。构成SSD阵列110-*的各SSD的驱动器成员编号在从主机2请求了在所述奇偶再配置处理的期间中对奇偶区块以及数据区块的再配置处理为未执行的区域的访问的情况下,为了确定访问对象的奇偶区块和数据区块而使用。
[0098]图4表示阵列管理表28以及29的数据构造例。阵列管理表28为了注册用于管理SSD阵列110-*的构成的第一 SSD阵列管理信息而使用,阵列管理表29为了注册用于管理SD阵列110-*的构成的第二 SSD阵列管理信息而使用。SSD阵列110-*由阵列管理部21内的阵列生成部210生成(定义)。阵列管理表28以及29在生成SSD阵列110-*时,由阵列管理部21生成。在本实施方式中阵列管理表28以及29储存于本地存储器126中。
[0099]第一 SSD阵列管理信息包含阵列内驱动器数(drv — num)、磁条尺寸(sb — sz )、磁条组尺寸(Sg —sz)、管理区块尺寸(blk —sz)、管理区块边界偏移(bdr —ofs)、PR区块边界偏移(再配置前区块边界偏移)、R磁条组编号(在奇偶再配置过程中磁条组编号)、以及R驱动器槽编号(在奇偶再配置过程中驱动器槽编号)的各信息。另一方面,第二 SSD阵列管理信息表示构成SSD阵列110-*的SSDll-O至SSD-6的驱动器槽编号、该SSDll-O至11_6的驱动器成员编号、该SSDll-O至11-6的PR成员编号(再配置前驱动器成员编号)的对应。
[0100]图5与阵列管理表29相关联地表示SSD阵列110-*中的奇偶区块P以及数据区块DO至D5的配置的例子。在图5的例子中,磁条组编号为O至20的磁条组的集合用作一个管理区块。虽然在图5未示出,但在本实施方式中,磁条组编号为21至41的磁条组的集合也用作一个管理区块。
[0101]管理区块是形成奇偶区块P以及数据区块DO至D5的规则的配置位置的图案(配置图案)的连续的多个磁条组(在本实施方式中21的磁条组)的集合。管理区块由阵列管理部21定义。
[0102]在图5的例子中,驱动器成员编号最大的SSD为SSD- # 6 (SSD11-6)。在这种情况下,在构成管理区块的21磁条组的任一个中,均是奇偶区块P未配置于SSD- # 6内的对应的磁条区块。
[0103]另一方面,在其他SSD- # 5 至 SSD- # O (SSDl 1-5 至 11-0)中,以与 SSD- # 6相比较,驱动器成员编号每减少I就使奇偶配置数加I的方式,配置奇偶区块。由此,在管理区块内,配置于驱动器成员编号为5、4、3、2、1以及O的SSD- # 5、SSD- # 4、SSD- # 3、SSD- # 2、SSD- # I以及SSD- # O的奇偶区块的数目分别变为1、2、3、4、5以及6。[0104]接下来,对在本实施方式中应用的奇偶区块配置位置计算处理的典型的步骤,以阵列管理表28以及29的内容为图4的情况为例,参照图6的流程图来进行说明。所谓奇偶区块配置位置计算处理是,用于计算出配置有目的磁条组的奇偶区块P的驱动器的位置(奇偶区块配置位置)的处理。在此,作为奇偶区块配置位置,计算出配置有奇偶区块P的驱动器的驱动器成员编号。
[0105]存储控制器12的奇偶区块配置计算部22首先将对象磁条组编号Sg —no、阵列内驱动器数drv —num、管理区块尺寸blk —sz、管理区块边界偏移bdr —ofs以及管理区块内对象磁条编号blk — num设定于本地存储器126的工作区域(步骤SI)。在该步骤SI中奇偶区块配置计算部22将奇偶连续磁条划分int — blk定义为变量。奇偶连续磁条划分int — blk设定在所述工作区域。
[0106]所述对象磁条组编号Sg —no是目的磁条组(也就是说成为奇偶区块配置位置计算的对象的磁条组)的磁条组编号。所述阵列内驱动器数drv —num、所述管理区块尺寸blk —sz以及所述管理区块边界偏移bdr —ofs通过参照阵列管理表28来设定。所述管理区块边界偏移bdr _ ofs在SSD阵列110-*的刚生成之后设定为初始值O。在图4的阵列管理表 28 的例子中,为 drv — num = 7、blk — sz = 21、bdr — ofs = O。
[0107]所述管理区块内对象磁条编号blk —num是表示所述对象磁条组的管理区块内的相对位置的磁条编号。所述管理区块内对象磁条编号blk —num的范围为O至20。所述管理区块内对象磁条编号blk — num通过下式
[0108]blk_num
[0109]= ((Sg_no + blk_ sz) -bdr _ ofs) % blk_ sz
[0110]来计算出。该式中的符号%表示取得通过将((Sg — no + blk—sz)_bdr — ofs)除以blk — sz从而计算出商的整数部的情况下的余数的运算。在管理区块边界偏移bdr
—ofs为O的图5的配置中,例如磁条组编号Sg —no为O或者21的磁条组的管理区块内对象磁条编号blk — num成为O。同样地,磁条组编号Sg — no为20的磁条组的管理区块内对象磁条编号blk — num成为20。
[0111]奇偶连续磁条划分int —blk表示奇偶区块P的配置位置(也就是说配置有奇偶区块P的驱动器)全部不同的连续的磁条组(更详细地说磁条组编号Sg —no连续的磁条组)的数目(范围)。奇偶连续磁条划分int — blk是6、5、4、3、2或者I的任一个。奇偶连续磁条划分int — blk的最大值6与drive — num-1 一致。
[0112]接下来奇偶区块配置计算部22对于从i = O至i = drv — num_2 (= 5)的范围的变量i,依次重复以下的循环S2。其中,在后述的步骤S2b的判定为“是”的情况下,奇偶区块配置计算部22从循环S2中退出。
[0113]首先奇偶区块配置计算部22利用下式
[0114]int — blk = drv — num—l—i
[0115]计算出奇偶连续磁条划分int —blk (步骤S2a)。在i = O的情况下,奇偶连续磁条划分int — blk成为6。int — blk = 6指管理区块内的磁条编号为O至5的范围的磁条组的集合。另外,int —blk = 5指管理区块内的磁条编号为6至10的范围的磁条组的集合,int —blk = 4指管理区块内的磁条编号为11至14的范围的磁条组的集合。同样地,int — blk = 3指管理区块内的磁条编号为15至17的范围的磁条组的集合,int —blk = 2指管理区块内的磁条编号为18至19的范围的磁条组的集合。而且,int —blk =I指管理区块内的磁条编号为20的磁条组。
[0116]接下来奇偶区块配置计算部22判定管理区块内对象磁条编号blk —num是否小于计算出的int — blk (步骤S2b)。该判定为了检查对象磁条组是否进入了计算出的int
—blk所示的磁条组的范围而进行。在如本实施方式那样int —blk = 6的情况下,若管理区块内对象磁条编号blk — num为O至5的任一个,则步骤S2b的判定变为“是”。在这种情况下,奇偶区块配置计算部22从循环S2中退出而进入到步骤S3。而且,奇偶区块配置计算部22在所述管理区块内将对象磁条编号blk —num,设定为表示所述奇偶区块配置位置的驱动器成员编号pdrv — no。由此若所述管理区块内对象磁条编号blk — num是0、1、
2、3、4或者5 (也就是说小于6)(步骤S2b的“是”),则奇偶区块配置位置驱动器成员编号pdrv — no 与 blk — num 一致。
[0117]与此相对地,若所述管理区块内对象磁条编号blk — num不小于6 (步骤S2b的“否”),奇偶区块配置计算部22判定为对象磁条组被从奇偶连续磁条划分int —blk = 6(也就是说管理区块内的磁条编号为O至5的范围的磁条组的集合)排除。在这种情况下,奇偶区块配置计算部22为了判定对象磁条组是否进入了下一奇偶连续磁条划分int —blk=5,使管理区块内对象磁条编号blk — num减少当前的奇偶连续磁条划分int — blk = 6(步骤S2c)。
[0118]i = O的情况下的减少后的管理区块内对象磁条编号blk —num表示除了奇偶连续磁条划分int — blk = 6 (管理区块内的磁条编号为O至5的范围的磁条组的集合)之外的管理区块内的相对位置。在该点上,减少后的管理区块内对象磁条编号blk —num与在步骤SI中设定的管理区块内对象磁条编号blk — num不同。
[0119]接下来奇偶区块配置计算部22将变量i从i = O加I为i = I,再次执行所述步骤S2a。在这种情况下,奇偶连续磁条划分int —blk从6更新为5。而且,奇偶区块配置计算部22判定所述减少后的管理区块内对象磁条编号blk — num是否小于当前的int —blk = 5 (步骤S2b)。如果在步骤SI中设定的管理区块内对象磁条编号(以下称为初始管理区块内对象磁条编号)blk —num为6至10的任一个,则步骤S2b的判定变为“是”。在这种情况下,奇偶区块配置计算部22从循环S2退出而进入到步骤S3。
[0120]在步骤S3中奇偶区块配置计算部22将当前的管理区块内对象磁条编号blk —num,设定为表示所述奇偶区块配置位置的驱动器成员编号pdrv — no。在此所述初始管理区块内对象磁条编号blk — num为6、7、8、9或者10,因此设当前的管理区块内对象磁条编号blk — num为O、1、2、3或者4 (步骤S2b的“是”)。在这种情况下,pdrv — no与当前的管理区块内对象磁条编号blk —num (也就是说,O、1、2、3或者4) 一致。
[0121]与此相对地,若所述当前的管理区块内对象磁条编号blk — num不小于当前的int_blk = 5 (步骤S2b的“否”),则奇偶区块配置计算部22判定为对象磁条组被从该当前的int —blk = 5 (也就是说管理区块内的磁条编号为6至10的范围的磁条组的集合)排除。在这种情况下,奇偶区块配置计算部22为了判定对象磁条组是否进入到下一奇偶连续磁条划分int — blk = 4,而使管理区块内对象磁条编号blk — num减少当前的奇偶连续磁条划分int — blk = 5 (步骤S2c)。
[0122]接下来奇偶区块配置计算部22将变量i从i = I加I为i = 2,再次执行所述步骤S2a。在这种情况下,奇偶连续磁条划分int —blk从5更新为4。而且,奇偶区块配置计算部22判定当前的(减少后的)管理区块内对象磁条编号blk — num是否小于当前的int—blk = 4 (步骤S2b)。如果初始管理区块内对象磁条编号blk — num为11至14的任一个,步骤S2b的判定变为“是”。在这种情况下,奇偶区块配置计算部22从循环S2中退出而进入到步骤S3。在步骤S3中奇偶区块配置计算部22将当前的管理区块内对象磁条编号blk — num,设定为表示所述奇偶区块配置位置的驱动器成员编号pdrv — no。在此所述初始管理区块内对象磁条编号blk —num是11、12、13或者14,因此设当前的管理区块内对象磁条编号blk — num为0、1、2、或者3 (步骤S2b的“是”)。在这种情况下,pdrv — no与当前的管理区块内对象磁条编号blk —num (也就是说,0、1、2或者3) —致。
[0123]与此相对地,若所述当前的管理区块内对象磁条编号bIk — num不小于当前的int_blk = 4(步骤S2b的“否”),则奇偶区块配置计算部22判定为对象磁条组被从该当前的int _ blk = 4 (也就是说管理区块内的磁条编号为11至14的范围的磁条组的集合)中排除。在这种情况下,奇偶区块配置计算部22为了判定对象磁条组是否进入了下一奇偶连续磁条划分int — blk = 3,而使管理区块内对象磁条编号blk — num减少当前的int — blk=4 (步骤 S2c)。
[0124]接下来奇偶区块配置计算部22将变量i从i = 2加I为i = 3,再次执行所述步骤S2a。在这种情况下,奇偶连续磁条划分int —blk被从4更新为3。而且,奇偶区块配置计算部22判定当前的管理区块内对象磁条编号blk — num是否小于当前的int — blk=3 (步骤S2b)。如果初始管理区块内对象磁条编号blk —num为15至17的任一个,则步骤S2b的判定变为“是”。在这种情况下,奇偶区块配置计算部22从循环S2中退出而进入到步骤S3。在步骤S3中奇偶区块配置计算部22将当前的管理区块内对象磁条编号blk
—num,设定为表示所述奇偶区块配置位置的驱动器成员编号pdrv —no。在此设所述初始管理区块内对象磁条编号blk — num是15、16或者17,因此当前的管理区块内对象磁条编号blk — num为O、I或者2 (步骤S2b的“是”)。在这种情况下,pdrv — no与当前的管理区块内对象磁条编号blk — num (也就是说是O、I或者2) —致。
[0125]与此相对地,若所述当前的管理区块内对象磁条编号bIk — num不小于当前的int_blk = 3 (步骤S2b的“否”),则奇偶区块配置计算部22判定为对象磁条组被从该当前的int —blk = 3 (也就是说管理区块内的磁条编号为15至17的范围的磁条组的集合)排除。在这种情况下,奇偶区块配置计算部22为了判定对象磁条组是否进入了下一奇偶连续磁条划分int — blk = 2,而使管理区块内对象磁条编号blk — num减少当前的int — blk=3 (步骤 S2c)。
[0126]接下来奇偶区块配置计算部22将变量i从i = 3加I为i = 4,再次执行所述步骤S2a。在这种情况下,奇偶连续磁条划分int —blk从3更新为2。而且,奇偶区块配置计算部22判定当前的管理区块内对象磁条编号blk — num是否小于当前的int — blk =2(步骤S2b)。如果初始管理区块内对象磁条编号blk —num为18或者19的任一个,则步骤S2b的判定变为“是”。在这种情况下,奇偶区块配置计算部22从循环S2退出而进入到步骤S3。在步骤S3中奇偶区块配置计算部22将当前的管理区块内对象磁条编号blk —num设定为表示所述奇偶区块配置位置的驱动器成员编号pdrv —no。在此所述初始管理区块内对象磁条编号blk —num是18或者19,因此设当前的管理区块内对象磁条编号blk—num为O或者I (步骤S2b的“是”)。在这种情况下,pdrv — no与当前的管理区块内对象磁条编号blk — num (也就是说是O或者I) 一致。
[0127]与此相对地,若所述当前的管理区块内对象磁条编号blk — num不小于当前的int
—blk = 2 (步骤S2b的“否”),则奇偶区块配置计算部22判定为对象磁条组被从该当前的int — blk = 2 (也就是说管理区块内的磁条编号为18至19的范围的磁条组的集合)排除。在这种情况下,奇偶区块配置计算部22为了判定对象磁条组是否进入了下一奇偶连续磁条划分int — blk = I,而使管理区块内对象磁条编号blk — num减少当前的int — blk=2 (步骤 S2c)。
[0128]接下来奇偶区块配置计算部22将变量i从i = 4加I为i = 5,再次执行所述步骤S2a。在这种情况下,奇偶连续磁条划分int —blk从2更新为I。而且,奇偶区块配置计算部22判定当前的管理区块内对象磁条编号blk — num是否小于当前的int — blk =I (步骤S2b)。如果初始管理区块内对象磁条编号blk —num为20,则步骤S2b的判定变为“是”。在这种情况下,奇偶区块配置计算部22从循环S2中退出而进入到步骤S3。在步骤S3中奇偶区块配置计算部22将当前的管理区块内对象磁条编号blk — num,设定为表示所述奇偶区块配置位置的驱动器成员编号pdrv —no。在此设所述初始管理区块内对象磁条编号blk _ num是20,因此当前的管理区块内对象磁条编号blk — num为O (步骤S2b的“是”)。在这种情况下,pdrv — no与当前的管理区块内对象磁条编号blk — num (也就是说O)—致。
[0129]奇偶区块配置计算部22通过对构成SSD阵列110-*的全部的磁条组实施上述的奇偶区块配置位置计算处理,从而计算出表示每磁条组的奇偶区块配置位置的奇偶区块配置驱动器成员编号pdrv — no。
[0130]在阵列管理表28以及29的内容为图4的情况下,利用上述那样的奇偶区块配置驱动器成员编号pdrv — no的计算,应配置例如磁条组编号Sg — no为0、1、2、3以及5的磁条组的奇偶区块P的驱动器的驱动器成员编号(奇偶区块配置驱动器成员编号)Pdr — no分别为0、1、2、3、4以及5 (参照图5)。同样地,应配置磁条组编号Sg —no为6、7、8、9以及10的磁条组的奇偶区块P的驱动器的奇偶区块配置驱动器成员编号pdr —no分别为O、1、2、3以及4 (参照图5)。
[0131]同样地,应配置磁条组编号Sg —no为11、12、13以及14的磁条组的奇偶区块P的驱动器的奇偶区块配置驱动器成员编号pdr —no分别为0、1、2以及3 (参照图5)。同样地,应配置磁条组编号Sg —no为15、16以及17的磁条组的奇偶区块P的驱动器的奇偶区块配置驱动器成员编号pdr— no分别为0、1以及2 (参照图5)。同样地,应配置磁条组编号Sg —no为18以及19的磁条组的奇偶区块P的驱动器的奇偶区块配置驱动器成员编号pdr — no分别为O以及I (参照图5)。同样地,应配置磁条组编号Sg — no为20的磁条组的奇偶区块P的驱动器的奇偶区块配置驱动器成员编号pdr— no为O (参照图5)。
[0132]接下来,对于在本实施方式中应用的数据区块配置位置计算处理的典型的步骤,以阵列管理表28以及29的内容为图4的情况为例子,参照图7的流程图进行说明。数据区块配置位置计算处理是用于计算出配置有目的的磁条组内的目的数据区块的驱动器的位置(数据区块配置位置)的处理。在此,作为数据区块配置位置,计算出配置有数据区块的驱动器的驱动器成员编号。[0133]存储控制器12的数据区块配置计算部23首先将对象磁条组编号Sg —no、对象数据区块编号dblk — no、阵列内驱动器数drv — num (= 7)、管理区块尺寸blk—sz (=21)、管理区块边界偏移bdr — ofs (= O)以及管理区块内对象磁条编号blk — num设定在本地存储器126的工作区域(步骤S11)。对象磁条组编号Sg —no是包含目的数据区块Dj的磁条组(目的磁条组)的磁条组编号。对象数据区块编号dblk — no是所述目的数据区块Dj的数据区块编号(j = dblk —no)。所述目的数据区块是所述目的的磁条组中的6个数据区块DO至D5的一个。
[0134]接下来数据区块配置计算部23通过奇偶区块配置计算部22,计算出对象磁条组编号Sg —no所示的目的磁条组中的奇偶区块配置位置(步骤S12)。也就是说奇偶区块配置计算部22通过图6的流程图所示的奇偶区块配置位置计算处理,计算出表示所述奇偶区块配置位置的驱动器成员编号Pdrv — no。
[0135]接下来数据区块配置计算部23基于计算出的奇偶配置驱动器成员编号pdrv —no、对象数据区块编号dblk —no以及阵列内驱动器数drv —num (= 7),计算出应配置对象数据区块编号dblk —no所示的目的数据区块Dj (j = dblk _ no)的数据区块配置位置(步骤S13)。即数据区块配置计算部23利用下式
[0136]dblk — drv
[0137]= ((pdrv — no + dblk — no + I) % drv — num
[0138]来计算出表示应配置数据区块Dj (j = dblk _ no)的数据区块配置位置的驱动器成员编号(数据区块配置驱动器成员编号)dblk — drv。
[0139]数据区块配置计算部23能通过对构成SSD阵列110-*的全部的磁条组的数据区块DO至D5实施上述的数据区块配置位置计算处理,从而按每磁条组而且按每个数据区块,计算出表示该数据区块的配置位置的数据区块配置驱动器成员编号dblk —drv。
[0140]利用这样的数据区块配置驱动器成员编号dblk —drv的计算,在阵列管理表28以及29的内容为图4的情况下,应配置例如磁条组编号Sg —no为O的磁条组的数据区块D0、D1、D2、D3、D4以及D5的驱动器的驱动器成员编号(数据区块配置驱动器成员编号)dblk
—drv分别为1、2、3、4、5以及6。同样地,应配置例如磁条组编号Sg —no为I的磁条组的数据区块D0、D1、D2、D3、D4以及D5的驱动器的驱动器成员编号dblk —drv分别为2、3、4、
5、6以及O。
[0141]利用上述的奇偶区块配置位置计算处理以及数据区块配置位置计算处理,按图5所示那样的奇偶配置图案来配置奇偶区块P和数据区块DO至D5。在图5的例子中,应注意在驱动器成员编号最大的SSD中未配置奇偶区块P。此外,在图5的例子中,在SSD阵列110-*的各管理区块中,以每当驱动器成员编号减少1,就使奇偶区块P的配置数加I的方式,配置该奇偶区块P。利用这样的奇偶区块P的配置,管理区块中的奇偶区块的配置数在驱动器成员编号为0、1、2、3、4、5以及6的驱动器(SSD11-*)中分别为6、5、4、3、2、1以及O。也就是说根据本实施方式,以管理区块为单位,规则而且不均匀配置奇偶区块P。
[0142]这样根据本实施方式,在SSD阵列110-*内的SSD- # O至SSD- # 6 (驱动器),不均匀地配置有奇偶区块P (也就是说,作为写入访问的热点的奇偶区块P)。因此,以与配置于SSD- # O至SSD- # 6的奇偶区块P的数目的不同对应的方式,在SSD- # O至SSD- # 6各自的写入次数也不同。由此,能防止在SSD阵列110-*内的多个SSD11-*中写入次数同时达到上限。由此,根据本实施方式,能防止以在SSD阵列110-*内的多个SSD11-*中达到了写入次数的上限为主要因素的由SSD的重叠故障引起的阵列闭塞。
[0143]此外根据本实施方式,各磁条组的数据区块DO至D5因图7的数据区块配置位置计算处理,与一般的RAID等级5的SSD阵列的情况不同,以该磁条组的奇偶区块配置位置为起点进行配置。应用这样的数据区块配置的理由如下所述。由于当前奇偶区块P最多配置的SSD的写入次数达到了上限,所以设为该SSD被进行交换。在这种情况下,在一般的RAID等级5的SSD阵列中,在全部的磁条组中,需要奇偶区块P以及数据区块DO至D5的再配置。与此相对地在本实施方式中,通过上述的数据区块配置,能利用最小的奇偶区块P以及数据区块DO至D5的再配置的执行,维持所述奇偶配置图案。对于该再配置将在后面叙述。
[0144]接下来,对于对从主机2向存储装置I的存储控制器12请求向SSD阵列110-*的访问的情况下的动作进行说明。参照图8A以及SB的流程图对该动作进行说明。图8A是表示用于说明在本实施方式中应用的区块确定处理的典型的步骤的流程图的一部分的图,图8B是表示该流程图的剩余部分的图。
[0145]存储控制器12的区块确定部24按照图8A以及SB的流程图来执行所述区块确定处理。该区块确定处理是用于利用计算来确定由主机2请求的访问对象数据区块的处理。
[0146]首先区块确定部24将访问对象区域开始地址sta — adr、访问数据尺寸d— sz、阵列内驱动器数drv — num以及磁条尺寸sb — sz设定于本地存储器126的工作区域(步骤S21)。在该步骤S21中区块确定部24将磁条组内总数据区块尺寸(以下称为总数据区块尺寸)Sg— SZ、访问对象区域结束地址end — adr、访问对象磁条组编号acs — sg[]、访问对象数据区块编号acs —dblk□、区块内访问偏移地址acs — ofs□、区块内访问尺寸acs—sz []、访问对象数据区块数acs — num以及访问对象数据区块结束地址acs — end定义为变量。这些变量设定在所述工作区域内。
[0147]访问对象区域开始地址sta — adr表示由主机2请求的访问对象区域的开始地址。访问数据尺寸d —sz表示访问对象区域的尺寸。总数据区块尺寸Sg— sz表示磁条组内的全部的数据区块的尺寸。访问对象区域结束地址end —adr表示对访问对象区域的终端的地址加上I后的地址。
[0148]访问对象磁条组编号acs — sg[]表示访问对象磁条组的编号(磁条组编号)。访问对象数据区块编号acs —dblk[]表示访问对象数据区块的编号(数据区块编号)。区块内访问偏移地址acs —ofs[]表示从访问对象数据区块的开始端起到访问对象区域开始地址sta —adr为止的偏移。区块内访问尺寸acs — sz []是访问对象数据区块的应实际被访问的尺寸,表示从该数据区块中的访问对象区域开始地址sta —adr的位置起到该数据区块的终端为止的尺寸。访问对象数据区块数acs — num表示访问对象数据区块的数目。访问对象数据区块结束地址acs — end表示访问对象数据区块的终端的地址。
[0149]接下来区块确定部24基于磁条尺寸Sb — sz以及阵列内驱动器数drv — num,利用下式
[0150]Sg—sz = sb — szX (drv — num-1)
[0151]来计算出总数据区块尺寸Sg—sz (步骤S22)。此外区块确定部24基于访问对象区域开始地址sta — adr以及访问数据尺寸d — sz,利用下式[0152]end _ adr = sta _ adr + d _ sz
[0153]来计算出访问对象区域结束地址end — adr (步骤S23)。
[0154]接下来区块确定部24通过执行循环S24,从而生成访问对象数据区块的列表。在此,当设从存储控制器12对SSD阵列110-*同时能访问的区块的数目为η时,区块确定部24对于从i = O到i = η-1的范围的变量i按以下所述那样按顺序反复进行循环S24。其中,在后述的步骤S24e的判定为“否”的情况下,奇偶区块配置计算部22从循环S24中退出。
[0155]循环S24中区块确定部24计算出访问对象磁条组编号acs — sg[i]、访问对象数据区块编号acs — dblk[i]、区块内访问偏移地址acs — ofs[i]、区块内访问尺寸acs —sz [i]以及访问对象数据区块结束地址acs — end (步骤S24a)。该步骤S24a的细节如下所述。
[0156]首先区块确定部24在步骤S24a中,基于访问对象区域开始地址sta — adr以及总数据区块尺寸Sg — SZ,利用下式
[0157]acs — sg[i] = sta — adr / Sg—sz
[0158]计算出访问对象磁条组编号acs — sg[i]。此外区块确定部24在步骤S24a中,基于访问对象区域开始地址sta — adr、总数据区块尺寸Sg — sz以及磁条尺寸sb — sz,利用下式
[0159]acs — dblk[i]
[0160]= (sta — adr % Sg—sz) / sb — sz
[0161]计算出访问对象数据区块编号acs — dblk[i]。在此,(sta — adr % Sg — sz)中的%表示取得通过sta — adr除以Sg — sz从而计算出商的整数部的情况下的余数的运算。
[0162]此外区块确定部24在步骤S24a中,基于访问对象区域开始地址sta — adr、总数据区块尺寸Sg — SZ以及磁条尺寸Sb — SZ,利用下式
[0163]acs _ ofs [i]
[0164]= (sta — adr % Sg—sz) % sb — sz
[0165]来计算出区块内访问偏移地址acs — ofs[i]。此外区块确定部24在步骤S24a中,基于磁条尺寸sb — sz以及计算出的区块内访问偏移地址acs — ofs[i],利用下式
[0166]acs — sz [i] = sb — sz-acs — ofs [i]
[0167]来计算出区块内访问尺寸acs — sz [i]。进而区块确定部24在步骤S24a中,基于访问对象区域开始地址sta — adr、计算出的区块内访问偏移地址acs — ofs[i]以及磁条尺寸sb — sz,利用下式
[0168]acs — end = sta — adr-acs — ofs [i] + sb — sz
[0169]计算出访问对象数据区块结束地址acs — end。
[0170]接下来区块确定部24判定在步骤S24a中计算出的访问对象数据区块结束地址acs — end是否大于访问对象区域结束地址end — adr (步骤S24b)。如果acs — end大于end — adr (步骤S24b的“是”),则区块确定部24利用下式
[0171]acs — sz [i]
[0172]= acs — sz [i]_ (acs — end-end — adr)
[0173]来将在步骤S24a中计算出的区块内访问尺寸acs — sz[i]校正acs — end与end—adr的差分(步骤S24c)。而且,区块确定部24进入到步骤S24d。与此相对地,若acs —end不大于end — adr (步骤S24c的“否”),则区块确定部24跳过步骤S24c而进入到步骤S24d。
[0174]在步骤S24d中区块确定部24利用下式
[0175]sta — adr = sta — adr + acs — sz [i]
[0176]来使访问对象区域开始地址sta — adr更新当前的区块内访问尺寸acs — sz[i]。接下来区块确定部24判定更新后的访问对象区域开始地址sta — adr是否小于访问对象区域结束地址end — adr (步骤S24e)。
[0177]如果sta — adr小于end — adr (步骤S24e的“是”),则区块确定部24判定为存在新的访问对象区块。在这种情况下,区块确定部24使变量i加I。然后,若该加I后的变量i小于能同时访问的区块数n,则使用该加I后的变量i,再次执行循环S24。
[0178]另一方面,若sta — adr不小于end — adr (步骤S24e的“否”),贝U区块确定部24退出循环S24而进入到步骤S25。此外,在加I后的变量i小于能同时访问的区块数η的情况下也是,区块确定部24退出循环S24而进入到步骤S25。
[0179]在步骤S25中区块确定部24将访问对象数据区块数acs — num设定为当前的变量i的值。此时,在所述工作区域中,按从O到i的每个变量i,将访问对象磁条组编号acs—sg[i]、访问对象数据区块编号acs — dblk[i]、区块内访问偏移地址acs — ofs[i]以及区块内访问尺寸acs —sz [i]设定为访问对象数据区块列表的要素。
[0180]区块确定部24按每个访问对象磁条组编号acs — Sg[],将该访问对象磁条组编号acs_sg[]设定为对象磁条组编号Sg —no (步骤S26)。在步骤S26中区块确定部24以访问对象数据区块编号acs —dblk[]为单位,将该访问对象数据区块编号acs —dblk[]设定为对象数据区块编号dblk —no。
[0181]在步骤S26中区块确定部24还按每个对象磁条组编号Sg — no,按照图6的流程图利用奇偶区块配置计算部22来计算出该对象磁条组编号Sg —no所示的访问对象磁条组中的奇偶区块配置位置。在步骤S26中区块确定部24还按每个对象数据区块编号dblk
—no,利用图7的流程图根据数据区块配置计算部23来计算出该对象数据区块编号dblk
—no所示的访问对象数据区块的配置位置。也就是说区块确定部24确定访问对象数据区块、和存在该访问对象数据区块的磁条组内的奇偶区块(以下称为访问对象奇偶区块)。
[0182]阵列访问控制器27访问按每个对象数据区块编号dblk —no所确定的访问对象数据区块(步骤S27)。若更详细地描述,则阵列访问控制器27从以所述确定的访问对象数据区块内的acs — ofs[]为开头的位置起访问由acs — sz []表示的尺寸的区域。该访问在读取访问和写入访问中按如下那样而不同。
[0183]首先,在从主机2请求了读取访问的情况下,阵列访问控制器27从SSD阵列110-*内的所述确定的访问对象数据区块中读取数据。此外,在从主机2请求了写入访问的情况下,阵列访问控制器27读取所述确定的访问对象数据区块的数据(旧数据)和所述确定的访问对象奇偶区块的数据(旧奇偶)。阵列访问控制器27将旧数据用来自主机2的写数据更新为新数据。阵列访问控制器27基于该新数据和旧奇偶(例如利用该新数据与旧奇偶之间的异或运算)生成新奇偶。阵列访问控制器27将新数据写入到所述确定的访问对象数据区块,将新奇偶写入到所述确定的奇偶区块。[0184]在本实施方式中,以使配置于SSD阵列110-*内的SSD- # O至SSD- # 6(SSDl 1-0至11-6)的奇偶区块P的数目变得不均匀的方式,将奇偶区块P以管理区块单位规则地进行分散配置。在维持这样的奇偶区块P的不均匀的配置的状态下,继续SSD阵列110-*的使用。
[0185]于是,在SSD阵列110-*内奇偶区块P的配置数最多的SSD(也就是说连接于驱动器槽# O的SSD- # O)的写入次数最初达到上限。在变为这样的情况下,在现有技术中,热备用SSD分配给SSD阵列110-*,SSD- # O (第一 SSD)的全部数据退避到热备用SSD。在此,设热备用SSD连接于驱动器槽# 7而且处于待机状态。
[0186]当SSD- # O (第一 SSD)的全部数据退避到热备用SSD时,SSD- # O被交换为其他SSD (第二 SSD)。也就是说,SSD- # O被从驱动器槽# O取下,所述其他SSD重新连接于该驱动器槽# O。其后,热备用SSD的数据重写到所述其他SSD (以下称为交换SSD)中。该重写被称为回拷,利用该重写来结束SSD交换处理。
[0187]但是,在这样的SSD交换处理中,交换SSD与SSD- # O同样地,成为在SSD阵列110-*内奇偶区块P的配置数最多的SSD。在这种情况下,SSD阵列110-*内的SSD的写入次数与该SSD中的奇偶区块P的配置数的大小关系不成比例。也就是说,SSD阵列110-*内的SSD的写入次数的大小关系变得与该SSD中的奇偶区块P的配置数的大小关系不一致。于是,与SSD阵列110-*内的全部SSD相关地,成为无法对达到写入次数的上限的顺序进行控制的状态。于是在本实施方式中驱动器交换控制器25 (更详细地说,驱动器交换控制器25的区块再配置部250)以交换SSD成为奇偶区块P的配置数最少的状态(更详细地说是未配置有奇偶区块P的状态)的方式,在SSD阵列110-*内利用拷贝对奇偶区块P和数据区块DO至D5进行再配置。
[0188]图9对于在本实施方式中应用的区块再配置,以如图5所示那样配置的奇偶区块P以及数据区块DO至D5的再配置全部结束之后的状态为例,与阵列管理表28以及29关联地进行表示。其中,对于管理区块边界偏移(bdr —ofs)、驱动器成员编号、奇偶区块P以及数据区块DO至D6,还示出了再配置前的状态。在图9中,包含符号一的“A — B”的记述表示再配置前的状态为A且再配置后的状态为B。
[0189]图9是以对连接于驱动器槽# O的SSD- # O进行交换且对奇偶区块P以及数据区块DO至D5进行再配置的情况为前提的。在该区块再配置中区块再配置部250如图9所示那样,使管理区块边界偏移(bdr —ofs)增加I。由此管理区块的开始磁条组的位置与再配置前(参照图5)相比较,在磁条组编号增加的方向上错开I。在这种情况下,再配置前的管理区块的开始磁条组变为再配置后的管理区块的结束磁条组。
[0190]区块再配置部250此外还使重新连接于驱动器槽# O的交换SSD (也有时为了方便将交换SSD表述为SSD- # O)的驱动器成员编号为6。这与交换SSD (SSD- # O)的驱动器成员编号如图9所示那样从O变更为6等价。利用该驱动器成员编号的分配(变更),交换SSD (SSD- # O)被用作未配置有奇偶区块P的驱动器。
[0191]区块再配置部250此外还使连接于驱动器槽# O以外的驱动器槽# I至# 6的SSD- # I至SSD- # 6的驱动器成员编号I至6减少I。也就是说区块再配置部250将SSD- # I至SSD- # 6的驱动器成员编号分别从I至6变更为O至5。
[0192]如前所述,在本实施方式中在SSD-# O至SSD-# 6中以管理区块单位配置的奇偶区块P的数目,依赖于该SSD- # O至SSD- # 6的驱动器成员编号。在SSD- # I至SSD- # 6的驱动器成员编号如上述那样变更为O至5的情况下,以在该SSD- # I至SSD- # 6中以管理区块单位配置的奇偶区块P的数目从5至O变为6至I的方式,需要对奇偶区块P以及数据区块DO至D5进行再配置。进而,以在重新连接于驱动器槽# O的交换SSD (SSD- # O)中以管理区块单位配置的奇偶区块P的数目为O的方式,还需要对奇偶区块P以及数据区块DO至D5进行再配置。
[0193]也就是说在本实施方式中,为了奇偶区块P以及数据区块DO至D5的再配置,对所述奇偶配置图案进行变更。其中,若以成为变更前的奇偶配置图案的起点的位置(也就是说配置于管理区块的开头的磁条组的奇偶区块P的位置)以及成为变更后的奇偶配置图案的起点的位置为基准,则两图案的相对的位置关系与管理区块内的全部的磁条组一致。因此,奇偶配置图案在逻辑上可说是未变更。
[0194]在以管理区块单位应用上述的奇偶配置图案的本实施方式中,利用上述的驱动器成员编号的变更,如以下所述那样,能将奇偶区块P以及数据区块DO至D5的再配置抑制到最小限度。首先在本实施方式中,交换SSD (SSD-# O)被用作未配置有奇偶区块P的驱动器。为此,只要对交换SSD (SSD-# O)内的全部的奇偶区块P和包含该奇偶区块P的磁条组内的数据区块DO至D6进行再配置即可。
[0195]于是区块再配置部250仅对于包含配置有交换SSD(SSD_ # O)内的奇偶区块P的磁条区块的磁条组(以下称为再配置对象磁条组),对奇偶区块P以及数据区块DO至D5进行再配置。区块再配置部250以管理区块边界偏移(bdr —ofs)被增加I之后的新的管理区块为单位,按照前述的奇偶配置图案(配置规则)来执行该再配置。
[0196]在图9的例子中,再配置对象磁条组包含磁条组编号为0、6、11、15、18、20以及21的磁条组。这些磁条组相当于包含在交换前的SSD (SSD- # O)中储存有奇偶区块P的磁条区块的磁条组。区块再配置部250在磁条组编号为0、6、11、15、18、20以及21的磁条组内,将配置(储存)于交换前的SSD (SSD-# O)的奇偶区块P (奇偶数据)分别再配置(拷贝)于 SSD- # 1、SSD- # 6、SSD- # 5、SSD- # 4、SSD- # 3、SSD- # 2 以及 SSD- # I。
[0197]虽然是如图9所示那样最小限度的奇偶区块P以及数据区块DO至D5的再配置,但能以使管理区块边界偏移(bdr —ofs)增加I之后的新的管理区块为单位,维持沿前述的奇偶配置图案(配置规则)的奇偶区块P以及数据区块DO至D5的配置状态。也就是说根据本实施方式,奇偶区块配置位置、数据区块配置位置、访问对象数据区块以及访问对象奇偶区块能在能按照图6、图7、图8A以及SB的流程图计算的状态下,维持SDD交换后的SSD阵列110-*。
[0198]根据在本实施方式中应用的奇偶配置图案(配置规则),存在在SSD阵列110-*内未配置有奇偶区块P的唯一的驱动器(SSD)。此外在本实施方式中,交换SSD (SSD- # O)被用作未配置有奇偶区块P的驱动器。因此根据本实施方式,能将包含配置有交换SSD(SSD- # O)内的奇偶区块P的磁条区块的磁条组,简单地确定为再配置对象磁条组。此外,能将驱动器交换后的区块再配置抑制到最小限度。进而能利用最小限度的区块再配置来维持奇偶区块配置位置以及数据区块配置位置的规则性。由此,能在不使用大量消耗存储器的配置位置管理表的情况下实现奇偶区块配置位置以及数据区块配置位置的管理。
[0199]进而,根据本实施方式,在交换SSD (SSD- # O)中未配置有奇偶区块P,在其他SSD- # I至SSD- # 6中以管理区块单位配置的奇偶区块P的数目从5至O增加I为6至
I。由此根据本实施方式,能在区块再配置后,例如也使按写入次数的降序排列SSD阵列110-*内的SSD- # O至SSD- # 6的情况下的顺序,与按奇偶区块P的配置数的降序排列该SSD- # O至SSD- # 6的情况的顺序一致。也就是说,能使SSD- # O至SSD- # 6的写入次数的大小关系,与该SSD- # O至SSD- # 6中的奇偶区块P的配置数的大小关系一致。由此,能在区块再配置后继续运用SSD阵列110-*的情况下,将写入次数最初达到上限的SSD11-*,维持在奇偶区块P最多配置的SSD。由此在区块再配置后中也能防止在SD阵列110-*内产生多个SSDl1-*的写入次数同时期接近上限的状态。
[0200]那么在奇偶区块P以及数据区块DO至D6的再配置过程中也是,必须维持与前述的奇偶区块配置位置的计算、数据区块配置位置的计算、访问对象数据区块的确定、访问对象奇偶区块的确定有关的匹配性。因而,区块再配置部250在奇偶区块P以及数据区块DO至D6的再配置前,将管理区块边界偏移(bdr— ofs)的值拷贝到PR区块边界偏移(再配置前管理区块边界偏移),而且,将驱动器成员编号拷贝到PR成员编号(再配置前成员编号)。也就是说区块再配置部250将PR区块边界偏移设定为区块再配置前的管理区块边界偏移,将PR成员编号设定为区块再配置前的驱动器成员编号。
[0201]而且,区块再配置部250 —边按全部再配置对象磁条组的磁条组编号的升序来更新R磁条组编号(在再配置过程中磁条编号,也就是说表示区块再配置过程中的磁条组的磁条编号),一边对奇偶区块P以及数据区块DO至D6进行再配置。也就是说区块再配置部250 —边从全部再配置对象磁条组的开头磁条组的磁条组编号起按顺序更新R磁条组编号,一边按每个该再配置对象磁条组执行区块再配置。
[0202]区块再配置判定部26基于R磁条组编号,对SSD阵列110-*内的区块再配置完成了的区域(以下称为再配置完成区域)和区块再配置未完成的区域(以下称为再配置未完成区域)进行判别。此外,区块再配置判定部26基于该判别的结果,按每个判别后的区域,对在按照图6、图7、图8A以及SB的流程图的处理中使用的一部分参数值进行切换。在此,所述一部分参数值是奇偶区块配置驱动器成员编号(pdrv — no)、数据区块配置驱动器成员编号(dblk — drv)以及管理区块边界偏移(bdr — ofs)。
[0203]图10以表形式表示参数值切换的例子。在访问对象区域为再配置完成区域的情况下,对奇偶区块配置驱动器成员编号(pdrv —no)以及数据区块配置驱动器成员编号(dblk —drv)使用注册于阵列管理表29中的驱动器成员编号,对管理区块边界偏移(bdr
—ofs)使用注册于阵列管理表28中的管理区块边界偏移。另一方面,在访问对象区域为再配置未完成区域的情况下,对奇偶区块配置驱动器成员编号(pdrv —no)以及数据区块配置驱动器成员编号(dblk — drv)使用注册于阵列管理表29中的PR成员编号(再配置前成员编号),对管理区块边界偏移(bdr —ofs)使用注册于阵列管理表28中的PR区块边界偏移。
[0204]那么在区块再配置的执行过程中,会在SSD阵列110-*内产生再配置完成区域和再配置未完成区域。因而,区块再配置部250在开始区块再配置之前,在阵列管理表28内的PR区块边界偏移的字段(field)以及阵列管理表29内的再配置前成员编号的字段中,储存开始区块再配置之前的阵列管理表28内的管理区块边界偏移的值以及阵列管理表29内的驱动器成员编号。[0205]由此,在由来自主机2的访问请求指定的访问区域为再配置未完成区域的情况下也是,区块再配置判定部26能确定访问对象数据区块以及访问对象奇偶区块。在此,SSD阵列110-*内的再配置完成区域与再配置未完成区域的边界由阵列管理表28内的R磁条组
编号确定。
[0206]区块再配置判定部26在向由R磁条组编号表示的磁条组的访问的情况下,判断为以该磁条组为对象执行了区块再配置。在这种情况下,区块再配置判定部26以直到区块再配置完成为止保留从主机2请求的访问的方式对阵列访问控制器27进行通知。
[0207]若参访问对象数据区块存在的磁条组(以下称为对象磁条组)的磁条组编号小于R磁条组编号,则区块再配置判定部26该对象磁条组判别为是再配置完成区域。与此相对地,若所述对象磁条组的磁条组编号大于R磁条组编号,则区块再配置判定部26判别为该对象磁条组是再配置未完成区域。区块确定部24基于该判别结果,确定再配置完成区域内或者再配置未完成区域内的访问对象数据区块。
[0208]以下,参照图11的流程图对在本实施方式中应用的再配置完成/再配置未完成判定处理的典型的步骤进行说明。再配置完成/再配置未完成判定处理是用于判定对象磁条组是否是再配置完成区域或是否是再配置未完成区域的处理。
[0209]首先区块再配置判定部26将访问对象区域开始地址sta —adr、访问数据尺寸d—sz、阵列内驱动器数drv — num、磁条尺寸sb — sz以及R磁条组编号realoc — no设定于本地存储器126的工作区域(步骤S31)。在该步骤S31中区块确定部24将总数据区块尺寸Sg— SZ、访问对象开头磁条组编号Sg — no — sta以及访问对象最终磁条组编号Sg —no —end定义为变量。这些变量被设定在所述工作区域内。访问对象开头磁条组编号Sg—no — sta表示由主机2请求的访问对象区域的始端所属的磁条组的磁条组编号。访问对象最终磁条组编号Sg — no — sta表示所述访问对象区域的终端所属的磁条组的磁条组编号。
[0210]接下来区块再配置判定部26计算出总数据区块尺寸Sg—sz (步骤S32)。由该区块再配置判定部26进行的总数据区块尺寸Sg — sz的计算,与在由区块确定部24计算出总数据区块尺寸sg— sz的情况(步骤S21)同样地执行。
[0211]在步骤S32中区块再配置判定部26基于访问对象区域开始地址sta — adr以及总数据区块尺寸Sg — SZ,利用下式
[0212]Sg — no — sta=sta — adr / Sg—sz
[0213]来计算访问对象开头磁条组编号Sg — no — sta。在步骤S32中区块再配置判定部26进而基于访问对象区域开始地址sta —adr、访问数据尺寸d —sz以及总数据区块尺寸Sg — SZ,利用下式
[0214]Sg — no — end = (sta — adr + d—sz_l) / Sg—sz
[0215]来计算访问对象最终磁条组编号Sg — no — end。
[0216]接下来区块再配置判定部26判定访问对象开头磁条组编号Sg —no —sta或者访问对象最终磁条组编号Sg — no — end是否与R磁条组编号realoc — no相等(步骤S33)。如果步骤S33的判定为“否”,则区块再配置判定部26进入到步骤S34。
[0217]在步骤S34中区块再配置判定部26判定访问对象开头磁条组编号Sg — no — sta是否小于R磁条组编号realoc — no,而且,访问对象最终磁条组编号Sg — no — end是否大于R磁条组编号realoc — no。如果步骤S34的判定为“否”,则区块再配置判定部26进入到步骤S35。
[0218]在步骤S35中区块再配置判定部26判定访问对象开头磁条组编号Sg — no — sta是否小于R磁条组编号realoc — no。在此,设步骤S35的判定为“是”。也就是说设访问对象开头磁条组编号Sg — no — sta小于R磁条组编号realoc — no,而且,访问对象最终磁条组编号Sg — no — end不大于R磁条组编号realoc — no。在这种情况下,区块再配置判定部26判定为访问对象区域是再配置完成区域。于是区块确定部24将来自主机2的访问请求处理为向再配置完成区域的访问,确定该再配置完成区域内的访问对象数据区块(步骤S36)。由此阵列访问控制器27访问确定的访问对象数据区块。
[0219]与此相对地,设步骤S35的判定为“否”。也就是说设访问对象开头磁条组编号Sg—no — sta大于R磁条组编号realoc — no。在这种情况下,区块再配置判定部26判定为访问对象区域是再配置未完成区域。于是区块确定部24将来自主机2的访问请求处理为向再配置未完成区域的访问,确定该再配置未完成区域内的访问对象数据区块(步骤S37)。由此阵列访问控制器27访问确定的访问对象数据区块。
[0220]另一方面,设步骤S33的判定为“是”。也就是说设访问对象开头磁条组编号Sg —no — sta或者访问对象最终磁条组编号Sg — no — end与R磁条组编号realoc — no相等。在这种情况下,区块再配置判定部26判断为在访问对象区域中包含有区块再配置过程中的区域,进入到步骤S38。
[0221]接下来,设步骤S34的判定为“是”。也就是说,设访问对象开头磁条组编号Sg —no — sta小于R磁条组编号realoc — no,而且,访问对象最终磁条组编号Sg — no — end大于R磁条组编号realoc — no。在这种情况下也是,区块再配置判定部26判断为在访问对象区域中包含有区块再配置过程中的区域,进入到步骤S38。
[0222]在步骤S38中区块再配置判定部26由于在访问对象区域中包含区块再配置过程中的区域,所以以直到区块再配置完成为止保留从主机2请求的访问的方式通知阵列访问控制器27。而且,区块再配置判定部26返回到步骤S31。
[0223]根据本实施方式,SSD阵列110-*中的奇偶区块P以及数据区块DO至D6的配置位置以由多个连续的磁条组构成的管理区块为单位,基于预先确定的奇偶配置图案(配置规则)进行管理。由此根据本实施方式,无需在SSD阵列110-*中的奇偶区块P以及数据区块DO至D6的配置位置的管理中使用映射表,能以少量的存储器容量实现该管理。
[0224]此外根据本实施方式,执行仅在构成SSD阵列110-*的多个SSD (更详细地说,SSD- # O至SSD- # 6)中写入次数达到上限的SSD被交换的情况下,执行区块再配置。因此,能将起因于区块再配置的各SSD的写入次数的增加抑制到最小限度。
[0225][变形例]
[0226]接下来对所述实施方式的变形例进行说明。该变形例的特征在于利用热备用SSD来实现自动的SSD交换。首先,对在所述实施方式中由区块再配置部250执行的区块再配置的概要按以下进行描述。如前所述,区块再配置部250在区块再配置中,使管理区块边界偏移(bdr —ofs)加I。此外区块再配置部250通过将交换SSD (SSD- # 0)的驱动器成员编号设定为6,从而将该交换SSD (SSD- # 0)定义为未配置有奇偶区块P的驱动器。此外区块再配置部250使其他SSD (SSD- # I至SSD- # 6)的驱动器成员编号加I。而且,区块再配置部250仅对于包含交换SSD (SSD- # O)内的配置有奇偶区块P的磁条区块的磁条组(再配置对象磁条组),基于更新后的管理区块边界偏移(bdr — ofs)以及驱动器成员编号,对奇偶区块P以及数据区块DO至D6进行再配置。
[0227]区块再配置部250将开始区块再配置的磁条组的磁条组编号,注册为R磁条编号(奇偶再配置过程中磁条组编号)reloc — no。而且,区块再配置部250 —边将存在当前的再配置对象区块(奇偶区块P或者数据区块Dj)的SSD11-*的驱动器槽编号,注册为R驱动器槽编号(在奇偶再配置过程中驱动器槽编号),一边执行区块再配置。
[0228]在所述实施方式中,对驱动器槽# 7连接有热备用SSD (以下称为SSD-SP)。在该状态下,在例如交换SSD- # O的情况下,驱动器交换控制器25将SSD- # O的全部数据退避到SSD-SP (也就是说分配给SSD阵列110-*的热备用SSD)。在该退避之后,当SSD- # O交换为其他SSD时,驱动器交换控制器25将SSD-SP的数据重写到该其他SSD(也就是说交换SSD)。于是区块再配置部250执行上述的区块再配置。另外,也可以与驱动器交换控制器25独立地配备区块再配置部250。
[0229]图12对于在所述实施方式中应用的区块再配置,以如图5所示那样配置的奇偶区块P以及数据区块DO至D5的再配置过程中的状态为例,与阵列管理表28以及29关联地进行表示。这样图12在表示区块再配置过程中的状态的点上,与表示区块再配置完成后的状态的图9不同。此外图12还表示图9中省略的SSD-SP的状态。
[0230]在图12的例子中,设以磁条组编号为28的磁条组为对象地执行区块再配置。也就是说设直到磁条组编号为27的磁条组为止完成了区块再配置。SSD-SP的驱动器成员编号以及PR成员编号(再配置前成员编号)与交换SSD (SSD- # O)的这些相同。
[0231]如从图12可明确的那样,若包含SSD-SP的数据,则在SSD阵列110-*中存在在相同磁条组上仅I组储存数据相同的磁条区块。也就是说,存在交换SSD (SSD- # O)内的磁条区块以及SSD-SP内的磁条区块的组。区块再配置部250利用其而执行区块再配置。
[0232]在此,设由于在区块再配置过程中存储装置I的电源断开了,所以区块再配置被中断了。其后,设电源恢复而对存储装置I进行再启动。在这种情况下,区块再配置部250从区块再配置被中断的状态起再开始区块再配置。区块再配置部250以能可靠地再开始该区块再配置的方式,一边至少将R磁条组编号以及R驱动器槽编号保存于闪存或硬盘驱动器那样的非易失性储存,一边执行区块再配置。
[0233]那么,在本变形例中驱动器交换控制器25通过将SSD-SP作为交换SSD编入于SSD阵列110-*中,从而实现自动的SSD交换。以下,对该自动的SSD交换进行说明。
[0234]当前与所述实施方式同样地,设SSD-# O的写入次数达到了上限。在这种情况下,驱动器交换控制器25将SSD-SP分配给SSD阵列110-*,将SSD- # O的全部数据拷贝(退避)到该SSD-SP。而且,驱动器交换控制器25从SSD阵列110-*中将SSD- # O (也就是说是写入次数达到了上限的SSD- # O)排除,而且,将SSD-SP视为交换SSD(新的SSD- # O)。在该状态下区块再配置部250与所述实施方式同样地执行区块再配置。与所述实施方式不同的是,交换SSD (SSD- # O)连接于驱动器槽# 7的SSD-SP (以下称为第一 SSD-SP)这一点。
[0235]那么在区块再配置的开始时,区块再配置部250将写入次数达到上限的SSD- # O的驱动器成员编号从O变更为6。此外区块再配置部250将被看作交换SSD的第一 SSD-SP的驱动器成员编号设定为6。区块再配置部250此外还将其他的SSD- # I至SSD- # 6的驱动器成员编号I至6减I。在图12中记述有变更后的驱动器成员编号。
[0236]驱动器交换控制器25在区块再配置的完成后,将写入次数达到了上限的SSD- # O(也就是说SSD11-0)重新新定义为热备用SSD (SSD-SP)。具体地说,将SSD-# O (也就是说SSD11-0)的属性从在SSD阵列110-0中使用的SSD (SSD- # O)变更为热备用SSD。将该属性变更后的SSD- # O表述为SSD-SP (更详细地说是第二 SSD-SP)。驱动器交换控制器25将所述第二 SSD-SP作为由达到了写入次数的上限引起的故障驱动器进行处理。由此驱动器交换控制器25从SSD阵列110-*分离所述第二 SSD-SP (也就是说SSDl 1-0)。
[0237]此外驱动器交换控制器25将在区块再配置时分配给SSD阵列110-*的所述第一SSD-SP,取代达到了写入次数的上限的SSD- # O(SSDll-O),而定义为在SSD阵列110-*中使用的SSD。具体地说,将所述第一 SSD-SP的属性,从SSD-SP (热备用SSD)变更为在SSD阵列110-*中使用的SSD。将该属性变更后的所述第一 SSD-SP为了方便表述为SSD- # O。
[0238]在本变形例中,SSD- # O (也就是说是达到了写入次数的上限的SSD- # O)以及SSD-SP的属性如上述那样进行变更。于是区块再配置部250将属性从SSD-SP变更为SSD- # 0,而且,进行以驱动器成员编号设定为6的SSD、和驱动器成员编号从I至6更新为O至5的驱动器SSD- # I至SSD- # 6为对象的区块再配置。根据本变形例,与所述实施方式不同,无需将达到了写入次数的上限的SSD- # O为了区块再配置而交换为其他的SSD(交换SSD)。也就是说根据本变形例,能使用处于待机状态的SSD-SP,实现自动的SSD交换。
[0239]图13对于在本变形例中应用的区块再配置,与阵列管理表28以及29关联地示出如图5所示那样配置的奇偶区块P以及数据区块DO至D5的再配置全部结束之后的状态。其中,对于管理区块边界偏移(bdr — of S)、奇偶区块P以及数据区块DO至D6,还示出了再配置前的状态。
[0240]根据以上说明的至少一个实施方式,能提供一种能简单地管理阵列中的纠错编码区块配置位置的存储装置、存储控制器以及方法。
[0241]虽然说明了本发明的几个实施方式,但这些实施方式是作为例子而进行提示的,并不意在对发明的范围进行限定。这些新的实施方式能以其它的各种方式进行实施,能在不脱离发明的要旨的范围内进行各种的省略、置换、变更。这些实施方式及其变形包含在发明的范围、要旨中,并且包含在权利要求书记载的发明和其均等的范围中。
【权利要求】
1.一种存储装置, 具备: 固态驱动器的组,包含具备被区分为多个磁条区块的第一存储区域的多个固态驱动器;以及 存储控制器,对所述固态驱动器的组进行控制, 所述存储控制器具备阵列管理部,该阵列管理部对阵列进行管理,该阵列具备被区分为多个磁条组的第二存储区域,该多个磁条组中配置有用于储存纠错编码的纠错编码区块以及用于储存数据的多个数据区块的组,所述多个磁条组分别由所述多个固态驱动器内的物理位置所对应的所述磁条区块的组构成, 所述阵列管理部以使配置有所述纠错编码区块的数目在所述多个固态驱动器之间不均匀的方式,基于预先确定的配置规则,将所述纠错编码区块以及所述多个数据区块规则地配置于所述多个磁条组中,并基于所述配置规则,对所述纠错编码区块的配置位置进行管理。
2.根据权利要求1所述的存储装置, 所述阵列管理部以物理位置连续的预先确定的数目的所述磁条组的集合即管理区块为单位,而且,以使在所述多个固态驱动器之间配置有所述纠错编码区块的数目不同的方式,配置所述纠错编码区块以及所述多个数据区块。
3.根据权利要求1或者2的任一项所述的存储装置, 所述存储控制器还具备区块确定部,该区块确定部在需要向第一数据区块以及第一奇偶区块的访问的情况下,基于所述配置规则,确定所述第一数据区块以及第一奇偶区块的配置位置。·
4.根据权利要求2所述的存储装置, 所述阵列管理部在除了所述多个固态驱动器的任一个之外的固态驱动器中配置有所述纠错编码区块, 所述存储控制器还具备: 驱动器交换控制器,对向所述多个固态驱动器的写入的次数进行监视,对从所述写入的次数达到预先确定的上限的第一固态驱动器向第二固态驱动器的交换进行控制;以及 区块再配置部,在所述交换后,将配置于所述第一固态驱动器的所述纠错编码区块,再配置于所述多个固态驱动器中除了所述第二固态驱动器之外的其他固态驱动器。
5.根据权利要求4所述的存储装置, 所述区块再配置部以在所述再配置前配置于所述其他固态驱动器的所述纠错编码区块的数目的大小关系在所述再配置后中还被维持的方式,对配置于所述第一固态驱动器的所述纠错编码区块进行再配置。
6.根据权利要求5所述的存储装置, 所述区块再配置部对所述纠错编码区块进行再配置,使得在开始所述再配置时,使所述管理区块的开始位置错开I磁条组,并以所述管理区块为单位将配置于所述其他固态驱动器的所述纠错编码区块的第一数与所述再配置之前相比分别增加I。
7.根据权利要求6所述的存储装置, 所述阵列管理部以所述管理区块为单位将与配置于所述多个固态驱动器的所述纠错编码区块的数目对应的值的驱动器成员编号分配给所述多个固态驱动器, 所述区块再配置部在所述再配置时,将分配给所述其他固态驱动器的所述驱动器成员编号,变更为与所述增加I后的第一数对应的值,而且,将分配给所述第二固态驱动器的驱动器成员编号,以所述管理区块为单位设定为与配置于所述第二固态驱动器的所述纠错编码区块的第二数为O的情况对应的值。
8.一种存储控制器,对固态驱动器的组进行控制,该固态驱动器的组包含具备被区分为多个磁条区块的第一存储区域的多个固态驱动器, 该存储控制器具备阵列管理部,该阵列管理部对阵列进行管理,该阵列具备被区分为多个磁条组的第二存储区域,该多个磁条组中配置有用于储存纠错编码的纠错编码区块以及用于储存数据的多个数据区块的组,所述多个磁条组分别由所述多个固态驱动器内的物理位置所对应的所述磁条区块的组构成, 所述阵列管理部以使配置有所述纠错编码区块的数目在所述多个固态驱动器之间不均匀的方式,基于预先确定的配置规则,将所述纠错编码区块以及所述多个数据区块规则地配置于所述多个磁条组中,并基于所述配置规则,对所述纠错编码区块的配置位置进行管理。
9.一种方法,其是在对固态驱动器的组进行控制的存储控制器中,对阵列中的纠错编码区块配置位置进行管理的方法,所述固态驱动器的组包含具备被区分为多个磁条区块的第一存储区域的多个固态驱动器,所述阵列具备被区分为多个磁条组的第二存储区域,该多个磁条组中配置有用于储存纠错编码的纠错编码区块以及用于储存数据的多个数据区块的组,所述多个磁条组分别由所述多个固态驱动器内的物理位置所对应的所述磁条区块的组构成, 在生成所述阵列的情况下,以使配置有所述纠错编码区块的数目在构成所述阵列的所述多个固态驱动器之间不均匀的方式,基于预先确定的配置规则,将所述纠错编码区块以及所述多个数据区块规则地配置于所述多个磁条组中, 基于所述配置规则,对所述纠错编码区块的配置位置进行管理。
【文档编号】G06F3/08GK103858114SQ201280002715
【公开日】2014年6月11日 申请日期:2012年9月12日 优先权日:2012年9月12日
【发明者】伊藤达也 申请人:株式会社东芝, 东芝解决方案株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1