CN115543218B - 一种raid10阵列的读数据方法及相关装置 - Google Patents

一种raid10阵列的读数据方法及相关装置 Download PDF

Info

Publication number
CN115543218B
CN115543218B CN202211508020.0A CN202211508020A CN115543218B CN 115543218 B CN115543218 B CN 115543218B CN 202211508020 A CN202211508020 A CN 202211508020A CN 115543218 B CN115543218 B CN 115543218B
Authority
CN
China
Prior art keywords
disk
bit
disk pair
search path
array
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
CN202211508020.0A
Other languages
English (en)
Other versions
CN115543218A (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 CN202211508020.0A priority Critical patent/CN115543218B/zh
Publication of CN115543218A publication Critical patent/CN115543218A/zh
Application granted granted Critical
Publication of CN115543218B publication Critical patent/CN115543218B/zh
Priority to PCT/CN2023/093957 priority patent/WO2024113686A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • 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/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种RAID10阵列的读数据方法,涉及存储技术领域,包括:获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;获取二叉搜索树当前的搜索路径;根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;从所述目标磁盘读取所述目标数据;更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。该读数据方法能够有效提高RAID10阵列的读性能。本申请还公开了一种RAID10阵列的读数据装置、设备以及计算机可读存储介质,均具有上述技术效果。

Description

一种RAID10阵列的读数据方法及相关装置
技术领域
本申请涉及存储技术领域,特别涉及一种RAID10阵列的读数据方法;还涉及一种RAID10阵列的读数据装置、设备以及计算机可读存储介质。
背景技术
RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)存储技术使用条带、镜像和校验来保证数据的安全性。RAID10阵列是一种将RAID0和RAID1两种阵列技术结合起来的阵列,其在数据安全性和I/O性能方面表现良好。由于RAID10阵列的每块数据盘都有一块镜像盘,在读取数据时既可以从数据盘读取,也可以从镜像盘读取,因此业界在读取RAID10阵列中存储的数据时会使用负载均衡的模式从数据盘和其镜像盘中读取数据。在密集型I/O业务场景下,利用负载均衡的模式读取数据可以大幅度提高RAID10阵列的读取速率。目前业界采用LRU(Least Recently Used,最近最少使用)算法作为RAID10阵列在读取数据方面的负载均衡算法。然而,采用LRU算法存在负载均衡模式下读取数据的效率不理想的问题。
因此,如何提高RAID10阵列的读性能已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种RAID10阵列的读数据方法,能够有效提高RAID10阵列的读性能。本申请的另一个目的是提供一种RAID10阵列的读数据装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种RAID10阵列的读数据方法,包括:
获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
获取二叉搜索树当前的搜索路径;
根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
从所述目标磁盘读取所述目标数据;
更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘
可选的,所述根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘包括:
获取所述磁盘对编号的末位;
获取所述搜索路径的末位;
根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘。
可选的,所述获取所述磁盘对编号的末位包括:
将所述磁盘对编号与第一预设值进行第一位运算;
对所述第一位运算的结果进行第二位运算,得到所述磁盘对编号的末位。
可选的,所述将所述磁盘对编号与第一预设值进行第一位运算包括:
将所述磁盘对编号与第一预设值进行位与运算。
可选的,所述对所述第一位运算的结果进行第二位运算包括:
将所述第一位运算的结果右移第一预设大小。
可选的,所述获取所述搜索路径的末位包括:
将所述搜索路径与第二预设值进行第三位运算,得到所述搜索路径的末位。
可选的,所述将所述搜索路径与第二预设值进行第三位运算包括:
将所述搜索路径与所述第二预设值进行位与运算。
可选的,所述根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘包括:
将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算;
根据所述第四位运算的结果,从所述磁盘对中选择目标磁盘。
可选的,所述将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算包括:
将所述磁盘对编号的末位与所述搜索路径的末位进行异或运算。
可选的,还包括:
通过预设字段存储所述二叉搜索树。
可选的,所述通过预设字段存储所述二叉搜索树包括:
通过所述预设字段的低7位存储所述二叉搜索树。
可选的,还包括:
创建数组;所述数组的元素的个数等于所述二叉搜索树的搜索路径的个数,所述数组的索引与所述二叉搜索树的搜索路径一一对应。
可选的,所述数组的元素用于记录关键字,所述关键字与条带区域相对应。
可选的,所述关键字根据条带编号计算得到。
可选的,根据所述条带编号计算得到所述关键字包括:
对所述条带编号进行第五位运算。
可选的,所述对所述条带编号进行第五位运算包括:
将所述条带编号右移第二预设大小。
可选的,所述磁盘对的数据盘为固态硬盘,镜像盘为机械硬盘。
为解决上述技术问题,本申请还提供了一种RAID10阵列的读数据装置,包括:
第一获取模块,用于获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
第二获取模块,用于获取二叉搜索树当前的搜索路径;
选择模块,用于根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
读取模块,用于从所述目标磁盘读取所述目标数据;
更新模块,用于更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。
为解决上述技术问题,本申请还提供了一种RAID10阵列的读数据设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的RAID10阵列的读数据方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的RAID10阵列的读数据方法的步骤。
本申请所提供的RAID10阵列的读数据方法,包括:获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;获取二叉搜索树当前的搜索路径;根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;从所述目标磁盘读取所述目标数据;更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。
可见,本申请所提供的RAID10阵列的读数据方法,基于PLRU(Pseudo leastrecently used,伪最近最少使用)算法进行负载均衡模式下的数据读取,二叉搜索树的搜索路径不断更新,对于固定的磁盘对,基于搜索路径确定的目标磁盘在数据盘与镜像盘之间规律的变换,由此可以将I/O均匀的分布到磁盘对中的不同磁盘。相较于采用LRU算法的传统技术方案,本申请所提供的读数据方法能够有效提高RAID10阵列的读性能。
本申请所提供的RAID10阵列的读数据装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种RAID10阵列的读数据方法的流程示意图;
图2为本申请实施例所提供的一种二叉搜索树的示意图;
图3为本申请实施例所提供的一种树节点值与叶子接节点值对应关系示意图;
图4为本申请实施例所提供的一种节点更新模式示意图;
图5为本申请实施例所提供的一种字段示意图;
图6为本申请实施例所提供的一种RAID10阵列内部磁盘分布示意图;
图7为本申请实施例所提供的一种RAID10阵列的读数据装置的示意图;
图8为本申请实施例所提供的一种RAID10阵列的读数据设备的示意图。
具体实施方式
本申请的核心是提供一种RAID10阵列的读数据方法,能够有效提高RAID10阵列的读性能。本申请的另一个核心是提供一种RAID10阵列的读数据装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种RAID10阵列的读数据方法的流程示意图,参考图1所示,该方法包括:
S101:获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
目标数据为本次要读取的数据。
S102:获取二叉搜索树当前的搜索路径;
参考图2所示,二叉搜索树的每个节点具有一位标志,该标志指示“向左查找伪LRU元素”或“向右查找伪LRU元素”。要查找伪LRU元素,需根据标志的值遍历二叉搜索树。要使用对项LN的访问来更新二叉搜索树,需遍历二叉搜索树找到LN,并在遍历期间将节点标志设置为指示与所取方向相反的方向。每个节点被搜索一次后就更新相应的节点值,如果节点值为0,则更新为1,如果节点值为1,则更新为0。初始化二叉搜索树的所有节点的节点值为0。如果节点值为0查找左子树,如果节点值为1查找右子树。第一次查找二叉搜索树时,因为B0为0,所以向左查找到B1,因为B1为0,所以再向左查找到B3,因为B3为0,所以向左查找到L1。查找完成后更新二叉搜索树的节点值,B0、B1、B3均更新为1。下次再查找二叉搜索树时,因为B0为1,所以向右查找到B2,因为B2为0,因此向左查找到B5,由于B5为0,因此查找到L4。查找完成后更新二叉搜索树的节点值,将B0赋值为0,B2赋值为1,B5赋值为1。下一次查找二叉搜索树时,通过BOB1B4查找到L2,依此类推。
二叉搜索树根据各个节点的值来搜索相应的节点,图3所示即为树节点值和叶子节点的对应关系。所有节点更新的模式可参考图4所示。
不同的节点以及不同的节点值,构成不同的搜索路径。例如,B3B1B0为000为一条搜索路径,B5B2B0为001为一条搜索路径。
S103:根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
S104:从所述目标磁盘读取所述目标数据;
在获取磁盘对编号与搜索路径的基础上,根据磁盘对编号与搜索路径,确定本次是从磁盘对中的数据盘读数据还是从镜像盘读数据。如果目标磁盘为数据盘,则从数据盘读取数据。如果目标磁盘为镜像盘,则从镜像盘读取数据。
在一些实施例中,所述根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘包括:
获取所述磁盘对编号的末位;
获取所述搜索路径的末位;
根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘。
本实施例具体基于磁盘对编号的末位与搜索路径的末位确定目标磁盘。可以明白的是,除此之外,还可以基于磁盘对编号的其他位与搜索路径的其他位确定目标磁盘,对此可以差异性设置。
其中,所述获取所述磁盘对编号的末位可以包括:
将所述磁盘对编号与第一预设值进行第一位运算;
对所述第一位运算的结果进行第二位运算,得到所述磁盘对编号的末位。
本实施例通过位运算的方式获取磁盘对编号的末位。首先将所述磁盘对编号与第一预设值进行第一位运算,然后再对第一位运算得到的结果进行第二位运算,得到磁盘对编号的末位。
进一步,所述将所述磁盘对编号与第一预设值进行第一位运算可以包括:将所述磁盘对编号与第一预设值进行位与运算。所述对所述第一位运算的结果进行第二位运算可以包括:将所述第一位运算的结果右移第一预设大小。
具体而言,本实施例中第一位运算是位与运算,第二位运算是右移运算。第一预设值可以为2,第二预设值可以为1。将所述磁盘对编号与第一预设值进行位与运算,将所述第一位运算的结果右移第一预设大小,得到磁盘对编号的末位可以表示如下:
compbit=(component & 2)>> 1;compbit表示磁盘对编号的末位,component表示磁盘对编号。
例如,磁盘0和磁盘1组成的磁盘对的磁盘对编号为0,通过上述位运算,得到磁盘对编号0的末位为0。磁盘2和磁盘3组成的磁盘对的磁盘对编号为1,通过上述位运算的到磁盘对编号1的末位为1。磁盘4和磁盘5组成的磁盘对的磁盘对编号为2,通过上述位运算得到磁盘对编号的末位为0。
另外,在一些实施例中,所述获取所述搜索路径的末位包括:
将所述搜索路径与第二预设值进行第三位运算,得到所述搜索路径的末位。
本实施例通过位运算的方式获取搜索路径的末位。搜索路径的末位即为BO。
所述将所述搜索路径与第二预设值进行第三位运算可以包括:将所述搜索路径与所述第二预设值进行位与运算。
本实施例中第三位运算是位与运算。第二预设值可以为1。将所述搜索路径与所述第二预设值进行位与运算,得到搜索路径的末位可表示如下:
B0=stream & 1;stream表示搜索路径。
此外,在一些实施例中,所述根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘包括:
将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算;
根据所述第四位运算的结果,从所述磁盘对中选择目标磁盘。
本实施例通过位运算的方式确定目标磁盘。首先将磁盘对编号的末位与搜索路径的末位进行第四位运算,然后根据第四位运算的结果,以及预先设定的对应关系,确定目标磁盘。
所述将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算可以包括:
将所述磁盘对编号的末位与所述搜索路径的末位进行异或运算。
本实施例中第四位运算是异或运算。将所述磁盘对编号的末位与所述搜索路径的末位进行异或运算可以表示如下:
compbit ^ (stream & 1);即对磁盘对编号的末位与搜索路径的末位B0,进行异或运算,确定当前要读取的磁盘。
预先可约定异或运算的结果与磁盘的对应关系,进而根据异或运算的结果以及该对应关系确定当前要读取的磁盘。例如,约定异或结果为0,则读取数据盘,异或结果为1,则读取镜像盘。
S105:更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。
完成一次目标磁盘的选择等同于完成了一次二叉搜索树的查找。本次查找二叉搜索树后,更新二叉搜索树,即更新树节点的值。例如,搜索路径B3B1B0为000更新为搜索路径B5B2B0为001。
下一次读数据时,依据更新后的搜索路径,选择目标磁盘。更新二叉搜索树的时机可以是在确定目标磁盘之后,也可以是在从目标磁盘读取数据之后。
进一步,在一些实施例中,还包括:
通过预设字段存储所述二叉搜索树。
二叉搜索树的树节点为B0、B1、B2、B3、B4、B5、B6。
其中,通过预设字段存储所述二叉搜索树可以包括:
通过所述预设字段的低7位存储所述二叉搜索树。参考图5所示,预设字段可以为32位字段,预设字段的低7位依次对应B0至B7。
进一步,在一些实施例中,还包括:
创建数组;所述数组的元素的个数等于所述二叉搜索树的搜索路径的个数,所述数组的索引与所述二叉搜索树的搜索路径一一对应。
二叉搜索树的搜索路径的个数为8,因此建立包含8个元素的Volume.VOL_Stream[8]数组,数组索引N对应于搜索路径。搜索路径B3B1B0为000时对应VOL_Stream[0],搜索路径B5B2B0为001时,对应VOL_Stream[1],依次类推。
每个Raid10阵列包含如下信息:
struct Raid10
{
    struct VolumeSs
{
    UINT32  VOL_StreamControl     //低7位存储二叉搜索树
    UINT8   VOL_Stream[8];       //数组索引对应于搜索路径
};
    UINT16 Stretch_Num;    //条带编号
    UINT8 numDisks;    //Raid10阵列包含几个物理磁盘
    UINT64 component;  //RAID10阵列中需求读取数据的磁盘编号
    UINT64 compbit;   //RAID10阵列中磁盘对编号的末位
}
其中,在一些实施例中,所述数组的元素用于记录关键字,所述关键字与条带区域相对应。所述关键字根据条带编号计算得到。根据所述条带编号计算得到所述关键字可以包括:对所述条带编号进行第五位运算。所述对所述条带编号进行第五位运算可以包括:将所述条带编号右移第二预设大小。
具体而言,每个数组元素记录一个key。该key对应于256个条带区域。
key的计算方法可以为:将所述条带编号右移第二预设大小。
例如,key = Stretch_Num >> (32 - R10_STREAM_STRIP_BITS);Stretch_Num为条带编号,R10_STREAM_STRIP_BITS宏定义为24,由此32 - R10_STREAM_STRIP_BITS=8,Stretch_Num >> 8是指向右移动八位,即条带编号除以256,因此可以得出具有256个条带的条带区域。
如果Volume.VOL_Stream[8]数组未记录当前的条带区域,可以获取一个VOL_Stream[stream]数组元素记录key,stream为数组的索引,也即二叉搜索树的搜索路径。同时更新二叉搜索树。
如果Volume.VOL_Stream[8]数组记录当前的条带区域,使用对应数组元素的索引stream,依据compbit=(component & 2)>>1,compbit^(stream&1),确定要读取的磁盘,并更新二叉搜索树Volume->VOL_StreamControl。
进一步,在一种具体的实施方式中,所述磁盘对的数据盘为固态硬盘,镜像盘为机械硬盘。
参考图6所示,RAID10阵列中磁盘1为磁盘0的镜像盘,磁盘3和磁盘5分别是磁盘2和磁盘4的镜像盘。RAID10阵列需要有1/2的磁盘作为镜像盘,如果镜像盘与数据盘都使用SSD(Solid State Disk,固态硬盘)盘,会增加RAID10的成本。因此本实施例中RAID10阵列的数据盘使用SSD盘,镜像盘使用HDD(Hard Disk Drive,机械硬盘)盘,从而可以有效降低RAID10的成本。
综上所述,本申请所提供的RAID10阵列的读数据方法,包括:获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;获取二叉搜索树当前的搜索路径;根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;从所述目标磁盘读取所述目标数据;更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。该读数据方法基于PLRU算法进行负载均衡模式下的数据读取,二叉搜索树的搜索路径不断更新,对于固定的磁盘对,基于搜索路径确定的目标磁盘在数据盘与镜像盘之间规律的变换,由此可以将I/O均匀的分布到磁盘对中的不同磁盘。相较于采用LRU算法的传统技术方案,本申请所提供的读数据方法能够有效提高RAID10阵列的读性能。
本申请还提供了一种RAID10阵列的读数据装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图7,图7为本申请实施例所提供的一种RAID10阵列的读数据装置的示意图,结合图7所示,该装置包括:
第一获取模块10,用于获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
第二获取模块20,用于获取二叉搜索树当前的搜索路径;
选择模块30,用于根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
读取模块40,用于从所述目标磁盘读取所述目标数据;
更新模块50,用于更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。
具体而言,目标数据为本次要读取的数据。在第一获取模块10获取磁盘对编号,第二获取模块20获取搜索路径的基础上,选择模块30根据磁盘对编号与搜索路径,确定本次是从磁盘对中的数据盘读数据还是从镜像盘读数据。如果目标磁盘为数据盘,则读取模块40从数据盘读取数据。如果目标磁盘为镜像盘,则读取模块40从镜像盘读取数据。完成一次目标磁盘的选择等同于完成了一次二叉搜索树的查找。本次查找二叉搜索树后,更新二叉搜索树,即更新树节点的值。下一次读数据时,依据更新后的搜索路径,选择目标磁盘。更新模块50更新二叉搜索树的时机可以是在选择模块30确定目标磁盘之后,也可以是在读取模块40从目标磁盘读取数据之后。
在上述实施例的基础上,作为一种具体的实施方式,所述选择模块30包括:
第一获取单元,用于获取所述磁盘对编号的末位;
第二获取单元,用于获取所述搜索路径的末位;
选择单元,用于根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘。
在上述实施例的基础上,作为一种具体的实施方式,所述第一获取单元包括:
第一位运算单元,用于将所述磁盘对编号与第一预设值进行第一位运算;
第二位运算单元,用于对所述第一位运算的结果进行第二位运算,得到所述磁盘对编号的末位。
具体而言,本实施例通过位运算的方式获取磁盘对编号的末位。首先第一位运算单元将所述磁盘对编号与第一预设值进行第一位运算,然后第二位运算单元再对第一位运算得到的结果进行第二位运算,得到磁盘对编号的末位。
在上述实施例的基础上,作为一种具体的实施方式,所述第一位运算单元具体用于:
将所述磁盘对编号与第一预设值进行位与运算。
在上述实施例的基础上,作为一种具体的实施方式,所述第二位运算单元具体用于:
将所述第一位运算的结果右移第一预设大小。
具体而言,本实施例中第一位运算是位与运算,第二位运算是右移运算。第一预设值可以为2,第二预设值可以为1。将所述磁盘对编号与第一预设值进行位与运算,将所述第一位运算的结果右移第一预设大小,得到磁盘对编号的末位可以表示如下:
compbit=(component & 2)>> 1;compbit表示磁盘对编号的末位,component表示磁盘对编号。
在上述实施例的基础上,作为一种具体的实施方式,所述第二获取单元包括:
第三位运算单元,用于将所述搜索路径与第二预设值进行第三位运算,得到所述搜索路径的末位。
在上述实施例的基础上,作为一种具体的实施方式,所述第三位运算单元具体用于:
将所述搜索路径与所述第二预设值进行位与运算。
具体而言,本实施例中第三位运算是位与运算。第二预设值可以为1。将所述搜索路径与所述第二预设值进行位与运算,得到搜索路径的末位可表示如下:
B0=stream & 1;stream表示搜索路径。
在上述实施例的基础上,作为一种具体的实施方式,所述选择单元包括:
第四位运算单元,用于将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算;
目标磁盘选择单元,用于根据所述第四位运算的结果,从所述磁盘对中选择目标磁盘。
具体而言,本实施例通过位运算的方式确定目标磁盘。首先第四位运算单元将磁盘对编号的末位与搜索路径的末位进行第四位运算,然后目标磁盘选择单元根据第四位运算的结果,以及预先设定的对应关系,确定目标磁盘。
在上述实施例的基础上,作为一种具体的实施方式,所述第四位运算单元具体用于:
将所述磁盘对编号的末位与所述搜索路径的末位进行异或运算。
具体而言,本实施例中第四位运算是异或运算。将所述磁盘对编号的末位与所述搜索路径的末位进行异或运算可以表示如下:
compbit ^ (stream & 1);即对磁盘对编号的末位与搜索路径的末位B0,进行异或运算,确定当前要读取的磁盘。
预先可约定异或运算的结果与磁盘的对应关系,进而根据异或运算的结果以及该对应关系确定当前要读取的磁盘。例如,约定异或结果为0,则读取数据盘,异或结果为1,则读取镜像盘。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
存储模块,用于通过预设字段存储所述二叉搜索树。
在上述实施例的基础上,作为一种具体的实施方式,所述存储模块具体用于:
通过所述预设字段的低7位存储所述二叉搜索树。
具体而言,二叉搜索树的树节点为B0、B1、B2、B3、B4、B5、B6。预设字段可以为32位字段,预设字段的低7位依次对应B0至B7。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
创建模块,用于创建数组;所述数组的元素的个数等于所述二叉搜索树的搜索路径的个数,所述数组的索引与所述二叉搜索树的搜索路径一一对应。
具体而言,二叉搜索树的搜索路径的个数为8,因此建立包含8个元素的Volume.VOL_Stream[8]数组,数组索引N对应于搜索路径。搜索路径B3B1B0为000时对应VOL_Stream[0],搜索路径B5B2B0为001时,对应VOL_Stream[1],依次类推。
在上述实施例的基础上,作为一种具体的实施方式,所述数组的元素用于记录关键字,所述关键字与条带区域相对应。
在上述实施例的基础上,作为一种具体的实施方式,所述关键字根据条带编号计算得到。
在上述实施例的基础上,作为一种具体的实施方式,根据所述条带编号计算得到所述关键字包括:
对所述条带编号进行第五位运算。
在上述实施例的基础上,作为一种具体的实施方式,所述对所述条带编号进行第五位运算包括:
将所述条带编号右移第二预设大小。
具体而言,每个数组元素记录一个key。该key对应于256个条带区域。
key的计算方法可以为:将所述条带编号右移第二预设大小。
例如,key = Stretch_Num >> (32 - R10_STREAM_STRIP_BITS);Stretch_Num为条带编号,R10_STREAM_STRIP_BITS宏定义为24,由此32 - R10_STREAM_STRIP_BITS=8,Stretch_Num >> 8是指向右移动八位,即条带编号除以256,因此可以得出具有256个条带的条带区域。
在上述实施例的基础上,作为一种具体的实施方式,所述磁盘对的数据盘为固态硬盘,镜像盘为机械硬盘。
具体而言,RAID10阵列需要有1/2的磁盘作为镜像盘,如果镜像盘与数据盘都使用SSD盘,会增加RAID10的成本。因此本实施例中RAID10阵列的数据盘使用SSD盘,镜像盘使用HDD盘,从而可以有效降低RAID10的成本。
本申请所提供的RAID10阵列的读数据装置,基于PLRU算法进行负载均衡模式下的数据读取,二叉搜索树的搜索路径不断更新,对于固定的磁盘对,基于搜索路径确定的目标磁盘在数据盘与镜像盘之间规律的变换,由此可以将I/O均匀的分布到磁盘对中的不同磁盘。相较于采用LRU算法的传统技术方案,本申请所提供的读数据装置能够有效提高RAID10阵列的读性能。
本申请还提供了一种RAID10阵列的读数据设备,参考图8所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
获取二叉搜索树当前的搜索路径;
根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
从所述目标磁盘读取所述目标数据;
更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请所提供的RAID10阵列的读数据设备,基于PLRU算法进行负载均衡模式下的数据读取,二叉搜索树的搜索路径不断更新,对于固定的磁盘对,基于搜索路径确定的目标磁盘在数据盘与镜像盘之间规律的变换,由此可以将I/O均匀的分布到磁盘对中的不同磁盘。相较于采用LRU算法的传统技术方案,本申请所提供的读数据设备能够有效提高RAID10阵列的读性能。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
获取二叉搜索树当前的搜索路径;
根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
从所述目标磁盘读取所述目标数据;
更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请所提供的计算机可读存储介质,基于PLRU算法进行负载均衡模式下的数据读取,二叉搜索树的搜索路径不断更新,对于固定的磁盘对,基于搜索路径确定的目标磁盘在数据盘与镜像盘之间规律的变换,由此可以将I/O均匀的分布到磁盘对中的不同磁盘。相较于采用LRU算法的传统技术方案,本申请所提供的计算机可读存储介质能够有效提高RAID10阵列的读性能。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的RAID10阵列的读数据方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。

