CN106062721A - 一种将数据写入存储系统的方法和存储系统 - Google Patents
一种将数据写入存储系统的方法和存储系统 Download PDFInfo
- Publication number
- CN106062721A CN106062721A CN201480035917.3A CN201480035917A CN106062721A CN 106062721 A CN106062721 A CN 106062721A CN 201480035917 A CN201480035917 A CN 201480035917A CN 106062721 A CN106062721 A CN 106062721A
- Authority
- CN
- China
- Prior art keywords
- storage device
- storage
- raid
- preserved
- data
- 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.)
- Granted
Links
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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1084—Degraded mode, e.g. caused by single or multiple storage removals or disk failures
-
- 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/14—Error detection or correction of the data by redundancy in operation
-
- 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
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
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)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种将数据写入存储系统的方法和存储系统,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括T个成员。所述控制设备确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员。然后,选择所述X个存储设备中的第二存储设备,所述第二存储设备中保存的成员的个数小于T/X。再将目标数据写入所述第二存储设备,所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。能够在一定程度上保证数据的可靠性。
Description
本发明实施例涉及存储技术领域,特别是一种将数据写入存储系统的方法和存储系统。
在存储系统中,多个存储服务器相互连接,构建成一个分布式系统,协作完成数据存储的任务。在执行一个任务时,存储服务器的失效可能会导致该任务失败。因此,为了容忍这些失效,存储系统通常采用数据冗余存储的方式。典型的做法是独立磁盘冗余阵列(英文全称:Redundant Array of Independent Disks,英文简称:RAID)技术。RAID技术将一个数据划分为多个数据单元,多个数据单元之间通过异或计算出校验单元,数据单元和校验单元保存在不同的存储服务器中。当存储服务器发生失效时,可以通过未发生失效的存储服务器中保存的数据单元和校验单元,重新计算出失效的存储服务器中保存的数据内容,因而能够容忍存储服务器的失效。在这种出现存储服务器失效的时间内,由于失效的存储服务器中保存的数据内容能够通过计算重新获取,因此存储系统仍然允许对外提供服务,此时的服务被称为降级服务。
通常情况下,永久失效是指存储系统中的存储服务器发生故障,永久地离开所述存储系统;瞬时失效是指存储系统中的存储服务器因为性能抖动等原因在一段时间内被判定为失效,然而经过一段时间之后,该存储服务器可以重新回到所述存储系统。
如果发生失效的存储服务器只是瞬时失效,在一段较短的时间内重新加入存储系统之后,若再次发生存储服务器的失效,那么就有可能造成数据丢失。
发明内容
本发明实施例提出了一种将数据写入存储系统的方法和存储系统,能够让发生瞬时失效的存储设备重新加入存储系统之后,即使再次发生其他存储设备永久失效,只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,则仍然能够保证数据的可靠性。
本发明实施例第一方面提供了一种将数据写入存储系统的方法,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括T个成员。所述方法由所述控制设备执行。所述控制设备确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员。然后,选择所述X个存储设备中的第二存储设备,所述第二存储设备中保存的成员的个数小于T/X。再将目标数据写入所述第二存储设备,所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
在第一方面的第一种可能的实施方式中,T>X,并且T不等于X的倍数。并且所述T=N+M,其中,所述N是所述T个成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1。
结合第一方面或第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述第二存储设备是所述X个存储设备中保存成员最少的存储设备。
结合第一方面或第一方面的第一种至第二种任一可能的实施方式,在第三种可能的实施方式中,还包括:所述控制设备确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
结合第一方面的第三种可能的实施方式中,在第四种可能的实施方式中,所述控制设备中保存有所述第一存储设备中保存的至少一个成员的逻辑地址。所述方法还包括:所述控制设备对接收到的数据对象进行划分,生成所述目标数据,为所述目标数据分配逻辑地址。并且,所述确定所述目标数据
是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元具体是指,确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
结合第一方面或第一方面的第一种至第四种任一可能的实施方式,在第五种可能的实施方式中,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
结合第一方面或第一方面的第一种至第五种任一可能的实施方式,在第六种可能的实施方式中,所述控制设备为控制器,并且所述存储设备为磁盘。
结合第一方面或第一方面的第一种至第五种任一可能的实施方式,在第七种可能的实施方式中,所述存储设备为存储服务器,并且所述控制设备是X个存储服务器中的任意一个存储服务器。
结合第一方面或第一方面的第一种至第七种任一可能的实施方式,在第八种可能的实施方式中,所述RAID的类型是RAID6。
本发明实施例第二方面提供了一种将数据写入存储系统的方法。所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括(N+M)个成员,其中所述N是所述成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1,N+M>=X。所述方法由所述控制设备执行。所述控制设备确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员。然后,将目标数据写入所述X个存储设备中的(Y+1)个第二存储设备,其中 所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
在第二方面的第一种可能的实施方式中,还包括所述控制设备确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
结合第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述控制设备中保存有所述第一存储设备中保存的至少一个成员的逻辑地址。所述方法还包括:所述控制设备对接收到的数据对象进行划分,生成所述目标数据,为所述目标数据分配逻辑地址。所述确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元具体是指,确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
结合第二方面,或者第二方面的第一种至第二种任一可能的实施方式,在第三种可能的实施方式中,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
结合第二方面,或者第二方面的第一种至第三种任一可能的实施方式,在第四种可能的实施方式中,所述控制设备为控制器,并且所述存储设备为磁盘。
结合第二方面,或者第二方面的第一种至第三种任一可能的实施方式,在第五种可能的实施方式中,所述存储设备为存储服务器,并且所述控制设备是X个存储服务器中的任意一个存储服务器中。
结合第二方面,或者第二方面的第一种至第五种任一可能的实施方式,在第六种可能的实施方式中,所述RAID的类型是RAID6。
结合第二方面,在第七种可能的实施方式中,当N+M=X时,所述RAID的类型是RAID5。
本发明实施例第三方面提供了一种存储系统,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括T个成员。所述X个存储设备,用于存储所述T个成员。所述控制设备,用于确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员。然后,选择所述X个存储设备中的第二存储设备,所述第二存储设备中
保存的成员的个数小于T/X。再将目标数据写入所述第二存储设备,所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
结合第三方面,在第三方面的第一种可能的实施方式中,T>X,并且T不等于X的倍数;所述T=N+M,其中,所述N是所述T个成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1。
结合第三方面或第三方面的第一种可能的实施方式,在第二种可能的实施方式中,所述第二存储设备是所述X个存储设备中保存成员最少的存储设备。
结合第三方面或第三方面的第一种至第二种任一可能的实施方式,在第三种可能的实施方式中,所述控制设备,还用于确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
结合第三方面的第三种可能的实施方式中,在第四种可能的实施方式中,所述控制设备,还用于对接收到的数据对象进行划分,生成所述目标数据,为所述目标数据分配逻辑地址。所述控制设备,具体用于确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
结合第三方面或第三方面的第一种至第四种任一可能的实施方式中,在第五种可能的实施方式中,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
结合第三方面或第三方面的第一种至第五种任一可能的实施方式中,在第六种可能的实施方式中,所述控制设备为控制器,并且所述存储设备为磁盘。
结合第三方面或第三方面的第一种至第五种任一可能的实施方式中,在第七种可能的实施方式中,所述存储设备为存储服务器,并且所述控制设备是X个存储服务器中的任意一个存储服务器。
结合第三方面或第三方面的第一种至第七种任一可能的实施方式中,在第八种可能的实施方式中,所述RAID的类型是RAID6。
本发明实施例第四方面提供了一种存储系统,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括(N+M)个成员,其中所述N是所述成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1,N+M>=X。所述X个存储设备,用于存储所述(N+M)个成员。所述控制设备,用于确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员。然后,将目标数据写入所述X个存储设备中的(Y+1)个第二存储设备,其中所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
在第四方面的第一种可能的实施方式中,所述控制设备,还用于确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
结合第四方面的第一种可能的实施方式,在第二种可能的实施方式中,所述控制设备,还用于对接收到的数据对象进行划分,生成所述目标数据;为所述目标数据分配逻辑地址。所述控制设备,具体用于确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
结合第四方面或第四方面的第一种至第二种可能的实施方式,在第三种可能的实施方式中,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
结合第四方面或第四方面的第一种至第三种可能的实施方式,在第四种可能的实施方式中,所述控制设备为控制器,并且所述存储设备为磁盘。
结合第四方面或第四方面的第一种至第三种可能的实施方式,在第五种可能的实施方式中,所述存储设备为存储服务器,并且所述控制设备是X个
存储服务器中的任意一个存储服务器中。
结合第四方面或第四方面的第一种至第五种可能的实施方式,在第六种可能的实施方式中,所述RAID的类型是RAID6。
结合第四方面或第四方面的第一种至第五种可能的实施方式,在第七种可能的实施方式中,当N+M=X时,所述RAID的类型是RAID5。
本发明实施例提供了一种将数据写入存储系统的方法和存储系统,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括T个成员。所述控制设备确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员。然后,选择所述X个存储设备中的第二存储设备,所述第二存储设备中保存的成员的个数小于T/X。再将目标数据写入所述第二存储设备,所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。本实施例可以选择保存的成员的个数小于T/X的存储设备作为发生瞬时失效的存储设备的接替者,并且将对保存在所述瞬时失效的存储设备中的成员进行更新的成员写入所述接替者中。由此,能够让发生瞬时失效的存储设备重新加入存储系统之后,即使再次发生其他存储设备永久失效,只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,则仍然能够保证数据的可靠性。
另外,本发明实施例还提供了另一种将数据写入存储系统的方法和存储系统。所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括(N+M)个成员,其中所述N是所述成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1,N+M>=X。所述控制设备确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员。然后,将目标数据写入所
述X个存储设备中的(Y+1)个第二存储设备,其中所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。本实施例可以选择(Y+1)个存储设备作为发生瞬时失效的存储设备的接替者,并且将对保存在所述瞬时失效的存储设备中的成员进行更新的成员写入所述(Y+1)接替者中。由此,能够让发生瞬时失效的存储设备重新加入存储系统之后,即使再次发生其他存储设备永久失效,只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,则仍然能够保证数据的可靠性。
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的现有技术中存储服务器发生永久失效的场景示意图;
图2是本发明实施例提供的存储系统的一种组织结构图;
图3是本发明实施例提供的存储系统的另一种组织结构图;
图4是本发明实施例提供的存储系统的再一种组织结构图;
图5A是本发明实施例提供的一种为失效的存储服务器选择接替者的示意图;
图5B是本发明实施例提供的另一种为失效的存储服务器选择接替者的示意图;
图5C是本发明实施例提供的再一种为失效的存储服务器选择接替者的示意图;
图5D是本发明实施例提供的又一种为失效的存储服务器选择接替者的示意图;
图5E是本发明实施例提供的又一种为失效的存储服务器选择接替者的示意图;
图5F是本发明实施例提供的又一种为失效的存储服务器选择接替者的示意图;
图5G是本发明实施例提供的又一种为失效的存储服务器选择接替者的示意图;
图5H是本发明实施例提供的又一种为失效的存储服务器选择接替者的示意图;
图6是本发明实施例提供的一种将数据写入存储系统的方法流程示意图;
图7是本发明实施例提供的一种将数据写入存储系统的另一种实施方式的方法流程示意图。
本发明实施例提出了一种将数据写入存储系统的方法和存储系统,能够让发生瞬时失效的存储设备重新加入存储系统之后,即使再次发生其他存储设备永久失效,只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,则仍然能够保证数据的可靠性。
在现有技术中,如果存储系统对外提供降级服务,当有数据更新操作时,将只更新未发生失效的存储服务器上的数据单元或者校验单元。如图1所示,存储服务器1-6组成RAID。A、B、C、D是数据单元,P和Q根据数据单元计算获得的校验单元。A、B、C、D、P和Q一起组成所述RAID的一个分条(stripe),写入所述存储服务器1-6中。
在T0时刻,数据单元和校验单元均处于第0号版本,其中,P0和Q0是通过数据单元A0、B0、C0、D0计算获得的。此时,存储服务器5和存储服务器6发生瞬时失效,其他存储服务器正常,存储系统进入降级服务模式。
在T1时刻,用户往所述分条中写入新数据,将A0、B0、C0、D0均更
新为A1、B1、C1、D1,而P1和Q1不写入,此时,所述RAID中存储的数据为A1、B1、C1、D1、P0和Q0。
如果存储服务器5和存储服务器6仅仅是瞬时失效,那么在T2时刻,存储服务器5和存储服务器6重新加入所述RAID之后,并且P0和Q0还没有来得及根据A1、B1、C1、D1计算并更新为P1和Q1时,存储服务器3和存储服务器4发生永久失效。在这种情况下,C1和D1的数据将永远丢失,这是因为此时只有存储系统中只保存有A1、B1、P0和Q0,无法根据A1、B1、P0和Q0得到C1和D1。
为此,本发明实施例提供了一种将数据写入存储系统的方法以及存储系统,在确定第一存储设备瞬时失效之后,可以为所述瞬时失效的第一存储设备选择合适的接替者,以避免所述第一存储设备重新回到存储系统而其他存储设备又发生永久失效时只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,数据就不会发生丢失,由此保证了数据的可靠性。
下面对本发明实施例的应用场景进行介绍。
场景1:如图2所示,图2描绘了本发明实施例提供的存储系统10的组成图,图2所示的存储系统10包括一个或多个主机40(图2中以一个为例)和多个存储服务器20。主机可以是计算设备,如服务器、台式计算机等终端设备。存储服务器20可以是存储设备,如存储阵列等。主机40与存储服务器20之间,以及各个存储服务器20之间可以通过网络文件系统(英文全称:Network File System,英文简称:NFS)/通用网络文件系统(英文全称:Common Internet File System,英文简称:CIFS)协议或者光纤通道(英文全称:Fiber Channel,英文简称:FC)协议进行通信。多个存储服务器20可以组成一个或多个RAID,为了描述方便,在本实施例中以组成一个RAID作为示例。
主机40可以向存储系统10发送写数据请求,所述写数据请求中携带待
写入所述存储系统的数据对象,所述数据对象可以是块数据或者文件。所述多个存储服务器20中的任意一个存储服务器接收到所述写数据请求后,将所述数据对象划分为多个数据单元,并采用异或校验或者其他方式计算出所述多个数据单元的校验单元,所述多个数据单元和校验单元可以组成一个stripe存储在所述RAID中,其中每个数据单元或校验单元均是所述stripe的成员。然后所述接收到写数据请求的存储服务器20再将每个成员发送给相应的存储服务器20进行存储。
作为一种可选的实施方式,在图2所示的存储系统10中,可以将一个存储服务器20作为主服务器,负责接收主机40向存储系统10发送写数据请求,并将所述数据对象划分为多个数据单元,以及计算所述多个数据单元的校验单元,再将所述stripe的每个成员发送给相应的存储服务器20进行存储。
场景2:如图3所示,存储系统10除了包含组成RAID的各个存储服务器之外,还可以包括热备服务器30。热备服务器30不属于所述RAID,它是在某个存储服务器发生瞬时失效时,专门用于替换该瞬时失效的存储服务器的存储服务器。可以理解的是,在正常情况下,热备服务器30不承担数据业务,一旦某个存储服务器发生瞬时失效,所述热备服务器30可以代替该瞬时失效的存储服务器承担数据业务,例如,将准备写入瞬时失效的存储服务器的数据写入热备服务器30。通常情况下,在存储系统10中,热备服务器30的个数可以是一个或者多个。
场景3:如图4所示,图4所示的存储系统10包括至少一个主机40,至少一个控制器50和多个磁盘60。主机40可以是计算设备,如服务器、台式计算机等终端设备。控制器50可以是存储服务器,管理多个磁盘60,所述多个磁盘60之间组成RAID。主机40可以向控制器50发送写数据请求,所述写数据请求中携带待写入所述存储系统的数据对象。控制器50接收到所述写数据请求后,将所述数据划分为多个数据单元,并采用异或校验或者
其他方式计算出所述多个数据单元的校验单元,所述多个数据单元和校验单元可以组成一个stripe存储在所述RAID中,其中每个数据单元或校验单元均是所述stripe的成员。然后,控制器50将每个成员发送给相应的磁盘存储。另外,除了组成所述RAID的磁盘之外,还可以包括热备盘(图中未示出),热备盘的作用与图3所示的热备服务器类似,这里不再赘述。
如图4所示,控制器50主要包括处理器(processor)518、缓存(cache)520、存储器(memory)522、通信总线(简称总线)526以及通信接口(Communication Interface)528。处理器518、缓存520、存储器522以及通信接口528通过通信总线526完成相互间的通信。
通信接口528,用于与主机40或磁盘60通信。
存储器522,用于存放程序524,存储器522可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可以理解的是,存储器522可以为随机存储器(Random-Access Memory,RAM)、磁碟、存储器、光盘、固态存储器(Solid State Disk,SSD)或者非易失性存储器等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
程序524可以包括程序代码,所述程序代码包括文件系统210以及其他程序代码。
缓存520(Cache)用于缓存从应用服务器10接收的数据或从磁盘60中读取的数据。缓存520可以是RAM、ROM、闪存(Flash memory)或固态存储器(Solid State Disk,SSD)等各种可以存储数据的非短暂性的(non-transitory)机器可读介质,在此不做限定。
另外,存储器522和缓存520可以合设或者分开设置,本发明实施例对此不做限定。
处理器518可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例
的一个或多个集成电路。在本发明实施例中,处理器518可以用于接收来自主机40的各种数据处理请求,例如读数据操作、写数据操作、修改数据操作等等。
在以上三种应用场景中,主机40也可以自己将数据对象划分为多个数据单元,以及计算所述多个数据单元的校验单元,再分别将所述stripe的每个成员发送给相应的存储服务器20或者控制器50进行存储。
下面以场景1或者场景2为例说明当存储系统10中有存储服务器20发生瞬时失效时,如何为发生瞬时失效的存储服务器20选择接替者。
在本实施例中,校验单元的个数可以是一个,也可以是多个,视RAID的类型而定。例如,RAID 5中校验单元的个数是一个,RAID 6中校验单元的个数是两个。
为了方便描述,本实施例用N表示数据单元的个数,M表示校验单元的个数,X表示所述存储系统中存储服务器20的个数。其中,N是大于或等于2的整数,M是大于或等于1的整数,并且(N+M)大于或等于X。
当(N+M)=X时,每个存储服务器20存储一个stripe的成员。例如,假设一个stripe的成员包括A、B、C、D、P和Q,其中,A、B、C、D是数据单元,P和Q是校验单元(这里以RAID 6为例),所述RAID中包含6个存储服务器20,那么各成员在编号为1-6的存储服务器中的存储情况如表1所示。并且,本领域技术人员可以理解的是,此时所述RAID可容忍失效的成员个数为2。
存储服务器的编号 | 1 | 2 | 3 | 4 | 5 | 6 |
stripe的各成员 | A | B | C | D | P | Q |
表1
当(N+M)>X,且(N+M)等于X的倍数时,每个存储服务器20存储至少一个stripe的成员,且每个存储服务器20存储多于一个stripe的成员。
例如,假设所述RAID仅包含3个存储服务器20,那么,所述stripe的各成员在编号为1-3的存储服务器中的存储情况如表2所示。
表2
当(N+M)>X,且(N+M)不等于X的倍数时,每个存储服务器20存储至少一个stripe的成员,且至少有一个存储服务器20存储多于一个stripe的成员。例如,假设所述RAID仅包含5个存储服务器20,那么,所述stripe的各成员在编号为1-5的存储服务器中的存储情况如表3所示。
表3
下面分别就(N+M)=X或者(N+M)>X,且(N+M)等于X的倍数或者(N+M)>X,且(N+M)不等于X的倍数的情况分别进行讨论。
一、对于(N+M)=X的情况。
1、对于RAID6,假设所述RAID中包含6个存储服务器,那么,stripe的成员包括4个数据单元,2个校验单元,可容忍失效的成员的个数为2(如表1所示的存储方式)。另外,需要说明的是,在下面的讨论中均以失效的成员数达到所述RAID可容忍失效的成员的个数为例,对于失效的成员数未达到所述RAID可容忍失效的成员的个数的情况,也可以采用其他方式选择接替者,本实施例对此不做详细讨论。
对于场景2(如图3所示),当所述存储系统10包含足够的热备服务器30时,可以将所述热备服务器30作为发生瞬时失效的存储服务器20的接替者。
对于场景1(如图2所示),当所述存储系统10没有包含热备服务器30
时,就需要从所述RAID中选择未发生瞬时失效的存储服务器20作为发生瞬时失效的存储服务器20的接替者。
通常情况下,选择保存成员较少的存储服务器20作为接替者,数据丢失的风险会较小(本实施例中的保存成员较少的存储服务器是指保存成员的个数低于平均数的存储服务器)。然而,由于(N+M)=X,每个存储服务器20上均保存有一个成员,因此不能选择保存成员较少的存储服务器20作为接替者。那么,在每个存储服务器20上均保存有一个成员的情况下,应该选择几个接替者才不会导致数据丢失,是本实施例将要讨论的问题。
(1)、如图5A所示,假设在T0时刻,数据单元和校验单元均处于第0号版本,其中,P0和Q0是通过数据单元A0、B0、C0、D0计算获得的。A0、B0、C0、D0、P0和Q0分别存储在存储服务器1-6中。
在T1时刻,存储服务器5和存储服务器6发生瞬时失效,其存储的校验单元P0和Q0丢失。并且,其他数据单元和校验单元均更新为第1号版本,那么此时由于存储服务器5和存储服务器6失效,需要从其他存储服务器中选择正常的存储服务器作为存储服务器5和存储服务器6的接替者。假设存储服务器3作为存储服务器5的接替者,那么存储服务器3除了保存C1之外,还保存了P1。假设存储服务器4作为存储服务器6的接替者,那么存储服务器4除了保存D1之外,还保存了Q1。其中P1和Q1可以根据A1、B1、C1和D1计算得到。可见,此时虽然存储服务器5和存储服务器6发生瞬时失效,所述RAID仍然能够提供降级服务。
假设在T2时刻,存储服务器5和存储服务器6恢复,重新加入所述RAID,然而存储服务器3和存储服务器4发生永久失效,那么C1、D1、P1和Q1丢失,此时所述stripe中仅保存有A1和B1,不能通过A1和B1计算出C1和D1,所以数据永久丢失。
因此,对于RAID6而言,当两个存储服务器20发生瞬时失效导致失效的成员数达到RAID6允许失效的成员的个数时,如果分别为每个存储服务
器20选择一个接替者,当存储系统10中又有存储服务器20发生永久失效,那么数据很可能会发生丢失。只有单个存储服务器失效,或存储服务器1和存储服务器2失效时,失效的成员个数才不会超过允许失效的成员个数,因而不会导致数据丢失。其他情况,如存储服务器1和存储服务器3发生失效,则会导致失效的成员个数超过允许失效的成员个数,造成数据丢失。
(2)、如图5B所示,如果在T1时刻存储服务器5和存储服务器6发生瞬时失效时,分别为存储服务器5和存储服务器6选择两个存储服务器作为接替者。例如,存储服务器1和存储服务器3是存储服务器5的接替者;存储服务器2和存储服务器4是存储服务器6的接替者。
那么在T2时刻,存储服务器5和存储服务器6恢复,重新加入所述RAID时,如果存储服务器1和存储服务器3发生永久失效,A1、C1和P1丢失,不能通过B1、D1和Q1计算获得A1、C1和P1,仍然会发生数据丢失。
因此,对于RAID6而言,当两个存储服务器20发生瞬时失效导致失效的成员数达到RAID6允许失效的成员的个数时,如果分别为每个存储服务器20选择两个接替者,当存储系统10中又有两个存储服务器20发生永久失效,那么数据会发生丢失。
(3)、如图5C所示,如果在T1时刻存储服务器5和存储服务器6发生瞬时失效时,分别为存储服务器5和存储服务器6选择三个存储服务器作为接替者。例如,存储服务器1、存储服务器2和存储服务器3是存储服务器5的接替者;存储服务器1、存储服务器2和存储服务器4是存储服务器5的接替者。
那么在T2时刻,存储服务器5和存储服务器6恢复,重新加入所述RAID时,任意两个存储服务器永久失效,都不会发生数据丢失。
因此,对于(N+M)=X的情况,当RAID类型为RAID6,包含2个校验单元时,如果发生瞬时失效的存储服务器有2个,那么需要为每个存储服务器选择3个接替者。
2、对于RAID5,假设所述RAID中包含5个存储服务器20,那么,stripe的成员包括4个数据单元,1个校验单元,可容忍失效的成员的个数为1。
对于场景2,当所述存储系统10包含足够的热备服务器30时,可以将所述热备服务器30作为发生瞬时失效的存储服务器20的接替者。
对于场景1,当所述存储系统10没有包含热备服务器30时,就需要从所述RAID中选择未发生瞬时失效的存储服务器20作为发生瞬时失效的存储服务器20的接替者。
(1)、如图5D所示,假设在T0时刻,数据单元和校验单元均处于第0号版本,其中,P0是通过数据单元A0、B0、C0、D0计算获得的。A0、B0、C0、D0和P0分别存储在存储服务器1-5中。
在T1时刻,存储服务器5发生瞬时失效,其存储的校验单元P0丢失。并且,其他数据单元和校验单元均更新为第1号版本,那么此时如果从其他存储服务器中为存储服务器5选择1个存储服务器(例如,存储服务器3),由此,存储服务器3除了保存C1之外,还保存了P1。其中P1可以根据A1、B1、C1和D1计算得到。可见,此时虽然存储服务器5发生瞬时失效,所述RAID仍然能够提供降级服务。
假设在T2时刻,存储服务器5恢复,重新加入所述RAID,然而存储服务器3发生永久失效,那么C1和P1丢失,此时所述stripe中仅保存有A1、B1和D1,不能通过A1、B1和D1计算出C1和P1,所以数据永久丢失。
因此,对于RAID5而言,当一个存储服务器20发生瞬时失效导致失效的成员数达到RAID5允许失效的成员的个数时,如果为失效的存储服务器20选择一个接替者,当存储系统10中又有存储服务器20发生永久失效,那么数据会发生丢失。
(2)、如图5E所示,如果在T1时刻存储服务器5发生瞬时失效时,为存储服务器5选择两个存储服务器作为接替者。例如,存储服务器2和存储
服务器3是存储服务器5的接替者。
那么在T2时刻,存储服务器5恢复,重新加入所述RAID时,任意一个存储服务器永久失效,都不会发生数据丢失。
因此,对于(N+M)=X的情况,当RAID类型为RAID5,如果发生瞬时失效的存储服务器有1个,那么需要为每个存储服务器选择2个接替者。
二、对于(N+M)>X,且(N+M)等于X的倍数的情况。
对于RAID6,当(N+M)>X,且(N+M)等于X的倍数(例如,(N+M)等于X的2倍)时,每个存储服务器20中保存的成员个数相同,该种情况与(N+M)=X的情况类似。也就是说,当RAID类型为RAID6,包含2个校验单元且每个存储服务器中存储有两个的成员时,如果发生瞬时失效的存储服务器有1个,那么需要为每个存储服务器选择2个接替者。这里不再详细讨论。
对于RAID5,由于允许失效的成员的个数为1,因此当每个存储服务器20存储多个成员时,不允许任意一个存储服务器20失效,所以此种情况不适用于RAID5。
三、对于(N+M)>X,且(N+M)不等于X的倍数的情况。
对于RAID6,假设所述RAID中包含5个存储服务器。由于stripe的成员包括4个数据单元,2个校验单元,那么至少有一个存储服务器20存储多于一个stripe的成员(如表3所示的存储方式)。另外,虽然对于RAID6,其允许失效的成员的个数是2,然而由于至少有一个存储服务器20存储多于一个stripe的成员,其允许失效的服务器的个数为1。
对于场景2(如图3所示),当所述存储系统10包含足够的热备服务器30时,可以将所述热备服务器30作为发生瞬时失效的存储服务器20的接替者。
对于场景1(如图2所示),当所述存储系统10没有包含热备服务器30时,就需要从所述RAID中选择未发生瞬时失效的存储服务器20作为发生瞬时失效的存储服务器20的接替者。
通常情况下,选择保存成员较少的存储服务器20作为接替者,例如保存的成员的个数低于(N+M)/X的存储服务器20,数据丢失的风险会较小。因此,可以优先选择保存的成员的个数低于(N+M)/X的存储服务器20作为接替者。
如图5F所示,在T0时刻,数据单元和校验单元均处于第0号版本,其中,P0和Q0是通过数据单元A0、B0、C0、D0计算获得的。A0和Q0保存在存储服务器1中,B0保存在存储服务器2中,C0保存在存储服务器3中,D0保存在存储服务器4中,P0保存在存储服务器5中。
在T1时刻,存储服务器3发生瞬时失效,其存储的数据单元C0丢失。并且,其他数据单元和校验单元均更新为第1号版本,那么此时需要从其他正常的存储服务器中选择存储服务器作为存储服务器3的接替者。
若选择存储服务器2作为存储服务器3的接替者,存储服务器除了保存B1之外,还保存有C1。C1可以根据A1、B1、D1、P1和Q1计算获得。
假设在T2时刻,存储服务器3恢复,重新加入所述RAID,任意一个存储服务器发生永久失效,都不会发生数据丢失。
作为一种较优的实施方式,可以选择保存成员最少的存储服务器20作为接替者,从而丢失数据的风险最小。
作为另一种实施方式,也可以选择保存的成员的个数不低于(N+M)/X的存储服务器20作为接替者,然而在这种情况下,如果只选择一个接替者仍然会造成数据丢失。
如图5G所示,在T0时刻,数据单元和校验单元均处于第0号版本,其中,P0和Q0是通过数据单元A0、B0、C0、D0计算获得的。A0和Q0保存在存储服务器1中,B0保存在存储服务器2中,C0保存在存储服务器
3中,D0保存在存储服务器4中,P0保存在存储服务器5中。
在T1时刻,存储服务器3发生瞬时失效,其存储的数据单元C0丢失。并且,其他数据单元和校验单元均更新为第1号版本。
若选择存储服务器1作为存储服务器3的接替者,其中存储服务器1中保存的所述stripe的成员数为2,大于(N+M)/X。当存储服务器1作为存储服务器3的接替者之后,其除了保存A1和Q1,还保存有C1。C1可以根据A1、B1、D1、P1和Q1计算获得。
假设在T2时刻,存储服务器3恢复,重新加入所述RAID,然而存储服务器1发生永久失效,那么A1、C1和Q1丢失,此时所述stripe中保存有B1、D1、P1,不能通过计算获得A1和Q1,因此数据会发生丢失。
因此,如果选择保存的成员的个数不低于(N+M)/X的存储服务器20作为接替者,则还需要再选择一个存储服务器20作为接替者。
如图5H所示,在T1时刻可选择存储服务器1和存储服务器2共同作为存储服务器3的接替者。由此存储服务器1中保存有A1、Q1和C1,存储服务器2中保存有B1和C1。
假设在T2时刻,存储服务器3恢复并重新加入所述RAID,而存储服务器1发生永久失效,那么A1和Q1丢失,此时所述stripe中保存有B1、C1、D1、P1,仍然可以通过计算获得A1和Q1,数据不会发生丢失。
同样的,假设在T2时刻,存储服务器3恢复并重新加入所述RAID,而存储服务器2发生永久失效,那么B1丢失,此时所述stripe中保存有A1、C1、D1、P1和Q1,仍然可以通过计算获得B1,数据也不会发生丢失。
因此,对于(N+M)>X,且N+M不等于X的倍数的情况,当RAID类型为RAID6,包含2个校验单元时,如果发生瞬时失效的存储服务器有2个,那么需要为每个存储服务器选择2个接替者。
结合前面对于N+M=X,或者(N+M)>X,且N+M等于X的倍数的情况讨论,当需要选择多个存储服务器20作为接替者时,接替者的个数需要
满足Y+1个,其中表示对(N+M)/X进行向上取整,N表示数据单元的个数,M表示校验单元的个数,X表示存储服务器20的个数。
综上所述,在存储系统10不包含热备服务器30时,对于(N+M)>X,且N+M不等于X的倍数的情况,可以优先选择保存的stripe的成员数小于(N+M)/X的存储服务器作为发生瞬时失效的存储服务器的接替者,此时接替者只需有一个。或者,选择保存的stripe的成员数大于(N+M)/X的存储服务器作为发生瞬时失效的存储服务器的接替者,此时接替者需要有Y+1个。对于N+M=X,或者(N+M)>X,且N+M等于X的倍数的情况,由于每个存储服务器20中保存的成员数相同,所以不能选择保存的stripe的成员数小于(N+M)/X的存储服务器作为发生瞬时失效的存储服务器的接替者,此时需要选择的接替者的个数也为Y+1个。
上面的讨论过程也同样适用于场景3(如图4所示),不同的是,对于场景3,N个数据单元和M个校验单元存储在磁盘60中,X代表组成所述RAID的磁盘的个数。同样的,对于场景3,在不包含热备盘时,对于(N+M)>X,且N+M不等于X的倍数的情况,可以优先选择保存的stripe的成员数小于(N+M)/X的磁盘60作为发生瞬时失效的磁盘60的接替者,此时接替者只需有一个。或者,选择保存的stripe的成员数大于(N+M)/X的磁盘60作为发生瞬时失效的磁盘60的接替者,此时接替者需要有Y+1个。对于N+M=X,或者(N+M)>X,且N+M等于X的倍数的情况,由于每个磁盘60中保存的成员数相同,所以不能选择保存的stripe的成员数小于(N+M)/X的磁盘60作为发生瞬时失效的磁盘60的接替者,此时需要选择的接替者的个数也为Y+1个。
下面结合图6对本发明实施例提供的将数据写入存储系统的方法进行介
绍,如图6所示,所述方法可以应用在图2或图4所述的存储系统10中,所述存储系统10包括至少一个RAID,所述RAID包括控制设备和X个存储设备。所述方法由所述控制设备执行。
需要说明的是,当所述方法应用于图2所示的存储系统10中时,所述X个存储设备是指图2中的存储服务器20,控制设备是指图2中的任意一个存储服务器20或者所述X个存储服务器20中的主存储服务器20。
另外,当所述方法应用于图4所示的存储系统10中时,所述X个存储设备是指图4中的磁盘60,控制设备是指图4中的控制器50,那么执行下述步骤的主体即控制器50中的处理器518。
在步骤S601中,接收主机40发送的第一数据对象,将所述第一数据对象包含的数据单元和校验单元分别发送给各个存储设备。
具体的,控制设备在接收所述第一数据对象之后,可以根据所述RAID的类型将所述第一数据对象划分成N个数据单元,并且对所述N个数据单元进行计算,从而生成M个校验单元。所述N个数据单元和M个校验单元组成一个数据分条stripe,每个数据单元或校验单元均是所述stripe的成员。其中N>=2、M>=1,N+M>=X。
另外,控制设备在划分或生成所述stripe的成员之后,可以根据预设的规则为每个成员分配地址。所述地址用于表示所述成员将要被保存到某个存储设备的某个位置中。然后,控制设备可以根据为每个成员分配的地址,将每个成员发送给其对应的存储设备。在本实施例中,控制设备还可以保存为每个成员分配的地址、所述stripe的ID以及每个成员之间的对应关系。
在步骤S602中,确定至少一个第一存储设备失效。
可选的,一种实施方式是,控制设备定期向每个存储设备发送检测信号,每个存储设备接收到检测信号之后,将自己的保存的所述stripe的各个成员的信息反馈给控制设备,由控制设备来判断各个存储设备是否处于正常的工作状态。
可选的,另一种实施方式是,当主机40向控制设备发送读数据的请求时,由于所述读数据的请求要求读取的数据以stripe的方式存储在各个存储设备上,因此所述控制设备需要向各个存储设备发送读指令,若其中一个存储设备失效,其反馈的数据必定是无效的数据。按照这种方式,控制设备也可以判断各个存储设备是否处于正常的工作状态。
在本实施例中,失效的存储设备可以是一个也可以是多个。当所述RAID的类型是RAID5时,失效的存储设备是一个,所述失效的存储设备中保存有一个成员;当所述RAID的类型是RAID6时,失效的存储设备可以是一个,所述失效的存储设备中保存有两个成员,或者,失效的存储设备是两个,每个失效的存储设备中保存有一个成员。
在步骤S603中,当N+M>=X时,选择Y+1个第二存储设备作为所述第一存储设备的接替者,
这里的N+M>=X具体可以是:N+M=X;或者N+M>X,且N+M等于X的倍数;或者N+M>X,且N+M不等于X的倍数。选择Y+1个第二存储设备作为所述第一存储设备可以确保,当所述第一存储设备重新回到存储系统10之后又有存储设备发生永久失效时,只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,数据就不会发生丢失。其具体的分析过程,请参见图5C、图5E或图5H的示例,这里不再赘述。需要说明的是,当N+M=X时,所述RAID的类型可以是RAID5或者RAID6;当N+M>X时,所述RAID的类型是指RAID6。
在步骤S604中,接收主机40发送的第二数据对象,获得对所述第一存储设备保存的成员进行更新的成员。
所述第二数据对象是用于对所述第一数据对象进行更新的数据对象,具有与所述第一数据对象相同的stripe ID。举例来说,控制设备在接收所述第二数据对象之后,可以按照与步骤S601同样的方式,所述第一数据对象划分成N个数据单元,并且对所述N个数据单元进行计算,从而生成M个校
验单元。并且,按照所述预设的规则为每个成员分配地址。当为某一个或某几个成员分配的地址与所述第一存储设备保存的成员的地址相同时,所述地址相同的成员就是对所述第一存储设备保存的成员进行更新的成员。
需要说明的是,步骤S604与步骤S603之间没有先后顺序之分。
在步骤S605中,将所述更新的成员写入所述第二存储设备中。
所述第二存储设备作为所述第一存储设备的接替者,其主要任务就是代替所述第一存储设备接收原本要写入所述第一存储设备的数据。
请参见图7,图7是上述实施例的另一种实施方式。
在图7所述的实施方式中,当N+M>X,并且N+M不等于X的倍数时,一种优选的实施方式可以用步骤S606替代步骤S603,其他步骤与图6所示的实施方式相同。
在步骤S606中,选择第二存储设备,所述第二存储设备中保存的成员的个数小于(N+M)/X。此时,即使选择一个第二存储设备作为所述第一存储设备的接替者,当所述第一存储设备重新回到存储系统10之后又有存储设备发生永久失效时,只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,数据就不会发生丢失。其具体的分析过程,请参见图5F的示例,这里不再赘述。或者,一种可选的实施方式是,所述第二存储设备是所述X个存储设备中保存成员最少的存储设备。
由此可见,图7所示的实施方式与图6所示的实施方式相比,为发生瞬时失效的存储设备选择的接替者可以更少,因此在一定程度上更节省资源。
需要说明的是,步骤S606所示的实施方式适用于RAID6。
本发明实施例在确定第一存储设备瞬时失效之后,可以为所述瞬时失效的第一存储设备选择合适的接替者,以避免所述第一存储设备重新回到存储系统而其他存储设备又发生永久失效时,只要所述发生永久失效的存储设备保存的成员的个数没有超过所述RAID允许失效的成员的个数,数据就不会
发生丢失,由此保证了数据的可靠性。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述方法实施例所述的方法流程。
本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制。
Claims (34)
- 一种将数据写入存储系统的方法,其特征在于,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括T个成员;所述方法由所述控制设备执行,包括:确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员;选择所述X个存储设备中的第二存储设备,所述第二存储设备中保存的成员的个数小于T/X;将目标数据写入所述第二存储设备,所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求1所述的方法,其特征在于,T>X,并且T不等于X的倍数;所述T=N+M,其中,所述N是所述T个成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1。
- 根据权利要求1或2所述的方法,所述第二存储设备是所述X个存储设备中保存成员最少的存储设备。
- 根据权利要求1-3任一所述的方法,还包括:确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求4所述的方法,所述控制设备中保存有所述第一存储设备中保存的至少一个成员的逻辑地址,所述方法还包括:对接收到的数据对象进行划分,生成所述目标数据;为所述目标数据分配逻辑地址;所述确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元包括:确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
- 根据权利要求1或2所述的方法,其特征在于,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
- 根据权利要求1-6任一所述的方法,其特征在于,所述控制设备为控制器,并且所述存储设备为磁盘。
- 根据权利要求1-6任一所述的方法,其特征在于,所述存储设备为存储服务器,并且所述控制设备是X个存储服务器中的任意一个存储服务器。
- 根据权利要求1-8任一所述的方法,其特征在于,所述RAID的类型是RAID6。
- 一种将数据写入存储系统的方法,其特征在于,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括(N+M)个成员,其中所述N是所述成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1,N+M>=X;所述方法由所述控制设备执行,包括:确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员;将目标数据写入所述X个存储设备中的(Y+1)个第二存储设备,其中 所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求10所述的方法,其特征在于,还包括:确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求11所述的方法,所述控制设备中保存有所述第一存储设备中保存的至少一个成员的逻辑地址,所述方法还包括:对接收到的数据对象进行划分,生成所述目标数据;为所述目标数据分配逻辑地址;所述确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元包括:确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
- 根据权利要求10-12任一所述的方法,其特征在于,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
- 根据权利要求10-13任一所述的方法,其特征在于,所述控制设备为控制器,并且所述存储设备为磁盘。
- 根据权利要求10-13任一所述的方法,其特征在于,所述存储设备为存储服务器,并且所述控制设备是X个存储服务器中的任意一个存储服务器中。
- 根据权利要求10-15任一所述的方法,其特征在于,所述RAID的类 型是RAID6。
- 根据权利要求10-15任一所述的方法,其特征在于,当N+M=X时,所述RAID的类型是RAID5。
- 一种存储系统,其特征在于,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括T个成员;所述X个存储设备,用于存储所述T个成员;所述控制设备,用于确定所述X个存储设备中的至少一个第一存储设备失效,所述第一存储设备中保存有至少一个成员,选择所述X个存储设备中的第二存储设备,所述第二存储设备中保存的成员的个数小于T/X,将目标数据写入所述第二存储设备,所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求18所述的系统,其特征在于,T>X,并且T不等于X的倍数;所述T=N+M,其中,所述N是所述T个成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1。
- 根据权利要求18或19所述的系统,其特征在于,所述第二存储设备是所述X个存储设备中保存成员最少的存储设备。
- 根据权利要求18-20任一所述的系统,其特征在于,所述控制设备,还用于确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求21所述的系统,其特征在于,所述控制设备,还用于对接收到的数据对象进行划分,生成所述目标数据,为所述目标数据分配逻辑地址;所述控制设备,具体用于确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
- 根据权利要求18或19所述的系统,其特征在于,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
- 根据权利要求18-23任一所述的系统,其特征在于,所述控制设备为控制器,并且所述存储设备为磁盘。
- 根据权利要求18-23任一所述的系统,其特征在于,所述存储设备为存储服务器,并且所述控制设备是X个存储服务器中的任意一个存储服务器。
- 根据权利要求18-25任一所述的系统,其特征在于,所述RAID的类型是RAID6。
- 一种存储系统,其特征在于,所述存储系统包括独立磁盘冗余阵列(RAID),所述RAID包括控制设备和X个存储设备,并且所述RAID中保存有数据分条stripe,所述stripe包括(N+M)个成员,其中所述N是所述成员中数据单元的个数,所述M是根据所述N个数据单元生成的校验单元的个数,其中,N>=2、M>=1,N+M>=X;所述X个存储设备,用于存储所述(N+M)个成员;所述控制设备,用于确定所述X个存储设备中的至少一个第一存储设备 失效,所述第一存储设备中保存有至少一个成员,将目标数据写入所述X个存储设备中的(Y+1)个第二存储设备,其中所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求27所述的系统,其特征在于,所述控制设备,还用于确定所述目标数据是用于对所述第一存储设备中保存的至少一个成员进行更新的数据单元或校验单元。
- 根据权利要求28所述的系统,其特征在于,所述控制设备,还用于对接收到的数据对象进行划分,生成所述目标数据;为所述目标数据分配逻辑地址;所述控制设备,具体用于确定所述分配的逻辑地址与所述第一存储设备中保存的至少一个成员的逻辑地址相同。
- 根据权利要求27-29任一所述的系统,其特征在于,所述至少一个第一存储设备中保存的成员的个数达到所述RAID可容忍失效的成员个数。
- 根据权利要求27-30任一所述的系统,其特征在于,所述控制设备为控制器,并且所述存储设备为磁盘。
- 根据权利要求27-30任一所述的系统,其特征在于,所述存储设备为存储服务器,并且所述控制设备是X个存储服务器中的任意一个存储服务器中。
- 根据权利要求27-32任一所述的系统,其特征在于,所述RAID的类型是RAID6。
- 根据权利要求27-32任一所述的系统,其特征在于,当N+M=X时,所述RAID的类型是RAID5。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/095855 WO2016106663A1 (zh) | 2014-12-31 | 2014-12-31 | 一种将数据写入存储系统的方法和存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106062721A true CN106062721A (zh) | 2016-10-26 |
CN106062721B CN106062721B (zh) | 2018-11-16 |
Family
ID=56283937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480035917.3A Active CN106062721B (zh) | 2014-12-31 | 2014-12-31 | 一种将数据写入存储系统的方法和存储系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9959079B2 (zh) |
EP (2) | EP3128429B1 (zh) |
CN (1) | CN106062721B (zh) |
WO (1) | WO2016106663A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783280A (zh) * | 2019-01-15 | 2019-05-21 | 上海海得控制系统股份有限公司 | 共享存储系统和共享存储方法 |
US11650880B2 (en) | 2019-10-18 | 2023-05-16 | Inspur Suzhou Intelligent Technology Co., Ltd. | Write hole protection method and system for raid, and storage medium |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309012B (zh) * | 2018-03-27 | 2021-01-26 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及其装置 |
CN112714910B (zh) * | 2018-12-22 | 2022-12-27 | 华为云计算技术有限公司 | 分布式存储系统及计算机程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030070042A1 (en) * | 2001-09-28 | 2003-04-10 | James Byrd | Storage array having multiple erasure correction and sub-stripe writing |
CN1815455A (zh) * | 2004-12-10 | 2006-08-09 | 普安科技股份有限公司 | 储存系统及其不良储存装置资料维持方法 |
CN101093434A (zh) * | 2006-06-20 | 2007-12-26 | 韩国科学技术院 | 用矩阵条带高速缓存器改进raid系统输入和输出性能的方法 |
CN101923501A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种磁盘阵列多级容错方法 |
CN102081559A (zh) * | 2011-01-11 | 2011-06-01 | 成都市华为赛门铁克科技有限公司 | 一种独立磁盘冗余阵列的数据恢复方法和装置 |
US8099623B1 (en) * | 2008-10-08 | 2012-01-17 | Netapp, Inc. | Efficient distributed hot sparing scheme in a parity declustered RAID organization |
CN102520890A (zh) * | 2011-12-30 | 2012-06-27 | 北京天地云箱科技有限公司 | 基于gpu的rs-draid系统及存储设备数据控制方法 |
CN104035830A (zh) * | 2014-06-24 | 2014-09-10 | 浙江宇视科技有限公司 | 一种数据恢复方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7308599B2 (en) * | 2003-06-09 | 2007-12-11 | Hewlett-Packard Development Company, L.P. | Method and apparatus for data reconstruction after failure of a storage device in a storage array |
US8060772B2 (en) | 2008-01-04 | 2011-11-15 | International Business Machines Corporation | Storage redundant array of independent drives |
EP2401679A1 (en) * | 2009-02-26 | 2012-01-04 | Hitachi, Ltd. | Storage system comprising raid group |
US8453036B1 (en) * | 2010-02-01 | 2013-05-28 | Network Appliance, Inc. | System and method for dynamically resizing a parity declustered group |
US9342405B2 (en) * | 2011-02-25 | 2016-05-17 | Seagate Technology Llc | Hierarchical data compression testing |
US8839028B1 (en) * | 2011-12-23 | 2014-09-16 | Emc Corporation | Managing data availability in storage systems |
US9323617B2 (en) * | 2013-05-31 | 2016-04-26 | Hewlett Packard Enterprise Development Lp | Remap raid to maintain raid level |
-
2014
- 2014-12-31 EP EP14909472.4A patent/EP3128429B1/en active Active
- 2014-12-31 EP EP17150332.9A patent/EP3229139B1/en active Active
- 2014-12-31 CN CN201480035917.3A patent/CN106062721B/zh active Active
- 2014-12-31 WO PCT/CN2014/095855 patent/WO2016106663A1/zh active Application Filing
-
2017
- 2017-06-23 US US15/630,970 patent/US9959079B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030070042A1 (en) * | 2001-09-28 | 2003-04-10 | James Byrd | Storage array having multiple erasure correction and sub-stripe writing |
CN1815455A (zh) * | 2004-12-10 | 2006-08-09 | 普安科技股份有限公司 | 储存系统及其不良储存装置资料维持方法 |
CN101093434A (zh) * | 2006-06-20 | 2007-12-26 | 韩国科学技术院 | 用矩阵条带高速缓存器改进raid系统输入和输出性能的方法 |
US8099623B1 (en) * | 2008-10-08 | 2012-01-17 | Netapp, Inc. | Efficient distributed hot sparing scheme in a parity declustered RAID organization |
CN101923501A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种磁盘阵列多级容错方法 |
CN102081559A (zh) * | 2011-01-11 | 2011-06-01 | 成都市华为赛门铁克科技有限公司 | 一种独立磁盘冗余阵列的数据恢复方法和装置 |
CN102520890A (zh) * | 2011-12-30 | 2012-06-27 | 北京天地云箱科技有限公司 | 基于gpu的rs-draid系统及存储设备数据控制方法 |
CN104035830A (zh) * | 2014-06-24 | 2014-09-10 | 浙江宇视科技有限公司 | 一种数据恢复方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783280A (zh) * | 2019-01-15 | 2019-05-21 | 上海海得控制系统股份有限公司 | 共享存储系统和共享存储方法 |
US11650880B2 (en) | 2019-10-18 | 2023-05-16 | Inspur Suzhou Intelligent Technology Co., Ltd. | Write hole protection method and system for raid, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
EP3229139B1 (en) | 2019-05-15 |
WO2016106663A1 (zh) | 2016-07-07 |
EP3229139A1 (en) | 2017-10-11 |
EP3128429A4 (en) | 2017-06-28 |
CN106062721B (zh) | 2018-11-16 |
US9959079B2 (en) | 2018-05-01 |
EP3128429A1 (en) | 2017-02-08 |
EP3128429B1 (en) | 2019-02-20 |
US20170308332A1 (en) | 2017-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107807794B (zh) | 一种数据存储方法和装置 | |
US10303570B2 (en) | Method and apparatus for managing data recovery of distributed storage system | |
US9195392B2 (en) | Distributed storage method, apparatus, and system | |
CN108780386B (zh) | 一种数据存储的方法、装置和系统 | |
US9715436B2 (en) | System and method for managing raid storage system having a hot spare drive | |
US9690663B2 (en) | Allocation of replica-sets in a storage cluster | |
CN109725831B (zh) | 管理存储系统的方法、系统和计算机可读介质 | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
EP2787446A1 (en) | Distributed storage method, device and system | |
CN107729536B (zh) | 一种数据存储方法和装置 | |
US11029857B2 (en) | Offloading device maintenance to an external processor in low-latency, non-volatile memory | |
CN104461777B (zh) | 一种存储阵列中数据镜像方法及存储阵列 | |
US9959079B2 (en) | Writing data into redundant array of independent disks (RAID) of storage system | |
US11151005B2 (en) | System and method for storage node data synchronization | |
CN110413454A (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
CN110442298A (zh) | 存储设备异常检测方法及装置、分布式存储系统 | |
US10007432B2 (en) | System and method for replacing storage devices | |
US9104598B2 (en) | Systems and methods for medium error reporting and handling in storage devices | |
CN108228079B (zh) | 存储管理方法和设备 | |
US20150088826A1 (en) | Enhanced Performance for Data Duplication | |
CN106020975B (zh) | 数据操作方法、装置和系统 | |
US11500741B2 (en) | Data write method and storage system | |
US10268373B2 (en) | Storage system with improved communication | |
US10528529B1 (en) | Multi-core journal system and method | |
US12008267B2 (en) | Storage management system and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |