CN116339644B - 一种独立磁盘冗余阵列创建方法、装置、设备及介质 - Google Patents

一种独立磁盘冗余阵列创建方法、装置、设备及介质 Download PDF

Info

Publication number
CN116339644B
CN116339644B CN202310605247.5A CN202310605247A CN116339644B CN 116339644 B CN116339644 B CN 116339644B CN 202310605247 A CN202310605247 A CN 202310605247A CN 116339644 B CN116339644 B CN 116339644B
Authority
CN
China
Prior art keywords
disk
disks
target
data
storage pool
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
Application number
CN202310605247.5A
Other languages
English (en)
Other versions
CN116339644A (zh
Inventor
牛跃
王见
孙明刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310605247.5A priority Critical patent/CN116339644B/zh
Publication of CN116339644A publication Critical patent/CN116339644A/zh
Application granted granted Critical
Publication of CN116339644B publication Critical patent/CN116339644B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种独立磁盘冗余阵列创建方法、装置、设备及介质,应用于存储技术领域,包括:创建存储池,并将多个磁盘添加至存储池;基于存储池创建独立磁盘冗余阵列,得到阵列信息;阵列信息包含数据盘的磁盘数量;当获取到写请求,则从所述存储池确定写请求对应的第一目标独立磁盘冗余阵列;基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量;将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。本发明解决了独立磁盘冗余阵列使用成本高的问题,能够降低用户的使用成本。

Description

一种独立磁盘冗余阵列创建方法、装置、设备及介质
技术领域
本发明涉及存储技术领域,特别涉及一种独立磁盘冗余阵列创建方法、装置、设备及介质。
背景技术
RAID(即Redundant Array of Independent Disks,独立磁盘的冗余阵列)是一种存储技术,通过增加校验冗余能力来提高存储性能和可靠性。
目前,传统RAID阵列要求磁盘容量一致,并且,想要创建多个RAID阵列,多个RAID阵列之间必须使用不同的磁盘组成。这给用户的使用带来诸多限制,提高了用户的使用成本。
发明内容
有鉴于此,本发明的目的在于提供一种独立磁盘冗余阵列创建方法、装置、设备及介质,能够提升磁盘利用率,降低用户的使用成本。其具体方案如下:
第一方面,本发明公开了一种独立磁盘冗余阵列创建方法,包括:
创建存储池,并将多个磁盘添加至所述存储池;其中,每个磁盘均对应一个与自身容量成正比的权重值;
基于所述存储池创建独立磁盘冗余阵列,得到阵列信息;所述阵列信息包含数据盘的磁盘数量;
当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列;
基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。
可选的,所述基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘,包括:
基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值,并按照预设规则从所述存储池中筛选出第一目标磁盘数量个磁盘;
其中,所述预设规则为磁盘的权重值越大,磁盘被选中的概率越大。
可选的,所述阵列信息还包括阵列标识;相应的,所述方法还包括:
从所述写请求中解析出阵列标识;
相应的,所述从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列,包括:
基于该阵列标识从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列。
可选的,基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘,包括:
从所述第一目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第一目标磁盘数量;
将所述写请求携带的写数据切分为多个条带,并将每个条带切分为所述第一目标磁盘数量个数据分块;
基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘;
将每个条带的数据分块写入每个条带对应的所述第一目标磁盘数量个磁盘。
可选的,还包括:
从所述写请求中解析出写数据对应的初始写地址和写数据总长度。
可选的,所述将所述写请求携带的写数据切分为多个条带,包括:
基于所述初始写地址和所述写数据总长度将写数据切分为多个条带,得到每个条带的起始地址和数据长度。
可选的,所述基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘,包括:
基于每个条带的起始地址以及常数计算哈希值;
将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;
将所述存储池中所述磁盘选取参考值最大的磁盘选出;
增大所述常数,并重复执行所述基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中所述磁盘选取参考值最大的磁盘选出的步骤,直到筛选出第一目标磁盘数量个磁盘。
可选的,所述基于每个条带的起始地址以及常数计算哈希值,包括:
基于每个条带的起始地址、磁盘标识以及常数计算哈希值。
可选的,所述阵列信息还包括校验盘数量;相应的,所述方法还包括:基于校验盘数量计算每个条带的校验块。
可选的,还包括:
基于各磁盘的权重值从所述存储池中筛选出第一目标独立磁盘冗余阵列的校验盘数量个磁盘,作为校验盘;
将所述校验块存入相应的校验盘。
可选的,所述阵列信息还包括阵列类型信息;相应的,所述方法还包括:
基于所述阵列类型信息确定所述第一目标独立磁盘冗余阵列是否包含校验盘以及校验盘数量;
若第一目标独立磁盘冗余阵列包含校验盘,则基于校验盘数量计算每个条带的校验块。
可选的,还包括:
当获取到读请求,则从所述存储池确定所述读请求对应的第二目标独立磁盘冗余阵列;
基于所述第二目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第二目标磁盘数量个磁盘;所述第二目标磁盘数量为所述第二目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
从所述第二目标磁盘数量个磁盘中读取数据并拼接,得到读取结果数据。
可选的,基于所述第二目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第二目标磁盘数量个磁盘;从所述第二目标磁盘数量个磁盘中读取数据并拼接,得到读取结果数据,包括:
从所述第二目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第二目标磁盘数量;
基于所述写请求计算读数据对应的多个条带;
基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第二目标磁盘数量个磁盘;
从每个条带对应的所述第二目标磁盘数量个磁盘中读取数据,并将读取到的数据拼接,得到读取结果数据。
可选的,所述基于所述写请求计算读数据对应的多个条带,包括:
从所述写请求中解析出初始数据读取地址和读数据总长度;
基于所述初始数据读取地址和所述读数据总长度计算多个条带,得到每个条带的起始地址和数据长度。
可选的,所述基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第二目标磁盘数量个磁盘,包括:
基于每个条带的起始地址以及常数计算哈希值;
将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;
将所述存储池中磁盘选取参考值最大的磁盘选出;
增大所述常数,并重复执行所述基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中磁盘选取参考值最大的磁盘选出的步骤,直到筛选出第二目标磁盘数量个磁盘。
可选的,还包括:
当监测到所述存储池中任意磁盘发生故障,则遍历第三目标独立磁盘冗余阵列中每个条带,基于每个条带的起始地址以及各磁盘的权重值从所述存储池中筛选出磁盘列表;所述磁盘列表包括替换故障磁盘的新磁盘以及条带对应的原正常磁盘;
基于原正常磁盘的数据计算新磁盘的数据块,得到恢复数据块,将恢复的数据块写入所述新磁盘。
可选的,所述遍历第三目标独立磁盘冗余阵列中每个条带,包括:
遍历故障磁盘对应的独立磁盘冗余阵列中每个条带;
或遍历所述存储池中全部独立磁盘冗余阵列中每个条带。
第二方面,本发明公开了一种独立磁盘冗余阵列创建装置,包括:
存储池创建模块,用于创建存储池,并将多个磁盘添加至所述存储池;其中,每个磁盘均对应一个与自身容量成正比的权重值;
磁盘阵列创建模块,用于基于所述存储池创建独立磁盘冗余阵列,得到阵列信息;所述阵列信息包含数据盘的磁盘数量;
目标阵列确定模块,用于当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列;
目标磁盘筛选模块,用于基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
数据写入模块,用于将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。
第三方面,本发明公开了一种电子设备,包括存储器和处理器,其中:
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序,以实现前述的独立磁盘冗余阵列创建方法。
第四方面,本发明公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述的独立磁盘冗余阵列创建方法。
可见,本发明先创建存储池,并将多个磁盘添加至所述存储池,每个磁盘均对应一个与自身容量成正比的权重值,之后基于所述存储池创建独立磁盘冗余阵列,得到阵列信息,所述阵列信息包含数据盘的磁盘数量,当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列,并基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘,所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量,然后将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。也即,本发明不限制磁盘容量,创建包括多个磁盘的存储池,每个磁盘均对应一个与自身容量成正比的权重值,之后基于存储池创建独立磁盘冗余阵列,得到阵列信息,当获取到写请求时,基于阵列信息以及各磁盘的权重值从存储池中筛选出磁盘,进行数据写入。
本发明的有益效果在于:不限制磁盘容量,多个RAID阵列之间也可以使用相同的磁盘,筛选磁盘是基于各磁盘的权重值筛选,能够提升磁盘利用率,降低用户的使用成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种独立磁盘冗余阵列创建方法流程图;
图2为本发明实施例提供的一种存储池示意图;
图3为本发明实施例提供的一种IO请求处理示意图;
图4为本发明实施例提供的一种IO请求处理流程图;
图5为本发明实施例提供的一种故障磁盘数据恢复流程图;
图6为本发明实施例提供的一种独立磁盘冗余阵列创建装置示意图;
图7为本发明实施例提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
RAID技术可以将多块磁盘组合在一起以提供单个可使用的更大容量的逻辑磁盘、并发的I/O(Input/Output,即输入/输出)读写能力和数据冗余能力等。RAID阵列使用条带、镜像和校验来保证数据安全性,利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。分块:又称为strip/chunk;将一个分区分成多个大小相等的、地址相邻的块(Block),这些块称为分块。分块通常被认为是条带的元素。虚拟磁盘以它为单位将虚拟磁盘的地址映射到成员磁盘的地址。条带又称为stripe,是阵列的不同分区上的位置相关的strip的集合,是组织不同分区上分块的单位。RAID的发展主要经历了RAID0、RAID1、RAID10、RAID5、RAID6,其中RAID5在磁盘阵列中增加了P校验分块,可以通过P校验分块恢复一块故障盘的数据。随后,RAID6在磁盘阵列中又增加了Q校验分块,通过校验P、Q校验分块可以恢复阵列中的两块故障盘数据。在RAID5和RAID6中以条带为单元由数据分块通过一定的算法求得校验分块。目前在软RAID存储技术基础上提出了硬RAID存储技术(RAID卡),顾名思义硬RAID存储技术就是将软RAID存储技术中的一些算法、数据管理以及一些功能都交给硬件管理和实现,以达到提高存储系统的I/O性能。
传统RAID阵列要求磁盘容量一致,主要几方面考虑,如果磁盘容量不一致,那么某些磁盘可能无法充分利用,从而导致整个阵列的容量效率下降。另外如果磁盘容量不一致,数据在磁盘之间的分布和复制将变得复杂和不均衡,可能导致性能下降或数据保护不足。因此在配置RAID阵列时,一般要求尽量使用容量相同的磁盘。并且,在传统的RAID技术中,热备盘(Hot Spare)是一种在RAID阵列中用于替代故障磁盘的备用磁盘。热备盘通常在RAID阵列中保持活动状态,但并不参与数据读写操作,而是在检测到其他磁盘故障时,自动替代故障磁盘并恢复RAID阵列的正常运行。
传统的RAID技术有如下缺点:将多个磁盘组成RAID阵列时,一般要求使用相同容量磁盘,不够灵活,对用户的使用带来诸多限制,提高了用户的使用成本。想要创建多个RAID阵列,多个RAID阵列之间必须使用不同的磁盘组成。由于磁盘故障的概率较低,在大部分时间内,热备盘都处于待命状态,不能够充分利用热备盘的空间。如果发生磁盘故障,使用热备盘重构时,大量数据要写入热备盘,热备盘通常会成为重构性能的瓶颈。为此,本发明提供了一种独立磁盘冗余阵列创建方案。
参见图1所示,本发明实施例公开了一种独立磁盘冗余阵列创建方法,包括:
步骤S11:创建存储池,并将多个磁盘添加至所述存储池;其中,每个磁盘均对应一个与自身容量成正比的权重值。
本发明实施例首先将多个磁盘组成一个逻辑上存储池,在组成存储池时,对磁盘容量没有要求,任何容量和类型的磁盘都可以被添加到存储池中。但是在磁盘加入存储池时,会根据磁盘的容量计算出磁盘的权重值,该权重值在数据被写入时用来控制数据的写入量,以确保不同容量的磁盘空间都可以被充分使用。
步骤S12:基于所述存储池创建独立磁盘冗余阵列,得到阵列信息;所述阵列信息包含数据盘的磁盘数量。
本发明实施例中,在存储池创建完成后,用户可以在该存储池内创建多个不同级别的RAID阵列,能够创建的RAID阵列以及RAID阵列的磁盘数量取决于存储池中总的磁盘数量。
例如,参见图2所示,图2为本发明实施例公开的一种存储池示意图。首先创建存储池,将多个不同容量的磁盘添加到存储池中,并且根据磁盘容量给存储池内的每一个磁盘分配一个权重值,权重值和磁盘容量成正比。然后在存储池内创建RAID阵列。RAID阵列使用的磁盘数量不能超过存储池内的磁盘总数。图2以3个阵列:阵列1、阵列2、阵列3,以及4个磁盘:磁盘1、磁盘2、磁盘3、磁盘4为例,在实际应用场景可以根据用户需求确定阵列的数量以及磁盘的数量。
步骤S13:当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列。
本发明实施例中,所述阵列信息还可以包括阵列标识;相应的,本发明实施例还可以从所述写请求中解析出阵列标识,进一步的,基于该阵列标识从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列,获取第一目标独立磁盘冗余阵列的阵列信息。其中,阵列标识可以为阵列序号。
步骤S14:基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量。
在具体的实施方式中,可以基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值,并按照预设规则从所述存储池中筛选出第一目标磁盘数量个磁盘;其中,所述预设规则为磁盘的权重值越大,磁盘被选中的概率越大。
步骤S15:将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。
在具体的实施方式中,可以从所述第一目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第一目标磁盘数量;将所述写请求携带的写数据切分为多个条带,并将每个条带切分为所述第一目标磁盘数量个数据分块;基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘;将每个条带的数据分块写入每个条带对应的所述第一目标磁盘数量个磁盘。
其中,可以从所述写请求中解析出写数据对应的初始写地址和写数据总长度,并基于所述初始写地址和所述写数据总长度将写数据切分为多个条带,得到每个条带的起始地址和数据长度。初始写地址和每个条带的起始地址均为LBA(即Logical Block Address,逻辑区块地址)。
进一步的,在一种实施方式中,基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘,具体可以包括以下步骤:
步骤00:基于每个条带的起始地址以及常数计算哈希值。
在具体的实施方式中,可以基于每个条带的起始地址、磁盘标识以及常数计算哈希值。采用的哈希函数在参数相同的情况下得到的哈希值相等。
步骤01:将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值。
步骤02:将所述存储池中所述磁盘选取参考值最大的磁盘选出。
步骤03:增大所述常数。
重复执行步骤00至步骤03,直到筛选出第一目标磁盘数量个磁盘。
并且,磁盘选择逻辑具体如下:
r=1 //常数,没选择成功一个磁盘,r自增1
maxIndex = 0 //最大index值,每次使用最大index
diskList[disknum] //磁盘列表
for (i=0, i<disknum, i++)
{
for(j=0;j<disknum;j++)
{
index = HASH( lba,pool->disk[j].id, r ); //hash(哈希)计算,相同的参数计算值相等,保证同一个LBA可以选择出相同的结果
index *=pool->disk[j].weight; //权重值越大,选中的概率越高
if(maxidex<index) {
diskid=pool->disk[j].id; //记录最大index的磁盘ID
maxidex=index;
}
}
diskList[i] = diskid; //将磁盘ID记录到列表中
}
也即,1、遍历存储池内所有磁盘;2、使用条带的初始LBA地址,磁盘ID,常数r计算出一个hash值,需要指出的是,该hash值在参数相同的情况下值相等,以保证同一个LBA地址可以选择出相同的结果。3、使用上一步的计算结果乘以磁盘的权重值,得到一个新的index,index即磁盘选取参考值。4、所有磁盘Index最大的值为本次选择获胜的磁盘。重复步骤1-4,直到选择够指定的磁盘数,以得到一个磁盘列表。这样,使用不同容量不同规格的磁盘来组成RAID整列,降低了用户的使用成本。并且,使用分布式的RAID技术提高了磁盘的利用率。
进一步的,在一种实施方式中,所述阵列信息还包括校验盘数量;相应的,所述方法还包括:基于校验盘数量计算每个条带的校验块。相应的,基于各磁盘的权重值从所述存储池中筛选出第一目标独立磁盘冗余阵列的校验盘数量个磁盘,作为校验盘;将所述校验块存入相应的校验盘。
在另一种实施方式中,所述阵列信息还包括阵列类型信息;相应的,所述方法还包括:基于所述阵列类型信息确定所述第一目标独立磁盘冗余阵列是否包含校验盘以及校验盘数量;若第一目标独立磁盘冗余阵列包含校验盘,则基于校验盘数量计算每个条带的校验块。进一步的,基于各磁盘的权重值从所述存储池中筛选出第一目标独立磁盘冗余阵列的校验盘数量个磁盘,作为校验盘;将所述校验块存入相应的校验盘。例如,阵列类型信息为RAID5,校验盘数量为1,RAID6,校验盘数量为2。
进一步的,当获取到读请求,则从所述存储池确定所述读请求对应的第二目标独立磁盘冗余阵列;基于所述第二目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第二目标磁盘数量个磁盘;所述第二目标磁盘数量为所述第二目标独立磁盘冗余阵列对应的数据盘的磁盘数量;从所述第二目标磁盘数量个磁盘中读取数据并拼接,得到读取结果数据。
其中,可以从所述第二目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第二目标磁盘数量;基于所述写请求计算读数据对应的多个条带;基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第二目标磁盘数量个磁盘;从每个条带对应的所述第二目标磁盘数量个磁盘中读取数据,并将读取到的数据拼接,得到读取结果数据。
并且,可以从所述写请求中解析出初始数据读取地址和读数据总长度;基于所述初始数据读取地址和所述读数据总长度计算多个条带,得到每个条带的起始地址和数据长度。
相应的,基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第二目标磁盘数量个磁盘,具体可以为:基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中磁盘选取参考值最大的磁盘选出;增大所述常数,并重复执行所述基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中磁盘选取参考值最大的磁盘选出的步骤,直到筛选出第二目标磁盘数量个磁盘。其中,基于每个条带的起始地址、磁盘标识以及常数计算哈希值。
需要指出的是,对于读请求,采用与写请求的相同的磁盘筛选逻辑筛选磁盘。本申请实施例中读/写请求均可以为IO请求。
也即,本发明实施例中,当RAID阵列中有数据写入时,使用IO请求写入的LBA地址,RAID阵列号,在存储池内根据磁盘的权重大小,挑选出一个磁盘列表。挑选出的磁盘的数量等于该RAID阵列创建时指定磁盘数。然后将数据进行切分,计算校验值等,写入挑选出的磁盘列表。通过本发明提出的磁盘筛选逻辑,多次使用相同的LBA地址,RAID阵列号在存储池内进行计算,会选择出相同的磁盘阵列。当读取数据时,再次使用IO请求中的LBA地址,RAID阵列号在存储池中通过计算选择出相同的磁盘列表。从选择出的磁盘列表中读取出各个数据分片,还原出整个数据后提供给用户。例如,参见图3所示,图3为本发明实施例公开的一种IO请求处理示意图。以阵列号1为例,筛选出3个磁盘。
进一步的,参见图4所示,图4为本发明实施例公开的一种IO请求处理流程图。首先进行条带切分,将IO请求切分成多个条带,得到每一个条带的起始LBA地址,长度;切分数据分块,将每一个条带切分成n个数据分块,n为RAID阵列中数据盘的个数。例如:2个数据盘,1个校验盘的RAID5阵列,n=2。如果是写请求,并且有冗余校验数据的RAID5/RAID6整列,需要进一步的计算出校验块数据。通过磁盘筛选逻辑计算一个磁盘列表。如果是写请求,将数据块和校验块按照顺序写入磁盘列表中的每个磁盘。如果是读请求,从磁盘列表中读出每个数据分块,并且将数据分块合并成一个整条带的数据,再将所有条带的数据合并,得到读取结果数据。
另外,本发明实施例,还可以当监测到所述存储池中任意磁盘发生故障,则遍历第三目标独立磁盘冗余阵列中每个条带,基于每个条带的起始地址以及各磁盘的权重值从所述存储池中筛选出磁盘列表;所述磁盘列表包括替换故障磁盘的新磁盘以及条带对应的原正常磁盘;基于原正常磁盘的数据计算新磁盘的数据块,得到恢复数据块,将恢复的数据块写入所述新磁盘。可以理解的是,筛选磁盘列表采用的磁盘筛选逻辑与针对读请求、写请求在进行磁盘筛选时采用的磁盘筛选逻辑相同。其中可以基于原正常磁盘的数据进行XOR(异或)运算,得到恢复数据块。异或运算是一种运算规则。两个都真(true)或都假,那么输出为假(False),两个一真一假,那么输出为真。
在一种实施方式中,可以遍历故障磁盘对应的独立磁盘冗余阵列中每个条带。也即先确定故障磁盘对应的独立磁盘冗余阵列,然后遍历确定出的独立磁盘冗余阵列中每个条带。在另一种实施方式中,可以直接遍历所述存储池中全部独立磁盘冗余阵列中每个条带。例如,参见图5所示,图5为本发明实施例公开的一种故障磁盘数据恢复流程图。针对每个待遍历的RAID阵列,遍历RAID阵列中每一个条带,重新给该条带计算得到一个新的磁盘列表,从存储池中筛选出n个磁盘,n为RAID阵列中数据盘的个数,需要指出的是,新计算得到的磁盘列表中故障磁盘的位置将被一个新的磁盘代替,读取除了新选择到磁盘之外的其他磁盘的数据块,通过异或算法计算得到故障盘的数据块。将恢复的数据块写入新选择到的数据盘中。重复以上过程直到所有条带数据恢复完成。
可见,本发明先创建存储池,并将多个磁盘添加至所述存储池,每个磁盘均对应一个与自身容量成正比的权重值,之后基于所述存储池创建独立磁盘冗余阵列,得到阵列信息,所述阵列信息包含数据盘的磁盘数量,当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列,并基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘,所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量,然后将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。也即,本发明不限制磁盘容量,创建包括多个磁盘的存储池,每个磁盘均对应一个与自身容量成正比的权重值,之后基于存储池创建独立磁盘冗余阵列,得到阵列信息,当获取到写请求时,基于阵列信息以及各磁盘的权重值从存储池中筛选出磁盘,进行数据写入,这样,不限制磁盘容量,多个RAID阵列之间也可以使用相同的磁盘,筛选磁盘是基于各磁盘的权重值筛选,能够提升磁盘利用率,降低用户的使用成本。
并且,没有传统的热备盘,将所有磁盘都能够利用,没有热备盘的空间浪费。重构时故障磁盘的数据被分散到存储池内的多个磁盘上,提高了重构效率。
参见图6所示,本发明公开了一种独立磁盘冗余阵列创建装置,包括:
存储池创建模块11,用于创建存储池,并将多个磁盘添加至所述存储池;其中,每个磁盘均对应一个与自身容量成正比的权重值;
磁盘阵列创建模块12,用于基于所述存储池创建独立磁盘冗余阵列,得到阵列信息;所述阵列信息包含数据盘的磁盘数量;
目标阵列确定模块13,用于当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列;
目标磁盘筛选模块14,用于基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
数据写入模块15,用于将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。
可见,本发明实施例先创建存储池,并将多个磁盘添加至所述存储池,每个磁盘均对应一个与自身容量成正比的权重值,之后基于所述存储池创建独立磁盘冗余阵列,得到阵列信息,所述阵列信息包含数据盘的磁盘数量,当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列,并基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘,所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量,然后将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘。也即,本发明实施例不限制磁盘容量,创建包括多个磁盘的存储池,每个磁盘均对应一个与自身容量成正比的权重值,之后基于存储池创建独立磁盘冗余阵列,得到阵列信息,当获取到写请求时,基于阵列信息以及各磁盘的权重值从存储池中筛选出磁盘,进行数据写入,这样,不限制磁盘容量,多个RAID阵列之间也可以使用相同的磁盘,筛选磁盘是基于各磁盘的权重值筛选,能够提升磁盘利用率,降低用户的使用成本。
其中,目标磁盘筛选模块14,具体用于基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值,并按照预设规则从所述存储池中筛选出第一目标磁盘数量个磁盘;其中,所述预设规则为磁盘的权重值越大,磁盘被选中的概率越大。
在一种实施方式中,所述阵列信息还包括阵列标识;相应的,所述装置还包括:
阵列标识解析模块,用于从所述写请求中解析出阵列标识;
相应的,目标阵列确定模块13,具体用于:基于该阵列标识从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列。
其中,目标磁盘筛选模块14,具体包括:
第一目标磁盘数量获取子模块,用于:从所述第一目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第一目标磁盘数量;
数据切分子模块,用于将所述写请求携带的写数据切分为多个条带,并将每个条带切分为所述第一目标磁盘数量个数据分块;
目标磁盘筛选子模块,用于基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘。
相应的,数据写入模块15,具体用于将每个条带的数据分块写入每个条带对应的所述第一目标磁盘数量个磁盘。
所述装置还包括:
数据写入信息解析模块,用于从所述写请求中解析出写数据对应的初始写地址和写数据总长度。
相应的,数据切分子模块,具体用于基于所述初始写地址和所述写数据总长度将写数据切分为多个条带,得到每个条带的起始地址和数据长度。
在一种实施方式中,目标磁盘筛选模块14,具体包括:
哈希值计算子模块,用于基于每个条带的起始地址以及常数计算哈希值;
磁盘选取参考值计算子模块,用于将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;
磁盘选取子模块,用于将所述存储池中所述磁盘选取参考值最大的磁盘选出;
常数增值子模块,用于增大所述常数;
并且,所述装置还用于重复启动哈希值计算子模块、磁盘选取参考值计算子模块、磁盘选取子模块以及常数增值子模块,执行基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中所述磁盘选取参考值最大的磁盘选出;增大所述常数的步骤,直到筛选出第一目标磁盘数量个磁盘。
在一种实施方式中,哈希值计算子模块,具体用于基于每个条带的起始地址、磁盘标识以及常数计算哈希值。
进一步的,在一种实施方式中,所述阵列信息还包括校验盘数量;相应的,所述装置还包括:校验块计算模块,用于基于校验盘数量计算每个条带的校验块。相应的,目标磁盘筛选模块14,还用于基于各磁盘的权重值从所述存储池中筛选出第一目标独立磁盘冗余阵列的校验盘数量个磁盘,作为校验盘;所述数据写入模块15,还用于将所述校验块存入相应的校验盘。
在另一种实施方式中,所述阵列信息还包括阵列类型信息;相应的,
所述装置还包括:
校验信息确定模块,用于基于所述阵列类型信息确定所述第一目标独立磁盘冗余阵列是否包含校验盘以及校验盘数量;
校验块计算模块,用于若第一目标独立磁盘冗余阵列包含校验盘,则基于校验盘数量计算每个条带的校验块。
目标阵列确定模块13,还用于当获取到读请求,则从所述存储池确定所述读请求对应的第二目标独立磁盘冗余阵列;
目标磁盘筛选模块14,还用于基于所述第二目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第二目标磁盘数量个磁盘;所述第二目标磁盘数量为所述第二目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
相应的,所述装置还包括数据读取模块,用于从所述第二目标磁盘数量个磁盘中读取数据并拼接,得到读取结果数据。
目标磁盘筛选模块14,还包括:
第二目标磁盘数量获取子模块,用于:从所述第二目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第二目标磁盘数量;
条带计算子模块,用于基于所述写请求计算读数据对应的多个条带;
待读磁盘筛选子模块,用于基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第二目标磁盘数量个磁盘。
相应的,数据读取模块,具体用于从每个条带对应的所述第二目标磁盘数量个磁盘中读取数据,并将读取到的数据拼接,得到读取结果数据。
其中,条带计算子模块,具体用于:
从所述写请求中解析出初始数据读取地址和读数据总长度;基于所述初始数据读取地址和所述读数据总长度计算多个条带,得到每个条带的起始地址和数据长度。
待读磁盘筛选子模块,具体用于基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中磁盘选取参考值最大的磁盘选出;增大所述常数,并重复执行所述基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中磁盘选取参考值最大的磁盘选出的步骤,直到筛选出第二目标磁盘数量个磁盘。
进一步的,所述装置还包括故障恢复模块,用于:
当监测到所述存储池中任意磁盘发生故障,则遍历第三目标独立磁盘冗余阵列中每个条带,基于每个条带的起始地址以及各磁盘的权重值从所述存储池中筛选出磁盘列表;所述磁盘列表包括替换故障磁盘的新磁盘以及条带对应的原正常磁盘;基于原正常磁盘的数据计算新磁盘的数据块,得到恢复数据块,将恢复的数据块写入所述新磁盘。
在一种实施方式中,第三目标独立磁盘冗余阵列为故障磁盘对应的独立磁盘冗余阵列,在另一种实施方式中,第三目标独立磁盘冗余阵列为全部独立磁盘冗余阵列中每个条带。
参见图7所示,本发明实施例公开了一种电子设备20,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,前述实施例公开的独立磁盘冗余阵列创建方法。
关于上述独立磁盘冗余阵列创建方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
并且,所述存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
另外,所述电子设备20还包括电源23、通信接口24、输入输出接口25和通信总线26;其中,所述电源23用于为所述电子设备20上的各硬件设备提供工作电压;所述通信接口24能够为所述电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本发明技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
进一步的,本发明实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的独立磁盘冗余阵列创建方法。
关于上述独立磁盘冗余阵列创建方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种独立磁盘冗余阵列创建方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (18)

1.一种独立磁盘冗余阵列创建方法,其特征在于,包括:
创建存储池,并将多个磁盘添加至所述存储池;其中,每个磁盘均对应一个与自身容量成正比的权重值;
基于所述存储池创建独立磁盘冗余阵列,得到阵列信息;所述阵列信息包含数据盘的磁盘数量;
当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列;
基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘;
其中,基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘,包括:从所述第一目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第一目标磁盘数量;将所述写请求携带的写数据切分为多个条带,并将每个条带切分为所述第一目标磁盘数量个数据分块;基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘;将每个条带的数据分块写入每个条带对应的所述第一目标磁盘数量个磁盘;
并且,所述基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘,包括:基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中所述磁盘选取参考值最大的磁盘选出;增大所述常数,并重复执行所述基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中所述磁盘选取参考值最大的磁盘选出的步骤,直到筛选出第一目标磁盘数量个磁盘。
2.根据权利要求1所述的独立磁盘冗余阵列创建方法,其特征在于,所述基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘,包括:
基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值,并按照预设规则从所述存储池中筛选出第一目标磁盘数量个磁盘;
其中,所述预设规则为磁盘的权重值越大,磁盘被选中的概率越大。
3.根据权利要求1所述的独立磁盘冗余阵列创建方法,其特征在于,所述阵列信息还包括阵列标识;相应的,所述方法还包括:
从所述写请求中解析出阵列标识;
相应的,所述从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列,包括:
基于该阵列标识从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列。
4.根据权利要求1所述的独立磁盘冗余阵列创建方法,其特征在于,还包括:
从所述写请求中解析出写数据对应的初始写地址和写数据总长度。
5.根据权利要求4所述的独立磁盘冗余阵列创建方法,其特征在于,所述将所述写请求携带的写数据切分为多个条带,包括:
基于所述初始写地址和所述写数据总长度将写数据切分为多个条带,得到每个条带的起始地址和数据长度。
6.根据权利要求1所述的独立磁盘冗余阵列创建方法,其特征在于,所述基于每个条带的起始地址以及常数计算哈希值,包括:
基于每个条带的起始地址、磁盘标识以及常数计算哈希值。
7.根据权利要求1所述的独立磁盘冗余阵列创建方法,其特征在于,所述阵列信息还包括校验盘数量;相应的,所述方法还包括:基于校验盘数量计算每个条带的校验块。
8.根据权利要求7所述的独立磁盘冗余阵列创建方法,其特征在于,还包括:
基于各磁盘的权重值从所述存储池中筛选出第一目标独立磁盘冗余阵列的校验盘数量个磁盘,作为校验盘;
将所述校验块存入相应的校验盘。
9.根据权利要求1所述的独立磁盘冗余阵列创建方法,其特征在于,所述阵列信息还包括阵列类型信息;相应的,所述方法还包括:
基于所述阵列类型信息确定所述第一目标独立磁盘冗余阵列是否包含校验盘以及校验盘数量;
若第一目标独立磁盘冗余阵列包含校验盘,则基于校验盘数量计算每个条带的校验块。
10.根据权利要求1至9任一项所述的独立磁盘冗余阵列创建方法,其特征在于,还包括:
当获取到读请求,则从所述存储池确定所述读请求对应的第二目标独立磁盘冗余阵列;
基于所述第二目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第二目标磁盘数量个磁盘;所述第二目标磁盘数量为所述第二目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
从所述第二目标磁盘数量个磁盘中读取数据并拼接,得到读取结果数据。
11.根据权利要求10所述的独立磁盘冗余阵列创建方法,其特征在于,基于所述第二目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第二目标磁盘数量个磁盘;从所述第二目标磁盘数量个磁盘中读取数据并拼接,得到读取结果数据,包括:
从所述第二目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第二目标磁盘数量;
基于所述写请求计算读数据对应的多个条带;
基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第二目标磁盘数量个磁盘;
从每个条带对应的所述第二目标磁盘数量个磁盘中读取数据,并将读取到的数据拼接,得到读取结果数据。
12.根据权利要求11所述的独立磁盘冗余阵列创建方法,其特征在于,所述基于所述写请求计算读数据对应的多个条带,包括:
从所述写请求中解析出初始数据读取地址和读数据总长度;
基于所述初始数据读取地址和所述读数据总长度计算多个条带,得到每个条带的起始地址和数据长度。
13.根据权利要求12所述的独立磁盘冗余阵列创建方法,其特征在于,所述基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第二目标磁盘数量个磁盘,包括:
基于每个条带的起始地址以及常数计算哈希值;
将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;
将所述存储池中磁盘选取参考值最大的磁盘选出;
增大所述常数,并重复执行所述基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中磁盘选取参考值最大的磁盘选出的步骤,直到筛选出第二目标磁盘数量个磁盘。
14.根据权利要求5所述的独立磁盘冗余阵列创建方法,其特征在于,还包括:
当监测到所述存储池中任意磁盘发生故障,则遍历第三目标独立磁盘冗余阵列中每个条带,基于每个条带的起始地址以及各磁盘的权重值从所述存储池中筛选出磁盘列表;所述磁盘列表包括替换故障磁盘的新磁盘以及条带对应的原正常磁盘;
基于原正常磁盘的数据计算新磁盘的数据块,得到恢复数据块,将恢复的数据块写入所述新磁盘。
15.根据权利要求14所述的独立磁盘冗余阵列创建方法,其特征在于,所述遍历第三目标独立磁盘冗余阵列中每个条带,包括:
遍历故障磁盘对应的独立磁盘冗余阵列中每个条带;
或遍历所述存储池中全部独立磁盘冗余阵列中每个条带。
16.一种独立磁盘冗余阵列创建装置,其特征在于,包括:
存储池创建模块,用于创建存储池,并将多个磁盘添加至所述存储池;其中,每个磁盘均对应一个与自身容量成正比的权重值;
磁盘阵列创建模块,用于基于所述存储池创建独立磁盘冗余阵列,得到阵列信息;所述阵列信息包含数据盘的磁盘数量;
目标阵列确定模块,用于当获取到写请求,则从所述存储池确定所述写请求对应的第一目标独立磁盘冗余阵列;
目标磁盘筛选模块,用于基于所述第一目标独立磁盘冗余阵列的阵列信息以及各磁盘的权重值从所述存储池中筛选出第一目标磁盘数量个磁盘;所述第一目标磁盘数量为所述第一目标独立磁盘冗余阵列对应的数据盘的磁盘数量;
数据写入模块,用于将所述写请求携带的写数据写入所述第一目标磁盘数量个磁盘;
其中,目标磁盘筛选模块,具体包括:
第一目标磁盘数量获取子模块,用于:从所述第一目标独立磁盘冗余阵列的阵列信息中获取数据盘的磁盘数量,得到第一目标磁盘数量;
数据切分子模块,用于将所述写请求携带的写数据切分为多个条带,并将每个条带切分为所述第一目标磁盘数量个数据分块;
目标磁盘筛选子模块,用于基于所述存储池中各磁盘的权重值从所述存储池中为每个条带筛选出第一目标磁盘数量个磁盘;
相应的,数据写入模块,具体用于将每个条带的数据分块写入每个条带对应的所述第一目标磁盘数量个磁盘;
并且,目标磁盘筛选模块,具体包括:
哈希值计算子模块,用于基于每个条带的起始地址以及常数计算哈希值;
磁盘选取参考值计算子模块,用于将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;
磁盘选取子模块,用于将所述存储池中所述磁盘选取参考值最大的磁盘选出;
常数增值子模块,用于增大所述常数;
并且,所述装置还用于重复启动哈希值计算子模块、磁盘选取参考值计算子模块、磁盘选取子模块以及常数增值子模块,执行基于每个条带的起始地址以及常数计算哈希值;将所述哈希值乘以磁盘的权重值,得到磁盘选取参考值;将所述存储池中所述磁盘选取参考值最大的磁盘选出;增大所述常数的步骤,直到筛选出第一目标磁盘数量个磁盘。
17.一种电子设备,其特征在于,包括存储器和处理器,其中:
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序,以实现如权利要求1至15任一项所述的独立磁盘冗余阵列创建方法。
18.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至15任一项所述的独立磁盘冗余阵列创建方法。
CN202310605247.5A 2023-05-26 2023-05-26 一种独立磁盘冗余阵列创建方法、装置、设备及介质 Active CN116339644B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310605247.5A CN116339644B (zh) 2023-05-26 2023-05-26 一种独立磁盘冗余阵列创建方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310605247.5A CN116339644B (zh) 2023-05-26 2023-05-26 一种独立磁盘冗余阵列创建方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN116339644A CN116339644A (zh) 2023-06-27
CN116339644B true CN116339644B (zh) 2023-08-11

Family

ID=86880710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310605247.5A Active CN116339644B (zh) 2023-05-26 2023-05-26 一种独立磁盘冗余阵列创建方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116339644B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472287B (zh) * 2023-12-27 2024-03-19 苏州元脑智能科技有限公司 一种冗余磁盘阵列巡检方法、装置、设备、介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566520B1 (en) * 2009-10-05 2013-10-22 Marvell International Ltd. Storage space allocation for logical disk creation
CN103365781A (zh) * 2012-03-29 2013-10-23 国际商业机器公司 用于动态地重新配置存储系统的方法和设备
CN107807794A (zh) * 2017-10-31 2018-03-16 新华三技术有限公司 一种数据存储方法和装置
CN109582234A (zh) * 2018-11-23 2019-04-05 金色熊猫有限公司 储存资源分配方法、装置、电子设备及计算机可读介质
CN115657965A (zh) * 2022-11-16 2023-01-31 苏州浪潮智能科技有限公司 一种元数据的配置方法、装置及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733518B (zh) * 2017-04-17 2021-07-09 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机可读介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566520B1 (en) * 2009-10-05 2013-10-22 Marvell International Ltd. Storage space allocation for logical disk creation
CN103365781A (zh) * 2012-03-29 2013-10-23 国际商业机器公司 用于动态地重新配置存储系统的方法和设备
CN107807794A (zh) * 2017-10-31 2018-03-16 新华三技术有限公司 一种数据存储方法和装置
CN109582234A (zh) * 2018-11-23 2019-04-05 金色熊猫有限公司 储存资源分配方法、装置、电子设备及计算机可读介质
CN115657965A (zh) * 2022-11-16 2023-01-31 苏州浪潮智能科技有限公司 一种元数据的配置方法、装置及介质

Also Published As

Publication number Publication date
CN116339644A (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
US10126988B1 (en) Assigning RAID extents and changing drive extent allocations within RAID extents when splitting a group of storage drives into partnership groups in a data storage system
US10210045B1 (en) Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system
US10140041B1 (en) Mapped RAID (redundant array of independent disks) in a data storage system with RAID extent sub-groups that are used to perform drive extent allocation and data striping for sequential data accesses to a storage object
US20220137849A1 (en) Fragment Management Method and Fragment Management Apparatus
CN107870730B (zh) 用于管理存储系统的方法和系统
US10146447B1 (en) Mapped RAID (redundant array of independent disks) in a data storage system with drive extents allocated to individual RAID extents from individual sub-groups of storage made up of ranges of logical block addresses defined across a group of hard disk drives
US6898668B2 (en) System and method for reorganizing data in a raid storage system
US6647460B2 (en) Storage device with I/O counter for partial data reallocation
CN107250975B (zh) 数据存储系统和数据存储方法
US8261016B1 (en) Method and system for balancing reconstruction load in a storage array using a scalable parity declustered layout
KR101821001B1 (ko) Raid 어레이에서 장치내 데이터 보호
US8839028B1 (en) Managing data availability in storage systems
US6393516B2 (en) System and method for storage media group parity protection
KR101824286B1 (ko) 적응적 지오메트리를 구비한 raid 어레이에서의 복원 판독
US10289336B1 (en) Relocating data from an end of life storage drive based on storage drive loads in a data storage system using mapped RAID (redundant array of independent disks) technology
US7093069B2 (en) Integration of a RAID controller with a disk drive module
CN110096219B (zh) 从驱动器组生成的驱动器区段池的有效容量
US10678643B1 (en) Splitting a group of physical data storage drives into partnership groups to limit the risk of data loss during drive rebuilds in a mapped RAID (redundant array of independent disks) data storage system
KR102460568B1 (ko) 대형 키 밸류 객체들을 저장하는 시스템 및 방법
US11385823B2 (en) Method, electronic device and computer program product for rebuilding disk array
CN116339644B (zh) 一种独立磁盘冗余阵列创建方法、装置、设备及介质
EP3553664A1 (en) Method and apparatus for calculating available capacity of storage system
CN113419684B (zh) 一种数据处理方法、装置、设备及可读存储介质
EP4170499A1 (en) Data storage method, storage system, storage device, and storage medium
CN109558066B (zh) 存储系统中恢复元数据的方法和装置

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