Claims (18)

1.一种RAID10阵列的读数据方法,其特征在于,包括:
获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
获取二叉搜索树当前的搜索路径;
根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
从所述目标磁盘读取所述目标数据;
更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘;
所述根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘包括:
获取所述磁盘对编号的末位;
获取所述搜索路径的末位;
根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘;
所述根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘包括:
将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算;
根据所述第四位运算的结果,从所述磁盘对中选择目标磁盘。
2.根据权利要求1所述的读数据方法,其特征在于,所述获取所述磁盘对编号的末位包括:
将所述磁盘对编号与第一预设值进行第一位运算;
对所述第一位运算的结果进行第二位运算,得到所述磁盘对编号的末位。
3.根据权利要求2所述的读数据方法,其特征在于,所述将所述磁盘对编号与第一预设值进行第一位运算包括:
将所述磁盘对编号与第一预设值进行位与运算。
4.根据权利要求2所述的读数据方法,其特征在于,所述对所述第一位运算的结果进行第二位运算包括:
将所述第一位运算的结果右移第一预设大小。
5.根据权利要求1所述的读数据方法,其特征在于,所述获取所述搜索路径的末位包括:
将所述搜索路径与第二预设值进行第三位运算,得到所述搜索路径的末位。
6.根据权利要求5所述的读数据方法,其特征在于,所述将所述搜索路径与第二预设值进行第三位运算包括:
将所述搜索路径与所述第二预设值进行位与运算。
7.根据权利要求1所述的读数据方法,其特征在于,所述将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算包括:
将所述磁盘对编号的末位与所述搜索路径的末位进行异或运算。
8.根据权利要求1所述的读数据方法,其特征在于,还包括:
通过预设字段存储所述二叉搜索树。
9.根据权利要求8所述的读数据方法,其特征在于,所述通过预设字段存储所述二叉搜索树包括:
通过所述预设字段的低7位存储所述二叉搜索树。
10.根据权利要求9所述的读数据方法,其特征在于,还包括:
创建数组;所述数组的元素的个数等于所述二叉搜索树的搜索路径的个数,所述数组的索引与所述二叉搜索树的搜索路径一一对应。
11.根据权利要求10所述的读数据方法,其特征在于,所述数组的元素用于记录关键字,所述关键字与条带区域相对应。
12.根据权利要求11所述的读数据方法,其特征在于,所述关键字根据条带编号计算得到。
13.根据权利要求12所述的读数据方法,其特征在于,根据所述条带编号计算得到所述关键字包括:
对所述条带编号进行第五位运算。
14.根据权利要求13所述的读数据方法,其特征在于,所述对所述条带编号进行第五位运算包括:
将所述条带编号右移第二预设大小。
15.根据权利要求1所述的读数据方法,其特征在于,所述磁盘对的数据盘为固态硬盘,镜像盘为机械硬盘。
16.一种RAID10阵列的读数据装置,其特征在于,包括:
第一获取模块,用于获取RAID10阵列中目标数据所在的磁盘对的磁盘对编号;
第二获取模块,用于获取二叉搜索树当前的搜索路径;
选择模块,用于根据所述磁盘对编号与所述搜索路径,从所述磁盘对中选择目标磁盘;
读取模块,用于从所述目标磁盘读取所述目标数据;
更新模块,用于更新所述二叉搜索树,以便在下一次读数据时,根据更新后的搜索路径选择目标磁盘;
选择模块包括:
第一获取单元,用于获取所述磁盘对编号的末位;
第二获取单元,用于获取所述搜索路径的末位;
选择单元,用于根据所述磁盘对编号的末位与所述搜索路径的末位,从所述磁盘对中选择目标磁盘;
选择单元包括:
第四位运算单元,用于将所述磁盘对编号的末位与所述搜索路径的末位进行第四位运算;
目标磁盘选择单元,用于根据所述第四位运算的结果,从所述磁盘对中选择目标磁盘。
17.一种RAID10阵列的读数据设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至15任一项所述的RAID10阵列的读数据方法的步骤。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至15任一项所述的RAID10阵列的读数据方法的步骤。
CN202211508020.0A 2022-11-29 2022-11-29 一种raid10阵列的读数据方法及相关装置 Active CN115543218B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211508020.0A CN115543218B (zh) 2022-11-29 2022-11-29 一种raid10阵列的读数据方法及相关装置
PCT/CN2023/093957 WO2024113686A1 (zh) 2022-11-29 2023-05-12 一种raid10阵列的读数据方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211508020.0A CN115543218B (zh) 2022-11-29 2022-11-29 一种raid10阵列的读数据方法及相关装置

