存储系统的制作方法

文档序号:6538823阅读:333来源:国知局
存储系统的制作方法
【专利摘要】本发明提供存储系统,其具备多个存储节点和连接单元。存储系统通过将存储节点分配到一个逻辑存储节点来构筑多个逻辑存储节点,该存储节点包括:一个以上的第一存储节点,其存储由指令所确定的访问对象的数据;和第二存储节点,其存储在所述一个以上的第一存储节点存储的数据的冗余数据。指令包括:第一地址,其指定多个逻辑存储节点中的一个节点;和第二地址,其指定分配到每个逻辑存储节点的存储器空间内的存储位置。接收了指令的存储节点在第一地址与被分配了接收了指令的存储节点的第一逻辑存储节点的地址不一致的情况下、将指令向与接收了指令的存储节点相邻且被分配了与第一逻辑存储节点不同的逻辑存储节点的存储节点传输。
【专利说明】存储系统
[0001]相关申请
[0002]本申请基于2013年9月24日提交的日本特许出愿2013-196935号而享受优先权,在本申请中援引该日本特许出愿的全部内容。

【技术领域】
[0003]本实施方式通常涉及存储系统。

【背景技术】
[0004]近年来,将具备存储系统的多个信息处理装置用网络彼此连接而作为一个信息处理系统来工作的情况(例如云计算)正在增加。此外,即使作为存储系统,也存在与使用以往型的HDD的系统相比更高速的存储系统,该存储系统中排列多个DRAM芯片和/或NAND闪存芯片等并布线将芯片之间连接起来、作为一个存储系统来使用。
[0005]在此类连接多个信息处理装置而成的单一信息系统中,可通过增加构成系统的信息处理装置的数量来实现性能的提高。然而,在数量增加了的大规模信息处理系统中,存在为了管理等所需的外部资源增大等问题。


【发明内容】

[0006]本发明的实施方式提供能尽可能地减少所需的外部资源的存储系统。
[0007]根据实施方式,存储系统具备:多个存储节点,其在两个以上的不同方向上互相连接;和连接单元。连接单元根据来自外部的请求而发出指令。所述存储系统通过将存储节点分配到一个逻辑存储节点来构筑多个逻辑存储节点,该存储节点包括:一个以上的第一存储节点,其存储所述指令所形成的访问对象的数据;和第二存储节点,其存储在所述一个以上的第一存储节点存储的数据的冗余数据。所述指令包括:第一地址,其指定所述多个逻辑存储节点中的一个节点;和第二地址,其指定在每个逻辑存储节点分配的存储器空间内的存储位置。接收所述指令的存储节点在所述第一地址与分配了接收所述指令的存储节点的第一逻辑存储节点的地址不一致的情况下将所述指令向与接收所述指令的存储节点相邻且向与所述第一逻辑存储节点不同的逻辑存储节点分配的存储节点传输。

【专利附图】

【附图说明】
[0008]图1是表示第一实施方式涉及的存储系统的构成例的图。
[0009]图2是表示LMN构成的一例的图。
[0010]图3是表示PMN物理配置的一例的图。
[0011]图4是表示⑶构成的一例的图。
[0012]图5是表示PMN构成的一例。
[0013]图6是表示PMN封装构成的一例的图。
[0014]图7是表不着眼于存储器构成的PMN构成的一例的图。
[0015]图8是表示从LMN_LBA向物理地址进行域名解析(正引电変換)的处理的图。
[0016]图9是说明转换(解析)算法的一例的图。
[0017]图10是表示接收来自⑶的数据包时控制器的工作的流程图。
[0018]图11是表示来自⑶的写入指令的处理例(第一写入处理)的时序图。
[0019]图12是表示来自⑶的写入指令的其他处理例(第二写入处理)的时序图。
[0020]图13是表示来自⑶的写入指令的其他处理例(第三写入处理)的时序图。
[0021]图14是表示来自⑶的写入指令的其他处理例(第四写入处理)的时序图。
[0022]图15是表示来自⑶的读出指令的处理例(第一读出处理)的时序图。
[0023]图16是表示来自⑶的读出指令的其他处理例(第二读出处理)的时序图。
[0024]图17是表示来自⑶的读出指令的其他处理例(第三读出处理)的时序图。
[0025]图18是表示第二实施方式涉及的存储系统的构成例的图。
[0026]图19是表示转换表(解析表)的构成例的图。
[0027]图20是表示转换表的构成例的图。
[0028]图21是表示存储转换表的MN的图。
[0029]图22是表示着眼于存储器构成的第二实施方式的MN的构成的一例的图。
[0030]图23是表示来自Cu的读出指令的第二实施方式的处理例的时序图。
[0031]图24是表示来自Cu的写入指令的第二实施方式的处理例的时序图。
[0032]图25是表示转换表的项(entry)数达到预定值的情况下的处理例的时序图。
[0033]图26是表示读出处理执行时的读出指令的传输路径的图。
[0034]图27是表示读出处理执行时的数据的传输路径的图。
[0035]图28是表示写入处理执行时的ACK的传输路径的图。
[0036]图29是表不第三实施方式的转换表的构成例的图。
[0037]图30是表示Root K2K的项数达到预定值的情况下的处理例的时序图。

【具体实施方式】
[0038]下面参照附图来详细说明实施方式涉及的存储系统。再有,本发明不受这些实施方式限定。
[0039](第一实施方式)
[0040]图1是表示第一实施方式涉及的存储系统的构成例的图。存储系统I经网络2与一台以上的服务器3连接。
[0041]服务器3是执行预定处理的计算机。服务器3典型地包括处理器、主存储器、通信接口及本机输入输出装置。处理器将各种程序(例如设备驱动程序、操作系统(OS)或应用程序)在主存储器中展开。而且,处理器通过执行在主存储器中展开了的各种程序来实现预定的处理。此外,服务器3作为预定处理的一环能将数据写入存储系统I或从存储系统I读出数据。即、服务器3相对于存储系统I作为主机发挥作用。再有,任意的计算机都能作为存储系统I的主机发挥作用。
[0042]服务器3对存储系统I所进行的I/O访问经由网络2来执行。网络2的方式是任意的。作为网络2可应用例如光纤信道、以太网、SAN(存储区域网络,Storage Area Network)或NAS(网络附加存储,Network Attached Storage)。网络2包括网络交换机、集线器或负载均衡器。
[0043]存储系统I具备多个逻辑存储节点(LMN) 11和一个以上的控制单元(⑶)14。存储系统I能在多个LMNll分散地存储数据。在图1的例子中,各LMNll配置于矩形网格的网格点。各⑶14配置于LMNll排列的外周部。将网格点的坐标用坐标(x、y)表示,配置于网格点的LMNll的位置信息与该网格点的坐标相对应地由逻辑存储节点地址(X、y)表示。此外,在图1的例子中,位于左上角的LMNll具有原点的逻辑存储节点地址(0、0),通过使各LMNll在横向(X方向)和纵向(Y方向)上移动而能使逻辑存储节点地址以整数值增减。下面,将逻辑存储节点地址记为LMNA。再有,各⑶14也可以具有LMNA。例如,与原点的LMNll连接的两个⑶14中,在X方向上连接的⑶14也可以具有LMNA ( - 1、0),在Y方向上连接的CU14也可以具有LMNA (O、-1)。
[0044]各LMNll具备两个以上输入输出端口 16。各LMNll经由输入输出端口 16与在两个以上的不同方向上相邻的LMNll连接。在图1中,左上角的由LMNA (0、0)所示的LMNll分别与在X方向上相邻的由LMNA (1、0)表示的LMNll和在与X方向不同的方向即Y方向上相邻的由LMNA (0、1)表示的LMNll连接。此外,在图1中,由LMNA (1、I)表示的LMNll与在互不相同的四个方向上相邻的由LMNA (1、0)、(0、1)、(2、1)及(1、2)分别表示的四个LMNll连接。
[0045]在图1中,表示为各LMNll配置于矩形网格的网格点,但是,各LMNll的配置方式不限于该例。即、只要配置于网格点的各LMNll只要能与在两个以上的不同方向上相邻的LMNll连接即可,则网格的形状也可以是例如三角形、六边形等。此外,在图1中,各LMNll按二维图形配置,但是,各LMNll也可三维配置。在三维配置LMNll的情况下,能以(x、y、z)这三个值来指定各LMN11。此外,在LMNll 二维配置的情况下,也可以通过将位于对边的LMNll彼此连接而将LMNll环状地连接。
[0046]图2是表示LMNlI的构成的一例的图。LMNlI包括三个物理存储节点(PMN)21_0?21-2。通过地址IPMNA来分别识别构成同一 LMNll的PMN21_0、PMN21_1及PMN21-2。此处,向 PMN21-0 分配 IPMNA = 0,向 PMN21-1 分配 IPMNA = 1,向 PMN21-2 分配 IPMNA = 2。下面,有时将PMN21-0?PMN21-2统称记为PMN21。
[0047]PMN21-0、PMN21_1及PMN21-2在X方向上以该顺序配置。在X方向上相邻的任意两个PMN21不管它们属于同一LMNll还是属于互不相同的LMNll都经由输入输出端口 16连接。属于在X方向上相邻的两个LMNll的每个的三个PMN21经由输入输出端口 16而一对一地连接。具体地,属于在X方向上相邻的两个LMNll的每个的PMN21-0经由输入输出端口 16而互相连接。属于在X方向上相邻的两个LMNll的每个的PMN21-1经由输入输出端口 16而互相连接。属于在X方向上相邻的两个LMNll的每个的PMN21-2经由输入输出端口 16而互相连接。这样,各PMN21分别在两个以上的不同方向上相互连接,且与其他PMN21一同构成多个LMNll中的一个。
[0048]再有,图1所示的LMNll的配置也可以是逻辑配置,物理配置也不一定要如此。此外,图2所示的PMN21的配置也可以是逻辑配置,物理配置也不一定要如此。此外,PMN21-0?PMN21-2也可在Y方向上配置而不在X方向上。另外,虽然设为在X方向上相邻的三个PMN21构成一个LMNll而进行说明,但是,也可以使得互不相邻的三个或三个以外的多个PMN21构成一个LMNlI。
[0049]此外,LMNll可存储冗余数据。具体地,LMNll在PMN21-0?PMN21-2中的一部分(第一物理存储节点)存储从外部写入的数据(第一数据),且在PMN21-0?PMN21-2中的与第一物理存储节点不同的第二物理存储节点存储作为第一数据的冗余数据的第二数据。此处,作为冗余数据的存储方式,设为PMN21-0?PMN21-2构成RAID5而进行说明,但是,PMN21-0?PMN21-2也可以构成RAID5以外的存储方式(例如RAIDO、RAID2、RAID6、RAID-Z或里德所罗门(Reed Solomon)码)。
[0050]图3是表示PMN21的物理配置的一例的图。PMN21安装于存储节点基板(刀片基座)22上,刀片基座22以能装拆的方式安装于基板23上。在一片刀片基座22上,三个PMN21在Y方向上配置安装。而且,属于同一 LMNll的三个PMN21分别属于不同的多片刀片基座22。PMN21之间经由基板布线24、25、26互相电连接。再有,基板布线24、25、26具备输入输出端口。在同一刀片基座22上安装的三个PMN21中的相邻的任意两个PMN21,经由刀片基座22上的基板布线24而互相连接。属于不同刀片基座22的在X方向上相邻的任意两个PMN21,经由基板布线25而互相连接。再有,虽然未图示,但是,在Y方向上也配置了多片刀片基座22。属于不同的刀片基座22的在Y方向上相邻的任意两个PMN21,经由基板布线26而互相连接。基板布线25、26具备能装拆的连接器,刀片基座22从基板23的装拆能通过连接器的作用来实现。
[0051]属于同一 LMNll的PMN21分别配置于不同的刀片基座22且构成RAID5。因此,即使在更换了刀片基座22的的情况下,在安装于旧刀片基座22的PMN21中所存储的数据也能基于在构成RAID5的其他PMN21中所存储的数据来复原,并将其存储到安装于新刀片基座22的PMN21中。因此,在一个PMN21有故障的情况下,通过更换安装有发生了故障的PMN21的刀片基座22,就能不损失在存储系统I中所存储的数据地继承数据。在本实施方式中,采用了 RAID5,因此能应对在同一 LMNll中有一个PMN21故障的情况。再有,在采用RAID6的情况下,能应对在同一 LMNll中同时有至多两个PMN21发生故障的情况。
[0052]如图1所示,各⑶14经由输入输出端口 16与LMNll (更具体地,为构成LMNll的PMN21)连接。此时,在LMNll彼此的通信标准和⑶14的通信标准不同的情况下,可在两者间设置适配器。在图1的例子中,⑶14在配置各LMNll的二维正方网格的X方向及Y方向中的每个方向的一端分别连接。再有,在X方向上连接的⑶14既可以连接于构成LMNll的三个PMN21也可以连接于构成LMNll的三个PMN21中的一个。
[0053]⑶14根据来自服务器3的请求而生成PMN21能传输能执行的数据包形式的指令。接着,⑶14发出生成的指令。具体地,⑶14将生成的指令发送到与该⑶14连接的PMN21。例如,CU14在从服务器3接收到访问请求(读出请求或写入请求)时生成用于执行所请求的访问的指令。对于CU14生成的指令将在后面描述。再有,服务器3也可以发出与CU14发出的指令相同形式的指令,CU14将服务器3发出的指令传输到与该CU14连接的PMN21。
[0054]接收到指令的PMN21基于预定的传输算法(后述)从与该PMN21相邻的PMN21中确定传输目的地的PMN21,从而在PMN21之间传输该指令并将送到收件方的PMN21。此外,PMN21能基于传输算法来确定路径目的地以绕过发生故障或繁忙的PMN21。
[0055]图4是表示⑶14的构成的一例的图。⑶14具备微处理器(MPU) 110、成为主存储器的随机存取存储器(RAM)120、第一接口装置140和第二接口装置150。第一接口装置140用于与网络2通信。第二接口装置150用于与PMN21通信。MPU110、RAM120、第一接口装置140和第二接口装置150互相之间由BUS130连接。⑶14发出数据包形式的指令。⑶14发出的指令,作为表示访问目的地的信息至少包括指定LMNl I中的一个的LMNA和指定分配给每个LMNll且能从外部指定的存储器空间内的位置的LMN_LBA。
[0056]再有,例如,⑶14也可以通过存储按每个LMNll来管理PMN21的坐标的表从而执行构成LMNll的PMN21的动态改变。在有因物理故障而变得不能访问的PMN21的情况下,⑶14通过用发生了故障的PMN21和存储系统I内的空PMN21来将LMNll的分配逻辑重组,存储系统I就能不进行刀片基座22的更换地继续使用。
[0057]图5是表示PMN21的构成的一例的图。PMN21具备控制器200和作为存储用存储器的NAND存储器300。再有,作为存储存储器,除了 NAND存储器300之外,也可使用BiSC存储器(Bit Cost Scalable Memory)、磁阻存储器(MRAM)、相变存储器(PcRAM)或电阻变化型存储器(RRAM (注册商标))等。
[0058]NAND存储器300包括四个NAND存储器芯片(die,芯片)301。各NAND存储器芯片301具备提供存储区域的存储器单元阵列。控制器200和NAND存储器芯片301通过一个至多个1信道和一个至多个芯片选通信号而电连接。在本实施方式中,由于PMN21具备两对1信道(chO、chi)和两对芯片选通信号(CEO、CEl),控制器200能分别独立地选择四个NAND存储器芯片301。再有,NAND存储器芯片301也可以通过例如LUN等那样的地址信号来选择。控制器200通过控制多个1信道及多个片选通信号,能并行访问多个NAND存储器芯片301。
[0059]控制器200连接四个输入输出端口 16。控制器200经由输入输出端口 16从⑶14或其他PMN21接收数据包或经由输入输出端口 16向⑶14或其他PMN21发送数据包。控制器200在接收到的数据包的接收地址是自身PMN21的情况下执行根据该数据包(在该数据包所记录的指令)的处理。例如,在指令是访问指令(读出指令或写入指令)的情况下,控制器200执行对于NAND存储器300的访问。
[0060]图6是表示PMN21的封装构成的一例的图。控制器200包括一个芯片。而且,控制器200和各NAND存储器300堆叠并且用树脂封装成一个封装体。即、各PMN21分别构成为单独的封装件。
[0061]图7是表示着眼于存储器构成的PMN21的构成的一例的图。控制器200具备CPU210及随机存取存储器(RAM) 220。NAND存储器300具备FW区域310、管理区域320及数据区域330。再有,确保各区域310?330在哪个NAND内衬芯片301的存储区域内,是任意的。FW区域310预先存储固件程序311。管理区域320存储该PMN21所属的LMNll的LMNA321、分配给该PMN21的IPMNA322、元数据323和转换算法324。
[0062]CPU210通过执行固件程序311来实现控制器200的功能。控制器200的功能包括例如数据包的发送接收、指令的执行、写入NAND存储器300的数据的ECC代码化、从NAND存储器300读出的数据的ECC译码化、耗损平衡(wear levelling)及压缩。再有,ECC码的方式是任意的。例如,可采用循环冗余校验(Cyclic Redundancy Check,CRC)码、博斯-乔赫里_霍克文黑姆(Bose-Chaudhur1-Hocquenghem, LDPC)码。此外,在本实施方式中,CPU210可实现利用RAID5的纠错。
[0063]RAM220用作相对于NAND存储器300读出/写入的数据的缓冲器、发送接收的数据包的缓冲器、固件程序311的展开区域或各种管理信息(LMNA321、IPMNA322、元数据323及转换算法324)的展开区域。再有,RAM220也可作为控制器200的外部存储器而装备在PMN21 内。
[0064]LMNA是用于从全部LMNl I中唯一确定各LMNl I的识别信息。此外,IPMNA是用于从属于同一 LMNll的全部PMN21中唯一确定各PMN21的识别信息。即、存储系统I所具备的PMN21由LMNA和IPMNA所构成的一对唯一确定。在例如存储系统I初始化时或刀片基座22初次插入时等定时,通过⑶24等在管理区域320储存LMNA321及IPMN322。
[0065]转换算法324是记述用于从在数据包所记述的LMN_LBA转换为IPMNA和PMN_LBA的计算方法的信息。转换算法324至少在属于同一 LMNll的全部PMN21间共用。转换算法324也可以在存储系统11所具备的全部PMN21间共用。LMN_LBA是逻辑性地表示一个LMNl I构成的存储区域内的位置的信息。PMN_LBA是逻辑性地表示一个PMN21构成的存储区域内的位置的信息。元数据323是记录PMN_LBA与物理性地表示NAND存储器300内的位置的信息(物理地址)的对应关系的信息。PMN_LBA与物理地址的关系因写入、删除及耗损平衡而时刻变化。CPU210在每次PMN_LBA与物理地址的关系变化时更新元数据323。
[0066]图8是表示将LMN_LBA转换成物理地址的域名解析的处理的图。CPU210根据转换算法324将LMN_LBA转换为IPMNA和PMN_LBA。在IPMNA和PMN_LBA计算后,CPU210能参照元数据323将PMN_LBA转换为物理地址。
[0067]图9是说明转换算法324的一例的图。在该例中,将LMN_LBA向右方移位计算一位,将通过移位计算而得到的值作为PMN_LBA。此外,根据LMN_LBA的值与PMN_LBA的关系来计算IPMNA。图9的表的列表示PMN_LBA的值,行表示IPMNA的值,各格表示LMN_LBA的值。再有,P (a、b)是根据在LMN_LBA = a的位置存储的数据和在LMN_LBA = b的位置存储的数据计算出的奇偶校验位。下面,将包括LMN_LBA = a(或在LMN_LBA = a的位置存储的数据)和LMN_LBA = b (或在LMN_LBA = b的位置存储的数据)以及存储P (a、b)的位置(或P (a、b))的组记为奇偶校验位组。
[0068]例如,根据图9所示的例子,在由IPMNA = I及PMN_LBA = 2这一对确定的位置,匹配LMN_LBA = 4。在由IPMNA = 2及PMN_LBA = 2这一对确定的位置,匹配LMN_LBA = 5。而且,在由PMN_LBA = 2及IPMNA = O这一对确定的位置,存储根据在LMN_LBA = 4的位置存储的数据和在LMN_LBA = 5的位置存储的数据计算出的奇偶校验位。这样,PMN21通过使用转换算法324,不仅能确定由LMN_LBA指定的位置,还能确定分别储与在由LMN_LBA指定的位置储存的数据同属同一奇偶校验位组的其他数据及奇偶校验位的位置。
[0069]再有,只要能根据LMN_LBA算出存储从外部写入的第一数据的第一物理存储节点内的存储位置和存储该第一数据的冗余数据即第二数据的第二物理存储节点内的存储位置这两者,则转换算法324不限于上述例子。
[0070]接下来,说明第一实施方式的存储系统I的工作。
[0071]图10是表示接收来自⑶14的数据包时的控制器200的工作的流程图。图10所示的控制器200的工作通过CPU210执行固件程序311来实现。为了简单,将控制器200作为工作的主体来说明。
[0072]控制器200若接收到数据包(SI),则判断数据包的目的地是否是自身PMN21所属的LMNll (S2)。具体地,控制器200在记录于数据包的LMNA与存储于管理区域320的LMNA321 一致的情况下,能够在S2判断为是,在两者不一致的情况下,能够在S2判断为否。
[0073]在数据包的目的地不是自身PMN21所属的LMNl I的情况下(S2、否),控制器200根据预先确定的传输算法来确定与自身PMN21相邻的PMN21中的传输目的地的PMN21 (S3)。控制器200基于例如目的地的LMNll或目的地PMN21与自身PMN21所属的LMNll或自身PMN21的位置关系来确定。控制器200例如将位于从自身PMN21到接收地址的LMNll或接收地址的PMN21的传输次数最小的路径上的PMN21确定为传输目的地的PMN21。此外,在与自身PMN21相邻的PMN21中的位于传输次数最小的路径上的PMN21故障或忙碌的情况下,控制器200也可以将其他PMN21确定为传输目的地。在S3的处理后,控制器200向确定出的传输目的地的PMN21传输数据包(S4),并结束工作。
[0074]在数据包的接收地址是自身PMN21所属的LMNll的情况下(S2、是),控制器200基于转换算法324根据LMN_LBA计算出IPMNA及PMN_LBA(S5)。控制器200通过将计算出的IPMNA与存储于管理区域320的IPMNA322进行比较来判断数据包的的接收地址是否是自身PMN21 (S6)。控制器200在两者一致的情况下可在S6判断为是,且在两者不一致的情况下可在S6判断为否。
[0075]在数据包的接收地址不是自身PMN21的情况下(36、否),控制器200执行S3的处理。在数据包的接收地址是自身PMN21的情况下(S6、否),控制器200执行与记录于数据包的指令相对应的处理(S7),并结束工作。
[0076]图11是表示从⑶14发出的写入指令的处理例(第一写入处理)的时序图。再有,每个PMN21由控制器200实现。为了简便,以PMN21-0?PMN21-2为工作的主体来说明。
[0077]首先,PMN21-0接收自身PMN21-0接收地址的写入指令(S11)。在Sll接收的写入指令至少包括确定PMN21-0所属的LMNll的LMNA、LMN_LBA0和DataO。LMN_LBA0通过转换算法324而转换为IPMNA = O和PMN_LBA0。
[0078]接着,PMN21-0将 LMN_LBA0 转换为 IPMNA = O 和 PMN_LBA0(S12)。再有,虽然 S12已在S5中执行完了,但是,为了说明仍将其添加到本图中。
[0079]接着,PMN21-0生成读出指令并发送到PMN21-1 (S13),该读出指令读出与DataO同属同一奇偶校验位组的Datal并且将Datal发送到PMN21-2。此外,PMN21-0生成使奇偶校验位更新的奇偶校验位更新指令并发送到PMN21-2 (SH)0
[0080]再有,PMN21生成的指令也可以与⑶14生成的指令在访问目的地的表现方式上不同。此处,作为一例,PMN21发送的数据包使用LMNA和IPMNA及PMN_LBA来表现访问目的地。按照图9的例子,构成同一奇偶校验位组的各位置的PMN_LBA是共用的。因此,在S13中生成的读出指令至少包括IPMNA = I和PMN_LBA0来作为指定访问目的地的信息。此外,在S14生成的奇偶校验位更新指令至少包括IPMNA = 2和PMN_LBA0来作为指定访问目的地的信息。再有,在构成同一奇偶校验位组的DataO、Datal及表示奇偶校验位P的存储位置的PMN_LBA各不相同的情况下,PMN21-0在S13、S14的处理前基于转换算法324根据LMN_LBA计算出Datal及表示奇偶校验位P的存储位置的PMN_LBA。再有,在S14生成的奇偶校验位更新指令包括DataO。这是因为DataO是奇偶校验位P的计算所需的。
[0081]PMN21-0 在 S13 和 S14 后在 PMN_LBA0 所示的位置写入 DataO (S15)。
[0082]PMN21 -1如果从PMN21 _0接收读出指令则从PMN_LBA0所示的位置读出Datal(S16)。而且,PMN21-1 将 Datal 发送到 PMN21-2 (S17)。
[0083]PMN21-2如果从PMN21-0接收奇偶校验位更新指令并从PMN21-1接收Datal则根据DataO及Datal计算出奇偶校验位P (S18),将计算出的奇偶校验位P以盖写形式写入PMN_LBA0所示的位置(S19)。
[0084]图12是表示来自⑶14的写入指令的其他处理例(第二写入处理)的时序图。S21?S22的处理与Sll?S12的处理分别相同。在S22的处理后,PMN21-0生成奇偶校验位更新指令并发送到PMN21-2 (S23)。而且,PMN21-0在PMN_LBA0所示的位置写入DataO (S24)。
[0085]PMN21-2如果从PMN21-0接收奇偶校验位更新指令则生成读出Datal并将其发送到PMN21-2的读出指令并将该读出指令发送到PMN21-1 (S25)。
[0086]PMN21 -1如果从PMN21 _2接收读出指令则从PMN_LBA0所示的位置读出Datal(S26)。而且,PMN21-1 将 Datal 发送到 PMN21-2 (S27)。
[0087]PMN21-2如果从PMN21-1接收Datal则根据DataO及Datal计算奇偶校验位P(S28),并将计算出的奇偶校验位P写入PMN_LBA0所示的位置(S29)。
[0088]再有,PMN21-2也可以在从PMN21-0接收到奇偶校验位更新指令后、在一定时间后等到接收来自PMN21-1的奇偶校验位更新指令。PMN21-2在等待期间从PMN21-1接收到奇偶校验位更新指令的情况下,能不进行从PMN21-1读出Datal的处理地计算出奇偶校验位P。
[0089]图13是表示来自⑶14的写入指令的其他处理例(第三写入处理)的时序图。S31?S32的处理与Sll?S12的处理分别相同。在S32的处理后,PMN21-0生成奇偶校验位更新指令并发送到PMN21-1(S33)。再有,记录在S33中生成的奇偶校验位更新指令,记录IPMNA=I和PMN_LBA0作为指定访问目的地的信息,并记录DataO。而且,PMN21-0在PMN_LBA0所示的位置写入DataO (S34)。
[0090]PMN21-1如果从PMN21-0接收奇偶校验位更新指令则从PMN_LBA0所示的位置读出Datal (S35)。而且,PMN21-1 根据 DataO 及 Datal 计算奇偶校验位 P(S36)。而且,PMN21-1生成奇偶校验位更新指令并发送到PMN21-2 (S37)。在S37中生成的奇偶校验位更新指令包括IPMNA = 2和PMN_LBA0作为指定访问目的地的信息,且包括奇偶校验位P。即、在S37中生成的奇偶校验位更新指令等同于在PMN_LBA0所示的位置写入奇偶校验位P的写入指令。
[0091]PMN21-2如果从PMN21-1接收奇偶校验位更新指令则将奇偶校验位P写入PMN_LBAO所示的位置(S38)。
[0092]再有,PMN21-1也可以在接收到来自PMN21-0的奇偶校验位更新指令后,在一定时间后等到接收使其写入Datal的来自⑶14的写入指令。PMN21-1在等待期间从⑶14接收到写入指令的情况下、能不进行读出Datal的处理地计算奇偶校验位P。此外,PMN21-1也可以不计算奇偶校验位P而将DataO及Datal发送到PMN21-2,而PMN21-2来计算奇偶校验位P。
[0093]图14是表示来自⑶14的写入指令的其他处理例(第四写入处理)的时序图。S41?S42的处理与Sll?S12的处理分别相同。在S42的处理后,PMN21-0生成读出Datal并发送到PMN21-0的读出指令并将该读出指令发送到PMN21-1 (S43)。而且,PMN21-0在PMN_LBAO所示的位置写入DataO (S44)。
[0094]PMN21 -1如果从PMN21 _0接收读出指令则从PMN_LBA0所示的位置读出Datal(S45)。而且,PMN21-1 将 Datal 发送到 PMN21-0 (S46)。
[0095]PMN21-0如果从PMN21-1接收Datal则根据DataO及Datal运计算奇偶校验位P(S47)。而且,PMN21-0生成奇偶校验位位更新指令并发送到PMN21-2 (S48)。在S48中生成的奇偶校验位位更新指令具备与在S37中生成的奇偶校验位更新指令相同的构成。
[0096]PMN21-2如果从PMN21-0接收奇偶校验位更新指令则以盖写形式将奇偶校验位P写入PMN_LBA0所示的位置(S49)。
[0097]再有,PMN21-0也可以不计算奇偶校验位P而将DataO及Datal发送到PMN21-2,而PMN21-2计算奇偶校验位P。
[0098]如第一?第四写入处理所示,各LMNl I,在PMN_LBA0所示的位置已存储有DataO的情况下,将已存储的DataO更新为写入指令所含的DataO,并根据DataO的更新将所对应的奇偶校验位P更新。此外,如第一?第四写入处理所示,同一 LMNll内的PMN21中的任意PMN21可计算奇偶校验位P。
[0099]再有,存储系统I也可以能够从服务器3接收TRM (删除通知)指令。具体地,如果存储系统I接收TRM指令,则⑶14发出该TRM指令。⑶14发出的TRM指令至少具备LMNA和指定删除目的地的LMN_LBA。TRM指令的目的地的PMN21使记录于元数据342的根据LMN_LBA转换得到的PMN_LBA与物理地址的对应关系无效化。再有,在TRM指令的目的地的PMN21使PMN_LBA与物理地址的对应关系无效化了的情况下,也可以将该情况发送到构成同一奇偶校验位组的其他PMN21,使储存奇偶校验位P的PMN_LBA与储存奇偶校验位P的物理地址的对应关系无效化。
[0100]图15是表示来自⑶14的读出指令的处理例(第一读出处理)的时序图。再有,PMN21-0在读出指令的处理成功了的情况下将读出数据发送到⑶14。此处,对读出指令的处理失败的情况下的处理进行说明。读出指令的处理失败的事例包括例如读出数据的纠错失败的事例。
[0101]首先,PMN21-0接收自身PMN21-0目的地的读出指令(S51)。在S51接收的读出指令至少包括确定PMN21-0所属的LMNll的LMNA和LMN_LBA0。LMN_LBA0通过转换算法324被转换为 IPMNA = O 和 PMN_LBA0。
[0102]接着,PMN21-0将 LMN_LBA0 转换为 IPMNA = O 和 PMN_LBA0(S52)。再有,虽然 S52已在S5中执行完了,但是,为了说明仍将其添加到本图中。
[0103]PMN21-0如果读出指令的处理失败(S53),则生成读出Datal并发送到PMN21-0的读出指令并将该读出指令发送到PMN21-1 (S54)。此外,PMN21-0生成读出奇偶校验位P并发送到PMN21-0的读出指令并将该读出指令发送到PMN21-2 (S55)。
[0104]PMN21 -1如果从PMN21 _0接收读出指令则从PMN_LBA0所示的位置读出Datal(S56)。而且,PMN21-1 将 Datal 发送到 PMN21-0 (S58)。此外,PMN21-2 如果从 PMN21-0 接收读出指令则从PMN_LBA0所示的位置读出奇偶校验位P (S57)。而且,PMN21-2将奇偶校验位P发送到PMN21-0 (S59)。
[0105]PMN21-0如果从PMN21-1接收Datal并从PMN21-2接收奇偶校验位P则根据Datal及奇偶校验位P计算DataO (S60)。而且,PMN21-0将计算出的DataO发送到CU14 (S61)。此外,PMN21-0以盖写形式将计算出的DataO写入PMN_LBA0所示的位置(S62)。
[0106]图16是表示来自⑶14的读出指令的其他处理例(第二读出处理)的时序图。S71?S73的处理与S51?S53的处理分别相同。在S73后,PMN21-0生成用于使数据复原的数据复原指令并发送到PMN21-2 (S74)。在S74生成的数据复原指令至少包括IPMNA = 2和PMN_LBAO来作为指定奇偶校验位并且表示数据复原指令的目的地的信息。此外,在S74生成的数据复原指令也可以包括表示复原对象为存储于PMN21-0的DataO这一内容的信息。
[0107]PMN21-2如果接收数据复原指令则生成读出Datal并发送到PMN21-2的读出指令并将该读出指令发送到PMN21-1 (S75)。而且,PMN21-2从PMN_LBA0所示的位置读出奇偶校验位P (S76)。
[0108]PMN21 -1如果从PMN21 _2接收读出指令则从PMN_LBA0所示的位置读出Datal(S77)。而且,PMN21-1 将 Datal 发送到 PMN21-2 (S78)。
[0109]PMN21-2如果从PMN21-1接收Datal则根据Datal及奇偶校验位P计算DataO(S79),将计算出的DataO发送到CU14 (S80)。此外,PMN21-2将计算出的DataO发送到PMN21-0 (S81)。
[0110]PMN21-0如果从PMN21-2接收DataO则以盖写形式将DataO写入PMN_LBA0所示的位置(S82)。
[0111]再有,PMN21-0可将计算出的DataO发送到⑶14。
[0112]图17是表示来自⑶14的读出指令的其他处理例(第三读出处理)的时序图。S91?S93的处理与S51?S53的处理分别相同。在S93后,PMN21-0生成数据复原指令并发送到PMN21-1 (S94)。在S94生成的数据复原指令至少包括IPMNA = I和PMN_LBA0来作为指定奇偶校验位组并且表示数据复原指令的目的地的信息。
[0113]PMN21-1如果从PMN21-0接收数据复原指令则从PMN_LBA0所示的位置读出Datal(S95)。而且,PMN21-1生成数据复原指令并发送到PMN21-2 (S96)。在S96生成的数据复原指令至少包括IPMNA = 2和PMN_LBA0来作为指定奇偶校验位组并且表示数据复原指令的目的地的信息。此外,在S96生成的数据复原指令包括Datal。此外,在S96生成的数据复原指令也可以构成为包括复原对象是存储于PMN21-0中的DataO这一内容。
[0114]PMN21-2如果从PMN21_1接收数据复原指令则从PMN_LBA0所示的位置读出奇偶校验位P (S97)。而且,PMN21-2根据Datal及奇偶校验位P计算DataO (S98),并将计算出的DataO发送到CU14 (S99)。此夕卜,PMN21-2将计算出的DataO发送到PMN21-0 (SlOO)0
[0115]PMN21-0如果从PMN21-2接收DataO则以盖写形式将DataO写入PMN_LBA0所示的位置(S101)。
[0116]再有,PMN21-0可将计算出的DataO发送到⑶14。此外,如第一?第三读出处理所示那样,各LMNll在DataO的读出失败的情况下,基于与DataO相对应的奇偶校验位P来复原DataO。DataO的复原能由同一 LMNll内的PMN21中的任意PMN21来执行。
[0117]如上所述,根据第一实施方式,各PMN21与其他PMN21—同构成多个LMNll中之一。各PMN21将从服务器3写入的DataO存储于第一 PMN21,且将作为DataO的冗余数据的奇偶校验位P存储于与第一 PMN21不同的第二 PMN21。此外,来自⑶14的指令包括指定一个LMNll的LMNA和表示分配给每个LMNll的存储器空间内的位置的LMN_LBA。各LMNll在LMNA没有指定自身LMNl I的情况下将指令传输到其他LMNl I,在LMNA指定自身LMNl I的情况下,基于LMN_LBA来计算第一 PMN21内的DataO的存储位置并且计算与DataO相对应的奇偶校验位P的第二 PMNll内的存储位置,并在计算出的各存储位置进行与指令相对应的访问。存储系统I能不需要服务器3进行冗余数据的管理就将损失的数据复原,因此,根据第一实施方式,与外部设备执行冗余数据的管理的情况相比,能减少所需的外部资源。此夕卜,由于各LMNll进行冗余数据的管理,因此冗余数据的管理在存储系统I内分散。这样,与将冗余数据的管理集中执行的情况相比,能期待通过扩展(scale out)提高性能。
[0118]再有,在冗余数据的存储方式是RAIDl的情况下,从服务器3写入的数据的复制用作冗余数据。
[0119]此外,各LMNll在指令是读出指令的情况下从第一 PMN21读出DataO,在读出失败的情况下从第二 PMN21读出奇偶校验位P,并使用该奇偶校验位P来复原DataO。这样,存储系统I不需要与服务器3所进行的冗余数据的管理相关地处理就能执行从服务器3写入的数据的复原。
[0120]另外,各LMNll在指令是写入指令的情况下将存储于第一 PMN21的DataO更新,并根据DataO的更新也将存储于第二 PMN21的奇偶校验位P更新。这样,存储系统I不需要与服务器3所进行的冗余数据的管理相关地处理就能执行冗余数据的管理。
[0121 ] 此外,各PMN21基于LMN_LBA计算IPMNA和PMN_LBA,在LMNA和IPMNA所成的对表示自身PMN21的情况下,对于自身PMN21具备的NAND存储器300进行与指令相应的访问。各PMN21在LMNA和IPMNA所成的对不表示自身PMN21的情况下,向与自身PMN21相邻的其他PMN21传输指令。这样,自动传输指令使得其到达存储期望数据的PMN21。
[0122]另外,各PMN21在读出失败的情况或执行写入的情况下,能计算出第二 PMN21内的存储奇偶校验位P的存储位置。根据图9的例子,第二 PMN21内的奇偶校验位P的存储位置与第一 PMN21内的DataO的存储位置相同。这样,各PMN21具备计算冗余数据的存储位置的功能,因此就不需要服务器3所进行的冗余数据的管理。
[0123]此外,构成各LMNll的第一 PMN21和第二 PMN21也可以分别安装于不同的刀片基座22。这样,在一个PMN21有故障的情况下,通过更换安装了有故障的PMN21的刀片基座22就能不损失存储于存储系统I的数据地进行数据的继承。
[0124](第二实施方式)
[0125]图18是表示第二实施方式涉及的存储系统的构成例的图。下面,对与第一实施方式相同的构成要素标注与第一实施方式相同的附图标记并省略重复的说明。
[0126]存储系统4经由网络2与一台以上的服务器3连接。服务器3能将数据写入存储系统4也能将数据从存储系统4中读出。S卩、服务器3相对于存储系统3作为主机发挥作用。再有,任意的计算机都能作为存储系统4的主机发挥作用。服务器3对存储系统4的I/O访问经由网络2来进行。
[0127]存储系统4具备多个存储节点(MN)31和一个以上的控制单元(⑶)14。存储系统4能将数据分散存储在多个丽31中。在图18的例子中,各丽31配置于矩形网格的网格点。各⑶14配置于丽31的排列的外周部。网格点的坐标用坐标(X、y)表示,配置于网格点的MN31的位置信息与该网格点的坐标相对应地由节点地址(x、y)表示。此外,在图18的例子中,位于左上角的丽31具有原点的节点地址(0、0),通过将各丽31在横向(X方向)和纵向(Y方向)上移动从而使节点地址(NA)以整数值来增减。再有,各⑶14也可具有NA。例如,在与原点的丽31连接的两个⑶14中,在X方向上连接的⑶14可以具有NA ( - 1、0),在Y方向上连接的⑶14可以具有NA (O、-1)。下面,有时将由NA (xD、yD)表示的丽31记为MN (xD、yD)。
[0128]再有,各丽31的配置方式与第一实施方式的各LMNll的配置方式同样地,不仅限于在二维的矩形网格的网格点上配置的方式。此外,为了简便,设为丽31不构成LMN11,进行说明。再有,通过分别地将节点地址替换为LMNA且将后述的数据地址替换为LMNA和LMN_LBA的组合,即使在如第一实施方式那样构成了 LMNll的情况下,也第二实施方式能适用。
[0129]各丽31具备两个以上输入输出端口 16。各丽31经由输入输出端口 16而与在两个以上的不同方向上相邻的丽31或⑶14连接。MN (0、0)与MN (1、0)、(O、I)及两个CU14连接。
[0130]在第二实施方式中,服务器3能用任意的文字列(关键字,key)来指定数据。在服务器3使用与在存储系统4的内部使用的地址体系(后述的数据地址的表记方法)不同的独立的地址体系对存储系统4指定数据的情况下,将服务器3使用的地址用作关键字。关键字在CU14中被散列化(hash),散列化了的关键字被转换为能确定MN31和该MN31所具备的存储区域内的位置的地址(下面称为数据地址)。再有,将已散列化的关键字简记为关键字。使用转换表将关键字转换为数据地址。
[0131]图19及图20是表示转换表的构成例的图。转换表343被分割为多个。分割为多个的转换表343构成树结构的连接关系。最下层的转换表343 (叶节点的转换表343)记录关键字和数据地址的对应关系。除了最下层的转换表343之外的转换表343,记录抽象化了的关键字与存储子节点的转换表343的MN31的节点地址的对应关系。上层侧的转换表343记录有比下层侧的转换表343更抽象化的关键字。上层侧的转换表343通过按每个抽象化的关键字具备项(entry)从而能以较少的项数来管理较多的关键字。下层侧的转换表343被分割为多个,而将每个转换表343的项数降低到预定值以下。
[0132]根据图19及图20的例子,各转换表343以三层的树结构的连接关系互相连接。将根节点的转换表343设为第O层的转换表,并向下层侧以整数值来增加层值。第O层的转换表中记录最抽象化的关键字与存储第I层转换表的节点地址的对应关系。此处,抽象化是将关键字向右移位计算。移位计算的迁移量越多则越抽象化。第I层转换表中记录中等程度抽象化的关键字与存储第2层转换表的节点地址的对应关系。第2层转换表中记录完全没有抽象化的关键字与数据地址的对应关系。下面,有时将把第O层的转换表记为RootK2K、将第O层转换表所记录的关键字记为根关键字(Root key)。此外,有时将第I层转换表记为2nd K2K、将第I层转换表所记录的关键字记为第二关键字(2nd key)。另外,有时将第2层转换表记为K2A。
[0133]再有,只要是能确定存储系统4内的MN31中的各丽31和每个丽31的存储器空间内的位置这两者的信息,则数据地址是任意的。例如,数据地址包括节点地址和逻辑或物理地表示每个丽31的NAND存储器300内的位置的节点内地址。此处,节点内地址是逻辑地表示每个丽31的NAND存储器300内的位置的地址,在丽31中基于元数据323而被转换为NAND存储器300内的物理地址。
[0134]图21是表示存储转换表的MN31的图。如上所述,在转换表层次化了的情况下,访问将集中在存储Root K2K的丽31。在第二实施方式中,为了使对于存储Root K2K的丽31的访问分散,而将Root K2K多重化,各Root K2K分别存储于不同的MN31。存储Root K2K的多个丽31分别预先确定并固定为特定的丽31。多重化了的各Root K2K互相同步。再有,同步的方式是任意的。既可以在预定的定时将全部Root K2K锁定以进行Root K2K间的同步处理,也可以不锁定任一 Root K2K地在Root K2K间进行同步处理。根据本图的例子,在 MN (0、0)、ΜΝ (4、0)及 MN (0、2)存储相同的 Root K2K。
[0135]图22是表示着眼于存储器构成的第二实施方式的丽31的构成的一例的图。丽31具备控制器200和作为存储存储器的NAND存储器300。控制器200具备CPU210及RAM220。
[0136]NAND存储器300具备FW区域310、管理区域340及数据区域330。Fff区域310预先存储由CPU210执行的固件程序311。管理区域340存储自身节点地址341、上层节点地址342、转换表343和元数据323。自身节点地址341是分配到自身丽31的节点地址。上层节点地址342是表示存储自身丽31存储的转换表343的父节点的转换表343的节点地址。
[0137]再有,本图示出了存储2nd 1(21(或1(24的丽31的构成。由于Root K2K是根节点的转换表343,因此存储Root K2K的丽31在管理区域340不存储上层节点地址342。此外,不存储转换表343的MN31在管理区域340不存储上层节点地址342。
[0138]图23是表示来自⑶14的读出指令的第二实施方式的处理例的时序图。此处,在存储Root K2K的MN31标注标记31-0,在存储2nd K2K的MN31标注标记31-1,在存储K2A的MN31标注标记31-2,从而将存储层次不同的转换表的多个MN31互相区别开。
[0139]首先,⑶14将MN31-0作为目的地来发送读出指令(S201)。再有,在S201发送的读出指令包括作为表示目的地的信息的节点地址NAl和关键字。节点地址NAl是分配给多个MN31-0中的一个的节点地址。此外,虽然在S201发送的读出指令包括节点地址NAO来作为表示发送源的信息,但是,此处省略。节点地址NAO是分配给该读出指令的发送源的CU14的节点地址。再有,⑶14确定多个丽31-0中的一个目的地的丽31-0的方式是任意的。
[0140]再有,各丽31在接收了指令的情况下,通过将目的地的节点地址或数据地址与自身节点地址341进行比较,来判断自身丽31是否是指令的目的地。在目的地由数据地址表示的情况下,各丽31根据目的地的数据地址来计算节点地址,并将计算出的节点地址与自身节点地址341进行比较。各丽341在自身不是目的地的情况下向与自身相邻的丽31发送该指令。在节点地址表示物理的配置位置的情况下,根据目的地的节点地址和自身节点地址341之间的位置关系来确定传输目的地的丽31。例如,各丽31确定传输目的地的丽31以使得从自身到目的地的丽31的指令的传输次数最小。此外,各丽31在从自身到目的地的丽31的指令的传输次数最小的丽31故障或忙碌的情况下,以绕过该丽31的方式来确定传输目的地的丽31。
[0141]被分配了节点地址NA I的MN31 -O,如果接收从⑶14发送的读出指令则通过利用关键字来检索Root K2K从而取得节点地址NA2 (S202)。而且,MN31-0将目的地改写为节点地址NA2并发送读出指令(S203)。
[0142]被分配了节点地址NA2的丽31 -1,如果接收从丽31 -O发送的读出指令则通过利用关键字来检索2nd K2K从而取得节点地址NA3 (S204)。而且,丽31-0将目的地改写为节点地址N3并发送读出指令(S205)。
[0143]被分配了节点地址NA3的MN31 -2,如果接收从MN31 -1发送的读出指令则通过利用key来检索K2A从而取得数据地址DA (S206)。而且,MN31-2将目的地改写为数据地址DA并发送读出指令(S207)。
[0144]由数据地址DA确定的丽31,如果从丽31-2接收读出指令则从数据地址DA所示的位置读出DataO (S208)。而且,由数据地址DA确定的丽31将⑶14作为目的地而发送DataO (S209)。
[0145]图24是表示来自⑶14的写入指令的第二实施方式的处理例的时序图。首先,⑶14以一个MN31-0为目的地而发送写入指令(S211)。再有,在S211发送的写入指令包括作为表示目的地的信息的节点地址NA1、关键字和写入数据DataO。
[0146]被分配了节点地址NAl的MN31-0,如果接收从⑶14发送的写入指令则通过利用关键字来检索Root K2K从而取得节点地址NA2 (S212)。而且,MN31-0将目的地改写为节点地址NA2并发送写入指令(S213)。
[0147]被分配了节点地址NA2的MN31-1,如果接收从MN31-0发送的写入指令则通过利用关键字来检索2nd K2K从而取得节点地址NA3 (S214)。而且,MN31-1将目的地改写为节点地址NA3并发送写入指令(S215)。
[0148]被分配了节点地址NA3的丽31-2,如果接收从丽31_1发送的写入指令则通过利用关键字来检索K2A从而取得数据地址DA (S216)。而且,MN31-2将目的地改写为数据地址DA并发送写入指令(S217)。再有,在S217发送的写入指令也可以包括作为表示发送源信息的节点地址NA3。
[0149]由数据地址DA确定的丽31,如果接收从丽31-2发送的写入指令则在数据地址DA所示的位置写入DataO (S218)。而且,由数据地址DA确定的丽31,将S217的发送写入指令的丽31-2作为目的地而发送表示正确接收了 DataO这一内容的信息即ACK (S219)。
[0150]再有,由数据地址DA确定的丽31,在写入目的地的节点内地址变化并且/或者存储容量变得不足的情况下,可将S217的发送写入指令的MN31-2作为接收目的目而发送该内容的通知。接收了通知的丽31-2也可以将DataO分割并将分割了的DataO的一部分发送到由数据地址DA确定的丽31,并将其他部分发送到其他丽31。此外,接收了通知的丽31-2也可以将DataO发送到丽31。接收了通知的丽31_2在DataO的写入目的地的数据地址改变了的情况下,根据数据地址的改变来更新K2A。另外,MN31-2在分割了 DataO并/或指定了新的关键字的情况下,也能新制作K2A的项。在新制作项的情况下,K2A的项数将增加。
[0151]图25是表示转换表的项数达到预定值的情况下的处理的时序图。此处,说明了K2A的项达到预定值的情况下的处理,但是,在2nd K2K的项达到预定值的情况下也能执行同样的处理。
[0152]如果K2A的项数达到预定值(S221),则MN31-2选择项0(S222)。项O是构成K2A的项中的分割对象的项。再有,分割对象的项可选择多个。
[0153]接着,MN31-2通过参照上层节点地址342来取得节点地址NA2(S223)。MN31-2生成分割委托指令并以节点地址NA2为目的地而发送(S224)。在S224中生成的分割委托指令包括项O。
[0154]被分配了节点地址NA2的丽31-1,如果接收分割委托指令则确定新存储K2A的丽31 (S225)。再有,确定新存储K2A的丽31的方式是任意的。例如,从未存储转换表的丽31中确定新存储K2A的丽31。将确定的丽31的节点地址设为NA5。
[0155]接着,丽31-1新生成包含项O的K2A (S226)。而且,丽31-1在被分配了节点地址NA5的丽31的管理区域340中生成登记指令并发送,该登记指令分别存储节点地址M2来作为上层节点地址342并存储在S226中生成的K2A来作为转换表343 (S227)。
[0156]接着,MN31-1更新2nd K2K(S228)。而且,被分配了节点地址NA5的MN31在自身具备的管理区域340中分别存储节点地址NA5作为上层节点地址342并存储发送来的K2A作为转换表343 (S229)。下面,被分配了节点地址NA5的丽31作为存储K2A的丽31发挥作用。
[0157]这样,在转换表343的项溢出的情况下,将溢出的转换表343中的一部分分割并将它们分别存储于不同的MN31中。再有,溢出的转换表343的分割也可以执行溢出的转换表343的父节点的转换表343。再有,2nd K2K在S228中还添加项。
[0158]在内部节点的转换表343 (此处,为2nd K2K)溢出的情况下,也与K2A溢出的情况同样地,将溢出的2nd K2K分割并分别存储于不同的MN31。如果内部节点的转换表343被分割,则需要改变由存储该分割后的转换表343的子节点的转换表343的MN31所设定的上层节点地址342。上层节点地址342的改变,例如通过存储分割后的转换表343的MN31向分割后的转换表343的子节点的转换表343发送使管理区域340内的信息更新的登记更新指令来执行。此外,上层节点地址342的改变也可以通过存储分割后的转换表343的父节点的转换表343的MN31向分割后的转换表343的子节点的转换表343发送登记更新指令来执行。
[0159]图26是表示执行读出处理时的读出指令的传输路径的图。如果从服务器3输入数据读出的要求则⑶14生成以丽(4、0)为目的地的读出指令并传输到丽(3、0)。丽(3、O)接收的读出指令被传输到MN (4、0)。MN (4、0)基于读出指令所包括的关键字来确定存储2nd K2K的丽(2、1)。而且,丽(4、0)将读出指令的目的地改写为丽(2、1)并传输到MN (3、0)。MN (3、0)再次接收的读出指令经由MN (2、0)被传输到MN (2、1)。MN (2、1)基于读出指令所含的关键字来确定存储K2A的MN (3、2)。而且,丽(2、1)将读出指令的目的地改写为MN (3、2)并发送到MN (2、2)。MN (2、2)接收的读出指令被传输到MN (3、2)。MN(3、2)基于读出指令所含的关键字来确定数据地址。而且,MN (3、2)将读出指令的目的地改写为确定了的数据地址并传输到丽(4、2)。MN (4、2)接收的读出指令被传输到丽(5、2)。MN (5、2)从数据地址所示的位置读出数据。
[0160]图27是表示执行读出处理时的数据的传输路径的图。MN (5、2)将读出指令的发送源的⑶14作为目的地而将读出了的数据发送到丽(4、2)。MN (4、2)接收的数据按顺序经由丽(3、2)、丽(3、1)及丽(3、0)而传输到读出指令的发送源的⑶14。⑶14将接收的数据发送到服务器3。读出了的数据的传输路径也可以不沿着读出指令的传输路径,且也可以不经由丽(4、0)和/或存储2nd K2K的丽(2、1)和/或存储K2A的丽(3、2)。此外,MN (5,2)也可以以不是读出指令的发送源的⑶14为目的地而发送读出了的数据。
[0161]执行写入处理时的写入指令的传输路径与读出指令的传输路径相同,因此省略说明。
[0162]图28是表示执行写入处理时的ACK的传输路径的图。如图所示,MN (5、2)在数据地址所示的位置写入数据后、生成以MN (3、2)为目的地的ACK并发送到丽(4、2)。丽(4、2)接收的ACK被传输到丽(3、3)。或者,丽(5、2)也可以以⑶14为目的地而发送ACK,此时ACK也可以不经由丽(3、2)。
[0163]如上所述,根据第二实施方式,记录了关键字与数据地址的对应关系的转换表343,被分割为构成树结构的连接关系的多个转换表343,分割后的多个转换表343分别存储于不同的丽31。存储转换表343的各丽31,如果接收以自身丽31为目的地的指令则利用指令所含的关键字在转换表343进行搜索,并以搜索到的地址为目的地而传输指令。此处,根节点的转换表343被复制为多个并分别存储于不同的MN31。CU14将存储根节点的转换表343的MN31-0中之一作为最初的目的地而发送指令。这样,服务器3能通过指定关键字的一次I/O访问来访问存储于存储系统4中的数据。即、与服务器3对于存储系统4在进行了用于将关键字转换为数据地址的I/O访问后、对转换出的数据地址进行I/O访问的情况相比,能降低服务器3与存储系统4之间的I/O访问的次数。即、根据第二实施方式,降低网络2的负荷,因此能减少所需的外部资源。此外,由于分散地执行从关键字向数据地址转换,因此与集中执行转换的情况相比能期待通过扩展来提高性能。
[0164]此外,根据第二实施方式,根节点的转换表343多重化而分别存储于不同的MN31,因此与根节点的转换表343未多重化的情况相比,能使对于存储根节点的转换表343的丽31-0的访问分散。因此,可抑制由对存储根节点的转换表343的丽31-0集中访问所导致的性能下降。此外,具有树结构的连接关系的多个转换表343分别分散存储在不同的MN31中,因此由多个MN31分散地执行搜索数据地址的处理。因此,提高了数据地址的搜索能力。
[0165](第三实施方式)
[0166]已知有例如如B树那样层的深度变化的树结构。在树结构的根节点的等级(order)(等级等于项数)达到预定值的情况下,将根节点分割开而使层的深度仅增加一层。根据第三实施方式,转换表层次化为多层,并且转换表的层的深度可变地构成。再有,第三实施方式的存储系统所具备的构成要素除了检索表的构成之外都与第二实施方式相同。此处,使用与第二实施方式的构成要素相同的名称及标记来说明。
[0167]图29是表不第三实施方式的转换表的构成例的图。根据第三实施方式,在确定的MN31存储表示存储Root K2K的MN31-0的节点地址的根指针(Root pointer)的列表。根指针的列表被复制多份并分别存储于不同的MN31。存储根指针的多个MN31分别预先确定并且固定于特定的丽31。再有,将Root K2K多重化并将各Root K2K分别存储于不同的丽31(MN31-0)。此外,在第三实施方式中,MN31-0将存储根指针的MN31中的至少一个节点地址即上层节点地址342存储于管理区域340。
[0168]图30是表示Root K2K的项数达到预定值的情况下的处理的时序图。此处,通过在存储根指针的丽31标注标记31-3而区别为存储转换表的丽31和不存储转换表的丽31。
[0169]首先,MN31-0如果Root K2K的项数超过预定值(S301),则通过参照上层节点地址342来取得节点地址NA6(S302)。丽31-0生成以节点地址NA6为表示目的地的信息的分割委托指令并发送(S303)。在S303中生成的分割委托指令包括Root K2K。节点地址NA6是分配到MN31-3中之一的节点地址。再有,被分配了节点地址NA6的MN31-3存储的根指针,在该时间点表示节点地址NAl。
[0170]被分配了节点地址NA6的MN31-3如果接收分割委托指令则分别确定新存储RootK2K的MN31和新存储2nd K2K的MN31 (S304)。将新存储Root K2K的MN31的节点地址设为NA7,并将新存储2nd K2K的MN31的节点地址设为NA8。
[0171]接着,MN31-3将Root K2K分割为两个2nd K2K (S305),并新生成反映了该分割的Root K2K (S306)。而且,MN31-3将被分配了节点地址NA7的MN31及被分配了节点地址NA8的MN31作为目的地而分别发送登记指令(S307、S308)。此外,MN31-3将MN31-0作为目的地而发送登记更新指令(S309)。发送到被分配了节点地址NA7的MN31的登记指令,是分别存储节点地址NA6来作为上层节点地址342、并存储在S306中新生成的Root K2K来作为转换表343的指令。发送到被分配了节点地址NA88的MN31的登记指令,是分别存储节点地址NA7来作为上层节点地址342、并存储在S305中生成的两个2nd K2K中的一个来作为转换表343的指令。在S309生成的登记更新指令是分别将上层节点地址342更新为节点地址NA7且将转换表343更新为在S305中生成的两个2nd K2K中的另一个的指令。
[0172]接着,MN31-3将根指针从节点地址NAl更新为节点地址NA7 (S310)。
[0173]被分配了节点地址NA7的丽31如果接收登记指令则在自身具备的管理区域340分别存储节点地址NA6来作为上层节点地址342且存储发送来的Root K2K来作为转换表343(S311)。在后面,被分配了节点地址NA7的丽31作为存储Root K2K的丽31发挥作用。
[0174]被分配了节点地址NA8的丽31如果接收登记指令则在自身具备的管理区域340分别存储节点地址NA7来作为上层节点地址342且存储发送来的2nd K2K来作为转换表343 (S312)。在后面,被分配了节点地址NA8的丽31作为存储2nd K2K的丽31发挥作用。
[0175]MN31-0如果接收登记更新指令则分别将上层节点地址342从节点地址NA6更新为节点地址NA7且将转换表343从Root K2K更新为2nd K2K (S313)。在后面,MN31-0作为存储2nd K2K的Mn31发挥作用。
[0176]这样,根据第三实施方式,表示存储根节点的转换表343的丽31-0的根指针多重化、并分别存储于不同的MN31-3。这样,存储系统4将能使用具有如B树那样层数变化的树结构的连接关系的多个转换表343来进行数据地址的检索。此外,由于根指针多重化并分别存储于不同的丽31-3,因此能使对存储根指针的丽31-3的访问分散,所以能抑制对丽31-3访问集中所导致的性能下降。
[0177]另外,MN31-3在Root K2K的项数达到预定数量时将Root K2K分割为多个2nd K2K并且生成新的Root K2K,并将分割出的各2nd K2K和新生成的Root K2K分别存储于不同的丽31。这样,存储系统4能改变多个转换表343构成的树结构的层数。
[0178]再有,第二实施方式或第三实施方式的存储系统4也可以构成为能在同一层的转换表343之间进行项的转移。例如,存储第i层的转换表343的MN21将项发送到存储父节点的转换表343的丽21。接收了项的丽21从存储自身Mn21所存储的转换表343的子节点的转换表343的多个MN21中选择一个,并将登记更新指令发送到所选择的MN21并追加项。此外,存储第i层的转换表343的MN21可监视子节点的多个转换表343并从一个子节点的转换表343将删除,而在其他子节点的转换表343中所述删除了的项。
[0179]虽然说明了本发明的几个实施方式,但是,这些实施方式仅为示例,并不用于限定本发明的范围。这些新实施方式能以其他各种方式来实施,在不脱离发明主旨的范围内可进行各种省略、替换、改变。这些实施方式和/或其变形包含于发明的范围和/或主旨内,并且包含于技术方案所记载的发明及其等同的范围内。
【权利要求】
1.一种存储系统,其特征在于,具备: 多个存储节点,其在两个以上的不同方向上互相连接;和 连接单元,其根据来自外部的请求而发出指令, 通过将存储节点分配到一个逻辑存储节点从而构筑出多个逻辑存储节点,该存储节点包括:一个以上的第一存储节点,其存储由所述指令所确定的访问对象的数据;和第二存储节点,其存储在所述一个以上的第一存储节点所存储的数据的冗余数据, 所述指令包括:第一地址,其指定所述多个逻辑存储节点中的一个节点;和第二地址,其指定被分配到每个逻辑存储节点的存储器空间内的存储位置, 接收了所述指令的存储节点,在所述第一地址与被分配了接收了所述指令的存储节点的第一逻辑存储节点的地址不一致的情况下,将所述指令向与接收了所述指令的存储节点相邻且被分配到了不同于所述第一逻辑存储节点的逻辑存储节点的存储节点传输。
2.根据权利要求1所述的存储系统,其特征在于, 接收了所述指令的存储节点,在所述第一地址与所述第一逻辑存储节点的地址一致的情况下,基于所述第二地址来计算第一存储位置和第二存储位置,该第一存储位置是被分配到所述第一逻辑存储节点的所述一个以上的第一存储节点中的存储成为由所述指令所确定的访问对象的数据的位置,该第二存储位置是在被分配到所述第一逻辑存储节点的所述第二存储节点中存储与在所述第一存储位置所存储的数据相对应的冗余数据的位置。
3.根据权利要求2所述的存储系统,其特征在于, 接收了所述指令的存储节点,在所述第一存储位置位于接收了所述指令的存储节点的情况下,对所述第一存储位置进行与所述指令相应的访问。
4.根据权利要求3所述的存储系统,其特征在于, 在所述一个以上的第一存储节点的存储节点个数大于等于两个且所述第一存储位置不位于接收了所述指令的存储节点的情况下,接收了所述指令的存储节点将包含于被分配到所述第一逻辑存储节点的所述一个以上的第一存储节点且不同于接收了所述指令的存储节点的存储节点作为目的地、传输所述指令。
5.根据权利要求3所述的存储系统,其特征在于, 接收了所述指令的存储节点,在所述第一存储位置位于接收了所述指令的存储节点且所述指令是读出指令的情况下,从所述第一存储位置读出第一数据,在读出失败的情况下,被分配到所述第一逻辑存储节点的所述第二存储节点利用从所述第二存储位置读出的第二数据将所述读出失败的所述第一数据复原。
6.根据权利要求5所述的存储系统,其特征在于, 被分配到所述第一逻辑存储节点的所述第二存储节点以所述连接单元为目的地而发送包括所述复原了的数据的信息。
7.根据权利要求3所述的存储系统,其特征在于, 接收了所述指令的存储节点,在所述第一存储位置位于接收了所述指令的存储节点且所述指令是写入指令的情况下,更新存储于所述第一存储位置的第一数据,并以被分配到所述第一逻辑存储节点的所述第二存储节点为目的地而发送用于更新与所述第一数据相对应的冗余数据的指令。
8.根据权利要求7所述的存储系统,其特征在于, 被分配到所述第一逻辑存储节点的所述第二存储节点,在接收了用于更新与所述第一数据相对应的冗余数据的指令的情况下,计算与所述第一数据相对应的冗余数据并将计算结果存储于所述第二存储位置。
9.根据权利要求3所述的存储系统,其特征在于, 接收了所述指令的存储节点,在所述第一存储位置位于接收了所述指令的存储节点且所述指令是写入指令的情况下,更新存储于所述第一存储位置的第一数据,并计算与所述第一数据相对应的冗余数据,以被分配到所述第一逻辑存储节点的所述第二存储节点为目的地而发送包括计算结果的指令, 被分配到所述第一逻辑存储节点的所述第二存储节点,在接收了包括所述计算结果的指令的情况下将所述计算结果存储于所述第二存储位置。
10.根据权利要求1所述的存储系统,其特征在于, 还具备多个能装卸的刀片基座, 被分配到所述多个逻辑存储节点的每个节点的所述一个以上的第一存储节点和第二存储节点分别安装于不同的刀片基座。
11.一种存储系统,其特征在于,具备: 多个存储节点,其在两个以上的不同方向上互相连接;和 连接单元,其根据来自外部的请求而发出指令,该指令包括指定访问对象的数据的关键字, 在所述多个存储节点中的第一存储节点保存第一转换表,该第一转换表记录了将关键字抽象化后的第一值与存储节点的信息的对应关系, 在所述多个存储节点中的与所述第一存储节点不同的一个以上的第二存储节点保存第二转换表,该第二转换表记录了将关键字抽象化后的第二值与存储节点的信息的对应关系, 在所述多个存储节点中的与所述第一和第二存储节点不同的第三存储节点保存第三转换表,该第三转换表记录了关键字与表示数据的存储位置的地址的对应关系, 所述连接单元以所述第一存储节点为目的地而传输所述指令, 所述第一存储节点在接收了所述指令的情况下利用所述第一转换表来搜索与所述指令所含的关键字相对应的所述第一值,确定与所述第一值相对应的存储节点,并以根据所述第一值所确定的存储节点为目的地而传输所述指令, 所述一个以上的第二存储节点,在接收了所述指令且所述指令的目的地是自身的存储节点的情况下,利用保存于接收了所述指令的存储节点中的所述第二转换表来搜索与所述指令所含的关键字相对应的所述第二值,确定与所述第二值相对应的存储节点,并以根据所述第二值所确定的存储节点为目的地而传输所述指令, 所述第三存储节点,在接收了所述指令且所述指令的目的地是所述第三存储节点的情况下,利用所述第三转换表来搜索与所述指令所含的关键字相对应的地址,并以与所述地址相对应的存储节点为目的地而传输所述指令。
12.根据权利要求11所述的存储系统,其特征在于, 使所述第一值与所述第二值相比相对于所述关键字抽象化。
13.根据权利要求12所述的存储系统,其特征在于, 记录在所述第一转换表中的存储节点的信息表示所述一个以上的第二存储节点中的任一节点。
14.根据权利要求13所述的存储系统,其特征在于, 所述一个以上的第二存储节点的存储节点个数为一个,记录在所述第二转换表中的存储节点的信息表示所述第三存储节点。
15.根据权利要求13所述的存储系统,其特征在于, 所述一个以上的第二存储节点的存储节点个数大于等于两个,保存于所述第二存储节点中的每个节点的所述第二转换表具有树结构的父节点和子节点的关系。
16.根据权利要求15所述的存储系统,其特征在于, 记录在所述树结构的最下层的所述第二转换表中的存储节点的信息表示所述第三存储节点。
17.根据权利要求16所述的存储系统,其特征在于, 保存于与该父节点相当的所述第二转换表中的所述第二值与保存于与该子节点相当的所述第二转换表中的所述第二值相比相对于所述关键字抽象化。
18.根据权利要求17所述的存储系统,其特征在于, 所述关键字的抽象化通过使关键字向右移位计算来实施。
19.根据权利要求13所述的存储系统,其特征在于, 在所述多个存储节点中的与所述第一到第三存储节点不同的一个以上的第四存储节点保存所述第一转换表,所述连接单元以所述第一存储节点或所述一个以上的第四存储节点中的任一节点为目的地而传输所述指令。
20.根据权利要求19所述的存储系统,其特征在于, 分别在所述第一存储节点和所述一个以上的第四存储节点保存的所述第一转换表互相同步。
【文档编号】G06F12/02GK104461376SQ201410065889
【公开日】2015年3月25日 申请日期:2014年2月26日 优先权日:2013年9月24日
【发明者】栗田贵宏, 桥本大辅 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1