CN115629714A - Raid卡的写方法、raid卡的写系统及相关装置 - Google Patents

Raid卡的写方法、raid卡的写系统及相关装置 Download PDF

Info

Publication number
CN115629714A
CN115629714A CN202211554044.XA CN202211554044A CN115629714A CN 115629714 A CN115629714 A CN 115629714A CN 202211554044 A CN202211554044 A CN 202211554044A CN 115629714 A CN115629714 A CN 115629714A
Authority
CN
China
Prior art keywords
data
raid card
writing
check
write data
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.)
Granted
Application number
CN202211554044.XA
Other languages
English (en)
Other versions
CN115629714B (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 CN202211554044.XA priority Critical patent/CN115629714B/zh
Publication of CN115629714A publication Critical patent/CN115629714A/zh
Application granted granted Critical
Publication of CN115629714B publication Critical patent/CN115629714B/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
    • 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/0653Monitoring storage devices or 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供一种RAID卡的写方法、RAID卡的写系统及相关装置,涉及数据存储领域,包括:接收主机下发的写数据命令,得到命令参数;将写数据切分为若干条带,并确认各条带的校验分块;在得到所有条带的校验分块后,将全局校验数据表中写数据对应的第一比特位置位为第一预设值;在条带和对应的校验分块均写入缓存节点后,将缓存节点中控制字段维护的第二比特位置位为第二预设值;将条带和对应的校验分块并发写入RAID卡;在写数据均写入RAID卡后,将第二比特位置位为第三预设值,并释放比特位资源。本申请无需多次访问文件系统,提高数据写入效率。

Description

RAID卡的写方法、RAID卡的写系统及相关装置
技术领域
本申请涉及数据存储领域,特别涉及一种RAID卡的写方法、RAID卡的写系统及相关装置。
背景技术
目前业界在硬RAID存储技术方面,在数据的写入策略上使用两种写入策略,WB写策略和WT写策略。其中WB写策略比WT写策略具有更强的I/O性能,因为主机请求的写I/O数据会暂存在RAID卡的缓存中,I/O数据写入缓存后RAID卡立即向主机发送数据写入完成信号(即立即响应主机),这样极大的降低了主机I/O请求的响应延迟,而WT写策略只有写数据全部写入RAID卡的物理磁盘后,才向主机发送数据写成功信号。
但是目前业界在RAID卡中使用基于日志的直接访问文件系统来跟踪暂存在缓存中的数据。每次收到主机I/O的写请求时,将该写请求的时间戳以及其他关键信息写入文件系统的一个文件日志中,当写请求的数据被安全的写入到磁盘后清除日志文件中对应日志。使用这个方法会导致RAID卡更高的开销,因为该方法需要依赖底层文件系统支持来进行日志记录,数据写入RAID卡的物理磁盘之前和之后都需要读写文件系统中日志文件的日志内容。显而易见,访问文件系统相比于数据写入NVRAM硬件资源会慢很多,所以该技术方案严重影响RAID卡的I/O性能。
发明内容
本申请的目的是提供一种RAID卡的写方法、RAID卡的写系统、计算机可读存储介质和服务器,能够提高RAID卡的写性能。
为解决上述技术问题,本申请提供一种RAID卡的写方法,具体技术方案如下:
接收主机下发的写数据命令,解析得到命令参数;
将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块;
在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值;
在所述条带和对应的校验分块均写入缓存节点后,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值;其中,所述全局校验数据表和所述缓存节点均设于所述RAID卡的NVRAM硬件资源中;
将所述条带和对应的校验分块并发写入所述RAID卡;
在所述写数据均写入所述RAID卡后,将所述第二比特位置位为第三预设值,并释放比特位资源。
可选的,在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值之前,还包括:
生成包含比特位名称和比特置位值的所述全局校验数据表。
可选的,还包括:
判断所述第二比特位是否均为所述第三预设值;
若是,确认所述写数据均已写入至所述RAID卡;
若否,将第二比特位不为所述第三预设值的目标条带和对应校验分块重新落盘。
可选的,还包括:
利用双向链表元数据管理所述缓存节点。
可选的,利用双向链表元数据管理所述缓存节点包括:
每当所述缓存节点标识一次主机IO请求,利用所述双向链表通过所述缓存节点中的前指针字段和后指针字段将所述主机IO请求对应的若干缓存节点相连接,并为连接在一起的缓存节点添加所述控制字段。
可选的,将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块包括:
确定所述写数据命令中命令参数包含的I/O写数据长度;
将所述I/O写数据长度以条带为单元切分为多个连续的条带,并利用P校验确定所有所述条带对应的校验分块。
可选的,利用P校验确定所有所述条带对应的校验分块包括:
根据所述条带中的数据分块执行P校验对应的异或运算,确定所述条带对应的校验分块。
可选的,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值之前,还包括:
判断各个所述条带对应的校验分块是否均计算完成;
若是,执行将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值的步骤。
可选的,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值之前,还包括:
获取各所述条带对应的数据分块和校验分块的位置信息;
根据所述位置信息判断所述条带和对应的校验分块是否均已写入缓存节点;
若是,执行将所述缓存节点中控制字段维护的第二比特位置位为第二预设值的步骤。
可选的,将所述条带和对应的校验分块并发写入所述RAID卡包括:
利用线程池中的工作线程将所述条带和对应的校验分块并发写入RAID卡的各个物理磁盘。
可选的,释放比特位资源包括:
释放所述比特位对应的缓存节点,并将其作为空闲缓存节点。
可选的,释放所述比特位对应的缓存节点,并将其作为空闲缓存节点之后,还包括:
将所述空闲缓存节点添加至全局空闲缓存节点链表中。
可选的,接收主机下发的写数据命令,解析得到命令参数包括:
接收主机向存储系统下发的I/O写数据命令,解析得到命令参数。
可选的,接收主机下发的写数据命令,解析得到命令参数包括:
接收主机下发的写数据命令,利用RAID卡中固件层的驱动程序解析所述写数据命令解析得到命令参数。
可选的,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值包括:
利用RAID卡控制器将所述缓存节点中控制字段维护的比特位均置位为第二预设值。
可选的,还包括:
利用管理监控系统监控RAID卡的异常事件,并将所述异常事件发送至所述RAID卡控制器。
可选的,还包括:
根据缓存、非易失性随机访问存储器、I/O处理器、硬盘控制器和硬盘连接器生成所述RAID卡控制器。
本申请还提供一种RAID卡的写系统,包括:
命令接收模块,用于接收主机下发的写数据命令,解析得到命令参数;
校验分块确定模块,用于将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块;
第一置位模块,用于在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值;
第二置位模块,用于在所述条带和对应的校验分块均写入缓存节点后,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值;其中,所述全局校验数据表和所述缓存节点均设于所述RAID卡的NVRAM硬件资源中;
数据落盘模块,用于将所述条带和对应的校验分块并发写入所述RAID卡;
第三置位模块,用于在所述写数据均写入所述RAID卡后,将所述第二比特位置位为第三预设值,并释放比特位资源。
可选的,还包括:
数据表生成模块,用于生成包含比特位名称和比特置位值的所述全局校验数据表。
可选的,还包括:
掉电恢复模块,用于判断所述第二比特位是否均为所述第三预设值;若是,确认所述写数据均已写入至所述RAID卡;若否,将第二比特位不为所述第三预设值的目标条带和对应校验分块重新落盘。
可选的,还包括:
节点管理模块,用于利用双向链表元数据管理所述缓存节点。
可选的,节点管理模块为用于每当所述缓存节点标识一次主机IO请求,利用所述双向链表通过所述缓存节点中的前指针字段和后指针字段将所述主机IO请求对应的若干缓存节点相连接,并为连接在一起的缓存节点添加所述控制字段的模块。
可选的,校验分块确定模块包括:
长度确定单元,用于确定所述命令参数包含的I/O写数据长度;
校验分块确定单元,用于将所述I/O写数据长度以条带为单元切分为多个连续的条带,并利用P校验确定所有所述条带对应的校验分块。
可选的,校验分块确定模块包括:
校验分块计算单元,用于根据所述条带中的其他数据分块执行异或运算确定所有切分后条带中的校验分块。
可选的,还包括:
校验分块计算判断模块,用于判断各个条带对应的校验分块是否均已确定完成;若是,进入第一置位模块。
可选的,还包括:
写缓存判断模块,用于判断各个条带对应的数据分块和校验分块是否均已写入缓存;若是,进入第二置位模块。
可选的,所述数据落盘模块为用于利用线程池中的工作线程将所述条带和对应的校验分块并发写入RAID卡的各个物理磁盘的模块。
可选的,第三置位模块包括:
资源释放单元,用于释放所述比特位对应的缓存节点,并将其作为空闲缓存节点。
可选的,还包括:
空闲节点管理模块,用于将所述空闲缓存节点添加至全局空闲缓存节点链表中。
可选的,命令接收模块为用于接收主机向存储系统下发的写数据命令,解析得到命令参数的模块。
可选的,命令接收模块为用于接收主机下发的写数据命令,利用RAID卡中固件层的驱动程序解析所述命令解析得到命令参数的模块。
可选的,第二置位模块包括:
控制字段写入单元,用于利用RAID卡控制器将所述缓存节点中控制字段维护的比特位均置位为第二预设值。
可选的,还包括:
异常监控模块,用于利用管理监控系统监控RAID卡的异常事件,并将所述异常事件发送至所述RAID卡控制器。
可选的,还包括:
RAID卡控制器生成模块,用于根据缓存、非易失性随机访问存储器、I/O处理器、硬盘控制器和硬盘连接器生成所述RAID卡控制器。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本申请还提供一种服务器,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
本申请提供一种RAID卡的写方法,包括:接收主机下发的写数据命令,解析得到命令参数;将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块;在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值;在所述条带和对应的校验分块均写入缓存节点后,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值;其中,所述全局校验数据表和所述缓存节点均设于所述RAID卡的NVRAM硬件资源中;将所述条带和对应的校验分块并发写入所述RAID卡;在所述写数据均写入所述RAID卡后,将所述第二比特位置位为第三预设值,并释放比特位资源。
本申请只在NVRAM硬件资源中新增全局校验数据表,通过全局校验数据包中的第一比特位反映条带和对应校验分块写入缓存的状态。同时利用缓存节点中控制字段的状态,反馈缓存中数据的落盘状态。即本申请可以根据缓存节点中的控制字段,判断控制字段控制的条带数据是否已下刷到物理磁盘,能够有效提升RAID卡WB策略的写性能,进而提高恢复丢失数据的恢复速率。
本申请还提供一种RAID卡的写系统、计算机可读存储介质和服务器,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种RAID卡的写方法的流程图;
图2为本申请实施例所提供的缓存节点的结构示意图;
图3为本申请实施例所提供的主机IO长度以条带为单元切分框图;
图4为本申请实施例所提供的存储系统中RAID卡架构图;
图5为本申请实施例所提供的另一种RAID卡的写方法的流程图;
图6为本申请实施例所提供的一种RAID卡的写系统的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种RAID卡的写方法的流程图,该方法包括:
S101:接收主机下发的写数据命令,解析得到命令参数;
本步骤需要接收主机下发的写数据命令,从而解析得到命令参数,具体的,本步骤可以接收主机向存储系统下发的写数据命令,解析得到命令参数。
在此对于如何解析得到命令参数不作限定,可以利用RAID卡中固件层的驱动程序解析所述命令解析得到命令参数。本领域技术人员也可以位于其他硬件中的驱动程序解析得到命令参数。 还需要注意的是,该写数据命令可以为I/O写请求,或者其他类型的数据写请求、指令等均可以作为本步骤中的写数据命令。需要将数据写入落盘的相关指令均可以视为本步骤中的写数据命令。
还需要说明的是,本申请实施例中的主机可以是工作站、个人计算机、移动手机、笔记本电脑和服务器等等,多个主机系统通过网络共享存储系统中的存储资源,网络可以采用广域网(WAN)连接、存储区域网络(SAN)、局域网(LAN)连接和无线WIFI连接等等。网络可以包括一个或多个无线连接的网络,多个RAID卡组成的存储系统之间可以通过以太网光纤通道(FCoE)、光纤通道、iSCSI等等连接组成一个大型的存储环境。需要注意的是,主机系统、服务器、网络和存储系统的数量和类型并不限于上述描述。在不同的时间段内,一个或多个主机系统可能会离线,而且在使用存储系统期间,用户可能会操作主机系统连接、断开连接和重新连接到存储系统,所以每个主机系统的连接状态可能会发生改变。
S102:将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块;
本步骤旨在将写数据命令对应的写数据切分为若干条带。需要说明的是,该写数据命令中并不必须写数据,可以包含所需要写入数据的地址等相关信息,此时本步骤还可以先获取写数据命令对应的写数据。或者采用其他方式确定写数据命令对应的写数据,在此不一一举例限定。
一种可行的执行方式中,接收到写I/O请求后,可以先确定所述命令参数包含的I/O写数据长度,再将所述I/O写数据长度以条带为单元切分为多个连续的条带,并确定所有切分后条带中的校验分块。当然,在此对于具体的切分参数不作限定,可以根据写数据指令中的相关切分参数进行切分,也可以根据具体数据大小采用默认或者设定的切分方式进行条带切分。
具体的,解析出来写数据的I/O写数据长度和其他参数,将I/O写数据长度以条带为单元切分为多个连续的条带(stripe),并同步等待求得所有切分后条带中的校验分块,需要注意的是,可以根据所述条带中的其他数据分块执行异或运算确定所有切分后条带中的校验分块。一种可行的执行方式中,可以先确定写数据命令中命令参数包含的I/O写数据长度,再将I/O写数据长度以条带为单元切分为多个连续的条带,并利用P校验确定所有条带对应的校验分块。
S103:在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值;
具体的,在执行本步骤前,可以先判断各个条带对应的校验分块是否均计算完成,如果均已确定,则将全局校验数据表写数据对应的第一比特位置位为第一预设值。若未均确定,即存在部分条带的校验分块尚未计算完毕,此时可以继续等待,直至确定所有切分后条带的校验分块。
该全局校验数据表用于记录写数据是否均已切分成条带,且均已确定各条带对应的校验分块。全局校验数据表可以以位图元数据组织方式管理校验数据表。
本实施例默认在执行本步骤前,已经生成或者获取到生成完成的全局校验数据表,在此对于全局校验数据表的表结构和内容不作具体限定,其至少伊宁当包含比特位名称和相应的比特置位值。也可以设置全局校验数据表中的默认比特置位值,或者由本领域技术人员进行自行设定。
本步骤中的第一比特位与写数据相对应。在本申请的其他实施例中,可以针对写数据切分得到的条带进行多个比特位的设定,其针对每一个条带在全局校验数据表中设置相应的比特位,从而可以根据全局校验数据表中已经置位为第一预设值的数量确定写数据中已经确认校验分块的占比和数量,从而有效掌握当前数据写入进度。
在此对于第一预设值不作限定,其主要用于表征数据切分为校验分块的状态,可以采用数字或者英文字母等形式表示。例如,第一比特位为1表明所有条带的校验分块均已经求得,第一比特位为0则没有。
S104:在所述条带和对应的校验分块均写入缓存节点后,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值;其中,所述全局校验数据表和所述缓存节点均设于所述RAID卡的NVRAM硬件资源中;
本步骤中,在条带和校验分块均写入缓存节点后,需要将缓存节点中控制字段维护的第二比特位置位为第二预设值。需要注意的是,该控制字段维护的第二比特位并不位于全局校验数据表中,而位于缓存节点中,即每个缓存节点中均维护了一个控制字段,用于反馈条带和对应校验分块的写入状态。若均已写入,则置位为第二预设值,否则维持不便。当然,在此对于第二预设值亦不作限定,可由本领域技术人员进行设定。
本步骤可以利用RAID卡控制实现,即利用RAID卡控制器将缓存节点中控制字段维护的第二比特位置位为第二预设值。置位为第一预设值表明缓存中的数据还没有下刷到物理磁盘。需要注意的是,本步骤中的缓存节点指缓存模块中用来标识一次主机I/O请求的结构体。
S105:将所述条带和对应的校验分块并发写入所述RAID卡;
由于此时写数据和校验分块在缓存中,还没有被线程池中多个线程并发的写入RAID卡中的各个磁盘中,即数据写入过完尚未完成。在执行本步骤时,为了提高数据写入效率,可以利用线程池中的多个工作线程将所述条带和对应的校验分块并发写入RAID卡的各个物理磁盘。
S106:在所述写数据均写入所述RAID卡后,将所述第二比特位置位为第三预设值,并释放比特位资源。
线程池中的多个工作线程并发的将缓存中的各个条带的数据分块和校验分块写入RAID卡的各个物理磁盘后,如果都成功写入磁盘则将缓存节点中控制字段维护的第二比特位置位为第三预设值。需要注意的是,本实施例对于第一预设值、第二预设值和第三预设值均不作具体限定,其只需为不同的值用于区分即可。且第二预设值和第三预设值中的一种可以与第一预设值相同。
还需要注意的是,在执行完步骤S105后,RAID卡控制器的主控线程可以重新执行本申请实施例,即执行主机下发的其他IO请求,同时暂存在缓存中的写数据由线程池中的多个工作线程并发的写入RAID卡中的各个磁盘中。
最后,释放校验数据表中的对应比特位资源,释放缓存节点到全局空闲缓存节点链表中。具体的,可以先释放所述比特位对应的缓存节点,并将其作为空闲缓存节点,此后将空闲缓存节点添加至全局空闲缓存节点链表中。
此外,还可以利用管理监控系统监控RAID卡的异常事件,并将异常事件发送至RAID卡控制器,从而避免RAID卡在写入数据过程发生异常事件影响写入效率。该管理监控系统可以用于监控RAID卡中的各种异常事件。例如当RAID卡出现意外掉电事件后,管理监控系统会监控到此事件,将该事件报告给RAID卡控制器。RAID卡控制器包括缓存cache、非易失性随机访问存储器(NVRAM)、I/O处理器、硬盘控制器和硬盘连接器等组成。
本申请实施例只在NVRAM硬件资源中新增全局校验数据表,通过全局校验数据包中的第一比特位反映条带和对应校验分块写入缓存的状态。同时利用缓存节点中控制字段的状态,反馈缓存中数据的落盘状态。即本申请可以根据缓存节点中的控制字段,判断控制字段控制的条带数据是否已下刷到物理磁盘,能够有效提升RAID卡WB策略的写性能,进而提高恢复丢失数据的恢复速率。
参见图2,图2为本申请实施例所提供的缓存节点的结构示意图。图2中的指向后一个缓存节点的指针(简称为后指针)是指向双向链表中的下一个缓存节点,同理指向前一个缓存节点的指针(简称为前指针)是指向双向链表中的前一个缓存节点。指向缓存区的指针字段是指写数据需要暂存到缓存中的具体区域。
本申请实施例提出在RAID卡的NVRAM硬件资源中新增全局校验数据表,同时使用双向链表元数据组织方式管理缓存节点,一个缓存节点标识一次主机I/O写请求,双向链表通过缓存节点中的前指针字段和后指针字段将多次主机I/O写请求对应的多个缓存节点连接在一起。并且在缓存节点中增加一个控制字段,该控制字段使用位图元数据组织方式,如图2中A箭头指示,控制主机I/O写请求的写数据是否已下刷到RAID卡的各个物理磁盘中,各个比特位代表主机I/O写请求按条带切分后的各个条带。
需要注意的是:将I/O写数据长度以条带为单元进行切分时有可能切分成多个条带也有可能只是一个条带,例如:如图3中所示,第一个主机I/O长度被切分成图3中B箭头指示的条带stripe0和stripe1,而第二个主机I/O长度按条带切分后只在一个条带stripe4中,如图3中C箭头指示。如果条带中的数据分块和校验分块都已下刷到物理磁盘则将对应该条带的比特位置位为第二预设值,否则为0,因此当切分后的各个条带对应的比特位都为1时则表明主机I/O写数据都已下刷到物理磁盘,否则数据没有下刷到物理磁盘。由上所述可知,如果RAID卡中暂存在缓存中的数据没来得及写入磁盘就出现意外状况(例如掉电或其他故障)导致写数据丢失的故障时,本申请实施例可以根据缓存节点中的前指针和后指针轮训所有缓存节点的控制字段,判断控制字段控制的条带数据是否已下刷到物理磁盘,因此本申请不仅避免重复访问文件系统从而提高RAID卡WB策略的写性能,而且可以提高恢复丢失数据的恢复速率。
在上述实施例的基础上,作为优选的实施例,若在写入数据时发生故障,例如掉电或者其他故障,此时判断所述第二比特位是否均为所述第三预设值;若是,表明写数据均已写入至所述RAID卡。否则,将第二比特位不为所述第三预设值的目标条带和对应校验分块重新落盘。而已经落盘的条件,其对应的第二比特位应为第三预设值,因此只需针对第二比特位不是第三预设值的条带及对应的校验分块重新按照上述数据写入过程写入即可,如此,只需要恢复实际未落盘的数据即可,无需对全部数据重新执行数据写入,大大提高了恢复丢失数据的恢复速率。
同时参见图4,图4为本申请实施例所提供的存储系统中RAID卡架构图,图4中主机系统可以是工作站、个人计算机、移动手机、笔记本电脑和服务器等等,多个主机系统通过网络共享存储系统中的存储资源,网络可以采用广域网(WAN)连接、存储区域网络(SAN)、局域网(LAN)连接和无线WIFI连接等等。网络可以包括一个或多个无线连接的网络,多个RAID卡组成的存储系统之间可以通过以太网光纤通道(FCoE)、光纤通道、iSCSI等等连接组成一个大型的存储环境。需要注意的是,主机系统、服务器、网络和存储系统的数量和类型并不限于图4中所示的这些。在不同的时间段内,一个或多个主机系统可能会离线,而且在使用存储系统期间,用户可能会操作主机系统连接、断开连接和重新连接到存储系统,所以每个主机系统的连接状态可能会发生改变。
RAID卡中固件层包括驱动程序、RAID卡内核和文件系统等等(其他部分在图4中未注),RAID卡中固件层的驱动程序用于解析主机系统下发的命令,例如主机I/O请求中的写数据命令和其他命令。文件系统是RAID卡使用基于日志的直接访问文件系统来解决意外掉电期间的写数据丢失或写洞问题中的文件系统。
在写策略为WB策略(Write Back,指写回模式,是主机请求写数据时采用的一种写入策略,如果缓存资源满足,将写数据存储在缓存中,并立刻向主机发送数据写成功信号)时,采用底层文件系统进行日志记录的方法来对暂存在缓存中的数据进行跟踪记录,当主机的写数据到来时会在日志文件中添加一个相对应的日志,如果写数据顺利写入磁盘后,会将该条日志删除掉。上述方法需要两次访问底层文件系统,显然多次访问文件系统会影响RAID卡的I/O性能。频繁读写文件系统中的日志文件不仅会降低I/O性能而且会严重降低恢复数据的速率。
参见图5,图5为本申请实施例所提供的另一种RAID卡的写方法的流程图,具体过程可以如下:
第一步、RAID 卡接收到主机系统向存储系统发出的写数据命令后,RAID卡中固件层的驱动程序解析该命令。
第二步:RAID卡控制器根据第一步中解析的命令参数,求得各个条带的校验分块。
第三步:判断各个条带的校验分块是否都已计算求得,如果都已求得,则将全局校验数据表中对应写数据的比特位置位为1,然后继续执行第四步。否则返回到第二步继续等待求得所有切分后条带的校验分块。
第四步:将切分后的各个条带中的数据分块和校验分块全部写入缓存中。
第五步: 判断各个条带中的数据分块和校验分块是否都已写入缓存;如果都已写入缓存,则继续执行第六步。
第六步:RAID卡控制器将上文中提到的缓存节点中控制字段维护的比特位全部置位为0,表明缓存中的数据还没有下刷到物理磁盘。此时写数据和校验分块在缓存中,还没有被线程池中多个线程并发的写入RAID卡中的各个磁盘中。
第七步:RAID卡控制器的主控线程返回第二步继续执行主机的其他I/O请求。暂存在缓存中的写数据由线程池中的多个工作线程并发的写入RAID卡中的各个磁盘中。所以RAID卡控制器主控线程的整个流程是异步的,这样从另一个方面提高了RAID卡的I/O性能。
第八步:线程池中的多个工作线程并发的将缓存中的各个条带的数据分块和校验分块写入RAID卡的各个物理磁盘后,如果都成功写入磁盘则将缓存节点中控制字段维护的各个比特位置位为1。
第九步:释放校验数据表中的对应比特位资源,释放缓存节点到全局空闲缓存节点链表中。
综上所述,本申请实施例无需多次访问文件系统中的日志文件,且访问文件系统是一个特别耗时的操作,降低了数据写入效率,其本申请实施例在处理完主机I/O请求后会释放相应资源,同时增加的逻辑控制和算法设计简单明了,易于实现。
下面对本申请实施例提供的一种RAID卡的写系统进行介绍,下文描述的RAID卡的写系统与上文描述的RAID卡的写方法可相互对应参照。
图6为本申请实施例所提供的一种RAID卡的写系统的结构示意图,本申请还提供一种RAID卡的写系统,包括:
命令接收模块,用于接收主机下发的写数据命令,解析得到命令参数;
校验分块确定模块,用于将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块;
第一置位模块,用于在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值;
第二置位模块,用于在所述条带和对应的校验分块均写入缓存节点后,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值;其中,所述全局校验数据表和所述缓存节点均设于所述RAID卡的NVRAM硬件资源中;
数据落盘模块,用于将所述条带和对应的校验分块并发写入所述RAID卡;
第三置位模块,用于在所述写数据均写入所述RAID卡后,将所述第二比特位置位为第三预设值,并释放比特位资源。
本申请设置若干模块,实现了仅在NVRAM硬件资源中新增全局校验数据表和全局缓存节点,结合相应的逻辑控制便可以提升RAID卡的写性能。且本申请可以根据缓存节点中的控制字段,判断控制字段控制的条带数据是否已下刷到物理磁盘,能够有效提升RAID卡WB策略的写性能,进而提高恢复丢失数据的恢复速率。
基于上述实施例,作为优选的实施例,还包括:
数据表生成模块,用于生成包含比特位名称和比特置位值的所述全局校验数据表。
基于上述实施例,作为优选的实施例,还包括:
掉电恢复模块,用于判断所述第二比特位是否均为所述第三预设值;若是,确认所述写数据均已写入至所述RAID卡;若否,将第二比特位不为所述第三预设值的目标条带和对应校验分块重新落盘。
基于上述实施例,作为优选的实施例,还包括:
节点管理模块,用于利用双向链表元数据管理所述缓存节点。
基于上述实施例,作为优选的实施例,节点管理模块为用于每当所述缓存节点标识一次主机IO请求,利用所述双向链表通过所述缓存节点中的前指针字段和后指针字段将所述主机IO请求对应的若干缓存节点相连接,并为连接在一起的缓存节点添加所述控制字段的模块。
基于上述实施例,作为优选的实施例,校验分块确定模块包括:
长度确定单元,用于确定所述命令参数包含的I/O写数据长度;
校验分块确定单元,用于将所述I/O写数据长度以条带为单元切分为多个连续的条带,并利用P校验确定所有所述条带对应的校验分块。
基于上述实施例,作为优选的实施例,校验分块确定模块包括:
校验分块计算单元,用于根据所述条带中的其他数据分块执行异或运算确定所有切分后条带中的校验分块。
基于上述实施例,作为优选的实施例,还包括:
校验分块计算判断模块,用于判断各个条带对应的校验分块是否均已确定完成;若是,进入第一置位模块。
基于上述实施例,作为优选的实施例,还包括:
写缓存判断模块,用于判断各个条带对应的数据分块和校验分块是否均已写入缓存;若是,进入第二置位模块。
基于上述实施例,作为优选的实施例,所述数据落盘模块为用于利用线程池中的工作线程将所述条带和对应的校验分块并发写入RAID卡的各个物理磁盘的模块。
基于上述实施例,作为优选的实施例,第三置位模块包括:
资源释放单元,用于释放所述比特位对应的缓存节点,并将其作为空闲缓存节点。
基于上述实施例,作为优选的实施例,还包括:
空闲节点管理模块,用于将所述空闲缓存节点添加至全局空闲缓存节点链表中。
基于上述实施例,作为优选的实施例,命令接收模块为用于接收主机向存储系统下发的写数据命令,解析得到命令参数的模块。
基于上述实施例,作为优选的实施例,命令接收模块为用于接收主机下发的写数据命令,利用RAID卡中固件层的驱动程序解析所述命令解析得到命令参数的模块。
基于上述实施例,作为优选的实施例,第二置位模块包括:
控制字段写入单元,用于利用RAID卡控制器将所述缓存节点中控制字段维护的比特位均置位为第二预设值。
基于上述实施例,作为优选的实施例,还包括:
异常监控模块,用于利用管理监控系统监控RAID卡的异常事件,并将所述异常事件发送至所述RAID卡控制器。
基于上述实施例,作为优选的实施例,还包括:
RAID卡控制器生成模块,用于根据缓存、非易失性随机访问存储器、I/O处理器、硬盘控制器和硬盘连接器生成所述RAID卡控制器。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种服务器,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述服务器还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (20)

1.一种RAID卡的写方法,其特征在于,包括:
接收主机下发的写数据命令,解析得到命令参数;
将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块;
在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值;
在所述条带和对应的校验分块均写入缓存节点后,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值;其中,所述全局校验数据表和所述缓存节点均设于所述RAID卡的NVRAM硬件资源中;
将所述条带和对应的校验分块并发写入所述RAID卡;
在所述写数据均写入所述RAID卡后,将所述第二比特位置位为第三预设值,并释放比特位资源。
2.根据权利要求1所述的写方法,其特征在于,在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值之前,还包括:
生成包含比特位名称和比特置位值的所述全局校验数据表。
3.根据权利要求1所述的写方法,其特征在于,若所述写数据写入时发生故障,还包括:
判断所述第二比特位是否均为所述第三预设值;
若是,确认所述写数据均已写入至所述RAID卡;
若否,将第二比特位不为所述第三预设值的目标条带和对应校验分块重新落盘。
4.根据权利要求1所述的写方法,其特征在于,还包括:
利用双向链表元数据管理所述缓存节点。
5.根据权利要求4所述的写方法,其特征在于,利用双向链表元数据管理所述缓存节点包括:
每当所述缓存节点标识一次主机IO请求,利用所述双向链表通过所述缓存节点中的前指针字段和后指针字段将所述主机IO请求对应的若干缓存节点相连接,并为连接在一起的缓存节点添加所述控制字段。
6.根据权利要求1所述的写方法,其特征在于,将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块包括:
确定所述写数据命令中命令参数包含的I/O写数据长度;
将所述I/O写数据长度以条带为单元切分为多个连续的条带,并利用P校验确定所有所述条带对应的校验分块。
7.根据权利要求6所述的写方法,其特征在于,利用P校验确定所有所述条带对应的校验分块包括:
根据所述条带中的数据分块执行P校验对应的异或运算,确定所述条带对应的校验分块。
8.根据权利要求1所述的写方法,其特征在于,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值之前,还包括:
判断各个所述条带对应的校验分块是否均计算完成;
若是,执行将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值的步骤。
9.根据权利要求1所述的写方法,其特征在于,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值之前,还包括:
获取各所述条带对应的数据分块和校验分块的位置信息;
根据所述位置信息判断所述条带和对应的校验分块是否均已写入缓存节点;
若是,执行将所述缓存节点中控制字段维护的第二比特位置位为第二预设值的步骤。
10.根据权利要求1所述的写方法,将所述条带和对应的校验分块并发写入所述RAID卡包括:
利用线程池中的工作线程将所述条带和对应的校验分块并发写入RAID卡的各个物理磁盘。
11.根据权利要求1所述的写方法,其特征在于,释放比特位资源包括:
释放所述比特位对应的缓存节点,并将其作为空闲缓存节点。
12.根据权利要求9所述的写方法,其特征在于,释放所述比特位对应的缓存节点,并将其作为空闲缓存节点之后,还包括:
将所述空闲缓存节点添加至全局空闲缓存节点链表中。
13.根据权利要求1所述的写方法,其特征在于,接收主机下发的写数据命令,解析得到命令参数包括:
接收主机向存储系统下发的I/O写数据命令,解析得到命令参数。
14.根据权利要求1或13所述的写方法,其特征在于,接收主机下发的写数据命令,解析得到命令参数包括:
接收主机下发的写数据命令,利用RAID卡中固件层的驱动程序解析所述写数据命令解析得到命令参数。
15.根据权利要求1所述的写方法,其特征在于,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值包括:
利用RAID卡控制器将所述缓存节点中控制字段维护的比特位均置位为第二预设值。
16.根据权利要求15所述的写方法,其特征在于,还包括:
利用管理监控系统监控RAID卡的异常事件,并将所述异常事件发送至所述RAID卡控制器。
17.根据权利要求16所述的写方法,其特征在于,还包括:
根据缓存、非易失性随机访问存储器、I/O处理器、硬盘控制器和硬盘连接器生成所述RAID卡控制器。
18.一种RAID卡的写系统,其特征在于,包括:
命令接收模块,用于接收主机下发的写数据命令,解析得到命令参数;
校验分块确定模块,用于将所述写数据命令对应的写数据切分为若干条带,并根据所述命令参数确认各所述条带的校验分块;
第一置位模块,用于在得到所有所述条带的校验分块后,将全局校验数据表中所述写数据对应的第一比特位置位为第一预设值;
第二置位模块,用于在所述条带和对应的校验分块均写入缓存节点后,将所述缓存节点中控制字段维护的第二比特位置位为第二预设值;其中,所述全局校验数据表和所述缓存节点均设于所述RAID卡的NVRAM硬件资源中;
数据落盘模块,用于将所述条带和对应的校验分块并发写入所述RAID卡;
第三置位模块,用于在所述写数据均写入所述RAID卡后,将所述第二比特位置位为第三预设值,并释放比特位资源。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-17任一项所述的RAID卡的写方法的步骤。
20.一种服务器,其特征在于,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1-17任一项所述的RAID卡的写方法的步骤。
CN202211554044.XA 2022-12-06 2022-12-06 Raid卡的写方法、raid卡的写系统及相关装置 Active CN115629714B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211554044.XA CN115629714B (zh) 2022-12-06 2022-12-06 Raid卡的写方法、raid卡的写系统及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211554044.XA CN115629714B (zh) 2022-12-06 2022-12-06 Raid卡的写方法、raid卡的写系统及相关装置

Publications (2)

Publication Number Publication Date
CN115629714A true CN115629714A (zh) 2023-01-20
CN115629714B CN115629714B (zh) 2023-03-17

Family

ID=84909765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211554044.XA Active CN115629714B (zh) 2022-12-06 2022-12-06 Raid卡的写方法、raid卡的写系统及相关装置

Country Status (1)

Country Link
CN (1) CN115629714B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102270102A (zh) * 2011-04-29 2011-12-07 华中科技大学 一种raid6磁盘阵列写性能的优化方法
CN104035830A (zh) * 2014-06-24 2014-09-10 浙江宇视科技有限公司 一种数据恢复方法和装置
CN104881242A (zh) * 2014-02-28 2015-09-02 中兴通讯股份有限公司 数据写入方法及装置
CN111399764A (zh) * 2019-12-25 2020-07-10 杭州海康威视系统技术有限公司 数据存储方法、读取方法、装置、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102270102A (zh) * 2011-04-29 2011-12-07 华中科技大学 一种raid6磁盘阵列写性能的优化方法
CN104881242A (zh) * 2014-02-28 2015-09-02 中兴通讯股份有限公司 数据写入方法及装置
CN104035830A (zh) * 2014-06-24 2014-09-10 浙江宇视科技有限公司 一种数据恢复方法和装置
CN111399764A (zh) * 2019-12-25 2020-07-10 杭州海康威视系统技术有限公司 数据存储方法、读取方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN115629714B (zh) 2023-03-17

Similar Documents

Publication Publication Date Title
US11397648B2 (en) Virtual machine recovery method and virtual machine management device
US8838892B2 (en) Data storage method and storage device
US8122158B1 (en) Method for improving I/O performance of host systems by applying future time interval policies when using external storage systems
US8521986B2 (en) Allocating storage memory based on future file size or use estimates
CN103019888B (zh) 备份方法与装置
US11232073B2 (en) Method and apparatus for file compaction in key-value store system
EP3206128B1 (en) Data storage method, data storage apparatus, and storage device
US10725662B2 (en) Data updating technology
US20130103902A1 (en) Method and apparatus for implementing protection of redundant array of independent disks in file system
US7774571B2 (en) Resource allocation unit queue
US8275951B2 (en) Local bitmaps for an array of redundant storage devices
US20190347165A1 (en) Apparatus and method for recovering distributed file system
US9218134B2 (en) Read based temporal locality compression
CN116501264B (zh) 一种数据存储方法、装置、系统、设备及可读存储介质
CN115629714B (zh) Raid卡的写方法、raid卡的写系统及相关装置
CN115543871B (zh) 数据存储方法及相关设备
US20190286374A1 (en) Selectively improving raid operations latency
CN115993932A (zh) 数据处理方法、装置、存储介质以及电子设备
US20160026537A1 (en) Storage system
WO2024119774A1 (zh) Raid卡的写方法、raid卡的写系统及相关装置
US9189160B2 (en) Transport agnostic sequential drive recovery with mode data snooping
WO2024113687A1 (zh) 一种数据恢复方法及相关装置
WO2016060700A1 (en) File system journaling
CN115599589B (zh) 一种数据恢复方法及相关装置
CN112988034B (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