Publications (2)

Publication Number Publication Date
CN115543218A CN115543218A (zh) 2022-12-30
CN115543218B true CN115543218B (zh) 2023-04-28

Family

ID=84721859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211508020.0A Active CN115543218B (zh) 2022-11-29 2022-11-29 一种raid10阵列的读数据方法及相关装置

Country Status (2)

Country Link
CN (1) CN115543218B (zh)
WO (1) WO2024113686A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543218B (zh) * 2022-11-29 2023-04-28 苏州浪潮智能科技有限公司 一种raid10阵列的读数据方法及相关装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679442A (zh) * 2013-12-02 2015-06-03 中兴通讯股份有限公司 一种提高磁盘阵列性能的方法及装置
CN106959825B (zh) * 2017-03-21 2020-01-14 浙江宇视科技有限公司 基于raid磁盘阵列的数据读取方法及装置
CN108376054B (zh) * 2018-01-30 2020-11-03 中国信息通信研究院 一种对标识数据进行索引的处理方法及装置
CN113448490A (zh) * 2020-03-25 2021-09-28 伊姆西Ip控股有限责任公司 用于存储的方法、设备和计算机程序产品
US11836074B2 (en) * 2020-10-07 2023-12-05 Micron Technology, Inc. Multiple flash translation layers at a memory device
CN113805816B (zh) * 2021-09-27 2024-02-23 济南浪潮数据技术有限公司 一种磁盘空间管理方法、装置、设备及存储介质
CN114064979A (zh) * 2021-11-02 2022-02-18 郑州云海信息技术有限公司 一种加速获取raid的存储数据的方法、计算机及存储介质
CN115543218B (zh) * 2022-11-29 2023-04-28 苏州浪潮智能科技有限公司 一种raid10阵列的读数据方法及相关装置

Also Published As

Publication number Publication date
WO2024113686A1 (zh) 2024-06-06
CN115543218A (zh) 2022-12-30

Similar Documents

Publication Publication Date Title
US9626402B2 (en) Data compaction using vectorized instructions
EP2117184B1 (en) Method and apparatus for longest prefix matching based on a tree
JP4372477B2 (ja) 2分木を巡回する方法およびシステム
US20070180303A1 (en) Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US8930407B2 (en) Incremental clustering of indexed XML data
CN103973810B (zh) 基于互联网协议ip盘的数据处理方法和装置
CN115543218B (zh) 一种raid10阵列的读数据方法及相关装置
CN105830041B (zh) 元数据的恢复方法及装置
KR102128037B1 (ko) 다계층 메모리 구조에 최적화된 데이터 인덱스 방법 및 그 방법에 의해 인덱스된 데이터의 검색 방법
CN111552692A (zh) 一种加减法布谷鸟过滤器
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
JP7386901B2 (ja) 高性能なベクトル処理のためのアドレス生成
CN112230861A (zh) 一种基于一致性哈希算法的数据存储方法及终端
CN106055679A (zh) 一种多层次缓存感知型索引方法
US20080162591A1 (en) Method of Logging Transactions and a Method of Reversing a Transaction
CN114064979A (zh) 一种加速获取raid的存储数据的方法、计算机及存储介质
CN107135264A (zh) 用于嵌入式设备的数据编码方法
CN113722319A (zh) 基于学习索引的数据存储方法
CN108958973A (zh) 分布式文件系统纠删码数据重构存储节点选择方法及装置
CN114253478B (zh) 一种计算raid校验盘位置的方法和装置
CN116958308A (zh) 一种路口面边线的修正方法及相关装置
CN112269947B (zh) 空间文本数据的缓存方法、装置、电子设备及存储介质
Achtert et al. Approximate reverse k-nearest neighbor queries in general metric spaces
CN116436846B (zh) 基于节点搜索的智能电网资产数据管理方法及其系统
CN118314245B (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