CN115562595B - 一种卷创建方法及装置、卷读写方法及装置、电子设备 - Google Patents

一种卷创建方法及装置、卷读写方法及装置、电子设备 Download PDF

Info

Publication number
CN115562595B
CN115562595B CN202211554109.0A CN202211554109A CN115562595B CN 115562595 B CN115562595 B CN 115562595B CN 202211554109 A CN202211554109 A CN 202211554109A CN 115562595 B CN115562595 B CN 115562595B
Authority
CN
China
Prior art keywords
volume
block
idle
linked list
raid
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
CN202211554109.0A
Other languages
English (en)
Other versions
CN115562595A (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 CN202211554109.0A priority Critical patent/CN115562595B/zh
Publication of CN115562595A publication Critical patent/CN115562595A/zh
Application granted granted Critical
Publication of CN115562595B publication Critical patent/CN115562595B/zh
Priority to PCT/CN2023/101162 priority patent/WO2024119760A1/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种卷创建方法,包括:获取目标卷的卷容量和所属的第一RAID阵列;根据卷容量计算所需的第一分块数目和第一分块节点数目;当根据RAID空闲链表确定满足创建目标卷时,从RAID空闲链表申请第一分块节点数目的分块节点,并生成第一申请信息;当根据全局空闲链表确定满足创建目标卷时,从全局空闲链表申请第一分块节点数目的分块节点,并生成第二申请信息;对第一申请信息和第二申请信息进行封装,以完成对目标卷的创建。本发明提高了创建卷分配的灵活性,提高了用户的体验感。本发明还公开了一种卷创建装置、卷读写方法及装置、电子设备及计算机可读存储介质,具有相应技术效果。

Description

一种卷创建方法及装置、卷读写方法及装置、电子设备
技术领域
本发明涉及存储技术领域,特别是涉及一种卷创建方法及装置、卷读写方法及装置、电子设备及计算机可读存储介质。
背景技术
现代数据中心业务量与日俱增,单台服务器上需要运行的数据也日益增多,当单个物理硬盘在容量和安全性上不足以支撑系统业务时,就需要将多个硬盘以某种特定方式组合起来,对外作为一个可见的硬盘来使用,才可满足实际需要。随着存储技术飞跃的改进,RAID(Redundant Array of Independent Disks,独立的磁盘组成的具有冗余性的阵列)就是存储中的重要技术,它的发展主要经历了RAID0、RAID1、RAID10、RAID5、 RAID6等级别,而RAID卡控制器,就是将服务器连接的硬盘按照RAID级别组织成RAID阵列,用户在RAID阵列上创建一个或者多个指定容量的卷来供主机作为块设备使用。
目前现有的RAID卡控制器,创建卷的容量既可以来自整个RAID阵列,也可以来自RAID阵列的一部分,但要求卷容量对应的LBA分布在其RAID阵列上连续。
目前这种容量分配方式存在一定缺点,当RAID阵列上创建多个卷以后,删除卷会导致RAID阵列可用LBA(Logical Block Address,硬盘中数据扇区的逻辑地址)被碎片化,使其总可用容量被切分,用户再次创建卷时,总可用容量满足,但由于可用容量的切分导致用户无法创建满足容量需求的卷,影响用户业务,致使用户体验下降。
综上所述,如何有效地解决可用容量的切分导致用户无法创建满足容量需求的卷,影响用户业务,致使用户体验下降等问题,是目前本领域技术人员急需解决的问题。
发明内容
本发明的目的是提供一种卷创建方法,该方法提高了创建卷分配的灵活性,解决了现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感;本发明的另一目的是提供一种卷创建装置、卷读写方法及装置、电子设备及计算机可读存储介质。
为解决上述技术问题,本发明提供如下技术方案:
一种卷创建方法,包括:
对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和所述目标卷所属的第一RAID阵列;
根据所述卷容量计算所述目标卷所需的第一分块数目和第一分块节点数目;其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块;
当确定所述第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建所述目标卷时,遍历所述RAID空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息;
当确定全局空闲链表中空闲分块节点满足创建所述目标卷时,遍历所述全局空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据所述第一分块数目和当前申请到的分块节点生成第二申请信息;
对所述第一申请信息和所述第二申请信息进行封装,以完成对所述目标卷的创建。
在本发明的一种具体实施方式中,还包括所述全局空闲链表的创建过程,所述全局空闲链表的创建过程包括:
当系统初始化时,根据系统容量规格和预设的分块大小计算分块节点数量上限;
根据所述分块节点数量上限创建所述全局空闲链表。
在本发明的一种具体实施方式中,根据系统容量规格和预设的分块大小计算分块节点数量上限,包括:
根据所述系统容量规格、预设的分块大小以及预设的每个分块节点管理的分块数量计算所述分块节点数量上限。
在本发明的一种具体实施方式中,在根据所述第一分块数目和当前申请到的分块节点生成第一申请信息之后,还包括:
根据所述第一申请信息更新所述RAID空闲链表的空闲表头位置索引和空闲分块节点数目。
在本发明的一种具体实施方式中,在根据所述第一申请信息更新所述RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,还包括:
根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对所述全局空闲链表的空闲分块节点数目进行更新操作。
在本发明的一种具体实施方式中,根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对所述全局空闲链表的空闲分块节点数目进行更新操作,包括:
当根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目确定所述RAID空闲链表中存在全部分配给卷的分块节点时,将全部分配给卷的分块节点挂回所述全局空闲链表。
在本发明的一种具体实施方式中,在根据所述第一申请信息更新所述RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,还包括:
对所述全局空闲链表中记录的所述第一RAID阵列对应的各分块的分配状态进行更新操作。
在本发明的一种具体实施方式中,在确定全局空闲链表中空闲分块节点满足创建所述目标卷之后,遍历所述全局空闲链表为所述目标卷申请所述第一分块节点数目的分块节点之前,还包括:
记录所述目标卷对应的卷链表的表头位置索引。
在本发明的一种具体实施方式中,在根据所述第一分块数目和当前申请到的分块节点生成第二申请信息之后,还包括:
根据所述第二申请信息更新所述全局空闲链表的表头位置索引和空闲分块节点数目。
在本发明的一种具体实施方式中,在根据所述第二申请信息更新所述全局空闲链表的表头位置索引和空闲分块节点数目之后,还包括:
对所述全局空闲链表中记录的所述目标卷所属的各分块从所述第一RAID阵列中的分配状态进行更新操作。
在本发明的一种具体实施方式中,根据所述第一分块数目和当前申请到的分块节点生成第一申请信息,包括:
根据所述全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、所述第一分块数目和当前申请到的分块节点生成所述第一申请信息。
在本发明的一种具体实施方式中,根据所述全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、所述第一分块数目和当前申请到的分块节点生成所述第一申请信息,包括:
根据所述全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、各分块在相应RAID阵列中的位置号、所述第一分块数目和当前申请到的分块节点生成所述第一申请信息。
在本发明的一种具体实施方式中,还包括:
对接收到的卷扩容请求进行解析,得到待扩容卷容量和待扩容卷所属的第二RAID阵列;
根据所述待扩容卷容量计算本次扩容所需的第二分块数目和第二分块节点数目;
当确定所述第二RAID阵列对应的RAID空闲链表中的空闲分块节点满足所述待扩容卷的扩容条件时,遍历所述RAID空闲链表为所述待扩容卷申请所述第二分块节点数目的分块节点,并根据所述第二分块数目和当前申请到的分块节点生成第三申请信息;
当确定所述全局空闲链表中空闲分块节点满足所述待扩容卷的扩容条件时,遍历所述全局空闲链表为所述待扩容卷申请所述第二分块节点数目的分块节点,并根据所述第二分块数目和当前申请到的分块节点生成第四申请信息;
对所述第三申请信息和所述第四申请信息进行封装,以完成对所述待扩容卷的扩容操作。
在本发明的一种具体实施方式中,还包括:
当确定所述第一RAID阵列对应的RAID空闲链表中的空闲分块节点不满足创建所述目标卷时,输出RAID阵列容量不足提示信息。
在本发明的一种具体实施方式中,还包括:
当确定所述全局空闲链表中空闲分块节点不满足创建所述目标卷时,输出全局空闲链表空间不足提示信息。
一种卷读写方法,包括:
对接收到的卷读写请求进行解析,得到待读写卷的卷数据扇区逻辑地址;
获取单个分块与连续数据扇区逻辑地址之间的数量对应关系;
根据所述数量对应关系和所述卷数据扇区逻辑地址计算所述待读写卷的卷标识号和在相应分块中的偏移;
根据所述卷标识号从所述待读写卷对应的卷链表中查找对应的RAID阵列中的位置号;
根据所述RAID阵列中的位置号、所述数量对应关系和所述偏移计算所述待读写卷的阵列数据扇区逻辑地址;
根据所述阵列数据扇区逻辑地址对所述待读写卷进行读写操作。
一种卷创建装置,包括:
卷创建请求解析模块,用于对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和所述目标卷所属的第一RAID阵列;
第一分块数及节点数计算模块,用于根据所述卷容量计算所述目标卷所需的第一分块数目和第一分块节点数目;其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块;
第一申请信息生成模块,用于当确定所述第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建所述目标卷时,遍历所述RAID空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息;
第二申请信息生成模块,用于当确定全局空闲链表中空闲分块节点满足创建所述目标卷时,遍历所述全局空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据所述第一分块数目和当前申请到的分块节点生成第二申请信息;
卷创建模块,用于对所述第一申请信息和所述第二申请信息进行封装,以完成对所述目标卷的创建。
一种卷读写装置,包括:
卷读写请求解析模块,用于对接收到的卷读写请求进行解析,得到待读写卷的卷数据扇区逻辑地址;
数量对应关系获取模块,用于获取单个分块与连续数据扇区逻辑地址之间的数量对应关系;
卷标识号和偏移计算模块,用于根据所述数量对应关系和所述卷数据扇区逻辑地址计算所述待读写卷的卷标识号和在相应分块中的偏移;
位置号查找模块,用于根据所述卷标识号从所述待读写卷对应的卷链表中查找对应的RAID阵列中的位置号;
逻辑地址计算模块,用于根据所述RAID阵列中的位置号、所述数量对应关系和所述偏移计算所述待读写卷的阵列数据扇区逻辑地址;
卷读写模块,用于根据所述阵列数据扇区逻辑地址对所述待读写卷进行读写操作。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如前所述卷创建方法或卷读写方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述卷创建方法或卷读写方法的步骤。
本发明所提供的卷创建方法,对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和目标卷所属的第一RAID阵列;根据卷容量计算目标卷所需的第一分块数目和第一分块节点数目;其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块;当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建目标卷时,遍历RAID空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息;当确定全局空闲链表中空闲分块节点满足创建目标卷时,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第二申请信息;对第一申请信息和第二申请信息进行封装,以完成对目标卷的创建。
由上述技术方案可知,通过对RAID阵列容量和卷容量进行分块粒度的切分,采用链表结构管理容量分块,较大粒度管理RAID阵列可用容量,提高了创建卷分配的灵活性,解决了现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感。
相应的,本发明还提供了与上述卷创建方法相对应的卷创建装置、卷读写方法及装置、电子设备及计算机可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中一种卷创建容量分配示意图;
图2为本发明实施例中卷创建方法的一种实施流程图;
图3为本发明实施例中卷创建方法的另一种实施流程图;
图4为本发明实施例中一种全局空闲链表的示意图;
图5为本发明实施例中一种卷创建容量分配示意图;
图6为本发明实施例中卷读写方法的一种实施流程图;
图7为本发明实施例中一种卷创建装置的结构框图;
图8为本发明实施例中一种卷读写装置的结构框图;
图9为本发明实施例中一种电子设备的结构框图;
图10为本实施例提供的一种电子设备的具体结构示意图。
具体实施方式
目前现有的RAID卡控制器,创建卷的容量既可以来自整个RAID阵列,也可以来自RAID阵列的一部分,但要求卷容量对应的LBA分布在其RAID阵列上连续。
参见图1,图1为现有技术中一种卷创建容量分配示意图。由5块物理盘组成一个RAID5阵列,映射为一个RAID5逻辑地址图(Lba Map),在RAID5 Lba Map上划分出2段连续的LBA空间组成2个卷(Volume)供主机使用。
目前这种容量分配方式存在一定缺点,当RAID阵列上创建多个卷后,删除卷会导致RAID阵列可用LBA被碎片化,使其总可用容量被切分,用户再次创建卷时,总可用容量满足,但由于可用容量的切分导致用户无法创建满足容量需求的卷,影响用户业务,致使用户体验下降。
为此,本申请中提供的卷创建方法中,提高了创建卷分配的灵活性,解决了现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图2,图2为本发明实施例中卷创建方法的一种实施流程图,该卷创建方法可以包括以下步骤:
S201:对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和目标卷所属的第一RAID阵列。
当需要创建卷时,向卷创建管理中心发送卷创建请求,卷创建请求中包含待创建的目标卷的卷容量和目标卷所属的第一RAID阵列。卷创建管理中心接收卷创建请求,并对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和目标卷所属的第一RAID阵列。
需要说明的是,通过对卷创建请求解析得到的目标卷所属的第一RAID阵列的阵列数量可能为一个,也可能为多个,其具体数量由卷创建请求发起方指定,如可以是系统中的某一特定的RAID阵列,也可以是系统中当前存在空闲分块的所有RAID阵列。
S202:根据卷容量计算目标卷所需的第一分块数目和第一分块节点数目。
其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块。
预先设置对数据扇区逻辑地址按照固定大小进行切分,得到多个分块(chunk),使得每个分块由第一预设数量个连续的数据扇区逻辑地址构成。并设置分块节点用于管理各分块,每个分块节点(ChunkGrp)管理第二预设数量个分块。在解析得到待创建的目标卷的卷容量之后,根据卷容量计算目标卷所需的第一分块数目和第一分块节点数目。
S203:当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建目标卷时,遍历RAID空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息。
预先建立第一RAID阵列对应的RAID空闲链表,RAID空闲链表系统可有多个,每个RAID阵列对应一个RAID空闲链表,每个RAID空闲链表的表头位置指向其RAID阵列被分配的第一个分块节点的位置,系统会记录两个关键信息:array->freeChunkGrps(表示RAID空闲链表当前未分配给卷使用的ChunkGrp数目)和array->freeChunkGrpIndex(表示RAID空闲链表当前表头位置索引)。
在计算得到目标卷所需的第一分块数目和第一分块节点数目之后,判断第一RAID阵列对应的RAID空闲链表中的空闲分块节点是否满足创建目标卷,当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建目标卷时,遍历RAID空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息。从而根据第一申请信息可以统计到第一RAID阵列中哪些分块将被目标卷占用。
在本发明的一种具体实施方式中,在步骤S203之后,该卷创建方法还可以包括以下步骤:
根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目。
在根据第一分块数目和当前申请到的分块节点生成第一申请信息之后,随着第一RAID阵列中分块被申请,第一RAID阵列的空闲表头位置索引和空闲分块节点数目会发生变化,根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目。从而保证对第一RAID阵列对应的RAID空闲链表的及时更新。
在本发明的一种具体实施方式中,在根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,该卷创建方法还可以包括以下步骤:
根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对全局空闲链表的空闲分块节点数目进行更新操作。
参见图4,图4为本发明实施例中一种全局空闲链表的示意图。本发明实施例提供了一种全局空闲链表用来管理分块,该全局空闲链表的结构是一个固定长度的单向链表,链表分块节点数量在系统初始化时分配,可根据系统容量规格及分块大小计算分块节点数量的上限,每个分块节点管理32个分块,其中,每个分块节点包括:
(1)chunkTable[32],32个分块的位置信息,每个分块的位置信息为一个整(int)型数值,其中bit17-31代表阵列标识号(arrayId),表示该分块来自哪个阵列,bit0-16代表阵列分块标识号(arrayChunkId),表示该分块在阵列中的位置序号,序号从0开始;
(2)used,32个分块的使用情况,为一个int型数值,每一位代表一个分块的使用情况,对于RAID阵列所属的分块,1表示该分块未分配给卷,0代表该分块已分配给卷,对卷所属的分块,1表示该分块已从RAID阵列中分配,0代表该分块未从RAID阵列中分配;
(3)nextRecord,为一个指针类型的变量,指向当前分块节点的下一个分块节点。
在根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对全局空闲链表的空闲分块节点数目进行更新操作。从而保证对全局空闲链表的及时更新。
在本发明的一种具体实施方式中,根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对全局空闲链表的空闲分块节点数目进行更新操作,可以包括以下步骤:
当根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目确定RAID空闲链表中存在全部分配给卷的分块节点时,将全部分配给卷的分块节点挂回全局空闲链表。
当根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目确定RAID空闲链表中存在全部分配给卷的分块节点时,该分块节点要从RAID空闲链表中释放,将全部分配给卷的分块节点挂回全局空闲链表。从而使得该分块节点已不属于该RAID空闲链表的节点了,可用于后续分配使用。
在本发明的一种具体实施方式中,在根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,该卷创建方法还可以包括以下步骤:
对全局空闲链表中记录的第一RAID阵列对应的各分块的分配状态进行更新操作。
在根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,对全局空闲链表中记录的第一RAID阵列对应的各分块的分配状态进行更新操作。从而及时统计第一RAID阵列中各分块的使用情况。
在本发明的一种具体实施方式中,根据第一分块数目和当前申请到的分块节点生成第一申请信息,可以包括以下步骤:
根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、第一分块数目和当前申请到的分块节点生成第一申请信息。
全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息,根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、第一分块数目和当前申请到的分块节点生成第一申请信息。从而根据第一申请信息可以统计到哪个RAID阵列将被目标卷占用。
在本发明的一种具体实施方式中,根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、第一分块数目和当前申请到的分块节点生成第一申请信息,可以包括以下步骤:
根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、各分块在相应RAID阵列中的位置号、第一分块数目和当前申请到的分块节点生成第一申请信息。
全局空闲链表中还记录有各分块在相应RAID阵列中的位置号,根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、各分块在相应RAID阵列中的位置号、第一分块数目和当前申请到的分块节点生成第一申请信息。从而根据第一申请信息可以统计到哪个RAID阵列中哪些分块将被目标卷占用。
在本发明的一种具体实施方式中,该卷创建方法还可以包括以下步骤:
当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点不满足创建目标卷时,输出RAID阵列容量不足提示信息。
当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点不满足创建目标卷时,输出RAID阵列容量不足提示信息,从而提示用户本次卷创建失败。
S204:当确定全局空闲链表中空闲分块节点满足创建目标卷时,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第二申请信息。
当确定全局空闲链表中空闲分块节点满足创建目标卷时,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第二申请信息。从而根据第二申请信息可以统计到目标卷中哪些分块将去分配第一RAID阵列中的分块。
在本发明的一种具体实施方式中,在确定全局空闲链表中空闲分块节点满足创建目标卷之后,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点之前,该卷创建方法还可以包括以下步骤:
记录目标卷对应的卷链表的表头位置索引。
系统可有多个卷链表,每个卷对应一个卷链表,每个卷链表的表头位置指向该卷被分配的第一个分块节点的位置,同时系统会记录volume->ChunkGrpIndex(表示Volume链表当前表头位置索引)这一关键信息。
在确定全局空闲链表中空闲分块节点满足创建目标卷之后,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点之前,记录目标卷对应的卷链表的表头位置索引。从而统计到目标卷对全局空闲链表中空闲分块节点的占用情况。
在本发明的一种具体实施方式中,在步骤S204之后,该卷创建方法还可以包括以下步骤:
根据第二申请信息更新全局空闲链表的表头位置索引和空闲分块节点数目。
在根据第一分块数目和当前申请到的分块节点生成第二申请信息之后,根据第二申请信息更新全局空闲链表的表头位置索引和空闲分块节点数目。从而对全局空闲链表中空闲分块节点情况进行及时更新。
在本发明的一种具体实施方式中,在根据第二申请信息更新全局空闲链表的表头位置索引和空闲分块节点数目之后,该卷创建方法还可以包括以下步骤:
对全局空闲链表中记录的目标卷所属的各分块从第一RAID阵列中的分配状态进行更新操作。
在根据第二申请信息更新全局空闲链表的表头位置索引和空闲分块节点数目之后,对全局空闲链表中记录的目标卷所属的各分块从第一RAID阵列中的分配状态进行更新操作。从而及时统计目标卷对应的哪些分块已经从第一RAID阵列中分配,哪些分块还未从第一RAID阵列中分配。
在本发明的一种具体实施方式中,该卷创建方法还可以包括以下步骤:
当确定全局空闲链表中空闲分块节点不满足创建目标卷时,输出全局空闲链表空间不足提示信息。
当确定全局空闲链表中空闲分块节点不满足创建目标卷时,输出全局空闲链表空间不足提示信息,从而提示用户本次卷创建失败。
S205:对第一申请信息和第二申请信息进行封装,以完成对目标卷的创建。
在生成第一申请信息和第二申请信息之后,对第一申请信息和第二申请信息进行封装,从而记录好第一RAID阵列中各分块与目标卷对应的各分块之间的对应关系,从而完成对目标卷的创建。
参见图5,图5为本发明实施例中一种卷创建容量分配示意图。由4块物理盘组成一个RAID5阵列,映射为一个RAID5 Lba Map,将RAID5 Lba Map按照固定大小1GB,切分成有限数目的chunk,创建卷或者扩容卷时,根据卷容量换算需要的chunk数量,从RAID阵列中选取所需数量的chunk来组成卷即可。
通过较大粒度管理RAID阵列可用容量,提高了创建卷分配的灵活性,能够解决现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感。
由上述技术方案可知,通过对RAID阵列容量和卷容量进行分块粒度的切分,采用链表结构管理容量分块,较大粒度管理RAID阵列可用容量,提高了创建卷分配的灵活性,解决了现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。
在本发明的一种具体实施方式中,该卷创建方法可以包括全局空闲链表的创建过程,全局空闲链表的创建过程可以包括以下步骤:
步骤一:当系统初始化时,根据系统容量规格和预设的分块大小计算分块节点数量上限;
步骤二:根据分块节点数量上限创建全局空闲链表。
为方便描述,可以将上述两个步骤结合起来进行说明。
当系统初始化时,根据系统容量规格和预设的分块大小计算分块节点数量上限,根据分块节点数量上限创建全局空闲链表。
在本发明的一种具体实施方式中,根据系统容量规格和预设的分块大小计算分块节点数量上限,可以包括以下步骤:
根据系统容量规格、预设的分块大小以及预设的每个分块节点管理的分块数量计算分块节点数量上限。
预先设置每个分块节点管理的分块数量,如可以设置为32,根据系统容量规格、预设的分块大小以及预设的每个分块节点管理的分块数量计算分块节点数量上限,从而实现根据系统需求对全局空闲链表的准确创建。
参见图3,图3为本发明实施例中卷创建方法的另一种实施流程图,该卷创建方法可以包括以下步骤:
S301:对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和目标卷所属的第一RAID阵列。
S302:根据卷容量计算目标卷所需的第一分块数目和第一分块节点数目。
其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块。
S303:当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建目标卷时,遍历RAID空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息。
S304:当确定全局空闲链表中空闲分块节点满足创建目标卷时,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第二申请信息。
S305:对第一申请信息和第二申请信息进行封装,以完成对目标卷的创建。
S306:对接收到的卷扩容请求进行解析,得到待扩容卷容量和待扩容卷所属的第二RAID阵列。
当需要对已创建的卷进行扩容时,向卷创建管理中心发送卷扩容请求,卷扩容请求中包含待扩容卷容量和待扩容卷所属的第二RAID阵列。卷创建管理中心接收卷扩容请求,并对接收到的卷扩容请求进行解析,得到待扩容卷容量和待扩容卷所属的第二RAID阵列。
S307:根据待扩容卷容量计算本次扩容所需的第二分块数目和第二分块节点数目。
在解析得到待扩容卷容量和待扩容卷所属的第二RAID阵列之后,根据待扩容卷容量计算本次扩容所需的第二分块数目和第二分块节点数目。
S308:当确定第二RAID阵列对应的RAID空闲链表中的空闲分块节点满足待扩容卷的扩容条件时,遍历RAID空闲链表为待扩容卷申请第二分块节点数目的分块节点,并根据第二分块数目和当前申请到的分块节点生成第三申请信息。
当确定第二RAID阵列对应的RAID空闲链表中的空闲分块节点满足待扩容卷的扩容条件时,遍历RAID空闲链表为待扩容卷申请第二分块节点数目的分块节点,并根据第二分块数目和当前申请到的分块节点生成第三申请信息。从而根据第三申请信息可以统计到第二RAID阵列中哪些分块将被待扩容卷占用。
S309:当确定全局空闲链表中空闲分块节点满足待扩容卷的扩容条件时,遍历全局空闲链表为待扩容卷申请第二分块节点数目的分块节点,并根据第二分块数目和当前申请到的分块节点生成第四申请信息。
当确定全局空闲链表中空闲分块节点满足待扩容卷的扩容条件时,遍历全局空闲链表为待扩容卷申请第二分块节点数目的分块节点,并根据第二分块数目和当前申请到的分块节点生成第四申请信息。从而根据第四申请信息可以统计到目标卷中哪些分块将去分配第二RAID阵列中的分块。
S310:对第三申请信息和第四申请信息进行封装,以完成对待扩容卷的扩容操作。
在生成第三申请信息和第四申请信息之后,对第三申请信息和第四申请信息进行封装,从而记录好本次卷扩容所需的第二RAID阵列中各分块与待扩容卷对应的各分块之间的对应关系,从而完成对待扩容卷的扩容操作。
创建RAID阵列时,只要把阵列可用容量用全局空闲链表管理,创建卷或者扩容卷时,只需要从全局空闲链表中申请可用分块节点,无需考虑LBA是否连续,只需从总可用容量中申请所需即可。从而规避了卷容量LBA连续的限制,这种卷容量灵活分配的实现方法,解决了RAID卡上创建卷和扩容卷受限的问题。
相应于上面的卷创建方法实施例,本发明还提供了一种卷读写方法,下文描述的卷读写方法与上文描述的卷创建方法可相互对应参照。
参见图6,图6为本发明实施例中卷读写方法的一种实施流程图,该卷读写方法可以包括以下步骤:
S601:对接收到的卷读写请求进行解析,得到待读写卷的卷数据扇区逻辑地址。
当需要对已创建的卷进行读写操作时,向卷读写控制中心发送卷读写请求,卷读写请求中包含待读写卷的卷数据扇区逻辑地址lba。卷读写控制中心接收卷读写请求,并对接收到的卷读写请求进行解析,得到待读写卷的卷数据扇区逻辑地址。
S602:获取单个分块与连续数据扇区逻辑地址之间的数量对应关系。
预先设置单个分块与连续数据扇区逻辑地址之间的数量对应关系ChunkSize,在解析得到待读写卷的卷数据扇区逻辑地址之后,获取单个分块与连续数据扇区逻辑地址之间的数量对应关系。
S603:根据数量对应关系和卷数据扇区逻辑地址计算待读写卷的卷标识号和在相应分块中的偏移。
在解析得到待读写卷的卷数据扇区逻辑地址,并获取到单个分块与连续数据扇区逻辑地址之间的数量对应关系之后,根据数量对应关系和卷数据扇区逻辑地址计算待读写卷的卷标识号(volume_chunkId)和在相应分块中的偏移(offset)。如可以根据以下公式计算待读写卷的卷标识号和在相应分块中的偏移:
Figure 638328DEST_PATH_IMAGE001
Figure 621328DEST_PATH_IMAGE002
S604:根据卷标识号从待读写卷对应的卷链表中查找对应的RAID阵列中的位置号。
预先存储卷标识号与RAID阵列中的位置号之间的对应关系,如,为了保证分块节点链表资源可控并且资源共享,系统除了设置一个全局空闲链表,还定义了两类子链表,即RAID空闲链表和卷链表。其中将保存到RAID空闲链表对应的分块节点的分块作为容量生产者,将卷链表中记录的所需的分块节点作为容量消费者,从而利用该3类链表共享系统链表节点资源,对已创建卷对相应RAID阵列中分块的占用情况进行准确记录。在计算得到待读写卷的卷标识号之后,根据卷标识号从待读写卷对应的卷链表中查找对应的RAID阵列中的位置号。
S605:根据RAID阵列中的位置号、数量对应关系和偏移计算待读写卷的阵列数据扇区逻辑地址。
在计算得到待读写卷在相应分块中的偏移,并查找到RAID阵列中的位置号之后,根据RAID阵列中的位置号、数量对应关系和偏移计算待读写卷的阵列数据扇区逻辑地址。如可以根据以下公式计算计算待读写卷的阵列数据扇区逻辑地址:
Figure DEST_PATH_IMAGE003
S606:根据阵列数据扇区逻辑地址对待读写卷进行读写操作。
在计算得到待读写卷的阵列数据扇区逻辑地址之后,根据阵列数据扇区逻辑地址对待读写卷进行读写操作。
由上述技术方案可知,通过对RAID阵列容量和卷容量进行分块粒度的切分,采用链表结构管理容量分块,较大粒度管理RAID阵列可用容量,提高了创建卷分配的灵活性,解决了现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感。
相应于上面的卷创建方法实施例,本发明还提供了一种卷创建装置,下文描述的卷创建装置与上文描述的卷创建方法可相互对应参照。
参见图7,图7为本发明实施例中一种卷创建装置的结构框图,该卷创建装置可以包括:
卷创建请求解析模块71,用于对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和目标卷所属的第一RAID阵列;
分块数及节点数计算模块72,用于根据卷容量计算目标卷所需的第一分块数目和第一分块节点数目;其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块;
第一申请信息生成模块73,用于当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建目标卷时,遍历RAID空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息;
第二申请信息生成模块74,用于当确定全局空闲链表中空闲分块节点满足创建目标卷时,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第二申请信息;
卷创建模块75,用于对第一申请信息和第二申请信息进行封装,以完成对目标卷的创建。
由上述技术方案可知,通过对RAID阵列容量和卷容量进行分块粒度的切分,采用链表结构管理容量分块,较大粒度管理RAID阵列可用容量,提高了创建卷分配的灵活性,解决了现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感。
在本发明的一种具体实施方式中,该卷创建装置还可以包括全局空闲链表创建模块,全局空闲链表创建模块包括:
节点数量上限计算子模块,用于当系统初始化时,根据系统容量规格和预设的分块大小计算分块节点数量上限;
全局空闲链表创建子模块,用于根据分块节点数量上限创建全局空闲链表。
在本发明的一种具体实施方式中,节点数量上限计算子模块具体为根据系统容量规格、预设的分块大小以及预设的每个分块节点管理的分块数量计算分块节点数量上限的模块。
在本发明的一种具体实施方式中,该卷创建装置还可以包括:
RAID空闲链表更新模块,用于根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目。
在本发明的一种具体实施方式中,该卷创建装置还可以包括:
全局空闲链表更新模块,用于在根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对全局空闲链表的空闲分块节点数目进行更新操作。
在本发明的一种具体实施方式中,全局空闲链表更新模块具体为当根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目确定RAID空闲链表中存在全部分配给卷的分块节点时,将全部分配给卷的分块节点挂回全局空闲链表的模块。
在本发明的一种具体实施方式中,该卷创建装置还可以包括:
阵列分块分配状态更新模块,用于在根据第一申请信息更新RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,对全局空闲链表中记录的第一RAID阵列对应的各分块的分配状态进行更新操作。
在本发明的一种具体实施方式中,该卷创建装置还可以包括:
卷链表表头位置索引记录模块,用于在确定全局空闲链表中空闲分块节点满足创建目标卷之后,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点之前,记录目标卷对应的卷链表的表头位置索引。
在本发明的一种具体实施方式中,全局空闲链表更新模块,还用于在根据第一分块数目和当前申请到的分块节点生成第二申请信息之后,根据第二申请信息更新全局空闲链表的表头位置索引和空闲分块节点数目。
在本发明的一种具体实施方式中,该卷创建装置还可以包括:
卷所属分块分配状态更新模块,用于在根据第二申请信息更新全局空闲链表的表头位置索引和空闲分块节点数目之后,对全局空闲链表中记录的目标卷所属的各分块从第一RAID阵列中的分配状态进行更新操作。
在本发明的一种具体实施方式中,第一申请信息生成模块73具体为根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、第一分块数目和当前申请到的分块节点生成第一申请信息的模块。
在本发明的一种具体实施方式中,第一申请信息生成模块73具体为根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、各分块在相应RAID阵列中的位置号、第一分块数目和当前申请到的分块节点生成第一申请信息的模块。
在本发明的一种具体实施方式中,该卷创建装置还可以包括:
卷扩容请求解析模块,用于对接收到的卷扩容请求进行解析,得到待扩容卷容量和待扩容卷所属的第二RAID阵列;
第二分块数及节点数计算模块,用于根据待扩容卷容量计算本次扩容所需的第二分块数目和第二分块节点数目;
第三申请信息生成模块,用于当确定第二RAID阵列对应的RAID空闲链表中的空闲分块节点满足待扩容卷的扩容条件时,遍历RAID空闲链表为待扩容卷申请第二分块节点数目的分块节点,并根据第二分块数目和当前申请到的分块节点生成第三申请信息;
第四申请信息生成模块,用于当确定全局空闲链表中空闲分块节点满足待扩容卷的扩容条件时,遍历全局空闲链表为待扩容卷申请第二分块节点数目的分块节点,并根据第二分块数目和当前申请到的分块节点生成第四申请信息;
卷扩容模块,用于对第三申请信息和第四申请信息进行封装,以完成对待扩容卷的扩容操作。
在本发明的一种具体实施方式中,该卷创建装置还可以包括:
提示信息输出模块,用于当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点不满足创建目标卷时,输出RAID阵列容量不足提示信息。
在本发明的一种具体实施方式中,提示信息输出模块,还用于当确定全局空闲链表中空闲分块节点不满足创建目标卷时,输出全局空闲链表空间不足提示信息。
相应于上面的卷创建方法实施例,本发明还提供了一种卷读写装置,下文描述的卷读写装置与上文描述的卷创建方法可相互对应参照。
参见图8,图8为本发明实施例中一种卷读写装置的结构框图,该卷读写装置可以包括:
卷读写请求解析模块81,用于对接收到的卷读写请求进行解析,得到待读写卷的卷数据扇区逻辑地址;
数量对应关系获取模块82,用于获取单个分块与连续数据扇区逻辑地址之间的数量对应关系;
卷标识号和偏移计算模块83,用于根据数量对应关系和卷数据扇区逻辑地址计算待读写卷的卷标识号和在相应分块中的偏移;
位置号查找模块84,用于根据卷标识号从待读写卷对应的卷链表中查找对应的RAID阵列中的位置号;
逻辑地址计算模块85,用于根据RAID阵列中的位置号、数量对应关系和偏移计算待读写卷的阵列数据扇区逻辑地址;
卷读写模块86,用于根据阵列数据扇区逻辑地址对待读写卷进行读写操作。
由上述技术方案可知,通过对RAID阵列容量和卷容量进行分块粒度的切分,采用链表结构管理容量分块,较大粒度管理RAID阵列可用容量,提高了创建卷分配的灵活性,解决了现存RAID卡卷容量分配方式带来的受限问题,从而提高了用户的体验感。
相应于上面的卷创建方法或卷读写方法实施例,参见图9,图9为本发明所提供的电子设备的示意图,该设备可以包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的卷创建方法或卷读写方法的步骤。
具体的,请参考图10,图10为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括处理器(centralprocessing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的卷创建方法或卷读写方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和目标卷所属的第一RAID阵列;根据卷容量计算目标卷所需的第一分块数目和第一分块节点数目;其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块;当确定第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建目标卷时,遍历RAID空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第一申请信息;当确定全局空闲链表中空闲分块节点满足创建目标卷时,遍历全局空闲链表为目标卷申请第一分块节点数目的分块节点,并根据第一分块数目和当前申请到的分块节点生成第二申请信息;对第一申请信息和第二申请信息进行封装,以完成对目标卷的创建。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本发明提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (18)

1.一种卷创建方法,其特征在于,包括:
对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和所述目标卷所属的第一RAID阵列;
根据所述卷容量计算所述目标卷所需的第一分块数目和第一分块节点数目;其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块;
当确定所述第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建所述目标卷时,遍历所述RAID空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、各分块在相应RAID阵列中的位置号、所述第一分块数目和当前申请到的分块节点生成第一申请信息;
当确定全局空闲链表中空闲分块节点满足创建所述目标卷时,遍历所述全局空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据所述第一分块数目和当前申请到的分块节点生成第二申请信息;
对所述第一申请信息和所述第二申请信息进行封装,以完成对所述目标卷的创建。
2.根据权利要求1所述的卷创建方法,其特征在于,还包括所述全局空闲链表的创建过程,所述全局空闲链表的创建过程包括:
当系统初始化时,根据系统容量规格和预设的分块大小计算分块节点数量上限;
根据所述分块节点数量上限创建所述全局空闲链表。
3.根据权利要求2所述的卷创建方法,其特征在于,根据系统容量规格和预设的分块大小计算分块节点数量上限,包括:
根据所述系统容量规格、预设的分块大小以及预设的每个分块节点管理的分块数量计算所述分块节点数量上限。
4.根据权利要求1所述的卷创建方法,其特征在于,在根据所述第一分块数目和当前申请到的分块节点生成第一申请信息之后,还包括:
根据所述第一申请信息更新所述RAID空闲链表的空闲表头位置索引和空闲分块节点数目。
5.根据权利要求4所述的卷创建方法,其特征在于,在根据所述第一申请信息更新所述RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,还包括:
根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对所述全局空闲链表的空闲分块节点数目进行更新操作。
6.根据权利要求5所述的卷创建方法,其特征在于,根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目对所述全局空闲链表的空闲分块节点数目进行更新操作,包括:
当根据更新后RAID空闲链表的空闲表头位置索引和空闲分块节点数目确定所述RAID空闲链表中存在全部分配给卷的分块节点时,将全部分配给卷的分块节点挂回所述全局空闲链表。
7.根据权利要求4所述的卷创建方法,其特征在于,在根据所述第一申请信息更新所述RAID空闲链表的空闲表头位置索引和空闲分块节点数目之后,还包括:
对所述全局空闲链表中记录的所述第一RAID阵列对应的各分块的分配状态进行更新操作。
8.根据权利要求1所述的卷创建方法,其特征在于,在确定全局空闲链表中空闲分块节点满足创建所述目标卷之后,遍历所述全局空闲链表为所述目标卷申请所述第一分块节点数目的分块节点之前,还包括:
记录所述目标卷对应的卷链表的表头位置索引。
9.根据权利要求1所述的卷创建方法,其特征在于,在根据所述第一分块数目和当前申请到的分块节点生成第二申请信息之后,还包括:
根据所述第二申请信息更新所述全局空闲链表的表头位置索引和空闲分块节点数目。
10.根据权利要求9所述的卷创建方法,其特征在于,在根据所述第二申请信息更新所述全局空闲链表的表头位置索引和空闲分块节点数目之后,还包括:
对所述全局空闲链表中记录的所述目标卷所属的各分块从所述第一RAID阵列中的分配状态进行更新操作。
11.根据权利要求1至10任一项所述的卷创建方法,其特征在于,还包括:
对接收到的卷扩容请求进行解析,得到待扩容卷容量和待扩容卷所属的第二RAID阵列;
根据所述待扩容卷容量计算本次扩容所需的第二分块数目和第二分块节点数目;
当确定所述第二RAID阵列对应的RAID空闲链表中的空闲分块节点满足所述待扩容卷的扩容条件时,遍历所述RAID空闲链表为所述待扩容卷申请所述第二分块节点数目的分块节点,并根据所述第二分块数目和当前申请到的分块节点生成第三申请信息;
当确定所述全局空闲链表中空闲分块节点满足所述待扩容卷的扩容条件时,遍历所述全局空闲链表为所述待扩容卷申请所述第二分块节点数目的分块节点,并根据所述第二分块数目和当前申请到的分块节点生成第四申请信息;
对所述第三申请信息和所述第四申请信息进行封装,以完成对所述待扩容卷的扩容操作。
12.根据权利要求1所述的卷创建方法,其特征在于,还包括:
当确定所述第一RAID阵列对应的RAID空闲链表中的空闲分块节点不满足创建所述目标卷时,输出RAID阵列容量不足提示信息。
13.根据权利要求1所述的卷创建方法,其特征在于,还包括:
当确定所述全局空闲链表中空闲分块节点不满足创建所述目标卷时,输出全局空闲链表空间不足提示信息。
14.一种卷读写方法,其特征在于,应用于权利要求1-13中任意一项权利要求所述方法所创建的卷,包括:
对接收到的卷读写请求进行解析,得到待读写卷的卷数据扇区逻辑地址;
获取单个分块与连续数据扇区逻辑地址之间的数量对应关系;
根据所述数量对应关系和所述卷数据扇区逻辑地址计算所述待读写卷的卷标识号和在相应分块中的偏移;
根据所述卷标识号从所述待读写卷对应的卷链表中查找对应的RAID阵列中的位置号;
根据所述RAID阵列中的位置号、所述数量对应关系和所述偏移计算所述待读写卷的阵列数据扇区逻辑地址;
根据所述阵列数据扇区逻辑地址对所述待读写卷进行读写操作。
15.一种卷创建装置,其特征在于,包括:
卷创建请求解析模块,用于对接收到的卷创建请求进行解析,得到待创建的目标卷的卷容量和所述目标卷所属的第一RAID阵列;
第一分块数及节点数计算模块,用于根据所述卷容量计算所述目标卷所需的第一分块数目和第一分块节点数目;其中,每个分块由第一预设数量个连续的数据扇区逻辑地址构成,每个分块节点管理第二预设数量个分块;
第一申请信息生成模块,用于当确定所述第一RAID阵列对应的RAID空闲链表中的空闲分块节点满足创建所述目标卷时,遍历所述RAID空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据全局空闲链表中记录的各分块节点管理的各分块的阵列标识信息、各分块在相应RAID阵列中的位置号、所述第一分块数目和当前申请到的分块节点生成第一申请信息;
第二申请信息生成模块,用于当确定全局空闲链表中空闲分块节点满足创建所述目标卷时,遍历所述全局空闲链表为所述目标卷申请所述第一分块节点数目的分块节点,并根据所述第一分块数目和当前申请到的分块节点生成第二申请信息;
卷创建模块,用于对所述第一申请信息和所述第二申请信息进行封装,以完成对所述目标卷的创建。
16.一种卷读写装置,其特征在于,应用于权利要求1-13中任意一项权利要求所述方法所创建的卷,包括:
卷读写请求解析模块,用于对接收到的卷读写请求进行解析,得到待读写卷的卷数据扇区逻辑地址;
数量对应关系获取模块,用于获取单个分块与连续数据扇区逻辑地址之间的数量对应关系;
卷标识号和偏移计算模块,用于根据所述数量对应关系和所述卷数据扇区逻辑地址计算所述待读写卷的卷标识号和在相应分块中的偏移;
位置号查找模块,用于根据所述卷标识号从所述待读写卷对应的卷链表中查找对应的RAID阵列中的位置号;
逻辑地址计算模块,用于根据所述RAID阵列中的位置号、所述数量对应关系和所述偏移计算所述待读写卷的阵列数据扇区逻辑地址;
卷读写模块,用于根据所述阵列数据扇区逻辑地址对所述待读写卷进行读写操作。
17.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至13任一项所述卷创建方法或如权利要求14所述的卷读写方法的步骤。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至13任一项所述卷创建方法或如权利要求14所述的卷读写方法的步骤。
CN202211554109.0A 2022-12-06 2022-12-06 一种卷创建方法及装置、卷读写方法及装置、电子设备 Active CN115562595B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211554109.0A CN115562595B (zh) 2022-12-06 2022-12-06 一种卷创建方法及装置、卷读写方法及装置、电子设备
PCT/CN2023/101162 WO2024119760A1 (zh) 2022-12-06 2023-06-19 一种卷创建方法及装置、卷读写方法及装置、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211554109.0A CN115562595B (zh) 2022-12-06 2022-12-06 一种卷创建方法及装置、卷读写方法及装置、电子设备

Publications (2)

Publication Number Publication Date
CN115562595A CN115562595A (zh) 2023-01-03
CN115562595B true CN115562595B (zh) 2023-02-28

Family

ID=84770012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211554109.0A Active CN115562595B (zh) 2022-12-06 2022-12-06 一种卷创建方法及装置、卷读写方法及装置、电子设备

Country Status (2)

Country Link
CN (1) CN115562595B (zh)
WO (1) WO2024119760A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115562595B (zh) * 2022-12-06 2023-02-28 苏州浪潮智能科技有限公司 一种卷创建方法及装置、卷读写方法及装置、电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006050455A2 (en) * 2004-11-05 2006-05-11 Trusted Data Corporation Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
US20140325146A1 (en) * 2013-04-29 2014-10-30 Lsi Corporation Creating and managing logical volumes from unused space in raid disk groups
CN111090394A (zh) * 2019-12-05 2020-05-01 烽火通信科技股份有限公司 一种基于卷级别raid的磁阵管理方法及装置
CN112995257B (zh) * 2019-12-16 2022-08-02 中国电信股份有限公司 基于云存储架构的缓存扩容方法、装置以及存储介质
CN111506269B (zh) * 2020-04-22 2021-09-07 腾讯科技(深圳)有限公司 一种磁盘存储空间分配方法、装置、设备及存储介质
CN112100293A (zh) * 2020-09-23 2020-12-18 腾讯科技(深圳)有限公司 数据处理方法、数据访问方法、装置及计算机设备
CN113253926A (zh) * 2021-05-06 2021-08-13 天津大学深圳研究院 提升新型存储器的查询和存储性能的存储内索引构建方法
CN115562595B (zh) * 2022-12-06 2023-02-28 苏州浪潮智能科技有限公司 一种卷创建方法及装置、卷读写方法及装置、电子设备

Also Published As

Publication number Publication date
WO2024119760A1 (zh) 2024-06-13
CN115562595A (zh) 2023-01-03

Similar Documents

Publication Publication Date Title
CN110531940B (zh) 视频文件处理方法及装置
US20220137849A1 (en) Fragment Management Method and Fragment Management Apparatus
US7716445B2 (en) Method and system for storing a sparse file using fill counts
CN102929748B (zh) 数据备份方法及装置
US7584229B2 (en) Method and system for priority-based allocation in a storage pool
CN113176858B (zh) 数据处理方法、存储系统及存储设备
US11200159B2 (en) System and method for facilitating efficient utilization of NAND flash memory
KR20100011698A (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템 및 그제어 방법
CN110147203B (zh) 一种文件管理方法、装置、电子设备及存储介质
CN102185929A (zh) 一种基于san资源的视频监控数据存储方法及其装置
CN113568582B (zh) 数据管理方法、装置和存储设备
US11385823B2 (en) Method, electronic device and computer program product for rebuilding disk array
CN111857552A (zh) 存储管理方法、电子设备和计算机程序产品
US20070106865A1 (en) Method and system for using a block allocation policy
JP2019128960A (ja) データストレージシステム及びキーバリューペアのオブジェクトにアクセスする方法
CN116339644B (zh) 一种独立磁盘冗余阵列创建方法、装置、设备及介质
CN115562595B (zh) 一种卷创建方法及装置、卷读写方法及装置、电子设备
US20070106868A1 (en) Method and system for latency-directed block allocation
US11287996B2 (en) Method, device and computer program product for storing data
CN101566929B (zh) 虚拟磁盘驱动系统和方法
US8239427B2 (en) Disk layout method for object-based storage devices
CN118051179A (zh) 用于使用多个分区的分区命名空间存储的技术
US7480684B2 (en) Method and system for object allocation using fill counts
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
CN116738511A (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