CN117149094B - 确定数据区状态的方法、装置、磁盘阵列及存储系统 - Google Patents

确定数据区状态的方法、装置、磁盘阵列及存储系统 Download PDF

Info

Publication number
CN117149094B
CN117149094B CN202311420871.4A CN202311420871A CN117149094B CN 117149094 B CN117149094 B CN 117149094B CN 202311420871 A CN202311420871 A CN 202311420871A CN 117149094 B CN117149094 B CN 117149094B
Authority
CN
China
Prior art keywords
target
data
information
layer
determining
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
CN202311420871.4A
Other languages
English (en)
Other versions
CN117149094A (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 Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain 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 Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311420871.4A priority Critical patent/CN117149094B/zh
Publication of CN117149094A publication Critical patent/CN117149094A/zh
Application granted granted Critical
Publication of CN117149094B publication Critical patent/CN117149094B/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability 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/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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
    • 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

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层中包括的目标磁盘执行重构操作的情况下,确定所述目标磁盘的目标类型;在所述目标类型为固态硬盘SSD的情况下,确定所述RAID层中记录的第一信息;在所述第一信息指示所述目标分条的数据存储状态为有效的情况下,确定逻辑单元号LUN层中所记载的第二信息;基于所述第二信息确定所述目标分条的实际数据存储状态。

Description

确定数据区状态的方法、装置、磁盘阵列及存储系统
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种确定数据区状态的方法、装置、磁盘阵列及存储系统。
背景技术
对存储系统而言,磁盘阵列RAID (Redundant Array of Independent Disks) 的重构时间是其可靠性的重要标志,RAID能尽可能精确的识别故障硬盘的有效数据区是缩短重构时间的有效方法。相关技术中,对于RAID中的固态硬盘SSD (Solid State Drive),在闪存架构下,进行数据更新时,为避免对输入输出系统IO性能的影响,逻辑单元号LUN(Logical Unit Number) 层并不会通知RAID去更新对应分条的Bitmap为无效,而是要等到后续LUN层的垃圾回收模块作把无效区回收并更新元数据为empty(未写入)后,才通知RAID同步更新分条Bitmap为无效,这就导致RAID层不能及时感知数据区由有效变成无效的变化,进而影响RAID对数据有效区的精确识别。
针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种确定数据区状态的方法、装置、磁盘阵列及存储系统,以至少解决相关技术中由于RAID层不能及时感知数据区的状态变化,进而影响RAID对数据有效区的精确识别的问题。
根据本申请的一个实施例,提供了一种确定数据区状态的方法,包括:在需要对磁盘阵列RAID层中包括的目标磁盘执行重构操作的情况下,确定所述目标磁盘的目标类型;在所述目标类型为固态硬盘SSD的情况下,确定所述RAID层中记录的第一信息,其中,所述第一信息用于指示所述目标磁盘中包括的目标分条的数据存储状态;在所述第一信息指示所述目标分条的数据存储状态为有效的情况下,确定逻辑单元号LUN层中所记载的第二信息,其中,所述第二信息用于指示所述目标分条中所包含的多个物理块地址PBA的数据存储状态,所述LUN层对所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率;基于所述第二信息确定所述目标分条的实际数据存储状态。
在一个示例性实施例中,基于所述第二信息确定所述目标分条的实际数据存储状态,包括:在基于所述第二信息确定多个所述PBA中存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为有效;在基于所述第二信息确定多个所述PBA中不存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为无效;其中,所述目标PBA的数据存储状态为有效。
在一个示例性实施例中,在确定所述RAID层中记录的第一信息之后,所述方法还包括:在所述第一信息指示所述目标分条的数据存储状态为无效的情况下,确定所述目标分条的实际数据存储状态为无效。
在一个示例性实施例中,所述方法还包括:在接收到所述LUN层下发的目标数据的情况下,获取所述目标数据的类型;在所述目标数据的类型为主机写入的数据的情况下,将所述RAID层中记录的第三信息的值更新为第一值,其中,所述第三信息用于指示存储所述目标数据的第一分条的数据存储状态,所述第一值用于指示所述第一分条的数据存储状态为有效。
在一个示例性实施例中,获取所述目标数据的类型,包括:获取所述目标数据中携带的目标标识信息,其中,所述目标标识信息为所述LUN层在确定出所述目标数据的类型之后所添加的信息;基于所述目标标识信息确定所述目标数据的类型。
在一个示例性实施例中,在获取所述目标数据的类型之后,所述方法还包括:在所述目标数据的类型为内部数据的情况下,保持所述RAID层中记录的所述第三信息的值不变。
在一个示例性实施例中,所述方法还包括:接收到所述LUN层下发的第一指令,其中,所述第一指令中携带有用于指示所述LUN层所释放的目标数据存储空间的信息;基于所述第一指令将所述RAID层中记录的第四信息的值更新为第二值,其中,所述第四信息用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态,所述第二值用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态为无效。
在一个示例性实施例中,所述目标数据存储空间为所述LUN在执行卷的删除处理和/或卷的缩容处理后所释放的空间。
在一个示例性实施例中,在所述RAID层中包括的磁盘的类型为所述SSD的情况下,所述方法还包括:所述LUN层在确定需要释放所述目标数据存储空间之后,将所述LUN层中所记载的第五信息的值设置为第三值,其中,所述第五信息用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态,所述第三值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为无效。
在一个示例性实施例中,所述LUN层在将所述LUN层中所记载的第五信息的值设置为所述第三值之后,所述方法还包括:所述LUN层在确定已回收所述目标数据存储空间中所存储的数据的情况下,将所述第五信息的值设置为第四值,其中,所述第四值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为空。
在一个示例性实施例中,所述方法还包括:所述LUN层在确定需要将第二分条中存储的数据迁移至第三分条中的情况下,读取所述第二分条中存储的数据,并为读取出的数据配置预定标识值,其中,所述预定标识值用于指示所述读取出的数据的类型为主机写入的数据;所述LUN层将配置了所述预定标识值的所述读取出的数据下发给所述RAID层。
在一个示例性实施例中,在所述RAID层中包括的磁盘的类型为所述SSD的情况下,所述方法还包括:所述LUN层在将配置了所述预定标识值的所述读取出的数据下发给所述RAID层之后,所述方法还包括:所述LUN层将所述LUN层中记载的第六信息的值设置为第五值,其中,所述第六信息用于指示所述第二分条中所包含的多个PBA的数据存储状态,所述第五值用于指示所述第二分条中所包含的多个PBA的数据存储状态为无效。
在一个示例性实施例中,确定所述RAID中记录的第一信息包括:确定所述RAID中记录的位图Bitmap,其中,所述Bitmap用于指示所述目标分条中的数据写入状态,其中,取值为第一值的所述Bitmap用于指示所述目标分条中写有有效数据,取值为第二值的所述Bitmap用于指示所述目标分条中写有无效数据,所述第一值与所述第二值不同。
在一个示例性实施例中,在确定所述RAID中包括的第二磁盘的目标类型之后,所述方法还包括:在所述目标类型为机械硬盘HDD (Hard Disk Drive) 的情况下,将所述第一信息所指示的所述目标分条的数据存储状态确定为所述目标分条的实际数据存储状态。
在一个示例性实施例中,所述第二信息记载在所述LUN层的元数据中,其中,所述元数据存储在基于RAID5的存储级内存SCM (Storage Class Memory) 中。
在一个示例性实施例中,所述LUN层对所述第二信息的更新频率为实时更新。
在一个示例性实施例中,确定所述RAID层中记录的第一信息,包括:确定所述RAID层中记录的第一位图Bitmap信息。
根据本申请的另一个实施例,提供了一种确定数据区状态的装置,包括:第一确定模块,用于在需要对磁盘阵列RAID层中包括的目标磁盘执行重构操作的情况下,确定所述目标磁盘的目标类型;第二确定模块,用于在所述目标类型为固态硬盘SSD的情况下,确定所述RAID层中记录的第一信息,其中,所述第一信息用于指示所述目标磁盘中包括的目标分条的数据存储状态;第三确定模块,用于在所述第一信息指示所述目标分条的数据存储状态为有效的情况下,确定逻辑单元号LUN层中所记载的第二信息,其中,所述第二信息用于指示所述目标分条中所包含的多个物理块地址PBA的数据存储状态,所述LUN层对所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率;第四确定模块,用于基于所述第二信息确定所述目标分条的实际数据存储状态。
根据本申请的又一个实施例,还提供了一种磁盘阵列,包括所述确定数据区状态的装置。
根据本申请的又一个实施例,还提供了一种存储系统,包括所述磁盘阵列以及所述LUN层。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,由于在第一信息指示目标分条的数据存储状态为有效的情况下,根据第二信息再次确定目标分条的数据存储状态,因此,可以解决相关技术中,由于第二信息的更新频率高于第一信息的更新频率,仅根据第一信息确定目标分条的数据存储状态所造成的对目标分条的有效区识别精确度较低的问题,达到对目标分条的有效区更精确识别的效果。
附图说明
图1是根据本申请实施例的确定数据区状态的方法的移动终端的硬件结构框图;
图2是根据本申请实施例的确定数据区状态的方法的流程图一;
图3是根据本申请实施例的RAID的Bitmap区置一方法的流程图;
图4是根据本申请实施例的RAID的Bitmap区置零方法的流程图;
图5是根据本申请实施例的确定数据区状态的方法的流程图二;
图6是根据本申请实施例的确定数据区状态的装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
首先对本发明所涉及到的相关技术进行说明:
根据互联网数据中心IDC(Internet Data Center)研究显示,90%以上的企业计划进行数字化IT基础架构升级改造,在这一过程中面临的前5需求和挑战分别是安全可靠、降本增效、数据创新、实时敏捷和智能管理。在这些需求和挑战的驱动下,全闪存数据中心是未来数据中心的重要发展方向之一。随着技术的发展,磁盘的容量由几十个GB发展到几个TB,磁盘的读写速率增长的却非常有限。对于传统RAID系统而言,重构过程中数据没有可靠性保障,如果在重构完成前出现坏盘就将造成数据丢失,且不可恢复。所以对于一个存储系统而言,其可靠性的最重要标志就是其RAID重构时间越小越好,从而降低重构完成前再次坏盘的概率。
通常RAID有一个以分条为粒度的Bitmap区,用于记录分条是否存在有效数据。Bitmap初始为全零,代表无有效数据,当上层数据写到某个分条,则把Bitmap区此分条对应的bit位设置为1,标明该分条存在有效数据;当卷发生删除/缩容/迁移等操作,会释放这些卷的全部或部分空间,这些被释放的RAID空间所包含分条对应Bitmap区会被设置为0,标明这些分条不存在有效数据。
在全闪架构下,介质是SSD盘时,SSD盘片上的闪存Flash颗粒具有擦写次数的限制。存储厂商为了避免SSD盘的损耗,一般都采用大块顺序写ROW(Redirect On Write)的方式,每次写通过分配新的Flash颗粒来写,实现整盘每个Flash颗粒擦写次数均衡。全闪栈中,LUN层具有两个核心模块 :元数据模块 和 垃圾回收模块, 元数据模块记录逻辑地址和物理地址的映射关系、状态等,LUN层元数据对PBA的状态有3种:valid(有效)、invalid(无效,垃圾数据)和empty(未写)。垃圾回收模块用于垃圾数据块。
全闪架构下以ROW的方式写入数据,对于LUN相同LBA写入数据,会重新分配PBA,老PBA会在LUN层的元数据模块标记无效,由于是在IO流程中,为避免对IO性能的影响,LUN并不会通知RAID去更新对应分条的Bitmap为无效,后续LUN层的垃圾回收模块作为后台任务会把无效区回收并更新元数据为empty(未写入),这时可以通知RAID同步更新分条Bitmap为无效。
相关技术未考虑全闪架构下数据的写方式发生变化,已写的数据区可能已经被LUN层元数据标记为无效(垃圾数据),而RAID层仍然认为其为有效数据区,只有LUN层的垃圾回收模块把垃圾数据回收掉,RAID层才会感知到这些数据区已经是无效的。而LUN层的垃圾回收并非实时执行,故RAID层不能及时感知到哪些有效数据区变成了无效区。
下面结合本发明实施例,对如何解决相关技术中存在的上述问题进行说明。本申请实施例中所提供的方法实施例可以在服务器设备或者类似的运算装置中执行。以运行在服务器设备上为例,图1是本申请实施例的一种确定数据区状态的方法的服务器设备的硬件结构框图。如图1所示,服务器设备可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述服务器设备还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器设备的结构造成限定。例如,服务器设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的确定数据区状态的方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器设备的通信供应方提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种确定数据区状态的方法,图2是根据本申请实施例的确定数据区状态的方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,在需要对磁盘阵列RAID层中包括的目标磁盘执行重构操作的情况下,确定所述目标磁盘的目标类型;
步骤S204,在所述目标类型为固态硬盘SSD的情况下,确定所述RAID层中记录的第一信息,其中,所述第一信息用于指示所述目标磁盘中包括的目标分条的数据存储状态,所述目标分条包括但不限于为所述目标磁盘中包括的任意分条;
步骤S206,在所述第一信息指示所述目标分条的数据存储状态为有效的情况下,确定逻辑单元号LUN层中所记载的第二信息,其中,所述第二信息用于指示所述目标分条中所包含的多个物理块地址PBA的数据存储状态,所述LUN层对所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率;
步骤S208,基于所述第二信息确定所述目标分条的实际数据存储状态。
在上述实施例中,在步骤S202中,目标磁盘执行重构操作的情况包括但不限于以下几种:
1. 磁盘故障替换:当一个磁盘发生故障时,RAID层会将该磁盘标记为故障,并将其替换为一个新的磁盘。在替换过程中,RAID层会执行重构操作,将原始磁盘上的数据重新分布到新的磁盘上,以保证数据的完整性和可用性。
2. 磁盘容量扩展:当需要扩展磁盘阵列的存储容量时,可以添加一个或多个新的磁盘到阵列中。在添加新磁盘后,RAID层会执行重构操作,将原有磁盘上的数据重新分布到新的磁盘上,以实现数据的均衡和扩展。
3. RAID级别变更:有时候需要将RAID阵列的级别从一个级别转换为另一个级别,例如从RAID 1转换为RAID 5。在这种情况下,RAID层会执行重构操作,重新计算和重新分布数据,以满足新的RAID级别的要求。
4. 磁盘容量平衡:当磁盘阵列中的磁盘容量不平衡时,可以通过重新分布数据来实现容量的平衡。RAID层会执行重构操作,将数据从容量较大的磁盘迁移到容量较小的磁盘上,以实现整体的容量平衡。
所述目标磁盘的目标类型包括但不限于:SCM盘、HDD盘、SSD盘等等,此外,需要说明的是,RAID中包括的磁盘的类型可能是单一的一种,例如,均为HDD盘,或者,均为SSD盘,当然,在后续使用中,RAID中包括的磁盘的类型也可能同时有多种,例如,部分未HDD盘,部分未SSD盘,具体配置何种磁盘类型可以基于实际需求来确定。
在上述实施例中,在步骤S204中,所述RAID层中记录的第一信息包括但不限于:RAID层中Bitmap区记录的目标磁盘中包括的目标分条的比特bit值,bit值设置为1,代表目标分条的数据存储状态为有效,bit值设置为0,代表目标分条的数据存储状态为无效(需要说明的是,该设置方式仅是一种示例,在实际应用中也可以配置bit值为0表示有效,bit值为1表示无效)。Bitmap区初始为全零,代表无有效数据。当上层数据(即,LUN层下发的数据)写到某个分条后,则把Bitmap区此分条对应的bit位设置为1,表明该分条存在有效数据;当卷发生删除/缩容/迁移等操作,会释放这些卷的全部或部分空间,这些被释放的RAID空间所包含分条对应Bitmap区会被设置为0,标明这些分条不存在有效数据。图3是Bitmap区设置为1的流程,如图3所示,该流程包括如下步骤:
步骤S302,主机向存储的LUN中写入数据;
步骤S304,LUN层将数据转换为RAID对应的地址,并下发到RAID层;
步骤S306,RAID层将数据转换为盘的地址,下发到盘层,并更新所涉及分条的Bitmap(置1)。
图4是Bitmap区设置为0的流程,如图4所示,该流程包括如下步骤:
步骤S402,LUN发生删除/缩容/迁移,释放全部或部分占用的空间;
步骤S404,LUN层将释放的空间转换为RAID的地址及长度,批量通知RAID层更新分条Bitmap;
步骤S406,RAID层根据LUN层传来的请求,更新分条对应的Bitmap(置0)。
在上述实施例中,在步骤S206中,LUN层包含的模块包括但不限于:元数据模块、垃圾回收模块等等,所述元数据模块记录逻辑地址和物理地址的映射关系、状态等,LUN层元数据对PBA的状态有3种:valid(有效)、invalid(无效,垃圾数据)和empty(未写),所述垃圾回收模块用于垃圾数据块。所述第二信息包括但不限于:LUN层中元数据模块记录的目标分条的PBA的数据存储状态,其中,所述目标分条的PBA中任一PBA的数据存储状态为有效时,则所述目标分条中存在有效数据。所述第二信息的更新方式包括但不限于:实时更新。所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率的更新方式包括但不限于:当主机写入数据到达时,LUN层元数据模块先将模块中记录的无效数据区PBA的状态更新为invalid(即所述第二信息),待后续LUN层的垃圾回收模块作为后台任务会把无效区回收并更新元数据为empty(未写入)后,再通知RAID同步更新分条Bitmap为无效(即所述第一信息)。
通过上述步骤,由于在第一信息指示目标分条的数据存储状态为有效的情况下,根据第二信息再次确定目标分条的数据存储状态,解决了相关技术中,由于第二信息的更新频率高于第一信息的更新频率,仅根据第一信息确定目标分条的数据存储状态所造成的对目标分条的有效区识别精确度较低的问题,提高了对目标分条的有效区进行识别的精度。
其中,上述步骤的执行主体可以为RAID层,或者具备对RAID层进行控制的模块或系统等,但不限于此。
在一个可选的实施例中,基于所述第二信息确定所述目标分条的实际数据存储状态,包括:在基于所述第二信息确定多个所述PBA中存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为有效;在基于所述第二信息确定多个所述PBA中不存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为无效;其中,所述目标PBA的数据存储状态为有效。
在上述实施例中,所述第二信息包括但不限于:LUN层中元数据模块记录的目标分条的PBA的数据存储状态,其中,所述目标分条的PBA中任一PBA的数据存储状态为有效时,则所述目标分条中存在有效数据。所述PBA的数据存储状态包括但不限于:有效valid、无效invalid、空empty。RAID在需要确认LUN层记录的PBA的状态时,需要向LUN层发送查询请求,LUN层收到请求后,查询元数据模块记录的目标分条的PBA的数据存储状态,并将查询结果作为应答消息返回RAID。所述LUN层对所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率。
在上述步骤中,RAID确定所述目标分条的实际数据存储状态时,在根据RAID层中记录的第一信息确定所述目标分条的数据存储状态为有效后,会再去查询LUN层中第二信息记录的实际数据存储状态,综合两类信息来确定目标分条的实际数据存储状态,通过该方式可以实现对分条的数据存储状态的精确识别。
在一个示例性实施例中,在确定所述RAID层中记录的第一信息之后,所述方法还包括:在所述第一信息指示所述目标分条的数据存储状态为无效的情况下,确定所述目标分条的实际数据存储状态为无效。在上述实施例中,所述RAID层中记录的第一信息包括但不限于:RAID层中Bitmap区记录的目标磁盘中包括的目标分条的比特bit值,bit值设置为1,代表目标分条的数据存储状态为有效,bit值设置为0,代表目标分条的数据存储状态为无效。
在一个示例性实施例中,所述方法还包括:在接收到所述LUN层下发的目标数据的情况下,获取所述目标数据的类型;在所述目标数据的类型为主机写入的数据的情况下,将所述RAID层中记录的第三信息的值更新为第一值,其中,所述第三信息用于指示存储所述目标数据的第一分条的数据存储状态,所述第一值用于指示所述第一分条的数据存储状态为有效。
在上述实施例中,所述LUN层可以接收到通过一定的方式传输的数据,例如,通过IO写入方式写入的所述目标数据,LUN层在接收到数据后,会将该数据下发到RAID层。所述目标数据的类型包括但不限于:主机写入数据、存储内部数据,其中,该存储内部数据可以包括:LUN的格式化数据。所述RAID层中记录的第三信息包括但不限于:RAID层中Bitmap区记录的目标数据的第一分条的bit值,将所述RAID层中记录的第三信息的值更新为第一值,包括但不限于:RAID层中Bitmap区记录的目标数据的第一分条的bit值设置为1,其中,bit值设置为1代表第一分条的数据存储状态为有效,bit值设置为0代表第一分条的数据存储状态为无效。
在一个示例性实施例中,获取所述目标数据的类型,包括:获取所述目标数据中携带的目标标识信息,其中,所述目标标识信息为所述LUN层在确定出所述目标数据的类型之后所添加的信息;基于所述目标标识信息确定所述目标数据的类型。
在上述实施例中,所述LUN层在接收到所述目标数据后,会根据所述目标数据的属性为所述目标数据添加所述目标标识信息,并将添加了所述目标标识信息的所述目标数据下发到RAID层。所述目标数据的属性包括但不限于:所述目标数据的来源,例如:主机写入数据、存储内部数据。上述实施例中,LUN添加目标标识信息的实现方式包括但不限于:LUN层给IO写入的所述目标数据添加一个标识—usrDataFlag,取值范围[0,1],usrDataFlag取值为1代表IO写入的所述目标数据是主机写入数据,usrDataFlag取值为0代表IO写入的所述目标数据为LUN的格式化数据。
在上述步骤中,LUN层对所述目标数据增加目标标识信息后,RAID层可以根据所述目标标识信息识别所述目标数据的类型,并根据所述目标数据的类型,设置RAID层Bitmap区的比特bit值,可以实现准确记录目标数据的类型以及存储该目标数据的分区的数据存储状态的目的。
在一个示例性实施例中,在获取所述目标数据的类型之后,所述方法还包括:在所述目标数据的类型为内部数据的情况下,保持所述RAID层中记录的所述第三信息的值不变。
在上述实施例中,所述实施例的实现方式包括但不限于:在所述目标数据的类型为内部数据(即,上述的存储内部数据)的情况下,LUN层给所述目标数据添加所述目标标识usrDataFlag,并将usrDataFlag的取值设置为0。RAID层根据所述目标标识usrDataFlag的取值确定所述目标数据的类型为所述内部数据,并保持RAID层中Bitmap区记录的目标数据的第一分条的bit值为0不变。在所述目标数据的类型为主机写入数据的情况下,LUN层给所述目标数据添加所述目标标识usrDataFlag,并将usrDataFlag的取值设置为1。RAID层根据所述目标标识usrDataFlag的取值确定所述目标数据的类型为所述内部数据,并将RAID层中Bitmap区记录的目标数据的第一分条的bit值设置为1。
在一个示例性实施例中,所述方法还包括:接收到所述LUN层下发的第一指令,其中,所述第一指令中携带有用于指示所述LUN层所释放的目标数据存储空间的信息;基于所述第一指令将所述RAID层中记录的第四信息的值更新为第二值,其中,所述第四信息用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态,所述第二值用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态为无效。
在上述实施例中,所述第四信息包括但不限于:RAID层中Bitmap区记录的各个分条的bit值,将所述RAID层中记录的第四信息的值更新为第二值,包括但不限于:将RAID层中Bitmap区各个分条的bit值设置为0,其中,bit值设置为1代表各个分条的数据存储状态为有效,bit值设置为0代表各个分条的数据存储状态为无效。所述实施例的实现方式包括但不限于:当所述LUN层发生了卷的删除或缩容时,所述LUN层向RAID层下发第一指令。所述RAID层接收到所述第一指令后,将所述LUN层所释放的所述目标数据对应的分条bit值设置为0。
在一个示例性实施例中,所述目标数据存储空间为所述LUN在执行卷的删除处理和/或卷的缩容处理后所释放的空间。
在一个示例性实施例中,在所述RAID层中包括的磁盘的类型为所述SSD的情况下,所述方法还包括:所述LUN层在确定需要释放所述目标数据存储空间之后,将所述LUN层中所记载的第五信息的值设置为第三值,其中,所述第五信息用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态,所述第三值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为无效。
在上述实施例中,所述第五信息包括但不限于:LUN层中元数据模块记录的PBA的数据存储状态,将所述LUN层中所记载的第五信息的值设置为第三值,包括但不限于:将LUN层中元数据模块记录的PBA的数据存储状态全部设置为无效invalid,其中,所述PBA的数据存储状态包括但不限于:有效valid、无效invalid、空empty。所述实施例的实现方式包括但不限于:当所述LUN层发生了卷的删除或缩容时,LUN层更新所释放区域的元数据,将所释放区域的元数据中记录的PBA的数据存储状态全部设置为无效invalid。
在一个示例性实施例中,所述LUN层在将所述LUN层中所记载的第五信息的值设置为所述第三值之后,所述方法还包括:所述LUN层在确定已回收所述目标数据存储空间中所存储的数据的情况下,将所述第五信息的值设置为第四值,其中,所述第四值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为空。
在上述实施例中,所述第五信息包括但不限于:LUN层中元数据模块记录的PBA的数据存储状态,将所述LUN层中所记载的第五信息的值设置为第三值,包括但不限于:将LUN层中元数据模块记录的PBA的数据存储状态全部设置为无效invalid,其中,所述PBA的数据存储状态包括但不限于:有效valid、无效invalid、空empty。所述实施例的实现方式包括但不限于:当所述LUN层发生了卷的删除或缩容时,LUN层更新所释放区域的元数据,将所释放区域的元数据中记录的PBA的数据存储状态全部设置为无效invalid。在LUN层的垃圾回收模块完成回收后,将将所释放区域的元数据中记录的PBA的数据存储状态全部设置为empty。
在上述步骤中,通过将所述第五信息的值设置为第四值,可以标记这些数据为空闲状态。这样可以重新利用空闲的存储空间,提高存储资源的利用率。
在一个示例性实施例中,所述方法还包括:所述LUN层在确定需要将第二分条中存储的数据迁移至第三分条中的情况下,读取所述第二分条中存储的数据,并为读取出的数据配置预定标识值,其中,所述预定标识值用于指示所述读取出的数据的类型为主机写入的数据;所述LUN层将配置了所述预定标识值的所述读取出的数据下发给所述RAID层。
在上述实施例中,所述实施例的实现方式包括但不限于:LUN层读取所述第二分条中存储的数据,LUN层给所述读取出的数据添加所述预定标识usrDataFlag,在所述读取出的数据的类型为主机写入的数据时,将usrDataFlag的取值设置为预定标识值,即为1。LUN层将配置了所述预定标识值的所述读取出的数据下发给所述RAID层。RAID层根据预定标识值确定所述读取出的数据的类型为所述主机写入的数据,并将RAID层中Bitmap区记录的第三分条的bit值设置为1。
在一个示例性实施例中,在所述RAID层中包括的磁盘的类型为所述SSD的情况下,所述方法还包括:所述LUN层在将配置了所述预定标识值的所述读取出的数据下发给所述RAID层之后,所述方法还包括:所述LUN层将所述LUN层中记载的第六信息的值设置为第五值,其中,所述第六信息用于指示所述第二分条中所包含的多个PBA的数据存储状态,所述第五值用于指示所述第二分条中所包含的多个PBA的数据存储状态为无效。
在上述实施例中,所述第六信息包括但不限于:LUN层中元数据模块记录的第二分条中所包含的多个PBA的数据存储状态,将所述LUN层中记载的第六信息的值设置为第五值,包括但不限于:将LUN层中元数据模块记录的第二分条中所包含的多个PBA的数据存储状态设置为无效invalid,在LUN层的垃圾回收模块完成回收后,将第二分条中所包含的多个PBA的数据存储状态设置为empty。LUN层通知RAID层,将RAID层中Bitmap区记录的第二分条的数据存储状态的bit值设置为0。
在一个示例性实施例中,确定所述RAID中记录的第一信息包括:确定所述RAID中记录的位图Bitmap,其中,所述Bitmap用于指示所述目标分条中的数据写入状态,其中,取值为第一值的所述Bitmap用于指示所述目标分条中写有有效数据,取值为第二值的所述Bitmap用于指示所述目标分条中写有无效数据,所述第一值与所述第二值不同。
在上述实施例中,取值为第一值的所述Bitmap用于指示所述目标分条中写有有效数据,包括但不限于:取值为1的所述Bitmap用于指示所述目标分条中写有有效数据,取值为0的所述Bitmap用于指示所述目标分条中写有无效数据。
在一个示例性实施例中,在确定所述RAID中包括的第二磁盘的目标类型之后,所述方法还包括:在所述目标类型为机械硬盘HDD的情况下,将所述第一信息所指示的所述目标分条的数据存储状态确定为所述目标分条的实际数据存储状态。
在上述实施例中,所述第一信息包括但不限于:RAID层中Bitmap区记录的目标分条的bit值,其中,bit值为1代表目标分条的实际数据存储状态为有效bit值为0代表目标分条的实际数据存储状态为无效。
在一个示例性实施例中,所述第二信息记载在所述LUN层的元数据中,其中,所述元数据存储在基于RAID5的存储级内存SCM中。
在上述实施例中,所述RAID5包括但不限于由多块SCM盘组建,然后再创建卷,这些卷专用于存储LUN层元数据。通过上述步骤,SCM介质访问时延普遍小于1微秒µs,比当前常用的闪存NAND FLASH快2-3个数量级,读写时也没有NAND Flash顺序写入和写前擦除的约束,操作过程更简单;同时,SCM介质的在寿命和数据保持能力方面的表现也远超NANDFlash。SCM介质可持久化保存数据,即使设备发生重启,也无需执行耗时的元数据重建流程,能够使得业务更快恢复。使用SCM介质存储元数据,能够大幅提升元数据操作的性能。
在上述步骤中,由于全闪中对于元数据的操作极为频繁,元数据操作的性能很大程度决定了整个全闪栈的性能,通过使用SCM盘承载LUN层元数据,能够适应SSD介质高性能读写的需求。并且SCM持久化能够使得在设备发生重启后,无需读盘重构元数据,直接使用SCM介质中的元数据,快速使存储可用。
在一个示例性实施例中,所述LUN层对所述第二信息的更新频率为实时更新。
在上述实施例中,在全闪栈架构下,所述第二信息用于实时记录所有PBA的数据存储状态,所述PBA的数据存储状态包括但不限于:有效valid、无效invalid、空empty。
在上述步骤中,通过对第二信息进行实时更新,可以保证LUN元数据区中精准记录各分条PBA的数据有效状态。
在一个示例性实施例中,确定所述RAID层中记录的第一信息,包括:确定所述RAID层中记录的第一位图Bitmap信息。
下面结合具体实施例,对本发明如何确定数据区状态进行整体说明:
具体实施例一:
图5是本发明具体实施例的确定数据区状态的方法的流程图,包括:
步骤S502,判断故障磁盘是否为SSD盘,在故障磁盘是SSD盘的情况下,执行步骤S504,在故障磁盘不是SSD盘的情况下,跳转到步骤S506;
步骤S504,查询RAID自身Bitmap;
步骤S506,查询RAID自身Bitmap,1为有效,0为无效;
步骤S508,判断bit值是否为1,bit值为1时,执行步骤S510,bit值不为1时,结束;
步骤S510,查询LUN的元数据该分条中全部的PBA,任何一个为valid则说明是有效数据区。
在上述实施例中,RAID层的Bitmap记录是否有写IO数据落入分条,如果有则标记为1,否则标记为0;对于全闪栈,LUN层的元数据模块实时记录所有PBA的状态,垃圾回收模块会定期回收无效的PBA,并更新元数据,以及通知RAID更新对应分条的Bitmap数值。RAID模块在发起重构流程时,先检查有效数据区,RAID根据介质类型是否是SSD走不同的流程。如果是HDD盘,则只需要查询自身的Bitmap,为1则代表分条中是有效数据,否则是无效数据。如果是SSD盘,首先查询自身的Bitmap,为0代表分条中是无效数据,否则,去LUN的元数据模块中查询该分条所包含的全部PBA的状态,任意一个PBA状态为valid,则代表该分条中存在有效数据。
具体实施例二:
对于HDD盘组建的RAID,RAID层只依据其Bitmap来识别分条中是否存在有效数据。
1) RAID创建完,将Bitmap全部初始化为0;
2) 创建LUN,映射主机,主机写入数据,给IO添加一个标识—usrDataFlag,取值范围[0,1],1代表是用户主机数据,0代表是存储内部数据。内部数据,比如LUN的格式化;
当上层写IO下发到RAID层,RAID层解析IO中的usrDataFlag,若为1,则更新该IO落入分条的Bitmap为1;
3)如果LUN发生了卷的删除、缩容,LUN需要通知RAID批量更新所释放空间中全部分条的Bitmap为0;
4)如果LUN发生迁移,迁移涉及从源分条读取数据和把数据写入目标分条两个步骤,在数据从源分条读取出来后,将其usrDataFlag设置为1,并下发到RAID层,RAID层目标分条的Bitmap为1,之后LUN通知RAID将源分条的Bitmap设置为0。
在上述步骤中,通过对IO增加一个usrDataFlag标识,只有主机下发的IO才标记为1,内部IO(如LUN格式化),则标记为0,RAID层解析IO,根据usrDataFlag对分条Bitmap进行设置,能够更准确识别有效数据区。
具体实施例三:
对于SSD盘组建的RAID,RAID层需要查询Bitmap和LUN层的元数据来识别分条中是否存在有效数据。
1) RAID创建完,将Bitmap全部初始化为0;
2) 创建LUN,映射主机,主机写数据到LUN层,LUN层分配新的PBA,更新LUN层元数据,将PBA设置为valid;
写IO下发到RAID层,RAID层解析IO中的usrDataFlag,若为1,则更新该IO落入分条的Bitmap为1;
3)如果LUN发生了卷的删除、缩容,LUN层会更新所释放区域的元数据,将PBA全部设置为invalid,等待垃圾回收模块进行回收,待回收完成,会将这些无效PBA设置为empty;
4)如果LUN发生迁移,迁移涉及从源分条读取数据和把数据写入目标分条两个步骤,在数据从源分条读取出来后,将其usrDataFlag设置为1,并下发到RAID层,RAID层目标分条的Bitmap为1,源分条对应的PBA在LUN层元数据模块会设置为invalid;
RAID检查分条是否有效,会先检查Bitmap是否为0,若为0,代表该分条内无有效数据,否则,查询LUN层元数据,检查分条所包含的全部PBA,任意PBA为valid,代表存在有效数据,否则该分条无有效数据。
在上述步骤中, RAID识别有效数据区,除了依赖自身Bitmap,更进一步,去查询LUN层元数据,能够避免垃圾数据对有效数据区的识别。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种确定数据区状态的装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本申请实施例的确定数据区状态的装置的结构框图,如图6所示,该装置包括:第一确定模块62,用于在需要对磁盘阵列RAID层中包括的目标磁盘执行重构操作的情况下,确定所述目标磁盘的目标类型;第二确定模块64,用于在所述目标类型为固态硬盘SSD的情况下,确定所述RAID层中记录的第一信息,其中,所述第一信息用于指示所述目标磁盘中包括的目标分条的数据存储状态;第三确定模块66,用于在所述第一信息指示所述目标分条的数据存储状态为有效的情况下,确定逻辑单元号LUN层中所记载的第二信息,其中,所述第二信息用于指示所述目标分条中所包含的多个物理块地址PBA的数据存储状态,所述LUN层对所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率;第四确定模块68,用于基于所述第二信息确定所述目标分条的实际数据存储状态。
在一个可选的实施例中,所述第四确定模块68,包括:第一确定单元,用于在基于所述第二信息确定多个所述PBA中存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为有效;第二确定单元,用于在基于所述第二信息确定多个所述PBA中不存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为无效;其中,所述目标PBA的数据存储状态为有效。
在一个可选的实施例中,所述装置还包括:第五确定模块,用于在确定所述RAID层中记录的第一信息之后,且在所述第一信息指示所述目标分条的数据存储状态为无效的情况下,确定所述目标分条的实际数据存储状态为无效。
在一个可选的实施例中,所述装置还包括:获取模块,用于在接收到所述LUN层下发的目标数据的情况下,获取所述目标数据的类型;第一更新模块,用于在所述目标数据的类型为主机写入的数据的情况下,将所述RAID层中记录的第三信息的值更新为第一值,其中,所述第三信息用于指示存储所述目标数据的第一分条的数据存储状态,所述第一值用于指示所述第一分条的数据存储状态为有效。
在一个可选的实施例中,所述获取模块,包括:获取单元,用于获取所述目标数据中携带的目标标识信息,其中,所述目标标识信息为所述LUN层在确定出所述目标数据的类型之后所添加的信息;第三确定单元,用于基于所述目标标识信息确定所述目标数据的类型。
在一个可选的实施例中,所述装置还包括:保持模块,用于在获取所述目标数据的类型之后,且在所述目标数据的类型为内部数据的情况下,保持所述RAID层中记录的所述第三信息的值不变。
在一个可选的实施例中,所述装置还包括:接收模块,用于接收到所述LUN层下发的第一指令,其中,所述第一指令中携带有用于指示所述LUN层所释放的目标数据存储空间的信息;第二更新模块,用于基于所述第一指令将所述RAID层中记录的第四信息的值更新为第二值,其中,所述第四信息用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态,所述第二值用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态为无效。
在一个可选的实施例中,所述目标数据存储空间为所述LUN在执行卷的删除处理和/或卷的缩容处理后所释放的空间。
在一个可选的实施例中,在所述装置的RAID层中包括的磁盘的类型为所述SSD的情况下,LUN层包括:第一设置模块,用于在确定需要释放所述目标数据存储空间之后,将所述LUN层中所记载的第五信息的值设置为第三值,其中,所述第五信息用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态,所述第三值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为无效。
在一个可选的实施例中,所述LUN装置还包括:第二设置模块,用于在将所述LUN层中所记载的第五信息的值设置为所述第三值之后,且在确定已回收所述目标数据存储空间中所存储的数据的情况下,将所述第五信息的值设置为第四值,其中,所述第四值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为空。
在一个可选的实施例中,所述LUN装置还包括:读取模块,用于在确定需要将第二分条中存储的数据迁移至第三分条中的情况下,读取所述第二分条中存储的数据,并为读取出的数据配置预定标识值,其中,所述预定标识值用于指示所述读取出的数据的类型为主机写入的数据;下发模块,用于所述LUN层将配置了所述预定标识值的所述读取出的数据下发给所述RAID层。
在一个可选的实施例中,在所述RAID层中包括的磁盘的类型为所述SSD的情况下,所述LUN装置还包括:第三设置模块,用于将所述LUN层中记载的第六信息的值设置为第五值,其中,所述第六信息用于指示所述第二分条中所包含的多个PBA的数据存储状态,所述第五值用于指示所述第二分条中所包含的多个PBA的数据存储状态为无效。
在一个可选的实施例中,所述第二确定模块64,包括:第四确定单元,用于确定所述RAID中记录的位图Bitmap,其中,所述Bitmap用于指示所述目标分条中的数据写入状态,其中,取值为第一值的所述Bitmap用于指示所述目标分条中写有有效数据,取值为第二值的所述Bitmap用于指示所述目标分条中写有无效数据,所述第一值与所述第二值不同。
在一个可选的实施例中,所述装置还包括:第六确定模块,用于在所述目标类型为机械硬盘HDD的情况下,将所述第一信息所指示的所述目标分条的数据存储状态确定为所述目标分条的实际数据存储状态。
在一个可选的实施例中,所述第二信息记载在所述LUN层的元数据中,其中,所述元数据存储在基于RAID5的存储级内存SCM中。
在一个可选的实施例中,所述LUN层对所述第二信息的更新频率为实时更新。
在一个可选的实施例中,所述第二确定模块64,包括:第五确定单元,用于确定所述RAID层中记录的第一位图Bitmap信息。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种磁盘阵列,包括上述任一项实施例中所述的确定数据区状态的装置。
本申请的实施例还提供了一种存储系统,包括所述磁盘阵列以及所述LUN层。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (20)

1.一种确定数据区状态的方法,其特征在于,
包括:
在需要对磁盘阵列RAID层中包括的目标磁盘执行重构操作的情况下,确定所述目标磁盘的目标类型;
在所述目标类型为固态硬盘SSD的情况下,确定所述RAID层中记录的第一信息,其中,所述第一信息用于指示所述目标磁盘中包括的目标分条的数据存储状态;
在所述第一信息指示所述目标分条的数据存储状态为有效的情况下,确定逻辑单元号LUN层中所记载的第二信息,其中,所述第二信息用于指示所述目标分条中所包含的多个物理块地址PBA的数据存储状态,所述LUN层对所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率;
基于所述第二信息确定所述目标分条的实际数据存储状态;
其中,基于所述第二信息确定所述目标分条的实际数据存储状态,包括:在基于所述第二信息确定多个所述PBA中存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为有效;在基于所述第二信息确定多个所述PBA中不存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为无效;其中,所述目标PBA的数据存储状态为有效;
其中,确定所述RAID中记录的第一信息包括:确定所述RAID中记录的位图Bitmap,其中,所述Bitmap用于指示所述目标分条中的数据写入状态,其中,取值为第一值的所述Bitmap用于指示所述目标分条中写有有效数据,取值为第二值的所述Bitmap用于指示所述目标分条中写有无效数据,所述第一值与所述第二值不同。
2.根据权利要求1所述的方法,其特征在于,
在确定所述RAID层中记录的第一信息之后,所述方法还包括:
在所述第一信息指示所述目标分条的数据存储状态为无效的情况下,确定所述目标分条的实际数据存储状态为无效。
3.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
在接收到所述LUN层下发的目标数据的情况下,获取所述目标数据的类型;
在所述目标数据的类型为主机写入的数据的情况下,将所述RAID层中记录的第三信息的值更新为第一值,其中,所述第三信息用于指示存储所述目标数据的第一分条的数据存储状态,所述第一值用于指示所述第一分条的数据存储状态为有效。
4.根据权利要求3所述的方法,其特征在于,
获取所述目标数据的类型,包括:
获取所述目标数据中携带的目标标识信息,其中,所述目标标识信息为所述LUN层在确定出所述目标数据的类型之后所添加的信息;
基于所述目标标识信息确定所述目标数据的类型。
5.根据权利要求3所述的方法,其特征在于,
在获取所述目标数据的类型之后,所述方法还包括:
在所述目标数据的类型为内部数据的情况下,保持所述RAID层中记录的所述第三信息的值不变。
6.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
接收到所述LUN层下发的第一指令,其中,所述第一指令中携带有用于指示所述LUN层所释放的目标数据存储空间的信息;
基于所述第一指令将所述RAID层中记录的第四信息的值更新为第二值,其中,所述第四信息用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态,所述第二值用于指示所述目标数据存储空间中所包括的各个分条的数据存储状态为无效。
7.根据权利要求6所述的方法,其特征在于,所述目标数据存储空间为所述LUN在执行卷的删除处理和/或卷的缩容处理后所释放的空间。
8.根据权利要求6所述的方法,其特征在于,
在所述RAID层中包括的磁盘的类型为所述SSD的情况下,所述方法还包括:
所述LUN层在确定需要释放所述目标数据存储空间之后,将所述LUN层中所记载的第五信息的值设置为第三值,其中,所述第五信息用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态,所述第三值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为无效。
9.根据权利要求8所述的方法,其特征在于,
所述LUN层在将所述LUN层中所记载的第五信息的值设置为所述第三值之后,所述方法还包括:
所述LUN层在确定已回收所述目标数据存储空间中所存储的数据的情况下,将所述第五信息的值设置为第四值,其中,所述第四值用于指示所述目标数据存储空间中所包含的多个PBA的数据存储状态为空。
10.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
所述LUN层在确定需要将第二分条中存储的数据迁移至第三分条中的情况下,读取所述第二分条中存储的数据,并为读取出的数据配置预定标识值,其中,所述预定标识值用于指示所述读取出的数据的类型为主机写入的数据;
所述LUN层将配置了所述预定标识值的所述读取出的数据下发给所述RAID层。
11.根据权利要求10所述的方法,其特征在于,
在所述RAID层中包括的磁盘的类型为所述SSD的情况下,所述方法还包括:
所述LUN层在将配置了所述预定标识值的所述读取出的数据下发给所述RAID层之后,所述方法还包括:
所述LUN层将所述LUN层中记载的第六信息的值设置为第五值,其中,所述第六信息用于指示所述第二分条中所包含的多个PBA的数据存储状态,所述第五值用于指示所述第二分条中所包含的多个PBA的数据存储状态为无效。
12.根据权利要求1所述的方法,其特征在于,
在确定所述RAID中包括的第二磁盘的目标类型之后,所述方法还包括:
在所述目标类型为机械硬盘HDD的情况下,将所述第一信息所指示的所述目标分条的数据存储状态确定为所述目标分条的实际数据存储状态。
13.根据权利要求1所述的方法,其特征在于,
所述第二信息记载在所述LUN层的元数据中,其中,所述元数据存储在基于RAID5的存储级内存SCM中。
14.根据权利要求1所述的方法,其特征在于,
所述LUN层对所述第二信息的更新频率为实时更新。
15.根据权利要求1所述的方法,其特征在于,
确定所述RAID层中记录的第一信息,包括:确定所述RAID层中记录的第一位图Bitmap信息。
16.一种确定数据区状态的装置,其特征在于,
包括:
第一确定模块,用于在需要对磁盘阵列RAID层中包括的目标磁盘执行重构操作的情况下,确定所述目标磁盘的目标类型;
第二确定模块,用于在所述目标类型为固态硬盘SSD的情况下,确定所述RAID层中记录的第一信息,其中,所述第一信息用于指示所述目标磁盘中包括的目标分条的数据存储状态;
第三确定模块,用于在所述第一信息指示所述目标分条的数据存储状态为有效的情况下,确定逻辑单元号LUN层中所记载的第二信息,其中,所述第二信息用于指示所述目标分条中所包含的多个物理块地址PBA的数据存储状态,所述LUN层对所述第二信息的更新频率高于所述RAID层对所述第一信息的更新频率;
第四确定模块,用于基于所述第二信息确定所述目标分条的实际数据存储状态;
其中,所述第四确定模块包括:第一确定单元,用于在基于所述第二信息确定多个所述PBA中存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为有效;第二确定单元,用于在基于所述第二信息确定多个所述PBA中不存在目标PBA的情况下,确定所述目标分条的实际数据存储状态为无效;其中,所述目标PBA的数据存储状态为有效;
所述第二确定模块包括:第四确定单元,用于确定所述RAID中记录的位图Bitmap,其中,所述Bitmap用于指示所述目标分条中的数据写入状态,其中,取值为第一值的所述Bitmap用于指示所述目标分条中写有有效数据,取值为第二值的所述Bitmap用于指示所述目标分条中写有无效数据,所述第一值与所述第二值不同。
17.一种磁盘阵列,其特征在于,
包括:
权利要求16所述的确定数据区状态的装置。
18.一种存储系统,其特征在于,
包括:
权利要求17所述的磁盘阵列以及所述LUN层。
19.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至15任一项中所述的方法的步骤。
20.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现所述权利要求1至15任一项中所述的方法的步骤。
CN202311420871.4A 2023-10-30 2023-10-30 确定数据区状态的方法、装置、磁盘阵列及存储系统 Active CN117149094B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311420871.4A CN117149094B (zh) 2023-10-30 2023-10-30 确定数据区状态的方法、装置、磁盘阵列及存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311420871.4A CN117149094B (zh) 2023-10-30 2023-10-30 确定数据区状态的方法、装置、磁盘阵列及存储系统

Publications (2)

Publication Number Publication Date
CN117149094A CN117149094A (zh) 2023-12-01
CN117149094B true CN117149094B (zh) 2024-02-09

Family

ID=88912393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311420871.4A Active CN117149094B (zh) 2023-10-30 2023-10-30 确定数据区状态的方法、装置、磁盘阵列及存储系统

Country Status (1)

Country Link
CN (1) CN117149094B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892950A (zh) * 2016-04-01 2016-08-24 浪潮电子信息产业股份有限公司 一种磁盘阵列的重建方法及系统
CN109445713A (zh) * 2018-11-09 2019-03-08 郑州云海信息技术有限公司 一种元数据卷的存储状态记录方法、系统及相关组件
CN113176858A (zh) * 2021-05-07 2021-07-27 锐捷网络股份有限公司 数据处理方法、存储系统及存储设备
CN113625974A (zh) * 2021-10-08 2021-11-09 苏州浪潮智能科技有限公司 一种磁盘阵列重构方法、装置、设备及介质
CN116795295A (zh) * 2023-08-16 2023-09-22 苏州浪潮智能科技有限公司 磁盘阵列中的数据处理方法及装置、存储介质、电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109725822B (zh) * 2017-10-27 2022-03-11 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892950A (zh) * 2016-04-01 2016-08-24 浪潮电子信息产业股份有限公司 一种磁盘阵列的重建方法及系统
CN109445713A (zh) * 2018-11-09 2019-03-08 郑州云海信息技术有限公司 一种元数据卷的存储状态记录方法、系统及相关组件
CN113176858A (zh) * 2021-05-07 2021-07-27 锐捷网络股份有限公司 数据处理方法、存储系统及存储设备
CN113625974A (zh) * 2021-10-08 2021-11-09 苏州浪潮智能科技有限公司 一种磁盘阵列重构方法、装置、设备及介质
CN116795295A (zh) * 2023-08-16 2023-09-22 苏州浪潮智能科技有限公司 磁盘阵列中的数据处理方法及装置、存储介质、电子设备

Also Published As

Publication number Publication date
CN117149094A (zh) 2023-12-01

Similar Documents

Publication Publication Date Title
US11513997B2 (en) Assignment of longevity ranking values of storage volume snapshots based on snapshot policies
US11372810B2 (en) Storage system implementing snapshot longevity ranking for efficient management of snapshots
US7506101B2 (en) Data migration method and system
US9619472B2 (en) Updating class assignments for data sets during a recall operation
US8539180B2 (en) System and method for migration of data
US8046537B2 (en) Virtualization engine and method, system, and computer program product for managing the storage of data
US20210173579A1 (en) Data migration method and apparatus
US9274723B2 (en) Storage apparatus and its control method
US20150081971A1 (en) Storage system and storage control method
JP2006350599A (ja) ストレージシステム及びストレージシステムのデータマイグレーション方法
US10254993B2 (en) Selecting first data sets in a first storage group to swap with second data sets in a second storage group
CN101443761A (zh) 对文件系统的支持qos的生命周期管理
CN103635900A (zh) 基于时间的数据分割
TW201937361A (zh) 儲存元件
US11321007B2 (en) Deletion of volumes in data storage systems
CN103761190A (zh) 数据处理方法及装置
CN103562914A (zh) 节约资源型扩展文件系统
CN113568582B (zh) 数据管理方法、装置和存储设备
CN110147203B (zh) 一种文件管理方法、装置、电子设备及存储介质
CN109918352B (zh) 存储器系统和存储数据的方法
CN108304142B (zh) 一种数据管理方法和装置
US20060059188A1 (en) Operation environment associating data migration method
CN117149094B (zh) 确定数据区状态的方法、装置、磁盘阵列及存储系统
CN111913664B (zh) 一种数据写入方法及装置
JP2017041040A (ja) 制御装置、ストレージシステム、及び制御プログラム

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