CN103699343A - 独立磁盘冗余阵列的确定方法及装置 - Google Patents
独立磁盘冗余阵列的确定方法及装置 Download PDFInfo
- Publication number
- CN103699343A CN103699343A CN201310729168.1A CN201310729168A CN103699343A CN 103699343 A CN103699343 A CN 103699343A CN 201310729168 A CN201310729168 A CN 201310729168A CN 103699343 A CN103699343 A CN 103699343A
- Authority
- CN
- China
- Prior art keywords
- matrix
- row
- raid
- generate
- translation
- 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.)
- Pending
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/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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/061—Improving I/O performance
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Detection And Correction Of Errors (AREA)
- Spinning Methods And Devices For Manufacturing Artificial Fibers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供独立磁盘冗余阵列的确定方法及装置,方法包括:将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为n个磁盘组所构建的RAID的个数,每个RAID对应一个矩阵标识,每个磁盘包括m2个逻辑块,n个磁盘组包括m2行m*n列个逻辑块;根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,第一矩阵和第二矩阵中所包括的矩阵元素均为n个磁盘组所构建的所有RAID的矩阵标识,第三矩阵中所包括的矩阵元素中各RAID的矩阵标识个数相等,且第三矩阵中的每个矩阵元素与m2行m*n列个逻辑块中相同位置的逻辑块一一对应;将第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID。
Description
技术领域
本发明涉及存储技术,尤其涉及一种独立磁盘冗余阵列的确定方法及装置。
背景技术
独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)是一种由多块磁盘构成的冗余阵列,在操作系统下作为一个独立的大型存储设备存在,是存储领域的核心基础技术。RAID可以充分发挥出多块硬盘的优势,能够提升硬盘速度,增大存储容量,并能够提供容错功能以确保数据安全性,且易于管理。并且,在RAID中的任何一块硬盘出现问题的情况下,RAID仍可以继续工作,不会受到损坏硬盘的影响。
现有的分布式RAID,是在多个物理磁盘组的连续空间上分布式构成不同的RAID。系统中需要存储物理磁盘与RAID的映射表。然而,系统每次进行数据存储或恢复等操作均需要查询该映射表,从而占用系统存储空间,并且导致系统维护映射表的成本较高,可靠性差。
发明内容
有鉴于此,本发明实施例提供一种独立磁盘冗余阵列的确定方法及装置,以节省系统的存储空间,降低维护成本,提高可靠性。
第一方面,本发明实施例提供一种独立磁盘冗余阵列的确定方法,包括:
将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为所述n个磁盘组所构建的独立磁盘冗余阵列RAID的个数,每个所述RAID对应一个矩阵标识,每个所述磁盘包括m2个逻辑块,所述n个磁盘组包括m2行m*n列个逻辑块,所述m、n均为正整数;
根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,所述第一矩阵和所述第二矩阵中所包括的矩阵元素均为所述n个磁盘组所构建的所有RAID的矩阵标识,所述第三矩阵中所包括的矩阵元素中各所述RAID的矩阵标识个数相等,且所述第三矩阵中的每个矩阵元素与所述m2行m*n列个逻辑块中相同位置的逻辑块一一对应;
将所述第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,以使所述m2行m*n列个逻辑块构成m个RAID。
结合第一方面,在第一方面的第一种实施方式中,所述根据1行m列的第一矩阵,生成m2行m*n列的第三矩阵,具体包括:生成n个所述第一矩阵;对于每个所述第一矩阵,将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
结合第一种实施方式,在第一方面的第二种实施方式中,n个所述第一矩阵中的相同矩阵元素所处的列相同,或者,n个所述第一矩阵中相同矩阵元素所处的列不相同。
结合第一种实施方式或第二种实施方式,在第一方面的第三种实施方式中,对于每个所述第一矩阵,其中的一行矩阵元素向左或向右循环平移的列数相同或不同。
结合第一方面,在第一方面的第四种实施方式中,所述根据m行1列的第二矩阵,生成m2行m*n列的第三矩阵,具体包括:生成n个所述第二矩阵;对于每个所述第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
结合第四种实施方式,在第一方面的第五种实施方式中,n个所述第二矩阵中的相同矩阵元素所处的行相同,或者,n个所述第二矩阵中相同矩阵元素所处的行不相同。
结合第四种实施方式或第五种实施方式,在第一方面的第六种实施方式中,对于每个所述第二矩阵,其中的一列矩阵元素向上或向下循环平移的行数相同或不同。
结合第一方面,在第一方面的第七种实施方式中,所述根据1行m列的第一矩阵,生成m2行m*n列的第三矩阵,具体包括:将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵;将所述第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵;采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
结合第七种实施方式,在第一方面的第八种实施方式中,对于每个所述第七矩阵,由所述第六矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
结合第一方面,在第一方面的第九种实施方式中,所述根据m行1列的第二矩阵,生成m2行m*n列的第三矩阵,具体包括:将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵;将所述第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵;采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
结合第九种实施方式,在第一方面的第十种实施方式中,对于每个所述第七矩阵,由所述第六矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
结合第一方面,在第一方面的第十一种实施方式中,所述根据1行m列的第一矩阵,生成m2行m*n列的第三矩阵,具体包括:将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵;将所述第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵;采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
结合第十一种实施方式,在第一方面的第十二种实施方式中,对于每个所述第九矩阵,由所述第八矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
结合第一方面,在第一方面的第十三种实施方式中,所述根据m行1列的第二矩阵,生成m2行m*n列的第三矩阵,具体包括:将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第八矩阵;将所述第八矩阵中的各行向上或向下平移,生成m*n个第九矩阵;采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
结合第十三种实施方式,在第一方面的第十四种实施方式中,对于每个所述第九矩阵,由所述第八矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
结合第一方面,第一种实施方式至第十四种实施方式中的任意一种,在第一方面的第十五种实施方式中,所述根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵之后,还包括:将一个所述RAID中的一个逻辑块或每个所述RAID中的一个逻辑块确定为热备空间,所述热备空间用于存储恢复数据。
第二方面,本发明实施例提供一种独立磁盘冗余阵列的确定装置,包括:
确定模块,用于将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为所述n个磁盘组所构建的独立磁盘冗余阵列RAID的个数,每个所述RAID对应一个矩阵标识,每个所述磁盘包括m2个逻辑块,所述n个磁盘组包括m2行m*n列个逻辑块,所述m、n均为正整数;
生成模块,用于根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,所述第一矩阵和所述第二矩阵中所包括的矩阵元素均为所述n个磁盘组所构建的所有RAID的矩阵标识,所述第三矩阵中所包括的矩阵元素中各所述RAID的矩阵标识个数相等,且所述第三矩阵中的每个矩阵元素与所述m2行m*n列个逻辑块中相同位置的逻辑块一一对应;
构建模块,用于将所述第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,以使所述m2行m*n列个逻辑块构成m个RAID。
结合第二方面,在第二方面的第一种实施方式中,所述生成模块具体用于:生成n个所述第一矩阵;对于每个所述第一矩阵,将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
结合第一种实施方式,在第二方面的第二种实施方式中,n个所述第一矩阵中的相同矩阵元素所处的列相同,或者,n个所述第一矩阵中相同矩阵元素所处的列不相同。
结合第一种实施方式或第二种实施方式,在第二方面的第三种实施方式中,对于每个所述第一矩阵,其中的一行矩阵元素向左或向右循环平移的列数相同或不同。
结合第二方面,在第二方面的第四种实施方式中,所述生成模块具体用于:生成n个所述第二矩阵;对于每个所述第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
结合第四种实施方式,在第二方面的第五种实施方式中,n个所述第二矩阵中的相同矩阵元素所处的行相同,或者,n个所述第二矩阵中相同矩阵元素所处的行不相同。
结合第四种实施方式或第五种实施方式,在第二方面的第六种实施方式中,对于每个所述第二矩阵,其中的一列矩阵元素向上或向下循环平移的行数相同或不同。
结合第二方面,在第二方面的第七种实施方式中,所述生成模块具体用于:将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵;将所述第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵;采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
结合第七种实施方式,在第二方面的第八种实施方式中,对于每个所述第七矩阵,由所述第六矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
结合第二方面,在第二方面的第九种实施方式中,所述生成模块具体用于:将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵;将所述第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵;采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
结合第九种实施方式,在第二方面的第十种实施方式中,对于每个所述第七矩阵,由所述第六矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
结合第二方面,在第二方面的第十一种实施方式中,所述生成模块具体用于:将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵;将所述第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵;采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
结合第十一种实施方式,在第二方面的第十二种实施方式中,对于每个所述第九矩阵,由所述第八矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
结合第二方面,在第二方面的第十三种实施方式中,所述生成模块具体用于:将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第八矩阵;将所述第八矩阵中的各行向上或向下平移,生成m*n个第九矩阵;采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
结合第十三种实施方式,在第二方面的第十四种实施方式中,对于每个所述第九矩阵,由所述第八矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
结合第二方面,第一种实施方式至第十四种实施方式中的任意一种,所述确定模块还用于:将一个所述RAID中的一个逻辑块或每个所述RAID中的一个逻辑块确定为热备空间,所述热备空间用于存储恢复数据。
第三方面,本发明实施例提供一种独立磁盘冗余阵列的确定装置,包括:存储器和处理器,所述存储器和所述处理器之间通信,所述存储器用于存储指令,所述处理器用于运行所述存储器中存储的所述指令以执行本发明实施例提供的独立磁盘冗余阵列的确定方法。
本实施例提供的独立磁盘冗余阵列的确定方法,对于n个磁盘组每个磁盘组包括m个磁盘的实际物理磁盘,该n个磁盘组包括m2行m*n列个逻辑块,能够生成m个分布式RAID所对应的逻辑块矩阵,从而能够得出实际物理磁盘与分布式RAID的对应关系,在数据存储等场景下,无需存储物理磁盘与RAID的映射关系表,从而节省系统的存储空间,降低维护成本,提高系统的可靠性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例提供的独立磁盘冗余阵列的确定方法;
图2为本发明一实施例提供的第三矩阵确定方法的流程图;
图3为本发明另一实施例提供的第三矩阵确定方法的流程图;
图4为本发明又一实施例提供的第三矩阵确定方法的流程图;
图5为本发明一实施例提供的读数据的示意图;
图6为本发明提供的RAID的一种全局热备的示意图;
图7为本发明一个实施例提供的独立磁盘冗余阵列的确定装置结构示意图;
图8为本发明又一个实施例提供的独立磁盘冗余阵列的确定装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明一个实施例提供的独立磁盘冗余阵列的确定方法的流程图。本实施例所示的方法其执行主体可以是各种类型的终端设备中的处理器,例如:中央处理单元CPU等,也可由硬件可编程器件如现场可编程门阵列(Field-Programmable Gate Array,FPGA)、复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)等实现。该方法具体包括:
S101、将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为n个磁盘组所构建的独立磁盘冗余阵列RAID的个数,每个RAID对应一个矩阵标识,每个磁盘包括m2个逻辑块,n个磁盘组包括m2行m*n列个逻辑块,m、n均为正整数。
S102、根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,第一矩阵和第二矩阵中所包括的矩阵元素均为n个磁盘组所构建的所有RAID的矩阵标识,第三矩阵中所包括的矩阵元素中各RAID的矩阵标识个数相等,且第三矩阵中的每个矩阵元素与m2行m*n列个逻辑块中相同位置的逻辑块一一对应。
S103、将第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,以使m2行m*n列个逻辑块构成m个RAID。
本发明实施例提供的独立磁盘冗余阵列的确定方法,适用于多种实施场景,一种典型的实施场景下,当一终端设备中需要进行数据存储时,例如:需要存储一个文档,一部电影时,则终端设备中的CPU可以将上述文件的数据存储到分布式RAID中,从而可以在系统中某一磁盘损坏后,仍然能够回复损坏的磁盘中所存储的数据。而CPU在进行数据存储时,需要获知实际物理磁盘与分布式RAID所包括的“逻辑块”的对应关系,因此,CPU可以执行上述S101-S103的操作来确定实际物理磁盘与分布式RAID所包括的“逻辑块”的对应关系。
具体的,实际物理磁盘中包括n个磁盘组,每个磁盘组均包括m个磁盘,则该n个磁盘组所能构件的RAID个数也为n个,这n个RAID在由n个磁盘组所组成的实际物理磁盘上分布式构件。其中,每个磁盘包括m2个逻辑块,则该n个磁盘组中可以包括m2行m*n列个逻辑块。
采用本发明实施例所提供的方法,能够确定包括m2行m*n列个逻辑块的实际物理磁盘与分布式RAID的对应关系。
具体的,由于每个磁盘组中包括m个磁盘,因此,可以首先构造1行m列的第一矩阵或者m行1列的第二矩阵,其中,第一矩阵和第二矩阵中所包括的矩阵元素均为n个磁盘组所构建的所有RAID的矩阵标识。例如:每个磁盘组中包括3个磁盘,则n个磁盘组所构建RAID个数为3个,假设这3个RAID对应的矩阵标识分别为a,b,c,则第一矩阵可以是(abc),第二矩阵可以是 可以理解的是,a,b,c在第一矩阵中所处的列并不受限制,同样,a,b,c在第二矩阵中所处的行也并不受限制。
可以由第一矩阵或者第二矩阵生成m2行m*n列的第三矩阵。
在生成第三矩阵的第一种方法中,作为一种可行的实施方式,可以根据1行m列的第一矩阵生成m2行m*n列的第三矩阵,具体的:
由于实际物理磁盘中包括n个磁盘组,因此,可以生成n个第一矩阵。其中,该n个第一矩阵中的相同矩阵元素所处的列可以相同也可以不相同。
对于每个第一矩阵,可以将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵。以循环平移一列为例:一行矩阵元素向左循环平移一列是指:该行中每个矩阵元素分别向左移一列,该行第一列元素被“循环”平移到该行最后一列;同样,一行矩阵元素向右循环平移一列是指:该行中每个矩阵元素分别向右移一列,该行最后一列元素被“循环”平移到该行第一列。其中,对于每个第一矩阵,其中的一行矩阵元素向左或向右循环平移的列数可以相同或不同。
将n个第四矩阵形成m行m*n列的第五矩阵,再生成m个第五矩阵,将m个第五矩阵形成m2行m*n列的第三矩阵。其中,每个第四矩阵在该第五矩阵中的位置并不受限制。同样,每个第五矩阵在该第三矩阵中的位置也并不受限制。
作为第一种方法的另一种可行的实施方式,还可以根据m行1列的第二矩阵生成m2行m*n列的第三矩阵,具体的:
由于实际物理磁盘中包括n个磁盘组,因此,生成n个第二矩阵,类似的,n个第二矩阵中的相同矩阵元素所处的行可以相同或者不相同。
对于每个第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,以循环平移一行为例:一列矩阵元素向上循环移懂一行是指:该列中每个矩阵元素分别向上移一列,该行第一行元素被“循环”平移到该列最后一行;同样,一列矩阵元素向下循环平移一行是指:该列中每个矩阵元素分别向下移一行,该行最后一行元素被“循环”平移到该列第一行。其中,对于每个第二矩阵,其中的一列矩阵元素向上或向右循环平移的行数可以相同或不同。
将n个第四矩阵形成m行m*n列的第五矩阵;生成m个第五矩阵,将m个第五矩阵形成m2行m*n列的第三矩阵。其中,每个第四矩阵在该第五矩阵中的位置并不受限制。同样,每个第五矩阵在该第三矩阵中的位置也并不受限制。
在生成第三矩阵的第二种方法中,作为一种可行的实施方式,可以根据1行m列的第一矩阵生成m2行m*n列的第三矩阵,具体的:
可以将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵;其中,一行矩阵元素向左或向右循环平移可以参见上述第一种方法中的相关描述。
将第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵;以将第六矩阵中的各行向上平移一行为例,各行整体向上平移一行,第一行元素整体“循环”平移到该矩阵的最后一行;再以将第六矩阵中的各行向下平移一行为例,各行整体向下平移一行,最后一行元素整体“循环”平移到该矩阵的第一行。其中,对于每个第七矩阵,可以由第六矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
采用m*n个第七矩阵生成m2行m*n列的第三矩阵。其中,第七矩阵在第三矩阵中的位置并不受到限制。
作为第二种方法的另一种可行的实施方式,可以根据m行1列的第二矩阵生成m2行m*n列的第三矩阵,具体的:
将第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵;其中,一列矩阵元素向上或向下循环平移可以参见上述第一种方法中的相关描述。
将第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵;以将第六矩阵中的各列向左平移一列为例,各列整体向左平移一列,第一列元素整体“循环”平移到该矩阵的最后一列;再以将第六矩阵中的各列向右平移一列为例,各列整体向右平移一列,最后一列元素整体“循环”平移到该矩阵的第一列。其中,对于每个第七矩阵,可以由第六矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
采用m*n个第七矩阵生成m2行m*n列的第三矩阵。其中,第七矩阵在第三矩阵中的位置并不受到限制。
在生成第三矩阵的第三种方法中,作为一种可行的实施方式,可以根据1行m列的第一矩阵生成m2行m*n列的第三矩阵,具体的:
将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵;其中,一行矩阵元素向左或向右循环平移可以参见上述第一种方法中的相关描述。
将第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵;以将第八矩阵中的各列向左平移一列为例,各列整体向左平移一列,第一列元素整体“循环”平移到该矩阵的最后一列;再以将第八矩阵中的各列向右平移一列为例,各列整体向右平移一列,最后一列元素整体“循环”平移到该矩阵的第一列。其中,对于每个第九矩阵,可以由第八矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
采用m*n个第九矩阵生成m2行m*n列的第三矩阵。其中,第九矩阵在第三矩阵中的位置并不受到限制。
作为第三种方法中的另一种可行的实施方式,可以根据m行1列的第二矩阵生成m2行m*n列的第三矩阵,具体的:
将第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第八矩阵;其中,一列矩阵元素向上或向下循环平移可以参见上述第一种方法中的相关描述。
将第八矩阵中的各行向上或向下平移,生成m*n个第九矩阵;以将第八矩阵中的各行向上平移一行为例,各行整体向上平移一行,第一行元素整体“循环”平移到该矩阵的最后一行;再以将第八矩阵中的各行向下平移一行为例,各行整体向下平移一行,最后一行元素整体“循环”平移到该矩阵的第一行。其中,对于每个第九矩阵,可以由第八矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
采用m*n个第九矩阵生成m2行m*n列的第三矩阵。其中,第九矩阵在第三矩阵中的位置并不受到限制。
在上述实施方式的基础上,可选的,在第三矩阵确定之后,还可以将一个RAID中的一个逻辑块或每个RAID中的一个逻辑块确定为热备空间,其中热备空间在实际物理磁盘正常工作下并不存储数据,而当某一磁盘损坏而进行恢复数据操作后,用于存储所恢复出来的数据。
在第三矩阵确定后,可以将第三矩阵中相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,因此,实际物理磁盘中所包括的m2行m*n列个逻辑块构成了m个分布式RAID。
本实施例提供的独立磁盘冗余阵列的确定方法,对于n个磁盘组每个磁盘组包括m个磁盘的实际物理磁盘,该n个磁盘组包括m2行m*n列个逻辑块,能够生成m个分布式RAID所对应的逻辑块矩阵,从而能够得出实际物理磁盘与分布式RAID的对应关系,在数据存储等场景下,无需存储物理磁盘与RAID的映射关系表,从而节省系统的存储空间,降低维护成本,提高系统的可靠性。
以下以一个具体例子对图1所示实施例中确定第三矩阵所采用的第一种方法中,根据1行m列的第一矩阵生成m2行m*n列的第三矩阵的具体过程进行详细说明,如图2所示,实际物理磁盘中包括4个磁盘组,即n=4,每个磁盘组中包括3个磁盘,即m=3,则该实际物理磁盘可以构件3个RAID,这3个RAID的矩阵标识分别为以a、b、c表示。则根据1行m列的第一矩阵生成m2行m*n列的第三矩阵具体可以包括以下步骤:
S201、生成4个1行3列的第一矩阵:
(abc) (abc) (abc) (abc)
本实施例中,上述每个第一矩阵中的相同矩阵元素所处的列相同,但可以理解的是,相同矩阵元素所处的列也可以不同,例如:上述的第一矩阵还可以是(acb),(bca)等。
S202、对于每个第一矩阵,可以将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵。
例如,将(abc)中的每个矩阵元素向左平移0列,得到第四矩阵的第一行到第三行,则得到的第四矩阵为
将(abc)中的每个矩阵元素向左平移1列得到第四矩阵的第二行,向左平移2列得到第四矩阵的第三行;则得到的第四矩阵为
将(abc)中的每个矩阵元素向左平移2列得到第四矩阵的第二行,向左平移1列得到第四矩阵的第三行;则得到的第四矩阵为
需要说明的是,每个第一矩阵中的元素向左平移或向右平移,以及平移的列数并不做出限制。
S203、将n个第四矩阵形成m行m*n列的第五矩阵。
例如:上述得到4个第一矩阵后,每个第一矩阵分别可以生成一个第四矩阵,如下所示,这些第四矩阵可以组成一个第五矩阵。
S204、生成m个第五矩阵,将m个第五矩阵形成m2行m*n列的第三矩阵。
需要说明的是,所生成的m个第五矩阵可以相同,也可以不同,这m个第五矩阵可以构建成一个第三矩阵,如下所示:
根据m行1列的第二矩阵成m2行m*n列的第三矩阵的生成方式与上面过程类似,区别仅在于:S201中生成n个第二矩阵,S202中对于每个第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,将n个第四矩阵形成m行m*n列的第五矩阵。
从上面的矩阵可以看出,得到的分布式RAID中,对于每一个RAID,由于磁盘组的个数为4,因此,每个RAID中的每一个条带(stripe,即第三矩阵中的一行)中包括4个逻辑块,可以理解的是,如果磁盘组的个数为3,则每个RAID中的每一个条带(一行)中包括3个逻辑块。而每个RAID在各个磁盘中都是均匀分布的,因此,对于某一待存储的文件,可以将数据存储在一个RAID中,而该RAID分布式存储在各个物理磁盘上,因此,有效避免了出现热点硬盘的情况,也就是说避免了数据集中存储在某物理硬盘上。
本实施例提供的独立磁盘冗余阵列的确定方法,在生成m个分布式RAID所对应的逻辑块矩阵的过程中,可以根据由m个矩阵标识所构成的第一矩阵来生成m2行m*n列的第三矩阵,从而可以将第三矩阵中具有相同矩阵标识的逻辑块确定为一个RAID,从而能够通过上述方法得出实际物理磁盘与分布式RAID的对应关系,在数据存储等场景下,无需存储物理磁盘与RAID的映射关系表,从而节省系统的存储空间,降低维护成本,提高系统的可靠性。
以下以一个具体例子对图1所示实施例中确定第三矩阵所采用的第二种方法中,根据1行m列的第一矩阵生成m2行m*n列的第三矩阵的具体过程进行详细说明,如图3所示,实际物理磁盘中包括3个磁盘组,即n=3,每个磁盘组中包括3个磁盘,即m=3,则该实际物理磁盘可以构件3个RAID,这3个RAID的矩阵标识分别为以1、2、3表示。则根据1行m列的第一矩阵生成m2行m*n列的第三矩阵具体可以包括以下步骤:
S301、将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵。
其中,第一矩阵可以为(123),还可以是(132),(231)等。
例如,将(123)中的每个矩阵元素向左平移0列,得到第六矩阵的第一行到第三行,则得到的第六矩阵为
将(123)中的每个矩阵元素向左平移1列得到第六矩阵的第二行,向左平移2列得到第六矩阵的第三行;则得到的第六矩阵为
将(123)中的每个矩阵元素向左平移2列得到第六矩阵的第二行,向左平移1列得到第六矩阵的第三行;则得到的第六矩阵为
需要说明的是,每个第一矩阵中的元素向左平移或向平移,以及平移的列数并不做出限制。
S302、将第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵。
本实施例与上一实施例的区别在于,由第一矩阵得到第六矩阵后,将第六矩阵中的各行整体向上或向下平移来生成第七矩阵。
例如:对于第六矩阵 将各行整体向下平移一行,则得到的第七矩阵为
对于第六矩阵 将各行整体向上平移一行,则得到的第七矩阵为
需要说明的是,每个第六矩阵中的各行元素整体向上平移或向下平移,以及平移的行数并不做出限制。
S303、采用m*n个第七矩阵生成m2行m*n列的第三矩阵。
将上述m*n个第七矩阵生成m2行m*n列的第三矩阵的过程中,每个第七矩阵在该第三矩阵中的位置并不受限制,例如:可以如下所示:
根据m行1列的第二矩阵成m2行m*n列的第三矩阵的生成方式与上面过程类似,区别仅在于:S301中将第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵,S302中将第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵。
从上面的矩阵可以看出,得到的分布式RAID中,对于每一个RAID,由于磁盘组的个数为3,因此,每个RAID中的每一个条带(一行)中包括3个逻辑块,可以理解的是,如果磁盘组的个数为3,则每个RAID中的每一个条带(一行)中包括3个逻辑块。而每个RAID在各个磁盘中都是均匀分布的,因此,对于某一待存储的文件,可以将数据存储在一个RAID中,而该RAID分布式存储在各个物理磁盘上,因此,有效避免了出现热点硬盘的情况,也就是说避免了数据集中存储在某物理硬盘上。
本实施例提供的独立磁盘冗余阵列的确定方法,在生成m个分布式RAID所对应的逻辑块矩阵的过程中,可以根据由m个矩阵标识所构成的第一矩阵来生成m2行m*n列的第三矩阵,从而可以将第三矩阵中具有相同矩阵标识的逻辑块确定为一个RAID,从而能够通过上述方法得出实际物理磁盘与分布式RAID的对应关系,在数据存储等场景下,无需存储物理磁盘与RAID的映射关系表,从而节省系统的存储空间,降低维护成本,提高系统的可靠性。
以下以一个具体例子对图1所示实施例中确定第三矩阵所采用的第三种方法中,根据1行m列的第一矩阵生成m2行m*n列的第三矩阵的具体过程进行详细说明,如图4所示,实际物理磁盘中包括3个磁盘组,即n=3,每个磁盘组中包括3个磁盘,即m=3,则该实际物理磁盘可以构件3个RAID,这3个RAID的矩阵标识分别为以1、2、3表示。则根据1行m列的第一矩阵生成m2行m*n列的第三矩阵具体可以包括以下步骤:
S401、将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵。
该过程与S301中将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵相类似,具体可以参见S301中的相关描述,在此不再赘述。
S402、将第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵。
由第一矩阵得到第八矩阵后,将第八矩阵中的各行整体向上或向下平移来生成第九矩阵。
例如:对于第八矩阵 将各列整体向右平移一行,则得到的第九矩阵为
对于第八矩阵 将各列整体向左平移一行,则得到的第九矩阵为
需要说明的是,每个第八矩阵中的各行元素整体向上平移或向下平移,以及平移的行数并不做出限制。
S403、采用m*n个第九矩阵生成m2行m*n列的第三矩阵。
将上述m*n个第九矩阵生成m2行m*n列的第三矩阵的过程中,每个第九矩阵在该第三矩阵中的位置并不受限制,例如:可以如下所示:
根据m行1列的第二矩阵成m2行m*n列的第三矩阵的生成方式与上面过程类似,区别仅在于:S401中将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵,S402中将第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵。
从上面的矩阵可以看出,得到的分布式RAID中,对于每一个RAID,由于磁盘组的个数为3,因此,每个RAID中的每一个条带(一行)中包括3个逻辑块,可以理解的是,如果磁盘组的个数为3,则每个RAID中的每一个条带(一行)中包括3个逻辑块。而每个RAID在各个磁盘中都是均匀分布的,因此,对于某一待存储的文件,可以将数据存储在一个RAID中,而该RAID分布式存储在各个物理磁盘上,因此,有效避免了出现热点硬盘的情况,也就是说避免了数据集中存储在某物理硬盘上。
本实施例提供的独立磁盘冗余阵列的确定方法,在生成m个分布式RAID所对应的逻辑块矩阵的过程中,可以根据由m个矩阵标识所构成的第一矩阵来生成m2行m*n列的第三矩阵,从而可以将第三矩阵中具有相同矩阵标识的逻辑块确定为一个RAID,从而能够通过上述方法得出实际物理磁盘与分布式RAID的对应关系,在数据存储等场景下,无需存储物理磁盘与RAID的映射关系表,从而节省系统的存储空间,降低维护成本,提高系统的可靠性。
通过上述实施例建立的RAID,读取数据时可使用现有的方式读取。参见图5,例如,第1步,读取地址Address=0x2_1000中的数据。其中,2表示逻辑单元号(Logical Unit Number,LUN)为LUN1的逻辑块标识,1000为待读取数据在LUN1中的地址。
第2步,通过LUN1块标识、矩阵标识与RAID的起始LBA标识之间的关系表,可得到与LUN1块2对应的矩阵标识为1,对应的RAID的起始的LBA为0x8000000。
第3步,假定RAID中,每个条带(stripe)中包含2个数据单元(data unit)和1个奇偶单元(parity unit)。例如:图3所示的矩阵标识为1的RAID中,第一行对应的条带中包括2个“1”和1个“1P”。其中,奇偶单元也可称为校验单元,该单元不占地址空间。一个数据单元(unit)对应一个逻辑块,其所占的地址空间为32k,等于一个逻辑块的长度或大小,因此,一个条带所占的地址空间=2×32k=64k。
则:如果上述第三矩阵为9行9列的矩阵,则其中包括三个RAID的9个条带stripe,其中,矩阵标识为1的RAID所占的地址空间大小为:9×64k=576k。图5中磁盘0至磁盘8中逻辑块对应的矩阵标识,其中,1P、2P、3P分别为RAID1、RAID2、RAID3中的奇偶单元。
则:0x8001000/576k=134221824/(576×1024)=227.5625,如果RAID的编号从0开始,那么0x8001000应该在第227个RAID中,且具体位置为:
0x8001000-576k×227=134221824-(576×1024)×227=324k,即0x8001000在第227个RAID中的偏移为324k。
且,324k/64k=5.0625>5,也就是说0x8001000在第227个RAID中的第6个stripe中,且,324k-5×64k=4k,即0x8001000在第227个RAID中的第6个stripe中的第1个数据单元中。
从而最终访问:磁盘6,LBA:0x8001000,从找到的数据单元地址空间中读取数据,当然,写入操作也类似,可以向找到的数据单元地址空间写入数据。
进一步,可以将一个RAID中的一个逻辑块或每个RAID中的一个逻辑块确定为热备空间,该热备空间用于存储恢复数据。
例如,如果是全局热备,则可以将某个RAID中的每个条带中的1个逻辑块,作为热备空间。此RAID的条带(stripe)中,逻辑块的个数比其他逻辑阵列的条带中的逻辑块少1。如图6所示,将RAID1中的每个条带中的1个逻辑块(即图6中的黑色块),作为热备空间。
如果是局部热备,可以将每个RAID中的每个条带中的1个逻辑块,作为热备空间。所有条带(stripe)中,条带单元(stripe unit)个数减1。
图7为本发明一个实施例提供的独立磁盘冗余阵列的确定装置结构示意图,如图7所示,该装置包括:
确定模块11,用于将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为n个磁盘组所构建的独立磁盘冗余阵列RAID的个数,每个RAID对应一个矩阵标识,每个磁盘包括m2个逻辑块,n个磁盘组包括m2行m*n列个逻辑块,m、n均为正整数;
生成模块12,用于根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,第一矩阵和第二矩阵中所包括的矩阵元素均为n个磁盘组所构建的所有RAID的矩阵标识,第三矩阵中所包括的矩阵元素中各RAID的矩阵标识个数相等,且第三矩阵中的每个矩阵元素与m2行m*n列个逻辑块中相同位置的逻辑块一一对应;
构建模块13,用于将第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,以使m2行m*n列个逻辑块构成m个RAID。
可选的,生成模块12可以具体用于:生成n个第一矩阵;对于每个第一矩阵,将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵,将n个第四矩阵形成m行m*n列的第五矩阵;生成m个第五矩阵,将m个第五矩阵形成m2行m*n列的第三矩阵。
可选的,n个第一矩阵中的相同矩阵元素所处的列相同,或者,n个第一矩阵中相同矩阵元素所处的列不相同。
可选的,对于每个第一矩阵,其中的一行矩阵元素向左或向右循环平移的列数相同或不同。
可选的,生成模块12可以具体用于:生成n个第二矩阵;对于每个第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,将n个第四矩阵形成m行m*n列的第五矩阵;生成m个第五矩阵,将m个第五矩阵形成m2行m*n列的第三矩阵。
可选的,n个第二矩阵中的相同矩阵元素所处的行相同,或者,n个第二矩阵中相同矩阵元素所处的行不相同。
可选的,对于每个第二矩阵,其中的一列矩阵元素向上或向下循环平移的行数相同或不同。
可选的,生成模块12可以具体用于:将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵;将第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵;采用m*n个第七矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个第七矩阵,由第六矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
可选的,生成模块12可以具体用于:将第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵;将第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵;采用m*n个第七矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个第七矩阵,由第六矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
可选的,生成模块12可以具体用于:将第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵;将第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵;采用m*n个第九矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个第九矩阵,由第八矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
可选的,生成模块12可以具体用于:将第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第八矩阵;将第八矩阵中的各行向上或向下平移,生成m*n个第九矩阵;采用m*n个第九矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个第九矩阵,由第八矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
可选的,确定模块11还可以用于:将一个RAID中的一个逻辑块或每个RAID中的一个逻辑块确定为热备空间,热备空间用于存储恢复数据。
本实施例提供的独立磁盘冗余阵列的确定装置,与本发明提供的独立磁盘冗余阵列的确定方法相对应,为该方法的执行设备,其具体的执行过程极其效果可参见方法实施例的相关描述,在此不再赘述。
图8为本发明又一个实施例提供的独立磁盘冗余阵列的确定装置结构示意图,如图8所示,该装置包括:
存储器21和处理器22,存储器21和处理器22之间通信,存储器21用于存储指令,处理器22用于运行存储器21中存储的指令以执行如下操作:
将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为所述n个磁盘组所构建的独立磁盘冗余阵列RAID的个数,每个所述RAID对应一个矩阵标识,每个所述磁盘包括m2个逻辑块,所述n个磁盘组包括m2行m*n列个逻辑块,所述m、n均为正整数;
根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,所述第一矩阵和所述第二矩阵中所包括的矩阵元素均为所述n个磁盘组所构建的所有RAID的矩阵标识,所述第三矩阵中所包括的矩阵元素中各所述RAID的矩阵标识个数相等,且所述第三矩阵中的每个矩阵元素与所述m2行m*n列个逻辑块中相同位置的逻辑块一一对应;
将所述第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,以使所述m2行m*n列个逻辑块构成m个RAID。
可选的,处理器22可以具体用于:
生成n个所述第一矩阵;
对于每个所述第一矩阵,将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;
生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
可选的,n个所述第一矩阵中的相同矩阵元素所处的列相同,或者,n个所述第一矩阵中相同矩阵元素所处的列不相同。
可选的,对于每个所述第一矩阵,其中的一行矩阵元素向左或向右循环平移的列数相同或不同。
可选的,处理器22可以具体用于:
生成n个所述第二矩阵;
对于每个所述第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;
生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
可选的,n个所述第二矩阵中的相同矩阵元素所处的行相同,或者,n个所述第二矩阵中相同矩阵元素所处的行不相同。
可选的,对于每个所述第二矩阵,其中的一列矩阵元素向上或向下循环平移的行数相同或不同。
可选的,处理器22可以具体用于:
将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵;
将所述第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵;
采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个所述第七矩阵,由所述第六矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
可选的,处理器22可以具体用于:
将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵;
将所述第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵;
采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个所述第七矩阵,由所述第六矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
可选的,处理器22可以具体用于:
将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵;
将所述第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵;
采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个所述第九矩阵,由所述第八矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
可选的,处理器22可以具体用于:
将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第八矩阵;
将所述第八矩阵中的各行向上或向下平移,生成m*n个第九矩阵;
采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
可选的,对于每个所述第九矩阵,由所述第八矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
可选的,处理器22还可以用于:将一个所述RAID中的一个逻辑块或每个所述RAID中的一个逻辑块确定为热备空间,所述热备空间用于存储恢复数据。
本实施例提供的独立磁盘冗余阵列的确定装置,与本发明提供的独立磁盘冗余阵列的确定方法相对应,为该方法的执行设备,其具体的执行过程极其效果可参见方法实施例的相关描述,在此不再赘述。
利用上述实施例提供的方法及装置建立的RAID,能够充分利用并发性来提升存储系统性能,并消除了系统热点(hot spot)。并且,基于上述方法确定的分布式RAID,矩阵的大小决定实现建立RAID所占用的空间大小,降低了CPU空间开销,有利于用硬件可编程器件如FPGA、CPLD或者ASIC实现。通过采用上述方法实施例确定RAID和物理磁盘的关系,便于维护,可靠性较高。并且,利用上述实施例提供的方法及装置建立的RAID,当1个磁盘组中的所有磁盘损坏时,数据仍然可以恢复,且磁盘的重构时间显著降低,每个磁盘的操作次数也显著降低,即分布的均衡性更高,与传统非分布式RAID相比,如表1所示:
表1
其中,x为一个条带中逻辑块的数量,m为磁盘组的数量,n为一个RAID中的条带数量。
特殊情况下,如果损坏的物理块是热备空间,则同1行、同1个RAID对应的磁盘,读次数减1。
如果参与重构的物理块是热备空间,则对应磁盘的读次数减1。
下面给出通过本发明上述方法和装置实施例建立的RAID的重构时间的实际测试。
测试环境:在虚拟机上用9个虚拟磁盘做了3×3分布式RAID(即3个磁盘组且每个磁盘组里包含3个磁盘的分布式RAID),RAID算法采用RAID5,以RAID的初始化时间来衡量重构时间。
测试过程:每次并发操作6个条带(stripe),即同时对6个磁盘读、3个磁盘写。
测试结果如表2:
表2
逻辑阵列标识 | 总条带数 | 开始时间 | 结束时间 | 消耗时间 |
1 | 131071 | 1332713268 | 1332713380 | 112 |
2 | 131071 | 1332713366 | 1332713523 | 157 |
3 | 131071 | 1332774020 | 1332774206 | 186 |
重复测试10次,每次测试结果得到的消耗时间都落在区间[100,200]内;而在相同条件下,传统RAID的消耗时间基本都在区间[200,500]这个区间;
因此,可以得出3个传统RAID的初始化(重构)时间是分布式RAID的2~2.5倍,通过上述方法和装置实施例建立的分布式RAID在重构时间上更短,随着磁盘数的增加,比传统RAID有很明显的优势。理想情况下m×m(即m个磁盘组且每个磁盘组里包含m个磁盘)的分布式RAID的重构时间是传统RAID的1/m。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (33)
1.一种独立磁盘冗余阵列的确定方法,其特征在于,包括:
将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为所述n个磁盘组所构建的独立磁盘冗余阵列RAID的个数,每个所述RAID对应一个矩阵标识,每个所述磁盘包括m2个逻辑块,所述n个磁盘组包括m2行m*n列个逻辑块,所述m、n均为正整数;
根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,所述第一矩阵和所述第二矩阵中所包括的矩阵元素均为所述n个磁盘组所构建的所有RAID的矩阵标识,所述第三矩阵中所包括的矩阵元素中各所述RAID的矩阵标识个数相等,且所述第三矩阵中的每个矩阵元素与所述m2行m*n列个逻辑块中相同位置的逻辑块一一对应;
将所述第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,以使所述m2行m*n列个逻辑块构成m个RAID。
2.根据权利要求1所述的方法,其特征在于,所述根据1行m列的第一矩阵,生成m2行m*n列的第三矩阵,具体包括:
生成n个所述第一矩阵;
对于每个所述第一矩阵,将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;
生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
3.根据权利要求2所述的方法,其特征在于,n个所述第一矩阵中的相同矩阵元素所处的列相同,或者,n个所述第一矩阵中相同矩阵元素所处的列不相同。
4.根据权利要求2或3所述的方法,其特征在于,对于每个所述第一矩阵,其中的一行矩阵元素向左或向右循环平移的列数相同或不同。
5.根据权利要求1所述的方法,其特征在于,所述根据m行1列的第二矩阵,生成m2行m*n列的第三矩阵,具体包括:
生成n个所述第二矩阵;
对于每个所述第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;
生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
6.根据权利要求5所述的方法,其特征在于,n个所述第二矩阵中的相同矩阵元素所处的行相同,或者,n个所述第二矩阵中相同矩阵元素所处的行不相同。
7.根据权利要求5或6所述的方法,其特征在于,对于每个所述第二矩阵,其中的一列矩阵元素向上或向下循环平移的行数相同或不同。
8.根据权利要求1所述的方法,其特征在于,所述根据1行m列的第一矩阵,生成m2行m*n列的第三矩阵,具体包括:
将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵;
将所述第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵;
采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
9.根据权利要求8所述的方法,其特征在于,对于每个所述第七矩阵,由所述第六矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
10.根据权利要求1所述的方法,其特征在于,所述根据m行1列的第二矩阵,生成m2行m*n列的第三矩阵,具体包括:
将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵;
将所述第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵;
采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
11.根据权利要求10所述的方法,其特征在于,对于每个所述第七矩阵,由所述第六矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
12.根据权利要求1所述的方法,其特征在于,所述根据1行m列的第一矩阵,生成m2行m*n列的第三矩阵,具体包括:
将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵;
将所述第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵;
采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
13.根据权利要求12所述的方法,其特征在于,对于每个所述第九矩阵,由所述第八矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
14.根据权利要求1所述的方法,其特征在于,所述根据m行1列的第二矩阵,生成m2行m*n列的第三矩阵,具体包括:
将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第八矩阵;
将所述第八矩阵中的各行向上或向下平移,生成m*n个第九矩阵;
采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
15.根据权利要求14所述的方法,其特征在于,对于每个所述第九矩阵,由所述第八矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
16.根据权利要求1-15任一项所述的方法,其特征在于,所述根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵之后,还包括:
将一个所述RAID中的一个逻辑块或每个所述RAID中的一个逻辑块确定为热备空间,所述热备空间用于存储恢复数据。
17.一种独立磁盘冗余阵列的确定装置,其特征在于,包括:
确定模块,用于将n个磁盘组中每个磁盘组所包括的磁盘个数m,确定为所述n个磁盘组所构建的独立磁盘冗余阵列RAID的个数,每个所述RAID对应一个矩阵标识,每个所述磁盘包括m2个逻辑块,所述n个磁盘组包括m2行m*n列个逻辑块,所述m、n均为正整数;
生成模块,用于根据1行m列的第一矩阵或者m行1列的第二矩阵,生成m2行m*n列的第三矩阵,所述第一矩阵和所述第二矩阵中所包括的矩阵元素均为所述n个磁盘组所构建的所有RAID的矩阵标识,所述第三矩阵中所包括的矩阵元素中各所述RAID的矩阵标识个数相等,且所述第三矩阵中的每个矩阵元素与所述m2行m*n列个逻辑块中相同位置的逻辑块一一对应;
构建模块,用于将所述第三矩阵中,相同矩阵标识的矩阵元素所对应的逻辑块确定为一个RAID,以使所述m2行m*n列个逻辑块构成m个RAID。
18.根据权利要求17所述的装置,其特征在于,所述生成模块具体用于:生成n个所述第一矩阵;对于每个所述第一矩阵,将其中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
19.根据权利要求18所述的装置,其特征在于,n个所述第一矩阵中的相同矩阵元素所处的列相同,或者,n个所述第一矩阵中相同矩阵元素所处的列不相同。
20.根据权利要求18或19所述的装置,其特征在于,对于每个所述第一矩阵,其中的一行矩阵元素向左或向右循环平移的列数相同或不同。
21.根据权利要求17所述的装置,其特征在于,所述生成模块具体用于:生成n个所述第二矩阵;对于每个所述第二矩阵,将其中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第四矩阵,将n个所述第四矩阵形成m行m*n列的第五矩阵;生成m个所述第五矩阵,将m个所述第五矩阵形成m2行m*n列的所述第三矩阵。
22.根据权利要求21所述的装置,其特征在于,n个所述第二矩阵中的相同矩阵元素所处的行相同,或者,n个所述第二矩阵中相同矩阵元素所处的行不相同。
23.根据权利要求21或22所述的装置,其特征在于,对于每个所述第二矩阵,其中的一列矩阵元素向上或向下循环平移的行数相同或不同。
24.根据权利要求17所述的装置,其特征在于,所述生成模块具体用于:将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第六矩阵;将所述第六矩阵中的各行向上或向下平移,生成m*n个第七矩阵;采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
25.根据权利要求24所述的装置,其特征在于,对于每个所述第七矩阵,由所述第六矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
26.根据权利要求17所述的装置,其特征在于,所述生成模块具体用于:将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第六矩阵;将所述第六矩阵中的各列向左或向右平移,生成m*n个第七矩阵;采用所述m*n个第七矩阵生成m2行m*n列的第三矩阵。
27.根据权利要求26所述的装置,其特征在于,对于每个所述第七矩阵,由所述第六矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
28.根据权利要求17所述的装置,其特征在于,所述生成模块具体用于:将所述第一矩阵中包括的一行矩阵元素向左或向右循环平移,生成m行m列的第八矩阵;将所述第八矩阵中的各列向左或向右平移,生成m*n个第九矩阵;采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
29.根据权利要求28所述的装置,其特征在于,对于每个所述第九矩阵,由所述第八矩阵中的各列向左或向右平移相同的列数或不同的列数得到。
30.根据权利要求17所述的装置,其特征在于,所述生成模块具体用于:将所述第二矩阵中包括的一列矩阵元素向上或向下循环平移,生成m行m列的第八矩阵;将所述第八矩阵中的各行向上或向下平移,生成m*n个第九矩阵;采用所述m*n个第九矩阵生成m2行m*n列的第三矩阵。
31.根据权利要求30所述的装置,其特征在于,对于每个所述第九矩阵,由所述第八矩阵中的各行向上或向下平移相同的行数或不同的行数得到。
32.根据权利要求17-31任一项所述的装置,其特征在于,所述确定模块还用于:将一个所述RAID中的一个逻辑块或每个所述RAID中的一个逻辑块确定为热备空间,所述热备空间用于存储恢复数据。
33.一种独立磁盘冗余阵列的确定装置,其特征在于,包括:存储器和处理器,所述存储器和所述处理器之间通信,所述存储器用于存储指令,所述处理器用于运行所述存储器中存储的所述指令以执行如权利要求1-16任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310729168.1A CN103699343A (zh) | 2013-12-25 | 2013-12-25 | 独立磁盘冗余阵列的确定方法及装置 |
EP14199317.0A EP2889751B1 (en) | 2013-12-25 | 2014-12-19 | Method and apparatus for determining redundant array of independent disks |
US14/582,509 US9389790B2 (en) | 2013-12-25 | 2014-12-24 | Method and apparatus for determining redundant array of independent disks |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310729168.1A CN103699343A (zh) | 2013-12-25 | 2013-12-25 | 独立磁盘冗余阵列的确定方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103699343A true CN103699343A (zh) | 2014-04-02 |
Family
ID=50360884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310729168.1A Pending CN103699343A (zh) | 2013-12-25 | 2013-12-25 | 独立磁盘冗余阵列的确定方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9389790B2 (zh) |
EP (1) | EP2889751B1 (zh) |
CN (1) | CN103699343A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958656A (zh) * | 2018-06-27 | 2018-12-07 | 北京计算机技术及应用研究所 | 基于raid5固态硬盘阵列的动态条带系统设计方法 |
CN109460185A (zh) * | 2018-10-29 | 2019-03-12 | 锐捷网络股份有限公司 | 组建分块组ckg的方法、装置、虚拟存储池及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521302B1 (en) * | 2017-08-04 | 2019-12-31 | EMC IP Holding Company LLC | Managing mapped raid extents in data storage systems |
CN113126891B (zh) * | 2020-01-15 | 2024-05-24 | 伊姆西Ip控股有限责任公司 | 存储管理的方法、设备和计算机程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752389B1 (en) * | 2007-06-20 | 2010-07-06 | Emc Corporation | Techniques for determining physical data layout of RAID devices |
CN101923496A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种raid的数据并行重构方法 |
CN101923501A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种磁盘阵列多级容错方法 |
CN102880428A (zh) * | 2012-08-20 | 2013-01-16 | 华为技术有限公司 | 分布式独立磁盘冗余阵列的创建方法及装置 |
-
2013
- 2013-12-25 CN CN201310729168.1A patent/CN103699343A/zh active Pending
-
2014
- 2014-12-19 EP EP14199317.0A patent/EP2889751B1/en active Active
- 2014-12-24 US US14/582,509 patent/US9389790B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752389B1 (en) * | 2007-06-20 | 2010-07-06 | Emc Corporation | Techniques for determining physical data layout of RAID devices |
CN101923496A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种raid的数据并行重构方法 |
CN101923501A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 一种磁盘阵列多级容错方法 |
CN102880428A (zh) * | 2012-08-20 | 2013-01-16 | 华为技术有限公司 | 分布式独立磁盘冗余阵列的创建方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958656A (zh) * | 2018-06-27 | 2018-12-07 | 北京计算机技术及应用研究所 | 基于raid5固态硬盘阵列的动态条带系统设计方法 |
CN108958656B (zh) * | 2018-06-27 | 2021-01-08 | 北京计算机技术及应用研究所 | 基于raid5固态硬盘阵列的动态条带系统设计方法 |
CN109460185A (zh) * | 2018-10-29 | 2019-03-12 | 锐捷网络股份有限公司 | 组建分块组ckg的方法、装置、虚拟存储池及存储介质 |
CN109460185B (zh) * | 2018-10-29 | 2022-03-18 | 锐捷网络股份有限公司 | 组建分块组ckg的方法、装置、虚拟存储池及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2889751A1 (en) | 2015-07-01 |
US9389790B2 (en) | 2016-07-12 |
US20150178004A1 (en) | 2015-06-25 |
EP2889751B1 (en) | 2019-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101504623B (zh) | 独立磁盘冗余阵列构建方法及装置 | |
CN102880428B (zh) | 分布式独立磁盘冗余阵列的创建方法及装置 | |
US11449226B2 (en) | Reorganizing disks and raid members to split a disk array during capacity expansion | |
CN103718162B (zh) | 用于ssd中灵活的raid的方法和设备 | |
CN103699344B (zh) | 非易失性存储器装置及其操作方法 | |
CN106445843B (zh) | 使物理页面地址相关用于软判决解码 | |
CN103513942B (zh) | 独立冗余磁盘阵列的重构方法及装置 | |
CN104461391A (zh) | 一种存储设备元数据管理处理方法及系统 | |
CN105446890A (zh) | 智能数据部署 | |
CN101620518B (zh) | 一种磁盘冗余阵列raid的创建方法及装置 | |
CN103336727B (zh) | 对nand闪存存储设备进行数据操作的方法 | |
CN103049216B (zh) | 固态硬盘及其数据处理方法、系统 | |
CN102326141A (zh) | Raid配置信息的处理方法及装置、raid控制器 | |
CN103593260B (zh) | 一种元数据的保护方法和装置 | |
CN103699343A (zh) | 独立磁盘冗余阵列的确定方法及装置 | |
CN103019893A (zh) | 一种多盘容错的二维混合盘raid4系统架构及其读写方法 | |
CN107729536A (zh) | 一种数据存储方法和装置 | |
CN104516679B (zh) | 一种raid数据处理方法及装置 | |
US7133965B2 (en) | Raid storage device | |
CN101901115B (zh) | 一种磁盘阵列raid6级别的构建方法 | |
US11507287B1 (en) | Adding single disks to an array by relocating raid members | |
CN102789422B (zh) | 固态硬盘的数据写入方法 | |
US11314608B1 (en) | Creating and distributing spare capacity of a disk array | |
CN102495680A (zh) | Raid系统的重建方法 | |
CN110109621B (zh) | 一种提升固态硬盘阵列系统性能和寿命的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140402 |
|
RJ01 | Rejection of invention patent application after publication |