CN110383251B - 存储***、计算机可读记录介质、***的控制方法 - Google Patents
存储***、计算机可读记录介质、***的控制方法 Download PDFInfo
- Publication number
- CN110383251B CN110383251B CN201780086094.0A CN201780086094A CN110383251B CN 110383251 B CN110383251 B CN 110383251B CN 201780086094 A CN201780086094 A CN 201780086094A CN 110383251 B CN110383251 B CN 110383251B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- nodes
- redundant
- data set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明提供一种存储***,其对于在多个节点中分散配置有数据元素的数据集,在使数据元素增加时,能够降低节点间的数据传输量。存储***的控制器使用由多个数据和与该多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集。控制器将数据集的第一规定数量的数据元素分散地配置于第一规定数量的第一节点。控制器当接收到使构成数据集的数据元素的数量从第一规定数量增加第二规定数量的指示时,将数据集的第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集。控制器使重构后的数据集的数据元素分散地配置于第一规定数量的第一节点和第二规定数量的第二节点,并且,将零数据或冗余数据配置于重构后的数据集的数据元素中的第二规定数量的第二节点中。
Description
技术领域
本发明涉及存储***、计算机可读记录介质、***的控制方法。
背景技术
作为本技术领域的公开背景技术的文献,有国际公开第2016/052665号(专利文献1)。该专利文献1中记载了在构成存储***的多个节点中分散配置数据的技术。
现有技术文献
专利文献
专利文献1:国际公开第2016/052665号。
发明内容
发明所要解决的技术问题
为了提高存储***的可用性,有时在多个节点之间使数据具有冗余性。在这种情况下,即使在一部分节点上发生了故障,也能够基于其他节点的数据,恢复(重建)发生了故障的节点(故障节点)的数据。例如,关于以X个数据和与该X个数据对应的Y个冗余数据为数据元素的数据集,在X+Y个不同的节点中分散有各数据元素的情况下,如果是多达Y个的节点故障,则可使用未发生故障的其余节点的数据元素,恢复故障节点的数据元素(X、Y设为1以上的整数)。此外,存储***的节点数不限于X+Y个,只要为X+Y个以上即可。另外,作为使数据冗余化的方法,有在节点间复制(replication)数据的方法、使用奇偶校验或纠删码(Erasure Code)作为冗余数据的方法等各种方法。
但是,近年来,期望抑制存储***的投资额的要求越来越高,降低保管数据的成本变得越发重要。作为降低保管数据的成本的方法之一,考虑使冗余数据相对于数据的比例下降,来提高存储***的存储器的容量效率的方法。就上述的例子而言,与以X个数据和Y个冗余数据为数据元素的数据集相比,以X+Z个数据和Y个冗余数据为数据元素的数据集虽然数据集的冗余度仍然为Y,但冗余数据相对于数据的比例下降,存储器的容量效率提高(Z设为1以上的整数)。
这样,作为适合采用使数据集的数据元素数增加的方法的一个例子,可举出如下情况,即,在IoT(Internet of Things,物联网)平台等中的数据湖中,即在容易利用各种大数据的数据管理***中,例如,随着数据的增大,而重新评估存储器的容量效率。另外,作为一例,可举出在存储***中追加新节点的情况。作为具体例,可举出如下例子,即,在小规模创业时,为了抑制对存储***的初始投资额,以较少的节点来运用,随着对企业所提供的服务的需求扩大,再新追加节点,拓展存储***。此外,这些例子只是一例而已,不对采用上述方法的***有任何限制。
专利文献1公开有在存储***中追加新节点时,重新配置数据的技术。这样,在多个节点之间重新配置数据的情况下,存储***的数据量越大,节点间的数据传输量越大,连接节点间的网络的负载或各节点的负载就越大,有可能产生I/O(Input/Output,输入/输出)性能等***性能暂时降低等影响。
因此,本发明的目的在于,提供一种存储***,其对于在多个节点中分散配置有数据元素的数据集,在使数据元素增加时,能够降低节点间的数据传输量。
用于解决问题的技术方案
为了解决上述问题,本发明之一方式的存储***包含多个节点,多个节点分别具有控制器。多个节点的控制器中的至少一个以上的控制器使用由多个数据和与多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集。至少一个以上的控制器将数据集的第一规定数量的数据元素分散地配置于多个节点中的第一规定数量的第一节点。至少一个以上的控制器,当接收到使构成数据集的数据元素的数量从第一规定数量增加第二规定数量的指示时,将数据集的第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集。至少一个以上的控制器使重构后的数据集的数据元素分散地配置于第一规定数量的第一节点和第二规定数量的第二节点,并且,将零数据或冗余数据配置于重构后的数据集的数据元素中的第二规定数量的第二节点中。
发明效果
根据本发明,对于在存储***具有的多个节点中分散配置有数据元素的数据集,在使数据元素增加时,能够降低节点间的数据传输量,抑制存储***的性能降低。上述以外的问题、结构和效果通过以下用于实施本发明的方式的说明能够明了。
附图说明
图1是表示实施例1的分布式存储***的结构的图。
图2是表示分布式存储***的写入处理的概要的图。
图3是表示存储器的结构的图。
图4A是表示条带映射表的结构的概念的图。
图4B是表示条带映射表的结构的具体例的图。
图5是表示高速缓存管理表的结构的图。
图6是表示奇偶校验管理表的结构的图。
图7是表示节点状态管理表的结构的图。
图8A是表示同时增加数据数和节点数时的条带映射表的更新例的概念图。
图8B是表示同时增加数据数和节点数时的倒查表的更新例的概念图。
图9A是表示同时减少数据数和节点数时的条带映射表的更新例的概念图。
图9B是表示同时减少数据数和节点数时的倒查表的更新例的概念图。
图10是EC组扩缩处理的流程图。
图11是集群重构处理的流程图。
图12是主机I/O处理的流程图。
图13是回滚处理的流程图。
图14是表示实施例2的分布式存储***的结构的图。
图15是表示使数据集的数据元素增加时的处理之一例的示意图。
具体实施方式
下面,参照附图对本发明的实施方式进行说明。下面的记载及附图是用于说明本发明的例示,为了使说明更加明确,适当进行了省略及简化。另外,实施方式中说明的特征的组合并非全都是发明的解决方案所必需的。本发明不受实施方式限定,符合本发明思想的所有应用例均包含在本发明的技术范围内。在本发明中,本领域技术人员能够在本发明的范围内进行多种追加或变更等。本发明也可通过其他种种方式来实施。只要没有特别限定,则各构成要素可以是多个,也可以是单个。
在下面的说明中,往往用“表”、“列表”、“队列”等表达来说明各种信息,但各种信息也可以用这些以外的数据构造来表达。为了表示不依赖于数据构造,往往将“XX表”、“XX列表”等称为“XX信息”。在对各信息的内容进行说明时,使用“标识信息”、“标识符”、“名称”、“ID”、“编号”等表达,但这些都可相互替换。
另外,在下面的说明中,在不加区別地对同种要素进行说明的情况下,往往使用参照符号或参照符号中的共用编号,在加以区别地对同种要素进行说明的情况下,往往使用该要素的参照符号或使用分配给该要素的ID来代替参照符号。
另外,在下面的说明中,有时说明通过执行程序而进行的处理,因为程序通过由处理器(例如,CPU)执行,在适当地使用存储资源(例如,存储器)和/或接口设备(例如,通信端口)等的同时,进行预定的处理,所以处理的主体也可以被当作是处理器。同样,执行程序进行的处理的主体也可以是具有处理器的控制器、装置、***、计算机、节点、存储***、存储装置、服务器、管理计算机、客户端、或主机。执行程序进行的处理的主体(例如,处理器)也可以包含进行处理的一部分或全部的硬件电路。
程序也可以从程序源安装在计算机那样的装置上。程序源例如也可以是程序分发服务器或计算机可读的存储介质。在程序源为程序分发服务器的情况下,程序分发服务器包含处理器(例如CPU)和存储资源,存储资源可以进一步存储分发程序和分发对象即程序。而且,通过程序分发服务器的处理器执行分发程序,程序分发服务器的处理器可以将分发对象程序分发给其他计算机。另外,在下面的说明中,两个以上的程序也可以作为一个程序来实现,一个程序也可以作为两个以上的程序来实现。
在下面的说明中,在各流程图中的判断步骤中,“Y”表示是,“N”表示否。
实施例1
本实施方式的分布式存储***100采用如下结构,即,具有分别包含存储设备的多个节点101,节点101间通过网络103来连接。分布式存储***100通过多个节点101的存储设备,来实现用于形成存储池的虚拟存储***。
存储设备例如也可以是HDD(Hard Disk Drive,硬盘驱动器)或SSD(Solid StateDrive,固态驱动器)等一台存储驱动器、多台存储驱动器、包含多台存储驱动器的RAID(Redundant Arrays of IndependentDisks,磁盘阵列)装置、或多个RAID装置。在下面的说明中,存储设备往往表达成驱动器105。
所谓条带,是指数据块或为了保护数据而由数据块生成的奇偶校验块(Class1code)的任意数据单元。条带存储于节点101内的存储设备中,并且在其他节点101的奇偶校验块(Class2code)的生成中使用。
条带组是条带(数据块或Class1code)和由该条带生成的Class2code的组合。各条带所属的条带组例如由该条带的逻辑地址和存储该条带的节点101来确定。
条带组有时称为数据集。数据集由规定数量的数据元素构成。这里,数据元素是数据集所含的数据块、Class1code和Class2code。数据集也可以由数据块和Class2code构成,可以包含也可以不包含Class1code。
另外,在本实施例中,公开有通过纠删码技术(Erasure Coding,EC)从数据块生成Class2code的例子,有时也将条带组称为EC组。但是,即使记述为EC组,Class2code的生成方法也不一定限定于EC。
关于构成条带组的条带,有时将数据块的数量称为D数,将Class2code的数量称为P数。另外,关于条带组的结构,在使用自然数m、n表现mDnP的情况下,表示由m个数据块和n个Class2code构成条带组。
主机是访问分布式存储***100的计算机、在该计算机上运行的处理器或该处理器执行的程序。
数据存储节点是在着眼于特定的条带组时将该条带组的数据块存储在本地驱动器105中的节点101。奇偶校验存储节点是在着眼于特定的条带组时将该条带组的Class2code存储在本地驱动器105中的节点101。
图1是表示实施例1的分布式存储***100的结构的图。分布式存储***100具有多个节点101和将多个节点101间连接起来的网络103。分布式存储***100也可以称为计算机***或信息处理***。网络103也可以称为后端网络。
节点101只要是计算机即可,例如具有通常服务器计算机的结构。节点101也可以用计算机、计算机节点、服务器、存储装置、或存储***中的任一者表达来称呼。
节点101具有后端端口108、控制器107、驱动器105、内部网络102。后端端口108、控制器107、驱动器105经由内部网络102而连接。节点101的各构成元素(后端端口108、控制器107、驱动器105、内部网络102)分别可以是一个,也可以是多个。此外,节点101的硬件结构不限定于该例。例如,也可以在节点101中进一步追加进行压缩等特定处理的专用硬件电路。
各节点101的后端端口108与网络103连接,节点101经由网络103与其他节点101连接。后端端口108也可以称为端口。
控制器107具有一个或多个存储器104和一个或多个处理器106。控制器107例如也可以是处理器封装。处理器106是执行程序的控制部,例如也可以是CPU(CentralProcessing Unit,中央处理单元)。处理器106执行存储器104内的程序,并执行与指令相应的各种处理。处理器106只要是执行程序的运算部或控制部即可。以下,关于处理器106执行存储器104上的程序而进行的处理,有时将节点101或控制器107记述为处理的主体。
存储器104是存储由处理器106执行的程序的存储部。存储器104可以是易失性的DRAM,也可以使用非易失性的SCM(Storage ClassMemory,存储级内存)等。
驱动器105只要是存储设备即可,也可以称为存储设备。驱动器105例如是FC(Fibre Channel,光纤通道)、SAS(Serial Attached SCSI,串行连接SCSI)、SATA(SerialAdvanced Technology Attachment,串行高级连接技术)等具有接口的硬盘驱动器、或除具有上述接口以外还具有NVMe(Non-Volatile Memory Express,非易失性存储器标准)等接口的SSD(Solid State Drive,固态驱动器)等。另外,驱动器105可以使用NAND、PRAM、ReRAM等SCM,也可以使用易失性的存储器。驱动器105在使用易失性存储器的情况下,也可以通过蓄电池使存储设备非易失性化。
节点101可使用存储器104的一部分作为高速缓存器或缓存器。另外,节点101也可使用SSD等驱动器105的一部分作为高速缓存器或缓存器。
管理程序也可以在节点101上运行,一个或多个虚拟机也可以在管理程序上运行。OS或程序也可以在虚拟机上运行。即,OS或程序可以在节点(物理计算机)101的硬件上运行,也可以在虚拟机上运行。
另外,主机可以是在虚拟机上运行的应用程序(主机程序)201,也可以是物理主机(主机)。OS或存储控制程序运行的虚拟机和主机程序运行的虚拟机可以位于同一节点101上,也可以位于经由网络103连接的不同节点101上。这里,存储控制程序是用于控制分布式存储***100的程序,例如是包含图3所示的各种程序305~307的一部分或全部的程序。另外,存储控制程序也可以是管理程序的一部分。
另外,在分布式存储***100具有多个节点101时,节点101的一部分也可以位于不同的站点。另外,分布式存储***100的节点101的一部分或全部也可以位于云上,并经由网络向用户提供服务。
即使是这种结构例也能够应用本发明。通常,虚拟机在管理程序提供的虚拟硬件资源上运行,对硬件资源的访问是经由管理程序的方式,但通过管理程序所具备的功能,虚拟机有时可直接访问硬件资源。这是所谓的直通技术。
下面,关于以分布式存储***100为主题的处理,只要没有特别限定,就可以在分布式存储***100中的任一个节点101上进行,也可以在多个节点101上协作或独立地进行。
图15是表示对于在分布式存储***100具有的多个节点101中分散配置有数据元素的数据集,使数据元素增加时的处理的一例的示意图。
关于分布式存储***100,将追加节点101之前的结构设为分布式存储***100-1,将追加节点101之后的结构设为分布式存储***100-2,下面进行说明。
分布式存储***100-1为了提高***的可用性,在多个节点101之间具有数据的冗余性。根据图15的例子,关于以X个数据(例如,Ai、Bi)和与该X个数据对应的Y个冗余数据(例如,Pi)为数据元素的数据集,在X+Y个不同的节点101中分散有各数据元素。这里,X、Y设为1以上的整数。另外,i是1以上的整数,在图15中,用Ai、Bi、Pi表示数据集i的数据元素。
分布式存储***100-1如果是多达Y个节点101的故障,则可使用未发生故障的其余节点101的数据元素,来恢复发生了故障的节点(故障节点)的数据元素。这里,所谓恢复故障节点的数据元素,包含不停止在分布式存储***100-1中运行的业务,就可重建存储于故障节点的数据元素的情况。重建后的数据集能够将冗余性恢复到冗余度Y。
此外,通过将分布式存储***100-1的数据备份下来,即使在超过Y个的节点101发生了故障的情况下,也能够使用备份的数据,恢复数据。
图15的分布式存储***100-2的示意图是表示对各数据集追加了Z个数据作为数据元素时的数据配置之一例的图。这里,Z设为1以上的整数。与以X个数据和Y个冗余数据为数据元素的数据集相比,就以X+Z个数据和Y个冗余数据为数据元素的数据集而言,数据集的冗余度仍然为Y,但冗余数据相对于数据的比例下降,存储器的容量效率提高。这样,通过使数据集的数据元素增加,且使冗余数据相对于数据的比例下降,能够提高分布式存储***100的存储器的容量效率。作为结果,能够降低保管数据的成本,能够抑制对分布式存储***100的投资额。
分布式存储***100-2是在分布式存储***100-1中追加了Z个以上的新节点101的结构。就图15的例子而言,分布式存储***100-1由NodeI、NodeII、Node III构成,分布式存储***100-2是在分布式存储***100-1中追加了NodeIV的结构。将该新追加的节点称为追加节点。
如图15的S1所示,分布式存储***100-2进行以下控制,即:将向各数据集追加的Z个数据设为零数据,然后将该零数据配置于追加节点上。如果新追加于数据集的数据元素为零数据,则增加数据元素之前的数据集的与X个数据对应的Y个冗余数据的值,和增加了数据元素之后的数据集的与X+Z个数据对应的Y个冗余数据的值一致。因此,不需要重新计算冗余数据,能够消除该计算负载,并且也不需要为计算冗余数据而从各节点101中收集数据,能够降低节点101间的数据传输量。
另外,通过在增加了数据元素之后也不变更增加数据元素之前的数据集的X个数据及Y个冗余数据的数据配置,不需要进行节点101间的数据移动,能够降低节点101间的数据传输量。这里,所谓不变更数据配置,是指不变更存储数据的节点101的意思,关于在各节点101内存储数据的存储设备,也可以不变更。
这里,作为数据的分散方法,有仅在多个节点101中的特定节点中配置冗余数据的方法和在各节点101中分散冗余数据的方法。在前者的仅在特定节点中配置冗余数据的方法中,能够将配置于追加节点的数据元素全都设为零数据。但是,在该方法中,冗余数据的写入或读取都集中在特定的节点上,有可能成为写入及读取性能的瓶颈。另外,难以使在各节点101上消耗的存储容量均匀化。另外,如果不使业务应用程序(应用程序)在配置冗余数据的特定节点上运行,则有可能无法有效地使用处理器等计算机资源。通过以上理由,在各节点101中分散冗余数据的方法被认为是作为分布式存储***100而优选的实施方式之一。下面,对采用在各节点101中分散冗余数据的方法的情况进行说明。
图15的S2表示在追加节点中配置冗余数据的例子。关于在追加节点中配置哪个数据集的冗余数据,要根据分布式存储***100所采用的数据分散方法来确定。在图15的例子中,表示四个数据集的数据配置,其中的一个数据集的冗余数据配置于追加节点中。关于其余三个数据集,将零数据配置于追加节点中。
如上所述,如果新追加于数据集的数据元素是零数据,则增加数据元素之前的冗余数据的值与增加了数据元素之后的冗余数据的值一致。因此,就向追加节点配置的冗余数据而言,只要将该冗余数据从增加数据元素之前的配置有冗余数据的节点(Node III)中移动或复制到追加节点中即可。另外,也可以根据相同数据集的其他数据元素重新计算冗余数据,并将其配置于追加节点中。
图15的S3表示在追加节点中配置冗余数据的情况下在增加数据元素之前的配置有冗余数据的节点(Node III)中配置零数据的情况。
以上,对在分布式存储***100中追加新节点101时通过使数据集的数据元素数增大来提高存储器的容量效率的方法进行了说明。作为适合采用这种方法的一个例子,可举出如下例子,即,在小规模创业时,为了抑制对分布式存储***100的初始投资额,而以较少的节点101来运用,随着对企业所提供的服务的需求扩大,再新追加节点101,拓展分布式存储***100。此外,该例只是一例而已,对采用上述方法的分布式存储***100没有任何限制。
作为将数据冗余化的方法,有在节点之间复制(Replication)数据的方法、使用奇偶校验或纠删码(Erasure Code)作为冗余数据的方法等各种各样的方法。
分布式存储***100的节点101的数量(以下,也称为节点数)只要是分散的各数据集的数据元素的数量以上即可。即,分布式存储***100-1的节点数不仅限于X+Y个,只要是X+Y个以上即可。同样,分布式存储***100-2的节点数不仅限于X+Y+Z个,只要是X+Y+Z个以上即可。
即使在分布式存储***100的节点数比各数据集的数据元素的数量多的情况下,各数据集的数据元素也分别分散存储在分布式存储***100的不同的节点101中。在不同的数据集之间,分散的节点的组合也可以不同。
将向各数据集追加的Z个数据设为零数据的情况如上所述,描述了配置该零数据的方法的具体例。第一个具体例采用在配置零数据的节点101中实际存储零数据的方法。第二个具体例采用在配置零数据的节点101中将该数据作为零数据来管理的方法。在这种情况下,实际上可以在该节点101的驱动器105中存储零数据,也可以不存储。通过不需要存储零数据,能够抑制存储零数据的负载。另外,在不存储零数据的情况下,可以对成为该零数据的配置目的地的逻辑地址,分配该节点101具有的由一个以上的驱动器105构成的实际存储区域,也可以不分配。在零数据的情况下,通过不分配实际存储区域,能够增加该节点101的未使用的实际存储区域,能够提高存储器的容量效率。因此,在配置零数据的节点101中,作为将该数据作为零数据来管理的方法,有将表示是零数据的信息与成为该零数据的配置目的地的地址相关联来进行管理的方法、不对成为该零数据的配置目的地的逻辑地址分配实际存储区域的方法等。在对有成为零数据的配置目的地的地址有读取请求的情况下,只要能够响应零数据,则采用哪种方法都可以。
在分布式存储***100中,新节点101的追加也可以在从管理装置接收到追加节点101的命令时、或者在自动检测到节点101的追加时执行。这里,管理装置是对分布式存储***100进行管理的装置。数据集的数据元素的增加也可以根据来自管理装置的命令来执行。新节点101的追加和数据集的数据元素的增加可以在相同的时刻进行,也可以在不同的时刻进行。
另外,追加新节点101在本发明的实施上也可以不一定是必需的结构。即,在分布式存储***100-1具有增加了数据集的数据元素以后的数据元素数X+Y+Z个以上的节点的情况下,即使不追加节点101,也能够使数据集的数据元素增加。
这样,作为适合采用增加数据集的数据元素数的方法的一个例子,可举出如下情况,即,在IoT(Internet of Things,物联网)平台等中的数据湖中,即在容易利用各种大数据的数据管理***中,例如根据数据的增大,重新评估存储器的容量效率。此外,该例子只是一个例子而已,对采用上述方法的分布式存储***100没有任何限制。
图2是表示分布式存储***100的写入目的地的概要的图。分布式存储***100为了实现冗余化,在节点101间传输数据块。
下面,描述节点101基于数据块生成主冗余码并将其与该数据块一同传输至其他节点101,然后由传输目的地的节点101生成副冗余码的方法。
图2表示在分布式存储***100具有的节点101A、101B、101C、101D这四个节点中用2D2P的冗余结构来保护数据的例子。即,分布式存储***100具有在发生了2节点故障时能够恢复所有数据的冗余性。
例如,节点101A将从应用程序或虚拟机201接收到的数据长度较长的写入数据块203分割成两个数据块(a块204A、b块204B),然后,由这些分割后的数据块生成一个主冗余码即p1块205。该主冗余码例如是奇偶校验块等冗余码,往往称为Class1code。
接着,节点101A将数据块204A、204B及Class1code205分散复制到其他节点101B~101D的高速缓存器(或缓存器)中。在图2的例子中,节点101A将数据块204A、数据块204B、Class1code205分别复制在节点101B、节点101C、节点101D中。成为复制目的地的节点101使用后述的条带映射表301,根据接收到了写入数据的节点序号和写入目的地地址来求出。以下,往往将成为复制目的地的节点101称为目的地节点。
在复制完成的时刻,因为得到了必要的冗余性(可恢复2节点故障),所以同步的写入处理完成。
同样,节点101B~101D分别将接收到的写入数据块(DATA2~DATA4)分割为两个数据块,进而生成Class1code。节点101B~101D分别将分割后的数据块及Class1code分散复制到其他三个节点101的高速缓存器(或缓存器)中。各节点101将从其他三个节点101分别接收到的数据块或Class1code的副本存储在高速缓存器(或缓存器)中。
节点101A与写入处理非同步地,由从其他三个节点101汇集的数据块或Class1code,生成副冗余码即x1块206A及y1块206B。该副冗余码例如是奇偶校验块等冗余码,往往称为Class2code。
同样,节点101B~101D分别非同步地由从其他三个节点汇集的数据块或Class1code生成Class2code。
节点101A~101D分别将分别生成的Class2code写入本地驱动器105中。另外,节点101A~101D分别释放存储有用于该Class2code的生成的数据块或Class1code的副本的高速缓存器(或缓存器)的区域。
图2表示2D2P冗余结构的例子,但本实施例的方法能够应用于任意的mDnP结构(m、n为自然数)。写入数据块(mD)存储在本地驱动器105中,将冗余度与减少了一个的个数(冗余度为n-1)的Class1code一同传输至其他节点101。例如,在3D2P结构(d1、d2、d3、p)中,写入数据块(d1+d2+d3)存储在本地驱动器105中,数据块d1、d2、d3、p分别被传输至不同的节点101。
图3是表示存储器104的结构的图。在分布式存储***100的各节点101的存储器104中存储有用于控制分布式存储***100的信息或程序。例如,在存储器104中存储有条带映射表301、高速缓存管理表302、奇偶校验管理表303、节点状态管理表304、EC组扩缩处理程序305、主机I/O处理程序306、及回滚处理程序307。各种程序305~307由处理器106执行。在下面的说明中,往往将包含条带映射表301、高速缓存管理表302、奇偶校验管理表303、节点状态管理表304在内的管理信息称为各种管理信息301~304。
条带映射表301包含条带组序号的组合的信息,在确定数据块或Class1code的复制目的地的目的地节点时、或在将存储在发生了故障的节点101中的数据块重建时使用。
高速缓存管理表302包含与生成Class2code的脏数据、或用于维持Class2code的匹配性的撤消数据的高速缓存有关的信息。奇偶校验管理表303包含以日志结构形式存储的Class2code的管理信息及构成Class2code的数据块的存储位置信息。节点状态管理表304包含各节点101的运用状态的信息。
EC组扩缩处理程序305是用于控制来自用户或集群管理程序的EC组扩缩请求的程序。主机I/O处理程序306是用于控制应用程序或来自虚拟机之类的主机的I/O请求的程序。回滚处理程序307是用于在数据存储节点发生了故障时在奇偶校验存储节点间控制Class2code的匹配性的程序。
存储器104除存储图3所示的信息及程序以外,还存储包含实现存储功能的存储程序、OS、接口程序在内的各种程序。存储器104往往进一步存储执行业务的应用程序。
上述的各种管理信息301~304和包含程序305~307在内的各种程序的全部或一部分的复制也可以为了实现备份等目的,而同步或非同步地存储在驱动器105中。
下面,利用图4A、图4B、图5、图6、图7对存储器104保持的信息(条带映射表301、高速缓存管理表302、奇偶校验管理表303、节点状态管理表304)的结构例进行说明。在各表中,仅表示出了一部分条目。在各表中,空白单元格是省略了数据记载的单元格。在表的单元格中,“0x”表示十六进制的数字。
图4A是表示条带映射表301的结构的概念的图。图4A的条带映射表301表示分布式存储***100由4台节点(E0~E3)构成集群的情况。EC组的结构为2D2P,循环数C为2。
图4A所示的条带映射表301包含列序号401作为列元素(E0~E3),包含行序号402作为行元素(D1、D2、P1、XY)。
列序号401往往称为元素序号。元素序号例如也可以是指定节点序号、驱动器序号、或节点序号及驱动器序号双方的信息中的任一信息。
行序号402包含用于确定数据块的信息(D1、D2)、用于确定Class1code的信息(P1)、用于确定Class2code的信息(XY)。行序号402例如也可以是表示数据块、Class1code、或Class2code的存储处的逻辑地址。
另外,条带映射表301在由列序号401和行序号402指定的各单元格403中包含条带组序号(S0~S3)。条带组序号是用于识别条带组的信息。条带组是条带(数据块或Class1code)和由该条带生成的Class2code的组合。
在条带映射表301中,与同一条带组序号对应的条带和Class2code属于该条带组序号的相同的条带组。各条带所属的条带组例如由该条带的逻辑地址(相当于行序号402)、和存储该条带的节点101的节点序号(相当于列序号401)确定。而且,控制器107由属于同一条带组的多个条带生成Class2code。进而,控制器107在条带映射表301中,且在与该条带组序号和Class2code的行序号(XY)对应的节点序号(列序号401)的节点101中存储Class2code。
条带映射表301包含数据部404、Class1code部405、及Class2code部406这三个功能区。在图4A的例子中,数据部404是行序号402为D1及D2的功能区,Class1code部405是行序号402为P1的功能区,Class2code部406是行序号402为XY的功能区。
数据部404对与应用程序或由虚拟机写入的数据块对应的条带组序号进行管理。
Class1code部405对与将所写入的数据块分割而生成的Class1 code对应的条带组序号进行管理。Class1code由与同一列序号401的数据部404对应的数据块生成。例如,在列序号401为E0的情况下,由写入与E0对应的D1和D2的逻辑地址中的数据块生成Class1code(P1)。
Class2code部406对存储在该元素序号(列序号401)的节点101中的Class2code的条带组序号进行管理。例如,在E0列的情况下,Class2code的条带组序号为S0,Class2code由与相同条带组序号对应的数据部404及Class1code部405生成。具体地说,E0列的Class2code由E1列的D1数据块、E2列的Class1code、E3列的D1数据块生成。因此,成为E1列的D1数据块、E2列的Class1code、E3列的D1数据块的复制目的地的目的地节点成为E0的节点序号的节点101。
另外,例如,通过如下那样进行计算,来确定成为被写入的数据块及Class1code的复制目的地(传输目的地)的目的地节点。以下,C表示数据部的循环数(行数),条带尺寸表示每一个单元格的数据尺寸。LBA是表示块的逻辑数据的场所的逻辑块地址(LogicalBlock Address)。以下,用(列序号401、行序号402)表示条带映射表301内的单元格位置。
(1)数据块
控制器107将数据块按LBA的顺序以直接映射的方式存储在本地节点101的驱动器105中。控制器107为了确定数据块的目的地节点,以列序号401为节点序号,以行序号402为(LBA/条带尺寸)mod C,计算出列序号401和行序号402。控制器107在条带映射表301的数据部404中,取得存储在位于(节点序号,(LBA/条带尺寸)mod C)的单元格位置的单元格中的条带组序号。控制器107在条带映射表301的Class2code部406中,取得用于存储与所取得的编号相同的条带组序号的单元格的列序号401,向与该列序号401对应的节点101传输数据块。
(2)Class1code
控制器107针对Class1code,以列序号401为节点序号,以行序号402为P1,计算出列序号401和行序号402。控制器107在条带映射表301的Class1code部405中,取得存储在位于(节点序号,P1)的单元格位置的单元格中的条带组序号。控制器107在条带映射表301的Class2code部406中,取得用于存储与所取得的编号相同的条带组序号的单元格的列序号401,向与该列序号401对应的节点101传输Class1code。
另外,在接收到了数据块和Class1code的目的地节点中,由数据块和Class1code生成Class2code,以直接映射的方式从映射到驱动器105中的数据部404的末端存储在驱动器105中。这时,由同一条带生成的多个Class2code即x、y奇偶校验块被存储在驱动器内的连续区域中。由此,能够按顺序读取Class2code,具有能够减轻重建时的处罚的效果。
条带映射表301不限定于图4A的例子,例如,如果是同列内,则可以任意调换条带组序号。
图4B是表示条带映射表301的结构的具体例的图。即,图4A的条带映射表301可以是图4B所示的结构。
图4B的条带映射表301具有用于从节点序号转换为条带组序号的条带组序号表409、用于从条带组序号转换为节点序号的节点序号表410。
条带组序号表409包含元素序号、条带组序号(D1)、条带组序号(D2)、及条带组序号(P1)。元素序号是存储数据块的节点序号,对应于列序号401。条带组序号(D1)、条带组序号(D2)是与数据部404的各行对应的条带组序号。条带组序号(P1)是与Class1code部405对应的条带组序号。
节点序号表410包含条带组序号、数据块元素序号、Class1code元素序号、及Class2code元素序号。
数据块元素序号是具有与相同行的条带组序号对应的数据部404的节点的节点序号。Class1code元素序号是具有与相同行的条带组序号对应的Class1code部405的节点的节点序号。Class2code元素序号是具有与相同行的条带组序号对应的Class2code部406的节点(目的地节点)的节点序号。
图5是表示高速缓存管理表302的结构的图。高速缓存管理表302是包含脏高速缓存表501和撤消高速缓存表502的结构。
脏高速缓存表501对用于计算Class2code的数据块进行管理。脏高速缓存表501包含条带组序号、元素序号、及脏队列。条带组序号是用于由同一条带组序号的数据块生成Class2code的编号。针对每一条带组序号,来管理元素序号和脏队列。元素序号是由条带映射表301管理的列元素的编号,且是数据块的发送源。脏队列是为了生成Class2code而传输到其他节点中的数据块。脏队列不仅保持数据块主体,还保持存储有这些数据块的位置信息(节点序号、驱动器序号)。
撤消高速缓存表502对在数据存储节点发生了故障时用于获得奇偶校验存储节点间的Class2code的匹配性的撤消队列进行管理。撤消高速缓存表502包含元素序号、标签序号、撤消队列、I/O范围、及状态。标签序号是赋予主机I/O的编号,存在多个重复的可由该***处理的主机I/O的编号。撤消队列是在Class2code的回滚处理时使用的数据块或中间代码。撤消队列不仅保持撤消数据主体,还保持存储有撤消数据的位置信息(节点序号、驱动器序号)。撤消数据在与接收到写入数据的元素序号和标签序号对应的条目中进行排队。另外,在接收到了同元素序号、同标签序号、且不同世代序号的写入数据时,一次废弃,将所接收到的写入数据重新排队。I/O范围表示所接收到的I/O同时更新哪个数据块。由此,在数据存储节点发生了故障时,对该条目应该取得匹配性的节点(元素)进行判别。具体地说,作为I/O范围信息,记录有起始地址和数据传输长度。状态是各行的状态,确认是否为与Class2code确认了匹配性的状态。在数据存储节点发生了故障时,询问其他奇偶校验存储节点,确认是否相对于未检查状态的条目取得了匹配性。在确认了匹配性之后,将条目的状态变更为已检查。
图6是表示奇偶校验管理表303的结构的图。奇偶校验管理表303是包含正查表601、倒查表602、自由列表603在内的管理信息。
正查表601是对用于以数据块的存储地址为密钥来查找Class2code的存储地址的信息进行管理的管理信息。将从数据块的存储地址(DATA LBA)中查找Class2 code的存储地址(PARITY LBA)的操作称为正查。
正查表601包含数据节点序号、数据驱动器序号、数据LBA、世代序号、奇偶校验驱动器序号、及奇偶校验索引序号作为信息。数据节点序号、数据驱动器序号、及数据LBA是存储数据块的节点的编号、驱动器的编号、LBA。世代序号是对写出数据块的世代进行管理的编号,在数据块的更新时被更新。世代序号在数据存储节点故障时的回滚处理中使用。奇偶校验驱动器序号是存储与该条目位于同行的数据块对应的Class2code的驱动器的编号。奇偶校验索引序号是表示Class2 code的存储位置的编号。正查表601将与所存储的Class2code对应的信息存储在奇偶校验存储节点中。
倒查表602是对用于以Class2code的存储地址(PARITY LBA)为密钥来查找计算出了该Class2code的数据块的存储地址(DATALBA)的信息进行管理的管理信息。将从Class2code的存储地址中查找数据块的存储地址的操作称为倒查。
倒查表602包含奇偶校验驱动器序号、奇偶校验索引序号、及奇偶校验结构信息。对唯一的Class2code,来管理构成其Class2code的数据块的存储位置。奇偶校验驱动器序号和奇偶校验索引序号是表示存储有Class2code的驱动器序号和存储位置的编号。奇偶校验结构信息包含数据节点序号、数据驱动器序号、数据LBA、及状态。数据节点序号、数据驱动器序号、及数据LBA表示计算出了对应的Class2code的数据块的存储位置信息。奇偶校验结构信息所使用的行(以下,称为时隙)与数据保护设定mDnP中的m的数对应,根据EC组的扩缩,来增减要使用的时隙。状态表示计算出了Class2code的数据块的状态,状态有使用中(USE)和未使用(UNUSE)两种。在状态为未使用的情况下,在该Class2code的该时隙中还未写入数据块,该数据块作为0数据来计算Class2code。
自由列表603是以日志结构来管理Class2code的管理信息。新计算的Class2code被写到从自由列表中取得的写出处。在通过EC组的扩缩或垃圾收集而删除了Class2code时,将删除后的Class2code所使用的地址追加到自由列表中。
图7是表示节点状态管理表304的结构的图。节点状态管理表304对各节点的运用状态进行管理。节点状态管理表304对应地管理数据节点序号、数据驱动器序号、进度指针、及节点状态的信息。
节点状态对与由该节点状态对应的节点序号标识的节点的状态进行管理。节点状态有NORMAL、ERROR、及RECLUSTERING。NORMAL表示该节点为正常状态,ERROR表示该节点为故障状态。RECLUSTERING表示该节点正在通过节点增减设置或EC组扩缩来重建EC集群的过程中。
进度指针表示由与该进度指针对应的节点序号及驱动器序号标识的节点及驱动器的、从故障状态恢复的进度状况、及EC集群重构的进度状况。进度指针表示该节点的该驱动器的LBA,且表示故障恢复或集群重构处理完成到了进度指针所示的LBA。因此,故障恢复中或集群重构中参照该进度指针,确定与读取处或写入目的地数据块对应的Class2code的存储处节点。
例如,在按LBA的升序执行集群重构处理的情况下,比进度指针指示的LBA小的LBA因为集群重构已完成,所以基于新条带映射表,确定Class2code的存储处节点。相反,比进度指针指示的LBA大的LBA因为集群重构未完成,所以基于旧条带映射表,确定Class2code的存储处节点。
利用图8A和图8B对同时增加数据数(D数)和节点数时即扩展EC组时的条带映射表301和奇偶校验管理表303的倒查表602的更新处理进行说明。
图8A是表示同时增加数据数和节点数时的条带映射表301的更新例的概念图。条带映射表301A是EC组扩展前的条带映射表301,条带映射表301B是EC组扩展后的条带映射表301。
条带映射表301A表示分布式存储***100由5台节点(E01~E05)构成集群。EC组的结构为3D2P,循环数C为4。
表示在该集群结构中追加第六个节点(E06),进而将EC组从3D2P扩展至4D2P时的条带映射表301的变更例。
首先,控制器107对现有条带映射表301A追加第六个节点的列(E06)。
接着,控制器107对所追加的第六列(E06)分配条带组序号。下面,对向所追加的列分配条带组序号的分配方法的例子进行说明。
(1)控制器107针对数据部,选择分配数小于扩展后的D数(4个)的条带组序号(S01、S02、S03、S05),将其条带组序号分配到所追加的列(E06)中,以使包含所追加的列在内且分配在数据部内的条带组序号的合计数成为扩展后的D数(4个)。
(2)控制器107针对数据部,如果存在条带组序号的分配数小于扩展后的D数(4个)的编号(S04、S06、S07),则删除其条带组序号内的分配数最小的条带组序号(S07),变更为其他小于扩展后的D数(4个)的编号(S04、S06)。
(3)控制器107针对Class1code部,选择分配数为0个的条带组序号(S06),将其条带组序号分配到所追加的列(E06)中,以使包含所追加的列(E06)在内且分配在Class1code部内的合计数成为扩展后的P数-1个(1个)。
(4)控制器107针对Class2code部,选择条带组序号的分配数比其他列多的列,在分配给该列的条带组序号内,选择不与上述(1)~(3)分配给所追加的列(E06)的条带组序号重复的条带组序号(S04),将其移至所追加的列中。
图8B是表示同时增加数据数和节点数时的倒查表602的更新例的概念图。控制器107在增加了D数时,对奇偶校验管理表303的倒查表602所含的奇偶校验结构信息的时隙增加与增加了D数后的数同等的数。由此,在构成Class2code的数据块中,能够对新增加的D数量的数据块位置信息进行管理。控制器107将所追加的时隙作为0数据来对待。由此,无需将Class2code更新,就能够将D数扩展,所以能够削减网络传输成本。控制器107针对与追加时隙相应的节点及驱动器,在发生了数据块写入时,用所写入的数据块将Class2code更新,且将该时隙的信息更新。
通过以上变更,通过减少对数据部的变更,能够尽可能地不变更现有数据块的Class2code存储位置,所以能够削减随着EC组扩展而来的数据块传输量。
使用图9A和图9B,说明同时减少数据数(D数)和节点数时即收缩EC组时的条带映射表301和奇偶校验管理表303的倒查表602的更新处理。
图9A是表示同时减少数据数和节点数时的条带映射表301的更新例的概念图。条带映射表301C是EC组收缩前的条带映射表301,条带映射表301D是EC组收缩后的条带映射表301。
条带映射表301C表示分布式存储***100由6台节点(E01~E06)构成集群的情况。EC组的结构为4D2P,循环数C为4。
条带映射表301D表示从该集群结构中将第六个节点(E06)除去,进而将EC组从4D2P收缩至3D2P时的条带映射表301的变更例。
首先,控制器107对现有映射表301C将第六个节点的列(E06)除去。
接着,控制器107对排除后的条带映射表301的各列,重新分配条带组序号。以下,对该重新分配方法的例子进行说明。
(1)控制器107针对数据部,选择分配数超过收缩后的D数(3个)的条带组序号(这里,为S01、S04),删除其条带组序号内的分配数最大的条带组序号(S01、S04)内的一个分配,变更为新的条带组序号(S07)。
(2)控制器107针对Class2code部,以在同列中不重复的方式将新追加的条带组序号分配在一个列中。
(3)控制器107针对Class2code部,将分配给已排除的列的条带组序号(S01)以在同列中不重复的方式移至现有列(E01)中。
图9B是表示同时减少数据数和节点数时的倒查表602的更新例的概念图。控制器107在减少了D数时,将奇偶校验管理表303的倒查表602所含的奇偶校验结构信息的时隙减少与减少了D数后的数同等的数。由此,在构成Class2code的数据块中,不对成为减设对象的不需要的D数那么多的数据块位置信息进行管理。这时,控制器107对减设对象时隙的数据块进行了0数据化。具体地说,控制器107传输与减设对象时隙相应的数据块,用该数据块将奇偶校验更新。由此,无需将Class2code全部破坏并再生成,就能够将一部分数据块从奇偶校验结构信息中除去。
如上所述,尽可能地不变更现有数据块的Class2code存储位置,削减随着EC组收缩而来的数据块传输量。
图10是EC组扩缩处理的流程图。在分布式存储***100从用户或管理程序接收到了EC组的扩缩请求时,通过由节点101的控制器107执行EC组扩缩处理程序305,进行EC组扩缩处理。
图10的S1001~S1005的处理用分布式存储***100中的任一个节点101的控制器107来进行。虽然也可用两个以上的节点101来进行,但由于在S1004或S1005的处理中,对所有节点101共有的各种管理信息301~304进行更新,因此为了防止这些信息在节点间不匹配,在本实施例中,用一个节点101,进行S1001~S1005的处理。
例如,使用从用户或管理程序接收到了EC组的扩缩请求的节点101,进行S1001~S1005的处理。例如,在以分布式存储***100具有的多个节点101中的一个为主节点,且以其他节点101为辅助节点的情况下,主节点也可以执行S1001~S1005的处理。主节点从用户或管理程序接收EC组的扩缩请求,进行本处理。在辅助节点从用户或管理程序接收到了EC组的扩缩请求的情况下,主节点从辅助节点接收EC组的扩缩请求,进行本处理。
控制器107参照节点状态管理表304,判断分布式存储***100的集群是否已经处于重建处理中(S1001)。具体地说,控制器107参照节点状态管理表304,如果各节点的节点状态为“RECLUSTERING”,则判断为集群已经处于重建处理中。
S1001的判断结果是,在集群处于重建处理中的情况下(S1001:Y),控制器107结束EC组扩缩处理。或者,控制器107也可以使EC组的扩缩请求排队,在当前的集群重构处理完成以后,取出排队后的请求,执行该请求。
S1001的判断结果是,在集群未处于重建中的情况下(S1001:N),控制器107判断EC组的扩缩请求是否为收缩请求(S1002)。这里,收缩请求是指从集群中减少节点的操作。
S1002的判断结果是,在是收缩请求的情况下(S1002:Y),控制器107在收缩了EC组的情况下,判断是否有足够的空余容量(S1003)。在从集群中减少节点的情况下,因为奇偶校验部的比率会增加,所以当没有足够的空余容量且数据部的使用率高时,有可能在收缩后不能确保足够的奇偶校验部的存储容量。
S1003的判断结果是,在没有足够的空余容量的情况下(S1003:N),控制器107结束EC组扩缩处理。S1003的判断结果是,在有足够的空余容量的情况下(S1003:Y),控制器107执行S1004的处理。
在S1004中,控制器107根据EC扩缩后的结构,更新条带映射表301。往往将更新后的条带映射表301称为新条带映射表。往往将更新前的条带映射表301称为旧条带映射表。作为指新条带映射表和旧条带映射表双方的术语,往往称为新旧条带映射表。控制器107存储新旧条带映射表。
S1002的判断结果是,在没有收缩请求的情况下(S1002:N),控制器107也执行S1004的处理。
控制器107将各种管理信息301~304初始化,以备于EC组扩缩处理用。具体地说,根据EC组扩缩后的结构,追加奇偶校验管理表303内的奇偶校验结构信息的时隙数,进而将节点状态管理表304内的进度指针初始化,进而基于新条带映射表,重新制作高速缓存管理表302(S1005)。
主节点的控制器107向其他辅助节点101传输在S1004及S1005中更新后的各种管理信息301~304,请求进行集群重构处理。各节点101的控制器107执行集群重构处理(S1006)。利用图11对由各节点101执行的集群重构处理的详细进行描述。
当集群重构处理结束时,各节点101的控制器107在各自的节点101内,以与新条带映射表对应的方式重装Class2code(S1007)。具体地说,因为通过条带映射表301的变更,来变更Class2code的起始地址,所以变更在新条带映射表中存储在相当于Class2code部的LBA中的Class2code的索引号。另外,在新条带映射表中存储在相当于数据部区域的LBA中的Class2code读取并重写,以使其在新条带映射表中成为Class2code部区域。
最后,控制器107对各种管理信息301~304进行更新。具体地说,控制器107将旧条带映射表或旧高速缓存管理表废弃,并将各种管理信息301~304更新为EC组扩缩后的信息(S1008)。例如,也可以在主节点的控制器107更新了各种管理信息301~304之后,向其他辅助节点传输更新后的各种管理信息301~304,并使其同步。
图11是集群重构处理的流程图。集群重构处理是图10的EC组扩缩处理的一部分(S1006),由各节点101的控制器107执行。集群重构处理是随着EC组的扩缩而来的集群的重构处理。具体地说,集群重构处理将新旧条带映射表进行比较,对条带组序号已变化的数据块,按照新条带映射表,更新与该数据块对应的Class2code。此外,SMT是指条带映射表301。
在下面的说明中,在以某条带的数据块为处理对象时,以存储该条带的数据块的节点101为数据存储节点,以存储该条带所属的条带组的Class2code的节点101为奇偶校验存储节点。
首先,对数据存储节点中的集群重构处理的流程图进行说明。数据存储节点的控制器107针对自身节点具有的条带,按LBA的升序依次设为处理对象,执行以下集群重构处理。
控制器107参照节点状态管理表304的进度指针,确认处理对象是否为LBA末端(S1101)。
S1101的确认结果是,在处理对象不是LBA末端的情况下(S1101:N),控制器107确认与处理对象LBA对应的条带组序号在新条带映射表和旧条带映射表中是否相同(S1102)。
S1102的确认结果是,在与处理对象LBA对应的条带组序号在新旧条带映射表中相同的情况下(S1102:Y),控制器107不进行任何处理,而是更新进度指针,将处理移至下一个LBA(S1109)。
S1102的确认结果是,在与处理对象LBA对应的条带组序号在新旧条带映射表中不同的情况下(S1102:N),控制器107取得处理对象LBA的不相容(S1103)。
控制器107确认旧条带映射表中的条带组序号是否在新条带映射表中已解散(S1104)。解散是指在旧条带映射表中被分配的条带组序号在新条带映射表未被分配的状态。
S1104的确认结果是,在旧条带映射表中被分配的条带组序号已解散的情况下(S1104:Y),控制器107因为不需要与该条带组序号对应的奇偶校验存储节点的Class2code,所以将其废弃。控制器107向与旧条带映射表对应的奇偶校验存储节点并向该LBA的数据块的Class2code发送清除指示(S1105)。接收清除指示的奇偶校验存储节点的流程图在后面进行描述。
S1104的确认结果是,在旧条带映射表中被分配的条带组序号未解散的情况下(S1104:N),因为不需要与该条带组序号对应的奇偶校验存储节点的构成Class2code的处理对象LBA的数据块,所以控制器107将其从构成Class2code的数据块中除去。控制器107向与旧条带映射表对应的奇偶校验存储节点以更新属性传输排除对象数据块(除外数据)(S1106)。接收排除数据的奇偶校验存储节点的流程图在后面进行描述。
控制器107确认处理对象驱动器105是否为减设对象驱动器(S1107)。S1107的确认结果是,在不是减设对象的情况下(S1107:N),控制器107因为要在与新条带映射表对应的奇偶校验存储节点上生成Class2code,所以将存储在处理对象LBA中的数据块读取,并以新属性进行传输(S1108)。控制器107对进度指针进行更新(S1109)。S1107的确认结果是,在是减设对象的情况下(S1107:Y),控制器107也执行S1109。
控制器107确认是否取得了处理对象LBA的不相容(S1110)。S1110的确认结果是,在取得了处理对象LBA的不相容的情况下(S1110:Y),控制器107释放处理对象LBA的不相容,将处理移至下一个LBA(S1111)。S1110的确认结果是,在未取得处理对象LBA的不相容的情况下(S1110:N),控制器107将处理移至下一个LBA(S1111)。
S1101的确认结果是,在处理对象为LBA末端的情况下(S1101:Y),控制器107结束数据存储节点的集群重构处理。
接着,对奇偶校验存储节点的集群重构处理的流程图进行说明。
首先,对奇偶校验存储节点接收到清除指示时执行的处理进行说明。奇偶校验存储节点的控制器107如果接收到了清除指示,则取得与清除对象数据块对应的奇偶校验结构信息,将清除对象数据块的时隙的状态更新为清除中(PURGING),确认所有时隙是否都是清除中或未使用(FREE)(S1112)。S1112的确认结果是,在使用中(USING)的时隙残存的情况下(S1112:N),控制器107结束处理。S1112的确认结果是,在所有时隙都是清除中或未使用(FREE)的情况下,因为该Class2code已不再使用任何节点,所以控制器107将Class2code删除,结束处理(S1113)。在Class2code的删除中,控制器107将奇偶校验管理表303的正查表601和倒查表602的对象条目删除,将存储有删除对象Class2code的LBA***自由列表603中。
接着,对奇偶校验存储节点以新属性或更新属性接收到数据块时的处理进行说明。奇偶校验存储节点的控制器107如果接收到了数据块,则确认所接收到的块是否为更新属性(S1114)。
S1114的确认结果是,在不是更新属性而是新属性的情况下(S1114:N),控制器107因为接收到新写入数据,所以将接收块存储在脏高速缓存器中(S1123)。如图12所示,存储后的脏高速缓存器按照奇偶校验存储节点的主机I/O处理程序进行处理。
S1114的确认结果是,在是更新属性的情况下(S1114:Y),因为所接收到的数据块是除外数据或中间代码,所以控制器107使用所接收到的块,通过读修改写(Read ModifyWrite)将所存储的Class2code更新。
首先,控制器107参照正查表601,确定更新对象Class2code(S1115)。具体地说,控制器107参照所接收到的块的存储位置信息,且参照与该存储位置信息对应的正查表601的条目,确定Class2code的存储位置。
接着,控制器107取得所确定的Class2code的存储位置即LBA的不相容(S1116)。控制器107取得倒查表602,确定更新对象时隙(S1117)。具体地说,参照与所确定的Class2code的存储LBA对应的倒查表602的条目,从所参照的条目中的奇偶校验结构信息,确定与所接收到的块的存储位置信息一致的时隙。
控制器107从驱动器105将更新对象Class2code读取(S1118),用所读取的Class2code和所接收到的块,进行XOR计算,更新Class2code(S1119)。控制器107将更新后的Class2code存储在驱动器105中(S1120)。
控制器107将奇偶校验管理表303的倒查表602更新(S1121)。具体地说,控制器107将位于倒查表内的奇偶校验结构信息中的、成为除外数据的对象的时隙的信息删除。在接收块为中间代码的情况下,不进行奇偶校验管理表303的更新。
控制器107释放在S1116中取得的不相容(S1122)。最后,控制器107将所接收到的块存储在撤消高速缓存器中,结束处理(S1124)。
图12是主机I/O处理的流程图。在从应用程序或虚拟机之类的主机接收到了I/O请求时,通过由节点101的控制器107执行主机I/O处理程序306,开始主机I/O处理。
首先,对由接收到I/O请求的节点(数据存储节点)的控制器107执行的主机I/O处理进行说明。
控制器107根据所接收到的I/O请求,确定成为I/O处理对象的数据块位置(数据块的存储处),取得数据块位置的不相容(S1201)。由此,即使在并列地进行I/O处理的情况下,也不会发生数据不匹配。
控制器107判断I/O请求是否为读取处理(S1202)。S1202的判断结果是,在是读取处理的情况下(S1202:Y),控制器107从驱动器105中读取请求对象数据块,将所读取的数据块传输至主机(S1203)。最后,控制器107释放所取得的不相容,结束处理(S1210)。
S1202的判断结果是,在I/O请求不是读取处理而是写入处理的情况下(S1202:N),控制器107判断是否为新写入(S1204)。S1204的判断结果是,在是新写入的情况下(S1204:Y),控制器107计算Class1code(S1208)。此外,在条带组的结构为mDnP的情况下,只生成n-1个Class1code。
S1204的判断结果是,在不是新写入而是更新写入的情况下(S1204:N),控制器107从驱动器105中,读取存储于写入目的地地址的数据块(S1205),用所读取的数据块和写入数据,计算数据块的中间代码。同样,控制器107计算Class1code的中间代码(S1206)。
下面,对Class1code的中间代码的计算方法进行说明。Class1code的中间代码的计算方法因所写入的写入数据块的块尺寸及是新写入还是更新写入而不同。Class1code的中间代码(Px)如下那样进行计算。
Px=P1'+P1
这里,Px是Class1code的中间代码,P1'设为由新写入数据块生成的Class1code,P1设为由已经写入驱动器105中的数据块生成的Class1 code。将与公式1至公式5有关的XOR运算简单地记述为"+"。
作为一例,以下表示将条带组的结构设为4D2P,且通过新写入将四个数据块写入时的Class1code的中间代码(Px)的计算方法。
Px=P1'+P1
=(D1'+D2'+D3'+D4')+(0+0+0+0)
=D1'+D2'+D3'+D4'
这里,将新写入对象的四个数据块设为D1'、D2'、D3'、D4'。0表示0数据。
作为一例,以下表示将条带组的结构设为4D2P,且通过新写入将两个数据块写入时的Class1code的中间代码(Px)的计算方法。
Px=P1'+P1
=(D1'+D2'+0+0)+(0+0+0+0)
=D1'+D2'
这里,将新写入对象的两个数据块设为D1'、D2'。
在新写入的情况下,新写入对象数据块以外的条带作为0数据来对待,生成Class1code的中间代码(Px)。0数据的XOR运算不会对结果产生影响,所以如上所述。即使新写入对象数据块的数为1块或3块的情况下,也能够同样地计算。
作为一例,以下表示将条带组的结构设为4D2P,且通过更新写入将四个数据块写入时的Class1code的中间代码(Px)的计算方法。
Px=P1'+P1
=(D1'+D2'+D3'+D4')+(D1+D2+D3+D4)
=M1+M2+M3+M4
这里,将更新写入对象的四个数据块设为D1'、D2'、D3'、D4'。另外,将已经写入驱动器105中的数据块设为D1、D2、D3、D4。另外,将根据更新写入对象数据块和存储于该数据块的写入目的地的数据块计算的中间代码设为M1、M2、M3、M4。M1、M2、M3、M4分别通过D1'+D1、D2'+D2、D3'+D3、D4'+D4来计算。
作为一例,以下表示将条带组的结构设为4D2P,且通过更新写入将两个数据块写入时的Class1code的中间代码(Px)的计算方法。
Px=P1'+P1
=(D1'+D2'+D3+D4)+(D1+D2+D3+D4)
=M1+M2
这里,将更新写入对象的两个数据块设为D1'、D2'。另外,将已经写入驱动器105中的数据块设为D1、D2、D3、D4。另外,将根据更新写入对象数据块和存储于该数据块的写入目的地中的数据块计算的中间代码设为M1、M2。M1、M2分别通过D1'+D1、D2'+D2来计算。
在更新写入的情况下,关于更新写入对象数据块,通过与现有数据块进行XOR计算,生成Class1code的中间代码(Px)。同数据彼此的XOR运算成为0数据,因为不会对结果产生影响,所以如上所述。在更新写入对象数据块的数为1块或3块的情况下,也能够同样地计算。
如上所述,通过利用适合每个写入模式的计算方法,来计算Class1 code的中间代码(Px),可减少XOR计算次数,使奇偶校验计算处理高速化。
控制器107参照条带映射表301,确定成为Class2code的存储处的目的地节点,将在S1206中计算出的数据块的中间代码、及Class1code的中间代码传输至目的地节点。在数据传输时,控制器107赋予更新属性的信息,传输中间代码(S1207)。
控制器107参照条带映射表301,确定成为Class2code的存储处的目的地节点,将在S1208中计算出的Class1code和数据块传输至目的地节点。在数据传输时,控制器107赋予新属性的信息,传输Class1 code和数据块(S1209)。
此外,在S1207及S1209中,控制器107参照节点状态管理表304,在节点状态为集群重构中的情况下参照进度指针,确认数据存储处地址是否已经完成了集群重构。在数据存储处地址的集群重构已完成的情况下,控制器107按照新条带映射表,确定目的地节点。在数据存储处地址的集群重构未完成的情况下,控制器107按照旧条带映射表,确定目的地节点。
控制器107向本地驱动器105写入所接收到的写入数据块(S1210)。最后,控制器107释放在S1201中取得的数据块位置的不相容,结束数据存储节点的主机I/O处理(S1211)。
接着,对由目的地节点即奇偶校验存储节点的控制器107执行的主机I/O处理进行说明。本处理定期地确认高速缓存容量的消耗量,可以非同步地执行,或者也可以在通过S1207或S1209的数据传输而接收到奇偶校验生成用数据的契机进行启动,同步地执行数据存储节点的主机I/O处理(在写入处理的情况下)。
控制器107确认高速缓存消耗量是否超过了阈值(S1212)。S1212的确认结果是,在高速缓存消耗量未超过阈值的情况下(S1212:N),控制器107结束奇偶校验存储节点的主机I/O处理。
S1212的确认结果是,在高速缓存消耗量超过了阈值的情况下(S1212:Y),控制器107确认自由列表603中是否有空地(S1213)。
S1213的确认结果是,在自由列表603中没有空地的情况下(S1213:N),因为不能确保新Class2code的写出处,所以控制器107选择现有Class2code中的、奇偶校验结构信息的几个时隙为未使用的Class2code,通过读修改写(Read Modify Write),将转储对象数据块更新为其Class2code。首先,控制器107参照奇偶校验结构信息,选择几个时隙成为未使用的Class2code(S1216)。接着,控制器107取得更新对象Class2code的不相容(S1116),从驱动器中将所选择到的Class2code读取(S1118)。接着,控制器107选择存储于脏高速缓存器的数据块中的、与未使用时隙对应的数据块,使用所选择到的数据块,更新Class2code(S1217)。例如,如图6所示,在奇偶校验结构信息中的、与连接于数据存储节点序号0x03的驱动器序号0x0000对应的时隙为未使用的情况下,从存储于脏高速缓存器的数据块中的、存储在与数据存储节点序号0x03连接的驱动器序号0x0000中的数据块中,选择所复制的数据块。
接着,控制器107将更新后的Class2code写到驱动器105中(S1120),更新奇偶校验管理表(S1121)。具体地说,用更新后的Class2code的写出处地址,将与更新所使用的数据块对应的正查表601的条目更新。进而,控制器107用Class2code的重新计算所使用的数据块的存储位置信息,将与更新后的Class2code对应的倒查表602的条目的未使用时隙更新。最后,控制器107释放所取得的不相容,结束处理(S1122)。
S1213的确认结果是,在自由列表603中有空地的情况下(S1213:Y),控制器107因为能够确保新Class2code的写出处,所以用多个数据块,计算新Class2code,写到驱动器105中。首先,控制器107从自由列表603中,取得Class2code的写出处,从脏高速缓存表501中,选择同一条带组序号的数据块、或Class1code(S1214)。要选择的数据块、或Class1code如果是同一条带组序号,则可以为任意的块。接着,控制器107用所选择到的数据块、或Class1code,计算Class2code(S1215)。Class2code在mDnP的情况下,只生成n个。接着,控制器107取得写出处地址的不相容(S1116),写出Class2code(S1120)。
接着,控制器107将奇偶校验管理表303更新(S1121)。具体地说,控制器107用所取得的写出处地址,将与所选择到的数据块对应的正查表601的条目更新,进而用Class2code的计算所使用的数据块的存储位置信息,将与所取得的Class2code的写出处地址对应的倒查表602的条目更新。最后,控制器107释放在S1116中取得的不相容,结束奇偶校验存储节点的主机I/O处理(S1122)。
图13是回滚处理的流程图。在数据存储节点发生了故障时,通过由存储有发生了故障的数据存储节点的奇偶校验块(Class2code)的各奇偶校验存储节点的控制器107执行回滚处理程序307,进行回滚处理。在回滚处理中,在数据存储节点发生了故障时,在奇偶校验存储节点间确认Class2code的匹配性,在有不匹配的情况下,进行用于获得Class2code的匹配性的处理。
首先,控制器107参照撤消高速缓存表502的状态,针对所有条目,确认是否获得了匹配性的确认(S1301)。S1301的确认结果是,在针对所有条目都还未获得匹配性的情况下(S1301:N),控制器107选择一个未确认匹配性的高速缓存条目(S1302)。
接着,控制器107从所选择到的条目的I/O范围信息中,选定应该获得匹配性的其他奇偶校验存储节点节点(询问处节点)(S1303)。具体地说,控制器107从I/O范围内的起始地址和数据传输长度中,确定成为写入对象的数据块。在写入目的地跨越多个数据块的情况下,选定存储那些数据块的Class2code的其他奇偶校验存储节点作为询问处节点。例如,在起始地址为0x00000000、数据传输长度为16KB、及数据块单位为4KB的情况下,地址0x00000000至4块为更新对象。因此,根据条带映射表301,求出这4块条带组序号,选定询问处节点。
接着,控制器107从所选定的询问处节点中,取得选择中的条目和同标签序号的条目的世代序号(S1304)。控制器107确认所取得的世代序号是否比记录于本节点的条目的世代序号小(S1305)
S1305的确认结果是,在所取得的世代序号比记录于本节点的条目的世代序号小的情况下(S1305:Y),控制器107假设存在未接收到最新写入数据的奇偶校验存储节点,则通过将自系节点的Class2code回滚,来获得Class2code的匹配性。该处理除用于读修改写(Read Modify Write)的数据块是回滚用块(S1306)以外,其余均与图11所示的流程图同样(S1115~S1118、S1120~S1122)。在S1306中,控制器107使用存储在选择中条目的高速缓存条目中的数据块、或中间代码,通过对Class2code进行读修改写(Read Modify Write),来更新Class2code。
控制器107在撤消高速缓存表502中,将确认匹配性后的条目的状态更新为已确认(CHECKED),完成该条目的确认,另外实施S1301(S1307)。
S1305的确认结果是,在所取得的世代序号不比记录于本节点的条目中的世代序号小的情况下(S1305:N),控制器107也实施S1307。
S1301的确认结果是,在对所有条目都获得了匹配性的确认的情况下,控制器107结束回滚处理(S1301:Y)。
实施例2
图14是表示实施例2的分布式存储***100的结构的图。关于分布式存储***100,实施例1的图1所示的结构和实施例2的图14所示的结构的主要差别在于如下这方面,即:实施例2的节点101的后端端口108除经由网络103以外,还经由虚拟的或物理的后端网络1406与多个闪存驱动器1401连接。
下面,在与实施例1同样的结构要素上附带相同的符号,省略说明。关于实施例1中已说明的各种管理信息301~304、各种程序305~307、还有各种处理(例如,图10~图13的处理),以下只要没有特别说明,实施例2也是同样的。
在一个站点上设置有一个或多个节点101。节点101不是经由其他节点101,而是经由后端网络1406,可分别与闪存驱动器1401进行通信,能够作为本地驱动器105来使用。一个闪存驱动器1401仅与一个节点101进行通信。
后端网络1406也可以将多个节点101彼此连接,连接有后端网络1406的节点101间也可以使用后端网络1406进行通信。不通过后端网络1406而连接的节点101间的通信使用网络103。
闪存驱动器1401包含用于与节点101连接的接口1402、临时存储数据的缓存器1404、控制闪存驱动器1401的内部处理器1403、及存储数据的多个闪存器1405而构成。
本实施例中由闪存驱动器1401实施奇偶校验块(Class1code或Class2code)的计算处理、该奇偶校验块的元数据管理、及日志结构形式的数据存储处理。由此,节点101无需考虑奇偶校验块(Class1code或Class2code)的生成、该奇偶校验块的结构管理、日志结构形式,就能够实施写入处理,所以能够削减节点101的处理负载,能够将其相应的计算资源分配给应用程序或虚拟机。
具体地说,将实施例1所述的各种管理信息301~304存储在闪存驱动器1401内的缓存器1404中,一部分程序由闪存驱动器1401内的内部处理器1403执行。一部分程序是执行奇偶校验计算及奇偶校验的元数据管理、及日志结构管理的程序。
此外,本发明不限定于上述实施例,包含多种变形例。实施例1和实施例2的结构也可以与其他实施例的结构要素组合来实施。也可以用其他实施例的结构的一部分代替实施例1或实施例2的结构的一部分来实施。也可以去掉实施例1、实施例2的结构的一部分来实施。
另外,以下结构也包含在实施例1或实施例2的技术范围内。
分布式存储***100在扩展或收缩EC组的情况下,针对各节点101的数据,从变更前的EC组的结构向变更后的EC组的结构切换逻辑结构。
分布式存储***100参照EC组的扩展或收缩前后的新旧条带映射表,根据新旧条带映射表的条带组序号的分配状态和节点结构,重建分布式存储***100的集群。特别是分布式存储***100将新旧条带映射表进行比较,在有由新旧条带映射表分配的条带组序号不同的数据块的情况下,执行以下处理。以下,将该数据块称为“对象数据块”。作为对象数据块,也可以包含Class1code。
(1)分布式存储***100在旧条带映射表中的条带组序号未存在于新条带映射表中时,将删除由旧条带映射表中的条带组序号生成的奇偶校验块(Class2code)的通知发送给奇偶校验存储节点。奇偶校验存储节点删除该Class2code。
(2)分布式存储***100在旧条带映射表中的条带组序号存在于新条带映射表中时,将对象数据块发送给奇偶校验存储节点。奇偶校验存储节点以从由旧条带映射表中的条带组序号生成的Class2code的结构中去除对象数据块方式更新Class2code。
(3)分布式存储***100如果存储对象数据块的数据存储节点不是减设对象,则向奇偶校验存储节点传输对象数据块,生成或更新由新条带映射表中的条带组序号生成的奇偶校验。
分布式存储***100是用动态选择到的数据计算奇偶校验,且记录所选择到的数据的存储位置信息的***,根据EC组的扩展或收缩,更新管理信息(例如,条带映射表301等)。例如,分布式存储***100在扩展EC组时,在管理信息中追加新时隙,初始化为0数据。另外,分布式存储***100在收缩EC组时,从管理信息中删除成为0数据的现有时隙。
分布式存储***100根据奇偶校验空间中的空余容量,切换对追加节点的写入数据的奇偶校验计算方法,是重写现有奇偶校验,还是生成新奇偶校验。另外,分布式存储***100将根据相同条带计算的多个奇偶校验存储在驱动器105的连续区域中。
分布式存储***100对生成了奇偶校验的数据或更新后的中间代码和世代序号同时进行管理,在数据存储节点发生了故障时,在节点101间确认世代序号的匹配性,必要的话,将奇偶校验回滚。
分布式存储***100在扩展或收缩EC组的前后,更新条带映射表301,以使其减少条带组的重组数。分布式存储***100对数据传输目的地管理部、主奇偶校验传输目的地管理部、副奇偶校验传输目的地管理部这三个部分,依次变更条带组的分配。
分布式存储***100在扩展EC组的同时增设构成集群的节点101时,将追加节点的单元格并入扩展后的不足D数的条带组内,重组条带组。另外,分布式存储***100将扩展后的不足D数的条带组解散,并将分配有解散后的条带组的单元格并入扩展后的不足D数的其他条带组内,重组条带组。另外,分布式存储***100将分配给现有节点的奇偶校验的单元格中的、分配数有侧重的节点的单元格重新分配给追加节点,以使条带组在同节点中不重复。
分布式存储***100针对现有奇偶校验块,通过RMW(Read-Modify Write)运行,在构成奇偶校验的数据块中追加新数据块,由此按新模式重写奇偶校验块,扩展EC组。分布式存储***100在对追加节点有写入请求时,通过实施奇偶校验块的重写,使EC组扩展中的网络传输和写入时的用于数据保护的网络传输通用化。通过网络传输在追加有必要的数据块的节点上局部化,能够削减EC组扩展中的网络传输量。
分布式存储***100在收缩EC组的同时减少构成集群的节点101时,将分配给除外节点的单元格与除外节点一同从条带映射表301中除去,重组条带组。分布式存储***100选择收缩后的超过D数的条带组中的、几个单元格,用它们重组新条带组。分布式存储***100将分配给除外节点的奇偶校验的单元格重新分配给未分配有构成其奇偶校验的数据块的现有节点的单元格。
分布式存储***100由驱动器105内部执行上述奇偶校验的计算方法。
根据本发明之一方式,分布式存储***100通过根据EC组扩缩前后的条带映射表301的条带组序号的分配状态和节点结构,灵活运用是重写现有奇偶校验块(读修改写(Read Modify Write)),还是生成新奇偶校验块,来削减EC组扩缩时的奇偶校验块重组处理的写惩惩。另外,通过根据奇偶校验空间的空余容量,在更新写入和新写入中灵活运用向追加节点重写时的奇偶校验块计算方法,来削减对追加节点的写惩惩。进而,在奇偶校验块的存储处数不依赖于冗余度的编码方式中,通过在EC组扩缩的前后,以减少条带的重组数的方式更新条带映射表301,来削减节点间的数据传输量。在包含多个存储设备在内的分布式存储***100中,通过削减EC组扩缩时的、写惩惩及网络传输量,通过缩短EC组扩缩所需要的时间,还能够提高主机I/O性能。
分布式存储***100在使数据集(EC组、条带组)的数据元素增加时,在新节点上配置零数据或冗余数据。分布式存储***100是包含多个节点的存储***。所述多个节点分别具有存储设备和将数据存储于所述存储设备中的控制器。所述多个节点的控制器中的至少一个以上的控制器使用由多个数据和与所述多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集。该控制器将所述数据集的所述第一规定数量的数据元素分散地配置于所述多个节点中的第一规定数量的第一节点。该控制器当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示时,将所述数据集的所述第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集。该控制器进行以下控制,以使重构后的所述数据集的数据元素分散地配置于所述第一规定数量的所述第一节点和第二规定数量的第二节点,并且,将零数据或所述冗余数据配置于重构后的所述数据集的数据元素中的所述第二规定数量的所述第二节点中。
至少一个以上的所述控制器,在使重构后的所述数据集的数据元素分散在所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点时,进行控制以使重构后的所述数据集的数据元素中的所述多个数据各自的配置目的地的节点相同。即,在使数据集的数据元素增加时,由于数据(用户数据)可以不向其他节点移动,因此能够削减数据传输量。
所述第二规定数量的所述第二节点中的配置有零数据的节点的控制器,当接收到对所述零数据的配置目的地进行写入的第一写入请求时,进行以下控制:在所述零数据的配置目的地存储所述第一写入请求的第一写入数据,并向所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的配置有重构后的所述数据集的所述冗余数据的节点发送所述第一写入数据。接收到所述第一写入数据的节点的控制器进行以下控制:基于重构后的所述数据集的所述冗余数据和所述第一写入数据,更新所述冗余数据。在重写零数据时,通过读修改写(Read Modify Write)来更新冗余数据(Class2code)。
接收到所述第一写入数据的节点的控制器在更新所述冗余数据时进行以下控制:不使用配置于所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的除发送了所述第一写入数据的节点以外的其他节点中的所述多个数据和零数据,来更新所述冗余数据。由于在冗余数据(Class2code)的更新上可以不使用写入数据和冗余数据以外的数据,因此能够削减数据传输量。
所述第一规定数量的所述第一节点中的配置有所述多个数据的节点的控制器,当接收到以所述多个数据中的任意数据的配置目的地为写入目的地的第二写入请求时,读取配置于所述写入目的地的数据,根据所述第二写入请求的第二写入数据和读取出的所述数据,生成中间代码。该控制器基于所述第二写入数据,更新配置于写入目的地的数据。该控制器向所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的配置有重构后的所述数据集的所述冗余数据的节点发送所述中间代码。接收到所述中间代码的节点的控制器进行以下控制:基于重构后的所述数据集的所述冗余数据和所述中间代码,更新所述冗余数据。在重写数据时,使用中间代码,由读修改写(Read Modify Write)更新冗余数据(Class2code)。
所述接收到中间代码的节点的控制器在更新所述冗余数据时进行以下控制:不使用配置于所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的除发送了所述中间代码的节点以外的其他节点中的所述数据和零数据,来更新所述冗余数据。由于在冗余数据(Class2code)的更新上可以不使用中间代码和冗余数据以外的数据,因此能够削减数据传输量。
在将所述数据集的所述第一规定数量的数据元素分散地配置于所述第一规定数量的所述第一节点时,所述第一规定数量的所述第一节点分别具有对所述数据集的所述第一规定数量的数据元素的配置进行管理的条带映射信息。所述第一规定数量的所述第一节点中的至少一个以上的节点,当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加所述第二规定数量的所述指示时,更新所述条带映射信息以对重构后的所述数据集的数据元素的配置进行管理。该至少一个以上的节点进行控制,以向所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的其他节点发送更新后的所述条带映射信息。所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点分别进行以下控制:基于更新前的所述条带映射信息和更新后的所述条带映射信息,来分散重构后的所述数据集的数据元素。
在所述第二规定数量的所述第二节点中配置零数据的情况下,所述第二规定数量的所述第二节点分别执行以下处理中的至少任一处理:在该节点所具有的存储设备中存储零数据的处理;将表示是零数据的信息与该节点中的成为零数据的配置目的地的地址相关联来进行管理的处理。或者,在所述第二规定数量的所述第二节点中配置零数据的情况下,所述第二规定数量的所述第二节点均没有将该节点所具有的存储设备的实际存储区域分配给该节点中的成为零数据的配置目的地的逻辑地址。
所述第一规定数量的所述第一节点分别提供逻辑卷。重构前的所述数据集所含的所述多个数据分别是不同的节点所提供的逻辑卷的数据。
在接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示之前,在所述多个节点的基础上还至少追加所述第二规定数量的所述第二节点来进行拓展。
所述第一规定数量的所述第一节点和第二规定数量的第二节点分别管理奇偶校验空余容量,其中,所述奇偶校验空余容量是用于存储配置于各节点中的冗余数据的空余容量。接收到所述第一写入数据(新写入数据)的节点(奇偶校验存储节点)的控制器,在该节点的奇偶校验空余容量为规定容量以下的情况下,基于重构后的所述数据集的所述冗余数据和所述第一写入数据,更新所述冗余数据并对其进行存储。另一方面,接收到所述第一写入数据的节点的控制器在该节点的奇偶校验空余容量不为规定容量以下的情况下,基于重构后的所述数据集的数据元素中的除所述冗余数据以外的数据元素,生成重构后的所述数据集的冗余数据,将所生成的所述冗余数据存储于该奇偶校验空余容量的至少一部分中。
在重构后的所述数据集的数据元素包含多个冗余数据,且在所述第一规定数量的所述第一节点和第二规定数量的第二节点中的与所述多个冗余数据相同数量的节点中分散地配置所述多个冗余数据的情况下,配置有所述多个冗余数据的各节点,将配置于该节点的冗余数据与生成或更新了该冗余数据时的用于标识数据集的世代的世代序号相关联来进行管理。在配置有重构后的所述数据集的数据的节点发生了故障的情况下,配置有所述冗余数据的至少一个以上的节点,取得配置有所述多个冗余数据的各节点所管理的世代序号,判断其他节点所管理的世代序号是否比本节点所管理的世代序号小。在该判断的结果是其他节点所管理的世代序号比本节点所管理的世代序号小的情况下,将本节点的冗余数据回滚到其他节点所管理的世代序号中的最小世代序号的世代的数据集中的冗余数据,来执行重建处理。另一方面,在该判断的结果是其他节点所管理的世代序号没有比本节点所管理的世代序号小的情况下,用本节点所管理的冗余数据来执行重建处理。
作为本发明的实施方式的例子,包含使所述至少一个以上的控制器执行以下(1)~(4)的步骤的程序、或记录有该程序的计算机可读记录介质。
(1)使用由多个数据和与所述多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集。
(2)将所述数据集的所述第一规定数量的数据元素分散地配置于第一规定数量的第一节点。
(3)当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示时,将所述数据集的所述第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集。
(4)使重构后的所述数据集的数据元素分散地配置于所述第一规定数量的所述第一节点和第二规定数量的第二节点,并且,将零数据或所述冗余数据配置于重构后的所述数据集的数据元素中的所述第二规定数量的所述第二节点中。
作为本发明的实施方式的例子,提供一种包含多个节点在内的***的控制方法,其包含具有以下(5)~(8)的步骤的控制方法。
(5)使用由多个数据和与所述多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集。
(6)将所述数据集的所述第一规定数量的数据元素分散地配置于所述多个节点中的第一规定数量的第一节点。
(7)当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示时,将所述数据集的所述第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集。
(8)使重构后的所述数据集的数据元素分散地配置于所述第一规定数量的所述第一节点和第二规定数量的第二节点,并且,将零数据或所述冗余数据配置于重构后的所述数据集的数据元素中的所述第二规定数量的所述第二节点中。
符号说明
100 分布式存储***
101 节点
102 内部网络
103 网络
104 存储器
105 驱动器
106 处理器
107 控制器
108 后端端口。
Claims (14)
1.一种包含多个节点的存储***,其特征在于:
所述多个节点分别具有存储设备和将数据存储于所述存储设备中的控制器,
所述多个节点的控制器中的至少一个以上的控制器进行以下控制:
使用由多个数据和与所述多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集,
将所述数据集的所述第一规定数量的数据元素分散地配置于所述多个节点中的第一规定数量的第一节点,
当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示时,将所述数据集的所述第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集,
使重构后的所述数据集的数据元素分散地配置于所述第一规定数量的所述第一节点和第二规定数量的第二节点,并且,将零数据或所述冗余数据配置于重构后的所述数据集的数据元素中的所述第二规定数量的所述第二节点中,
在重构后的所述数据集的数据元素包含多个冗余数据,且在所述第一规定数量的所述第一节点和第二规定数量的第二节点中的与所述多个冗余数据相同数量的节点中分散地配置所述多个冗余数据的情况下,
配置有所述多个冗余数据的各节点,将配置于该节点的冗余数据与生成或更新了该冗余数据时的用于标识数据集的世代的世代序号相关联来进行管理,
在配置有重构后的所述数据集的数据的节点发生了故障的情况下,配置有所述冗余数据的至少一个以上的节点,取得配置有所述多个冗余数据的各节点所管理的世代序号,判断其他节点所管理的世代序号是否比本节点所管理的世代序号小,
在该判断的结果是其他节点所管理的世代序号比本节点所管理的世代序号小的情况下,将本节点的冗余数据回滚到其他节点所管理的世代序号中的最小世代序号的世代的数据集中的冗余数据,来执行重建处理,
在该判断的结果是其他节点所管理的世代序号没有比本节点所管理的世代序号小的情况下,用本节点所管理的冗余数据来执行重建处理。
2.根据权利要求1所述的存储***,其特征在于:
至少一个以上的所述控制器,在使重构后的所述数据集的数据元素分散在所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点时,进行控制以使重构后的所述数据集的数据元素中的所述多个数据各自的配置目的地的节点相同。
3.根据权利要求2所述的存储***,其特征在于:
所述第二规定数量的所述第二节点中的配置有零数据的节点的控制器,当接收到对所述零数据的配置目的地进行写入的第一写入请求时,进行以下控制:在所述零数据的配置目的地存储所述第一写入请求的第一写入数据,并向所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的配置有重构后的所述数据集的所述冗余数据的节点发送所述第一写入数据,
接收到所述第一写入数据的节点的控制器进行以下控制:基于重构后的所述数据集的所述冗余数据和所述第一写入数据,更新所述冗余数据。
4.根据权利要求3所述的存储***,其特征在于:
接收到所述第一写入数据的节点的控制器在更新所述冗余数据时进行以下控制:
不使用配置于所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的除发送了所述第一写入数据的节点以外的其他节点中的所述多个数据和零数据,来更新所述冗余数据。
5.根据权利要求2所述的存储***,其特征在于:
所述第一规定数量的所述第一节点中的配置有所述多个数据的节点的控制器,当接收到以所述多个数据中的任意数据的配置目的地为写入目的地的第二写入请求时,进行以下控制:
读取配置于所述写入目的地的数据,
根据所述第二写入请求的第二写入数据和读取出的所述数据,生成中间代码,
基于所述第二写入数据,更新配置于写入目的地的数据,
向所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的配置有重构后的所述数据集的所述冗余数据的节点发送所述中间代码,
接收到所述中间代码的节点的控制器进行以下控制:基于重构后的所述数据集的所述冗余数据和所述中间代码,更新所述冗余数据。
6.根据权利要求5所述的存储***,其特征在于:
所述接收到中间代码的节点的控制器在更新所述冗余数据时进行以下控制:
不使用配置于所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的除发送了所述中间代码的节点以外的其他节点中的所述数据和零数据,来更新所述冗余数据。
7.根据权利要求1所述的存储***,其特征在于:
在将所述数据集的所述第一规定数量的数据元素分散地配置于所述第一规定数量的所述第一节点时,所述第一规定数量的所述第一节点分别具有对所述数据集的所述第一规定数量的数据元素的配置进行管理的条带映射信息,
所述第一规定数量的所述第一节点中的至少一个以上的节点,当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加所述第二规定数量的所述指示时,进行以下控制:更新所述条带映射信息以对重构后的所述数据集的数据元素的配置进行管理,并向所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点中的其他节点发送更新后的所述条带映射信息,
所述第一规定数量的所述第一节点和所述第二规定数量的所述第二节点分别进行以下控制:基于更新前的所述条带映射信息和更新后的所述条带映射信息,来分散重构后的所述数据集的数据元素。
8.根据权利要求1所述的存储***,其特征在于:
在所述第二规定数量的所述第二节点中配置零数据的情况下,所述第二规定数量的所述第二节点分别执行以下处理中的至少任一处理:在该节点所具有的存储设备中存储零数据的处理;将表示是零数据的信息与该节点中的成为零数据的配置目的地的地址相关联来进行管理的处理。
9.根据权利要求1所述的存储***,其特征在于:
在所述第二规定数量的所述第二节点中配置零数据的情况下,所述第二规定数量的所述第二节点均没有将该节点所具有的存储设备的实际存储区域分配给该节点中的成为零数据的配置目的地的逻辑地址。
10.根据权利要求1所述的存储***,其特征在于:
所述第一规定数量的所述第一节点分别提供逻辑卷,
重构前的所述数据集所含的所述多个数据分别是不同的节点所提供的逻辑卷的数据。
11.根据权利要求1所述的存储***,其特征在于:
在接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示之前,在所述多个节点的基础上还至少追加所述第二规定数量的所述第二节点来进行拓展。
12.根据权利要求3所述的存储***,其特征在于:
所述第一规定数量的所述第一节点和第二规定数量的第二节点分别管理奇偶校验空余容量,其中,所述奇偶校验空余容量是用于存储配置于各节点中的冗余数据的空余容量,
接收到所述第一写入数据的节点的控制器,
在该节点的奇偶校验空余容量为规定容量以下的情况下,基于重构后的所述数据集的所述冗余数据和所述第一写入数据,更新所述冗余数据并对其进行存储,
在该节点的奇偶校验空余容量不为规定容量以下的情况下,基于重构后的所述数据集的数据元素中的除所述冗余数据以外的数据元素,生成重构后的所述数据集的冗余数据,将所生成的所述冗余数据存储于该奇偶校验空余容量的至少一部分中。
13.一种计算机可读记录介质,其特征在于,记录有使至少一个以上的控制器执行以下步骤的程序:
使用由多个数据和与所述多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集的步骤;
将所述数据集的所述第一规定数量的数据元素分散地配置于第一规定数量的第一节点的步骤;
当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示时,将所述数据集的所述第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集的步骤;和
使重构后的所述数据集的数据元素分散地配置于所述第一规定数量的所述第一节点和第二规定数量的第二节点,并且,将零数据或所述冗余数据配置于重构后的所述数据集的数据元素中的所述第二规定数量的所述第二节点中的步骤,其中,
在重构后的所述数据集的数据元素包含多个冗余数据,且在所述第一规定数量的所述第一节点和第二规定数量的第二节点中的与所述多个冗余数据相同数量的节点中分散地配置所述多个冗余数据的情况下,
配置有所述多个冗余数据的各节点,将配置于该节点的冗余数据与生成或更新了该冗余数据时的用于标识数据集的世代的世代序号相关联来进行管理,
在配置有重构后的所述数据集的数据的节点发生了故障的情况下,配置有所述冗余数据的至少一个以上的节点,取得配置有所述多个冗余数据的各节点所管理的世代序号,判断其他节点所管理的世代序号是否比本节点所管理的世代序号小,
在该判断的结果是其他节点所管理的世代序号比本节点所管理的世代序号小的情况下,将本节点的冗余数据回滚到其他节点所管理的世代序号中的最小世代序号的世代的数据集中的冗余数据,来执行重建处理,
在该判断的结果是其他节点所管理的世代序号没有比本节点所管理的世代序号小的情况下,用本节点所管理的冗余数据来执行重建处理。
14.一种包含多个节点的***的控制方法,其特征在于,包括:
使用由多个数据和与所述多个数据对应的冗余数据构成的第一规定数量的数据元素来构成数据集的步骤;
将所述数据集的所述第一规定数量的数据元素分散地配置于所述多个节点中的第一规定数量的第一节点的步骤;
当接收到使构成所述数据集的数据元素的数量从所述第一规定数量增加第二规定数量的指示时,将所述数据集的所述第一规定数量的数据元素和第二规定数量的零数据作为新的数据元素,来重构数据集的步骤;和
使重构后的所述数据集的数据元素分散地配置于所述第一规定数量的所述第一节点和第二规定数量的第二节点,并且,将零数据或所述冗余数据配置于重构后的所述数据集的数据元素中的所述第二规定数量的所述第二节点中的步骤,其中,
在重构后的所述数据集的数据元素包含多个冗余数据,且在所述第一规定数量的所述第一节点和第二规定数量的第二节点中的与所述多个冗余数据相同数量的节点中分散地配置所述多个冗余数据的情况下,
配置有所述多个冗余数据的各节点,将配置于该节点的冗余数据与生成或更新了该冗余数据时的用于标识数据集的世代的世代序号相关联来进行管理,
在配置有重构后的所述数据集的数据的节点发生了故障的情况下,配置有所述冗余数据的至少一个以上的节点,取得配置有所述多个冗余数据的各节点所管理的世代序号,判断其他节点所管理的世代序号是否比本节点所管理的世代序号小,
在该判断的结果是其他节点所管理的世代序号比本节点所管理的世代序号小的情况下,将本节点的冗余数据回滚到其他节点所管理的世代序号中的最小世代序号的世代的数据集中的冗余数据,来执行重建处理,
在该判断的结果是其他节点所管理的世代序号没有比本节点所管理的世代序号小的情况下,用本节点所管理的冗余数据来执行重建处理。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/012499 WO2018179073A1 (ja) | 2017-03-28 | 2017-03-28 | ストレージシステム、コンピュータ読み取り可能な記録媒体、システムの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110383251A CN110383251A (zh) | 2019-10-25 |
CN110383251B true CN110383251B (zh) | 2023-04-07 |
Family
ID=63674763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780086094.0A Active CN110383251B (zh) | 2017-03-28 | 2017-03-28 | 存储***、计算机可读记录介质、***的控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11150846B2 (zh) |
JP (1) | JP6798007B2 (zh) |
CN (1) | CN110383251B (zh) |
WO (1) | WO2018179073A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11221958B2 (en) * | 2017-08-29 | 2022-01-11 | Samsung Electronics Co., Ltd. | System and method for LBA-based RAID |
US10747474B2 (en) * | 2018-10-22 | 2020-08-18 | EMC IP Holding Company LLC | Online cluster expansion for storage system with decoupled logical and physical capacity |
JP6947717B2 (ja) | 2018-12-27 | 2021-10-13 | 株式会社日立製作所 | ストレージシステム |
EP3971701A4 (en) * | 2019-09-09 | 2022-06-15 | Huawei Cloud Computing Technologies Co., Ltd. | DATA PROCESSING METHODS IN A STORAGE SYSTEM, DEVICE AND STORAGE SYSTEM |
JP6955588B2 (ja) * | 2020-01-20 | 2021-10-27 | 株式会社日立製作所 | データ分析を支援するシステム及び方法 |
JP7261756B2 (ja) * | 2020-02-10 | 2023-04-20 | 株式会社日立製作所 | ストレージシステム、処理方法 |
JP2023522544A (ja) | 2020-02-20 | 2023-05-31 | インテル・コーポレーション | 単方向コマンドによるオン-ssdの消失訂正符号化 |
JP7244482B2 (ja) * | 2020-12-16 | 2023-03-22 | 株式会社日立製作所 | ストレージ管理システム、管理方法 |
JP7266060B2 (ja) * | 2021-04-30 | 2023-04-27 | 株式会社日立製作所 | ストレージシステムの構成変更方法及びストレージシステム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0704006D0 (en) * | 2006-03-06 | 2007-04-11 | Hewlett Packard Development Co | Distributed data-storage system |
CN102197389A (zh) * | 2008-10-24 | 2011-09-21 | 微软公司 | 分布式数据***中的配置管理 |
CN105960639A (zh) * | 2014-01-31 | 2016-09-21 | 谷歌公司 | 分布式存储***中的优先化数据重构 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524204A (en) * | 1994-11-03 | 1996-06-04 | International Business Machines Corporation | Method and apparatus for dynamically expanding a redundant array of disk drives |
US5758118A (en) * | 1995-12-08 | 1998-05-26 | International Business Machines Corporation | Methods and data storage devices for RAID expansion by on-line addition of new DASDs |
JP2000010738A (ja) * | 1998-06-17 | 2000-01-14 | Toshiba Corp | ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体 |
AU2003291014A1 (en) * | 2002-11-14 | 2004-06-15 | Isilon Systems, Inc. | Systems and methods for restriping files in a distributed file system |
US7996608B1 (en) * | 2005-10-20 | 2011-08-09 | American Megatrends, Inc. | Providing redundancy in a storage system |
US8103903B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US9229808B2 (en) * | 2010-10-01 | 2016-01-05 | Pure Storage, Inc. | Reconstruct reads in a raid array with dynamic geometries |
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和*** |
JP6135226B2 (ja) * | 2013-03-21 | 2017-05-31 | 日本電気株式会社 | 情報処理装置、情報処理方法、ストレージシステム及びコンピュータプログラム |
US9501359B2 (en) * | 2014-09-10 | 2016-11-22 | Netapp, Inc. | Reconstruction of dense tree volume metadata state across crash recovery |
WO2016051512A1 (ja) | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
JP6163588B2 (ja) | 2016-05-11 | 2017-07-12 | 株式会社日立製作所 | ストレージシステム |
-
2017
- 2017-03-28 CN CN201780086094.0A patent/CN110383251B/zh active Active
- 2017-03-28 US US16/328,933 patent/US11150846B2/en active Active
- 2017-03-28 JP JP2019508370A patent/JP6798007B2/ja active Active
- 2017-03-28 WO PCT/JP2017/012499 patent/WO2018179073A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0704006D0 (en) * | 2006-03-06 | 2007-04-11 | Hewlett Packard Development Co | Distributed data-storage system |
CN102197389A (zh) * | 2008-10-24 | 2011-09-21 | 微软公司 | 分布式数据***中的配置管理 |
CN105960639A (zh) * | 2014-01-31 | 2016-09-21 | 谷歌公司 | 分布式存储***中的优先化数据重构 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2018179073A1 (ja) | 2019-07-11 |
WO2018179073A1 (ja) | 2018-10-04 |
CN110383251A (zh) | 2019-10-25 |
US20190243553A1 (en) | 2019-08-08 |
US11150846B2 (en) | 2021-10-19 |
JP6798007B2 (ja) | 2020-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110383251B (zh) | 存储***、计算机可读记录介质、***的控制方法 | |
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US11461015B2 (en) | Available storage space in a system with varying data redundancy schemes | |
US8495293B2 (en) | Storage system comprising function for changing data storage mode using logical volume pair | |
CN107817952B (zh) | 存储*** | |
JP2019071100A (ja) | 分散型ストレージシステム | |
JP7247290B2 (ja) | ストレージシステム | |
JP5816303B2 (ja) | フラッシュメモリを含むストレージシステム、及び記憶制御方法 | |
US20110246731A1 (en) | Backup system and backup method | |
US20120278560A1 (en) | Pre-fetching in a storage system that maintains a mapping tree | |
CN113448502B (zh) | 分布式存储***和存储控制方法 | |
JP6653370B2 (ja) | ストレージシステム | |
JP6853227B2 (ja) | ストレージシステム及びストレージ制御方法 | |
JP6494787B2 (ja) | 分散ストレージシステム | |
US20220342758A1 (en) | Recovery from partial device error in data storage system | |
JP7443404B2 (ja) | ストレージシステム | |
CN112558882B (zh) | 确定磁盘重构信息的方法和装置 | |
US11544005B2 (en) | Storage system and processing method | |
JP6605762B2 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 | |
JP2024017058A (ja) | ストレージシステム及び管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |