RAID磁盘阵列管理方法、系统、电子设备及存储介质转让专利

申请号 : CN202211409875.8

文献号 : CN115657961B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李幸远孙华锦王江李树青

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种RAID磁盘阵列管理方法、系统、电子设备及存储介质,所属的技术领域为存储管理技术领域。上述RAID磁盘阵列管理方法包括:利用所述RAID管理工具构造RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。本申请能够在NVMe接口上实现RAID磁盘阵列管理。

权利要求 :

1.一种RAID磁盘阵列管理方法,其特征在于,应用于与RAID控制器连接的主机,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:利用所述RAID管理工具构造RAID管理命令,并将所述RAID管理命令封装为SQE格式;

利用所述NVMe设备驱动将封装后的所述RAID管理命令通过NVMe主机接口写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。

2.根据权利要求1所述RAID磁盘阵列管理方法,其特征在于,还包括:

若所述NVMe设备驱动接收到中断通知,则读取Admin CQ队列中的命令完成队列条目,并将所述命令完成队列条目返回至所述RAID管理工具;

其中,所述命令完成队列条目由所述RAID控制器根据所述RAID管理命令的执行结果构造得到。

3.根据权利要求1所述RAID磁盘阵列管理方法,其特征在于,利用所述RAID管理工具构造RAID管理命令,包括:利用所述RAID管理工具构造包括命令操作码、命令参数和数据指针的RAID管理命令;

其中,所述RAID控制器用于将执行所述RAID管理命令后得到的待返回数据存储至所述数据指针指向的地址空间。

4.一种RAID磁盘阵列管理方法,其特征在于,应用于与主机连接的RAID控制器,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:接收到门铃寄存器发送的通知信息后,从Admin SQ队列中读取所述主机下发的RAID管理命令;其中,所述主机下发所述RAID管理命令的过程包括:利用所述RAID管理工具构造所述RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令通过NVMe主机接口写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息;

执行所述RAID管理命令对应的操作。

5.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,在对所述RAID磁盘阵列执行所述RAID管理命令对应的操作之后,还包括:根据所述RAID管理命令的执行结果构造命令完成队列条目;

将所述命令完成队列条目写入所述主机的Admin CQ队列,并向所述NVMe设备驱动发送中断通知,以便所述NVMe设备读取所述Admin CQ队列中的所述命令完成队列条目并将所述命令完成队列条目返回至所述RAID管理工具。

6.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为RAID控制器发现命令,则执行所述RAID管理命令对应的操作,包括:解析所述RAID控制器发现命令得到第一数据指针;

汇总所述RAID控制器的特性数据,并将所述RAID控制器的特性数据返回至所述第一数据指针指向的地址空间;

其中,所述RAID控制器的特性数据包括就绪状态、固件版本号、序列号、支持的RAID级别列表、每种RAID级别支持的物理盘数列表、支持的RAID数据排列方式列表、支持的RAID级别迁移类型列表、支持的物理盘类型列表、支持的数据Cache特性、支持的掉电保护特征和备用电源状态中的任一项或任几项的组合;所述数据Cache特性包括Cache容量和/或Cache策略类型。

7.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为物理盘发现命令,则执行所述RAID管理命令对应的操作,包括:解析所述物理盘发现命令得到第二数据指针;

获取所述RAID磁盘阵列中所有物理盘的物理盘列表数据结构,并将所述物理盘列表数据结构返回至所述第二数据指针指向的地址空间;其中,所述物理盘列表数据结构包括每一所述物理盘的标识符;

或,确定所述物理盘发现命令对应的目标物理盘,将所述目标物理盘的物理盘信息返回至所述第二数据指针指向的地址空间;其中,所述物理盘信息包括所述目标物理盘的标识符、物理盘状态、物理盘类型、物理盘支持的逻辑块大小、物理盘容量和物理盘拓扑信息中的任一项或任几项的组合。

8.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为RAID组发现命令,则执行所述RAID管理命令对应的操作,包括:解析所述RAID组发现命令得到第三数据指针;

获取所述RAID磁盘阵列中所有RAID组的RAID组列表数据结构,并将所述RAID组列表数据结构返回至所述第三数据指针指向的地址空间;其中,所述RAID组列表数据结构包括每一所述RAID组的标识符;

或,确定所述RAID组发现命令对应的目标RAID组,将所述目标RAID组的RAID组信息返回至所述第三数据指针指向的地址空间;其中,所述RAID组信息包括所述目标RAID组的标识符、RAID组状态、RAID组级别、RAID组支持的逻辑块大小、RAID组容量、RAID组Cache属性、RAID组后台任务状态及进度、以及RAID组物理盘列表及状态中的任一项或任几项的组合。

9.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为逻辑卷发现命令,则执行所述RAID管理命令对应的操作,包括:解析所述逻辑卷发现命令得到第四数据指针和待查询RAID组的标识符;

根据所述待查询RAID组的标识符将所述待查询RAID组的逻辑卷信息返回至所述第四数据指针指向的地址空间;

其中,所述逻辑卷信息包括逻辑卷标识符、逻辑卷容量、逻辑卷状态和逻辑卷绑定的NVM命名空间标识符中的任一项或任几项的组合。

10.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为逻辑卷绑定命令,则执行所述RAID管理命令对应的操作,包括:解析所述逻辑卷绑定命令得到待绑定逻辑卷ID;

确定空闲的第一命名空间,并向所述主机发送命名空间绑定通知,以便所述主机发送待绑定命名空间查询命令;其中,所述待绑定命名空间查询命令用于获取待绑定的命名空间的标识符;

若接收到所述待绑定命名空间查询命令,则将所述第一命名空间的标识符上传至所述主机,以便所述主机将所述第一命名空间的标识符与所述待绑定逻辑卷ID进行绑定。

11.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为逻辑卷解绑命令,则执行所述RAID管理命令对应的操作,包括:解析所述逻辑卷解绑命令得到待解绑逻辑卷ID;

判断所述待解绑逻辑卷ID对应的逻辑卷上所有进行中的IO操作是否均执行完毕;

若是,则向所述主机发送命名空间解绑通知,以便所述主机发送待解绑命名空间查询命令;其中,所述待解绑命名空间查询命令用于获取待解绑的命名空间的标识符;

若接收到所述待解绑命名空间查询命令,则将第二命名空间的标识符上传至所述主机,以便所述主机解除所述第二命名空间的标识符与所述待解绑逻辑卷ID的绑定;其中,所述第二命名空间为与所述待解绑逻辑卷ID对应的逻辑卷绑定的命名空间。

12.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为命名空间IO读写命令,则执行所述RAID管理命令对应的操作,包括:确定所述命名空间IO读写命令对应的目标命名空间,并确定与所述目标命名空间绑定的目标逻辑卷;

将所述命名空间IO读写命令中对所述目标命名空间的操作参数转换为对所述目标逻辑卷的操作参数;其中,所述操作参数包括逻辑块地址和逻辑块数;

按照所述目标逻辑卷的操作参数对所述目标逻辑卷执行IO读写操作。

13.根据权利要求4所述RAID磁盘阵列管理方法,其特征在于,若所述RAID管理命令为异步事件上报命令,则执行所述RAID管理命令对应的操作,包括:检测RAID管理事件,并确定RAID管理事件对应的事件类型;

向所述主机上报所述事件类型对应的状态码,以便所述主机向所述RAID控制器获取所述RAID管理事件的相关数据。

14.一种RAID磁盘阵列管理系统,其特征在于,应用于与RAID控制器连接的主机,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理系统包括:命令构造模块,用于利用所述RAID管理工具构造RAID管理命令,并将所述RAID管理命令封装为SQE格式;

命令下发模块,用于利用所述NVMe设备驱动将封装后的所述RAID管理命令通过NVMe主机接口写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。

15.一种RAID磁盘阵列管理系统,其特征在于,应用于与主机连接的RAID控制器,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:命令读取模块,用于接收到门铃寄存器发送的通知信息后,从Admin SQ队列中读取所述主机下发的RAID管理命令;其中,所述主机下发所述RAID管理命令的过程包括:利用所述RAID管理工具构造所述RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令通过NVMe主机接口写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息;

命令执行模块,用于执行所述RAID管理命令对应的操作。

16.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至13任一项所述RAID磁盘阵列管理方法的步骤。

17.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至13任一项所述RAID磁盘阵列管理方法的步骤。

说明书 :

RAID磁盘阵列管理方法、系统、电子设备及存储介质

技术领域

[0001] 本申请涉及存储管理技术领域,特别涉及一种RAID磁盘阵列管理方法、系统、电子设备及存储介质。

背景技术

[0002] RAID(Redundant Array of Independent Disks)即磁盘冗余阵列,RAID将多个磁盘设备组合起来,成为一个或多个存储阵列组,目的为提升性能、增加冗余以保护数据。传统上RAID卡实现为计算机系统上的PCIe设备,通过PCIe总线连接到主机,并在命令层面上使用SCSI接口。但是SCSI接口仅定义了应用层,即命令的交互方式,并未具体定义主机接口层上的协议,这部分内容留给了RAID设备制造厂商定义实现。由于私有的主机接口和管理命令的存在,导致了各个厂商实现的RAID控制器在主机驱动、管理工具上互相不兼容。RAID控制器厂商除了要做好基础的RAID业务外,还需要花费精力维主机接口定义、主机驱动、RAID管理工具等实现。为整个RAID控制器芯片开发带来了更高的开发成本和开发周期。NVMe(Non‑Volatile Memory express,一种基于PCIe的存储设备规范)规范是一种的高速固态硬盘存储设备接口规范,其特点是高性能,低延迟,接口简洁,可扩展性好。在主机侧驱动和应用软件上有良好的开源软件支持,使用NVMe接口实现RAID控制器,可以减少主机侧软件的开发成本。但NVMe规范仅定义了基本的存储设备接口,没有包括RAID相关的概念。
[0003] 因此,如何在NVMe接口上实现RAID磁盘阵列管理是本领域技术人员目前需要解决的技术问题。

发明内容

[0004] 本申请的目的是提供一种RAID磁盘阵列管理方法、一种RAID磁盘阵列管理系统、一种电子设备及一种存储介质,能够在NVMe接口上实现RAID磁盘阵列管理。
[0005] 为解决上述技术问题,本申请提供一种RAID磁盘阵列管理方法,应用于与RAID控制器连接的主机,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:
[0006] 利用所述RAID管理工具构造RAID管理命令,并将所述RAID管理命令封装为SQE格式;
[0007] 利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。
[0008] 可选的,还包括:
[0009] 若所述NVMe设备驱动接收到中断通知,则读取Admin CQ队列中的命令完成队列条目,并将所述命令完成队列条目返回至所述RAID管理工具;
[0010] 其中,所述命令完成队列条目由所述RAID控制器根据所述RAID管理命令的执行结果构造得到。
[0011] 可选的,利用所述RAID管理工具构造RAID管理命令,包括:
[0012] 利用所述RAID管理工具构造包括命令操作码、命令参数和数据指针的RAID管理命令;
[0013] 其中,所述RAID控制器用于将执行所述RAID管理命令后得到的待返回数据存储至所述数据指针指向的地址空间。
[0014] 本申请还提供了一种RAID磁盘阵列管理方法,应用于与主机连接的RAID控制器,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:
[0015] 接收到门铃寄存器发送的通知信息后,从Admin SQ队列中读取所述主机下发的RAID管理命令;其中,所述主机下发所述RAID管理命令的过程包括:利用所述RAID管理工具构造所述RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息;
[0016] 执行所述RAID管理命令对应的操作。
[0017] 可选的,在对所述RAID磁盘阵列执行所述RAID管理命令对应的操作之后,还包括:
[0018] 根据所述RAID管理命令的执行结果构造命令完成队列条目;
[0019] 将所述命令完成队列条目写入所述主机的Admin CQ队列,并向所述NVMe设备驱动发送中断通知,以便所述NVMe设备读取所述Admin CQ队列中的所述命令完成队列条目并将所述命令完成队列条目返回至所述RAID管理工具。
[0020] 可选的,若所述RAID管理命令为RAID控制器发现命令,则执行所述RAID管理命令对应的操作,包括:
[0021] 解析所述RAID控制器发现命令得到第一数据指针;
[0022] 汇总所述RAID控制器的特性数据,并将所述RAID控制器的特性数据返回至所述第一数据指针指向的地址空间;
[0023] 其中,所述RAID控制器的特性数据包括就绪状态、固件版本号、序列号、支持的RAID级别列表、每种RAID级别支持的物理盘数列表、支持的RAID数据排列方式列表、支持的RAID级别迁移类型列表、支持的物理盘类型列表、支持的数据Cache特性、支持的掉电保护特征和备用电源状态中的任一项或任几项的组合;所述数据Cache特性包括Cache容量和/或Cache策略类型。
[0024] 可选的,若所述RAID管理命令为物理盘发现命令,则执行所述RAID管理命令对应的操作,包括:
[0025] 解析所述物理盘发现命令得到第二数据指针;
[0026] 获取所述RAID磁盘阵列中所有物理盘的物理盘列表数据结构,并将所述物理盘列表数据结构返回至所述第二数据指针指向的地址空间;其中,所述物理盘列表数据结构包括每一所述物理盘的标识符;
[0027] 或,确定所述物理盘发现命令对应的目标物理盘,将所述目标物理盘的物理盘信息返回至所述第二数据指针指向的地址空间;其中,所述物理盘信息包括所述目标物理盘的标识符、物理盘状态、物理盘类型、物理盘支持的逻辑块大小、物理盘容量和物理盘拓扑信息中的任一项或任几项的组合。
[0028] 可选的,若所述RAID管理命令为RAID组发现命令,则执行所述RAID管理命令对应的操作,包括:
[0029] 解析所述RAID组发现命令得到第三数据指针;
[0030] 获取所述RAID磁盘阵列中所有RAID组的RAID组列表数据结构,并将所述RAID组列表数据结构返回至所述第三数据指针指向的地址空间;其中,所述RAID组列表数据结构包括每一所述RAID组的标识符;
[0031] 或,确定所述RAID组发现命令对应的目标RAID组,将所述目标RAID组的RAID组信息返回至所述第三数据指针指向的地址空间;其中,所述RAID组信息包括所述目标RAID组的标识符、RAID组状态、RAID组级别、RAID组支持的逻辑块大小、RAID组容量、RAID组Cache属性、RAID组后台任务状态及进度、以及RAID组物理盘列表及状态中的任一项或任几项的组合。
[0032] 可选的,若所述RAID管理命令为逻辑卷发现命令,则执行所述RAID管理命令对应的操作,包括:
[0033] 解析所述逻辑卷发现命令得到第四数据指针和待查询RAID组的标识符;
[0034] 根据所述待查询RAID组的标识符将所述待查询RAID组的逻辑卷信息返回至所述第四数据指针指向的地址空间;
[0035] 其中,所述逻辑卷信息包括逻辑卷标识符、逻辑卷容量、逻辑卷状态和逻辑卷绑定的NVM命名空间标识符中的任一项或任几项的组合。
[0036] 可选的,若所述RAID管理命令为逻辑卷绑定命令,则执行所述RAID管理命令对应的操作,包括:
[0037] 解析所述逻辑卷绑定命令得到待绑定逻辑卷ID;
[0038] 确定空闲的第一命名空间,并向所述主机发送命名空间绑定通知,以便所述主机发送待绑定命名空间查询命令;其中,所述待绑定命名空间查询命令用于获取待绑定的命名空间的标识符;
[0039] 若接收到所述待绑定命名空间查询命令,则将所述第一命名空间的标识符上传至所述主机,以便所述主机将所述第一命名空间的标识符与所述待绑定逻辑卷ID进行绑定。
[0040] 可选的,若所述RAID管理命令为逻辑卷解绑命令,则执行所述RAID管理命令对应的操作,包括:
[0041] 解析所述逻辑卷解绑命令得到待解绑逻辑卷ID;
[0042] 判断所述待解绑逻辑卷ID对应的逻辑卷上所有进行中的IO操作是否均执行完毕;
[0043] 若是,则向所述主机发送命名空间解绑通知,以便所述主机发送待解绑命名空间查询命令;其中,所述待解绑命名空间查询命令用于获取待解绑的命名空间的标识符;
[0044] 若接收到所述待解绑命名空间查询命令,则将第二命名空间的标识符上传至所述主机,以便所述主机解除所述第二命名空间的标识符与所述待解绑逻辑卷ID的绑定;其中,所述第二命名空间为与所述待解绑逻辑卷ID对应的逻辑卷绑定的命名空间。
[0045] 可选的,若所述RAID管理命令为命名空间IO读写命令,则执行所述RAID管理命令对应的操作,包括:
[0046] 确定所述命名空间IO读写命令对应的目标命名空间,并确定与所述目标命名空间绑定的目标逻辑卷;
[0047] 将所述命名空间IO读写命令中对所述目标命名空间的操作参数转换为对所述目标逻辑卷的操作参数;其中,所述操作参数包括逻辑块地址和逻辑块数;
[0048] 按照所述目标逻辑卷的操作参数对所述目标逻辑卷执行IO读写操作。
[0049] 可选的,若所述RAID管理命令为异步事件上报命令,则执行所述RAID管理命令对应的操作,包括:
[0050] 检测RAID管理事件,并确定RAID管理事件对应的事件类型;
[0051] 向所述主机上报所述事件类型对应的状态码,以便所述主机向所述RAID控制器获取所述RAID管理事件的相关数据。
[0052] 本申请还提供了一种RAID磁盘阵列管理系统,应用于与RAID控制器连接的主机,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理系统包括:
[0053] 命令构造模块,用于利用所述RAID管理工具构造RAID管理命令,并将所述RAID管理命令封装为SQE格式;
[0054] 命令下发模块,用于利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。
[0055] 本申请还提供了一种RAID磁盘阵列管理系统,应用于与主机连接的RAID控制器,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:
[0056] 命令读取模块,用于接收到门铃寄存器发送的通知信息后,从Admin SQ队列中读取所述主机下发的RAID管理命令;其中,所述主机下发所述RAID管理命令的过程包括:利用所述RAID管理工具构造所述RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息;
[0057] 命令执行模块,用于执行所述RAID管理命令对应的操作。
[0058] 本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述RAID磁盘阵列管理方法执行的步骤。
[0059] 本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述RAID磁盘阵列管理方法执行的步骤。
[0060] 本申请提供了一种RAID磁盘阵列管理方法,应用于与RAID控制器连接的主机,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:利用所述RAID管理工具构造RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。
[0061] 本申请提供了与RAID控制器连接的主机,该主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,在主机设备需要管理与RAID控制器连接的RAID磁盘阵列时可以利用RAID管理工具构造RAID管理命令,并对RAID管理命令进行封装。NVMe设备驱动可以将RAID管理工具封装的RAID管理命令写入RAID控制器的Admin SQ队列。RAID控制器可以利读取并执行Admin SQ队列中的RAID管理命令。上述方案中RAID控制器和主机之间采用NVMe标准定义的接口,主机侧加载NVMe驱动程序。RAID控制器与主机之间NVMe定义的命令完成对RAID磁盘阵列的管理操作。本方案能够在NVMe接口上实现RAID磁盘阵列管理。本申请同时还提供了一种RAID磁盘阵列管理系统、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。

附图说明

[0062] 为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0063] 图1为本申请实施例所提供的一种RAID磁盘阵列管理方法的流程图;
[0064] 图2为本申请实施例所提供的一种基于NVMe主机接口的RAID控制器结构示意图;
[0065] 图3为本申请实施例所提供的另一种RAID磁盘阵列管理方法的流程图;
[0066] 图4为本申请实施例所提供的一种RAID管理命令操作流程图;
[0067] 图5为本申请实施例提供的一种RAID管理命令SQE结构图;
[0068] 图6为本申请实施例所提供的一种RAID管理命令CQE结构图;
[0069] 图7为本申请实施例所提供的一种RAID控制器特性数据结构图;
[0070] 图8为本申请实施例所提供的一种物理盘数据列表结构图;
[0071] 图9为本申请实施例所提供的一种物理盘,RAID组和逻辑卷关系示意图;
[0072] 图10为本申请实施例所提供的一种RAID组列表数据结构图;
[0073] 图11为本申请实施例所提供的一种逻辑卷与Namespace绑定流程图;
[0074] 图12为本申请实施例所提供的一种逻辑卷与Namespace解除绑定流程图;
[0075] 图13为本申请实施例所提供的一种Namesapce IO操作到逻辑卷IO操作转换流程图;
[0076] 图14为本申请实施例所提供的一种RAID事件主动上报流程图;
[0077] 图15为本申请实施例所提供的一种RAID磁盘阵列管理系统的结构示意图。

具体实施方式

[0078] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0079] 下面请参见图1,图1为本申请实施例所提供的一种RAID磁盘阵列管理方法的流程图,该管理方法可以应用于与RAID控制器连接的主机,所述RAID控制器与RAID磁盘阵列连接,RAID磁盘阵列管理的具体步骤可以包括:
[0080] S101:利用所述RAID管理工具构造RAID管理命令;
[0081] 请参见图2,图2为本申请实施例所提供的一种基于NVMe主机接口的RAID控制器结构示意图,主机包括基于NVMe接口的RAID管理工具、NVMe设备驱动、PCIe(高速串行计算机扩展总线标准)总线驱动、PCIe Root Complex(PCIe根复合体),RAID控制器包括基于NVMe协议的管理接口、NVMe设备接口、PCIe Endpoint、RAID控制器及硬盘接口逻辑(SAS/SATA/NVMe),图2中的Disk1、Disk2、……、DiskN为RAID磁盘阵列。主机可以通过NVMe主机接口向RAID控制器发送NVMe RAID管理命令,主机与RAID控制器通过PCIe总线连接。
[0082] 本实施例中的RAID控制器和主机之间采用NVMe标准定义的接口,主机侧加载标准的NVMe驱动程序。RAID控制器与主机之间NVMe定义的标准命令完成存储设备的基本操作,包括设备发现和IO传输等操作。
[0083] 在本步骤之前还可以存在接收用户操作请求的操作,进而利用RAID管理工具构造用户操作请求对应的RAID管理命令。具体的,本步骤可以利用所述RAID管理工具构造包括命令操作码、命令参数和数据指针的RAID管理命令;其中,所述RAID控制器可以将执行所述RAID管理命令后得到的待返回数据存储至所述数据指针指向的地址空间,RAID控制器还可以根据命令操作码和命令参数执行RAID管理命令对应的操作。
[0084] S102:将所述RAID管理命令封装为SQE格式;
[0085] 其中,在构建RAID管理命令之后,还可以利用RAID管理工具将RAID管理命令封装为SQE格式的命令。SQE(Submission Queue Entry)即命令提交队列条目,每一个命令提交队列条目对应一个主机的NVMe。
[0086] S103:利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。
[0087] 其中,RAID管理工具可以将封装后的RAID管理命令传输至NVMe设备驱动,利用NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列。SQ(Submission Queue)即命令提交队列。Admin SQ队列是NVMe标准所定义的一种队列,用于主机向NVMe控制器提交命令。
[0088] 在将RAID管理命令写入Admin SQ队列之后,还可以通过写门铃寄存器向所述RAID控制器发送通知信息,RAID控制器在接收到所述通知信息后可以将Admin SQ队列读取到本地并执行所述Admin SQ队列中的所述RAID管理命令。Admin SQ队列可以为主机内部的队列。
[0089] 本实施例提供了与RAID控制器连接的主机,该主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,在主机设备需要管理与RAID控制器连接的RAID磁盘阵列时可以利用RAID管理工具构造RAID管理命令,并对RAID管理命令进行封装。NVMe设备驱动可以将RAID管理工具封装的RAID管理命令写入RAID控制器的Admin SQ队列。RAID控制器可以利读取并执行Admin SQ队列中的RAID管理命令。上述方案中RAID控制器和主机之间采用NVMe标准定义的接口,主机侧加载NVMe驱动程序。RAID控制器与主机之间NVMe定义的命令完成对RAID磁盘阵列的管理操作。本方案能够在NVMe接口上实现RAID磁盘阵列管理。
[0090] 作为一种可行的实施方式,若所述NVMe设备驱动接收到中断通知,则读取Admin CQ队列中的命令完成队列条目,并将所述命令完成队列条目返回至所述RAID管理工具;其中,所述命令完成队列条目由所述RAID控制器根据所述RAID管理命令的执行结果构造得到。
[0091] 下面请参见图3,图3为本申请实施例所提供的另一种RAID磁盘阵列管理方法的流程图,应用于与主机连接的RAID控制器,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,可以包括以下步骤:
[0092] S301:接收到门铃寄存器发送的通知信息;
[0093] S302:从Admin SQ队列中读取所述主机下发的RAID管理命令;
[0094] 其中,所述主机下发所述RAID管理命令的过程包括:利用所述RAID管理工具构造所述RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息;
[0095] S303:执行所述RAID管理命令对应的操作。
[0096] 上述RAID管理命令可以包括发现类命令、磁盘管理类命令和任务管理类命令;发现类命令包括RAID控制器发现命令、物理盘发现命令、RAID组发现命令和逻辑卷发现命令;磁盘管理类命令包括RAID组创建和删除命令、逻辑卷创建和删除命令、将逻辑卷与Namespace绑定和解除绑定的命令;任务管理类命令包括构、回拷、扩容、一致性校验、磁盘巡检等后台任务的开始与停止、参数配置等命令。Namespace即命名空间,命名空间是NVMe设备上的存储设备逻辑单元,每个命名空间对主机呈现为一个存储设备。类似于SCSI设备的LUN。
[0097] 本实施例提供了与主机连接的RAID控制器,该主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,在主机设备需要管理与RAID控制器连接的RAID磁盘阵列时可以利用RAID管理工具构造RAID管理命令,并对RAID管理命令进行封装。NVMe设备驱动可以将RAID管理工具封装的RAID管理命令写入RAID控制器的Admin SQ队列。RAID控制器可以利读取并执行Admin SQ队列中的RAID管理命令。上述方案中RAID控制器和主机之间采用NVMe标准定义的接口,主机侧加载NVMe驱动程序。RAID控制器与主机之间NVMe定义的命令完成对RAID磁盘阵列的管理操作。本方案能够在NVMe接口上实现RAID磁盘阵列管理。
[0098] 进一步的,在对所述RAID磁盘阵列执行所述RAID管理命令对应的操作之后,还可以根据所述RAID管理命令的执行结果构造命令完成队列条目;将所述命令完成队列条目写入所述主机的Admin CQ队列,并向所述NVMe设备驱动发送中断通知,以便所述NVMe设备读取所述Admin CQ队列中的所述命令完成队列条目并将所述命令完成队列条目返回至所述RAID管理工具。CQ(Completion Queue,命令完成队列)NVMe标准所定义的一种队列用于NVMe控制器向主机上报命令完成;CQE(Completion Queue Entry:命令完成队列条目)每一个条目对应一个NVMe控制器上报的命令完成数据结构。NVMe控制器对主机下达的每个命令,完成后都会在CQ中上报CQE。
[0099] 作为一种可行的实施方式,若所述RAID管理命令为RAID控制器发现命令,则RAID控制器执行RAID控制器发现命令的过程包括:解析所述RAID控制器发现命令得到第一数据指针;汇总所述RAID控制器的特性数据,并将所述RAID控制器的特性数据返回至所述第一数据指针指向的地址空间。
[0100] 其中,所述RAID控制器的特性数据包括就绪状态、固件版本号、序列号、支持的RAID级别列表、每种RAID级别支持的物理盘数列表、支持的RAID数据排列方式列表、支持的RAID级别迁移类型列表、支持的物理盘类型列表、支持的数据Cache特性、支持的掉电保护特征和备用电源状态中的任一项或任几项的组合;所述数据Cache特性包括Cache容量和/或Cache策略类型。
[0101] 作为一种可行的实施方式,若所述RAID管理命令为物理盘发现命令,则执行物理盘发现命令的过程包括:解析所述物理盘发现命令得到第二数据指针;获取所述RAID磁盘阵列中所有物理盘的物理盘列表数据结构,并将所述物理盘列表数据结构返回至所述第二数据指针指向的地址空间;其中,所述物理盘列表数据结构包括每一所述物理盘的标识符;或,确定所述物理盘发现命令对应的目标物理盘,将所述目标物理盘的物理盘信息返回至所述第二数据指针指向的地址空间;其中,所述物理盘信息包括所述目标物理盘的标识符、物理盘状态、物理盘类型、物理盘支持的逻辑块大小、物理盘容量和物理盘拓扑信息中的任一项或任几项的组合。
[0102] 作为一种可行的实施方式,若所述RAID管理命令为RAID组发现命令,则执行RAID组发现命令的过程包括:解析所述RAID组发现命令得到第三数据指针;获取所述RAID磁盘阵列中所有RAID组的RAID组列表数据结构,并将所述RAID组列表数据结构返回至所述第三数据指针指向的地址空间;其中,所述RAID组列表数据结构包括每一所述RAID组的标识符;或,确定所述RAID组发现命令对应的目标RAID组,将所述目标RAID组的RAID组信息返回至所述第三数据指针指向的地址空间;其中,所述RAID组信息包括所述目标RAID组的标识符、RAID组状态、RAID组级别、RAID组支持的逻辑块大小、RAID组容量、RAID组Cache属性、RAID组后台任务状态及进度、以及RAID组物理盘列表及状态中的任一项或任几项的组合。
[0103] 作为一种可行的实施方式,若所述RAID管理命令为逻辑卷发现命令,则执行逻辑卷发现命令的过程包括:解析所述逻辑卷发现命令得到第四数据指针和待查询RAID组的标识符;根据所述待查询RAID组的标识符将所述待查询RAID组的逻辑卷信息返回至所述第四数据指针指向的地址空间;其中,所述逻辑卷信息包括逻辑卷标识符、逻辑卷容量、逻辑卷状态和逻辑卷绑定的NVM命名空间标识符中的任一项或任几项的组合。
[0104] 作为一种可行的实施方式,若所述RAID管理命令为逻辑卷绑定命令,则执行逻辑卷绑定命令的过程包括:解析所述逻辑卷绑定命令得到待绑定逻辑卷ID;确定空闲的第一命名空间,并向所述主机发送命名空间绑定通知,以便所述主机发送待绑定命名空间查询命令;其中,所述待绑定命名空间查询命令用于获取待绑定的命名空间的标识符;若接收到所述待绑定命名空间查询命令,则将所述第一命名空间的标识符上传至所述主机,以便所述主机将所述第一命名空间的标识符与所述待绑定逻辑卷ID进行绑定。空闲的第一命名空间指没有与逻辑卷绑定的命名空间。
[0105] 作为一种可行的实施方式,若所述RAID管理命令为逻辑卷解绑命令,则执行逻辑卷解绑命令的过程包括:解析所述逻辑卷解绑命令得到待解绑逻辑卷ID;判断所述待解绑逻辑卷ID对应的逻辑卷上所有进行中的IO操作是否均执行完毕;若是,则向所述主机发送命名空间解绑通知,以便所述主机发送待解绑命名空间查询命令;其中,所述待解绑命名空间查询命令用于获取待解绑的命名空间的标识符;若接收到所述待解绑命名空间查询命令,则将第二命名空间的标识符上传至所述主机,以便所述主机解除所述第二命名空间的标识符与所述待解绑逻辑卷ID的绑定;其中,所述第二命名空间为与所述待解绑逻辑卷ID对应的逻辑卷绑定的命名空间。
[0106] 作为一种可行的实施方式,若所述RAID管理命令为命名空间IO读写命令,则执行命名空间IO读写命令的过程包括:确定所述命名空间IO读写命令对应的目标命名空间,并确定与所述目标命名空间绑定的目标逻辑卷;将所述命名空间IO读写命令中对所述目标命名空间的操作参数转换为对所述目标逻辑卷的操作参数;其中,所述操作参数包括逻辑块地址和逻辑块数;按照所述目标逻辑卷的操作参数对所述目标逻辑卷执行IO读写操作。
[0107] 作为一种可行的实施方式,若所述RAID管理命令为异步事件上报命令,则执行异步事件上报命令的过程包括:检测RAID管理事件,并确定RAID管理事件对应的事件类型;向所述主机上报所述事件类型对应的状态码,以便所述主机向所述RAID控制器获取所述RAID管理事件的相关数据。相关数据即RAID管理事件的详细数据,如发生事件、发生位置等。
[0108] 下面通过在实际应用中的实施例说明上述实施例描述的流程。
[0109] 本领域常规的RAID卡连接到主机时,在RAID控制器侧,厂商自定义主机接口,用于封装上层的SCSI命令及响应数包,在PCIe总线上传输;厂商还自定义RAID管理接口,用于传输RAID管理命令和响应。在主机上,需要厂商自定义RAID控制器驱动和RAID管理工具。RAID控制器驱动,用于侦测、初始化和配置RAID控制器,为主机提供RAID存储设备的IO接口,并为RAID管理工具提供操作接口。厂商自定义RAID管理工具,用于和RAID控制器交互RAID管理相关的命令。由于这些私有的主机接口和管理命令的存在,导致了各个厂商实现的RAID控制器在主机驱动、管理工具上互相不兼容。RAID控制器厂商除了要做好基础的RAID业务外,还需要花费精力维主机接口定义、主机驱动、RAID管理工具等实现。为整个RAID控制器芯片开发带来了更高的开发成本和开发周期。
[0110] 为了解决上述技术问题,本申请提供一种RAID管理接口及RAID管理方案,本实施例提供了一种遵循NVMe规范定义,从主机发送RAID管理命令到RAID控制器,和RAID控制器处理完命令后向主机返回命令执行结果的方法。本实施例提供了基于NVMe接口的RAID控制器发现方法。通过该方法,主机可以获取该NVMe设备是一个RAID控制器,并发现RAID控制器支持的RAID功能特性;发现RAID控制下所连接的物理盘信息;发现RAID控制器下物理盘所组成的RAID组信息,发现RAID组上划分出的逻辑存储卷信息。本实施例在RAID控制器下管理的物理盘组成RAID组后,在RAID组中建立的逻辑存储卷通过NVMe协议定义的Namespace映射到主机的方法和流程。本实施例还提供了逻辑存储卷与Namespace分离和删除的流程。本实施例中RAID控制器通过NVMe主机接口向主机主动上报RAID管理事件的方法流程,具体包括物理盘状态变化,RAID组状态变化和逻辑存储卷状态变化。
[0111] 本实施例中RAID管理接口通过对NVMe接口协议的扩展实现,这些命令符合NVMe标准定义的命令格式,遵循NVMe命令下发所需的队列和完成机制。主机侧的RAID管理工具通过驱动提供的接口向设备发出RAID管理命令,RAID控制器接收到命令后处理并向主机返回命令的执行结果。
[0112] 请参见图4,图4为本申请实施例所提供的一种RAID管理命令操作流程图,具体可以包括以下步骤:
[0113] S401:RAID管理工具构造RAID管理命令,并将命令封装为SQE格式,发送给主机上的NVMe设备驱动;
[0114] S402:主机上的NVMe设备驱动将的RAID管理命令SQE放入RAID控制器Admin SQ队列;
[0115] S403:主机上的NVMe设备驱动写RAID控制器Admin SQ队列对应的Doorbell(门铃寄存器),通知RAID控制器有新的命令;
[0116] Doorbell寄存器:NVMe控制器上的一种寄存器,主机写这个寄存用于通知NVMe控制器有新的CQE被提交到CQ队列。
[0117] S404:RAID控制器将RAID管理命令SQE从Admin SQ队列中搬移到本地;
[0118] S405:RAID控制器解析并执行RAID管理命令;
[0119] S406:如果有数据需要返回给主机,则RAID控制器将数据写入SQE数据指针指向的地址空间;
[0120] S407:RAID控制器根据命令执行结果构造CQE,并放入到Admin CQ队列;RAID控制器可选的通过中断通知主机有新的CQE;
[0121] S408:主机上的NVMe设备驱动读取Admin CQ队列中的CQE,并返回给RAID管理工具。
[0122] 本实施例所涉及的扩展的RAID管理命令属于NVMe标准所定义的Admin命令类型,命令的操作码属于NVMe标准所规定的厂商自定操作码(Combined Opcode)范围,其值为C0h到FFh。
[0123] 在上述RAID管理命令操作流程中,构造的RAID管理命令SQE(即SQE格式的RAID管理命令)包含RAID管理命令操作码和RAID命令参数。RAID控制器根据SQE中不同的操作码和参数执行具体的RAID管理命令操作。数据指针是可选项,它指向主机内存中一块由RAID管理工具分配的地址空间,如果在命令执行中RAID控制器需要项主机返回数据,则将数据写入到此指针指向的地址空间中。
[0124] 请参见图5,图5为本申请实施例提供的一种RAID管理命令SQE结构图。RAID管理命令SQE包括RAID管理命令操作码、RAID命令参数和数据指针,数据指针指向数据缓冲区。
[0125] RAID控制器执行完毕命令后通过CQE向主机返回命令执行结果,结果通过CQE中的命令状态码返回给主机。请参见图6,图6为本申请实施例所提供的一种RAID管理命令CQE结构图,RAID管理命令CQE中包括RAID管理命令状态码。
[0126] RAID控制器发现方法是主机获取RAID控制器信息的流程和方法,这些方法均通过实施方法1所述的RAID管理命令流程完成。RAID控制器发现方法包括以下4种命令类型:
[0127] (1)RAID控制器发现命令的处理流程:主机通过RAID控制器发现命令获取RAID控制器特性数据,当RAID控制器收到本命令后,将RAID控制器特性数据写入到SQE中的数据指针指向的地址空间。RAID控制器特性数所包含的内容。主机在获取此数据后,就可以根据这些数据获取RAID控制器所支持的RAID特性。请参见图7,图7为本申请实施例所提供的一种RAID控制器特性数据结构图,所述RAID控制器的特性数据包括就绪状态、固件版本号、序列号、支持的RAID级别列表、每种RAID级别支持的物理盘数列表、支持的RAID数据排列方式列表、支持的RAID级别迁移类型列表、支持的物理盘类型列表、支持的数据Cache特性(Cache容量和Cache策略类型)、支持的掉电保护特征和备用电源状态。
[0128] (2)物理盘发现命令的处理流程:如图 2所示,RAID控制器下连接了一系列的物理盘Disk1到N,这些物理盘由RAID控制管理,主机无法直接访问这些盘。因此需要专用的物理盘发现命令来获取这些盘的信息。
[0129] 物理盘发现命令有两种类型,第一种是获取物理盘的列表,当RAID控制器收到本命令后,物理盘列表数据结构写入到SQE中的数据指针指向的地址空间。请参见图8,图8为本申请实施例所提供的一种物理盘数据列表结构图,物理盘数据列表结构包括物理盘1标识符、物理盘2标识符、……、物理盘N标识符。
[0130] 第二种是获取指定的物理盘信息。主机在SQE中的RAID管理命令参数中指明目标物理盘的标识符,RAID控制器收到此命令后,将物理盘信息数据结构写入到SQE中的数据指针指向的地址空间。物理盘信息包括以下内容:物理盘标识符、物理盘状态(正常/故障)、物理盘类型(SAS/SATA/NVMe,HDD/SDD)、物理盘支持的逻辑块大小、物理盘容量、物理盘拓扑信息(盘连接的控制器、总线地址、端口号等)。
[0131] (3)RAID组发现命令的处理流程:请参见图9,图9为本申请实施例所提供的一种物理盘,RAID组和逻辑卷关系示意图。如图 9所示,在RAID控制器下有6个物理盘,盘1到4组成了RAID组1,盘5和6组成了RAID组2。RAID组发现命令用于获取RAID控制器管理的RAID组信息,其中包括每个RAID组和物理盘之间的关系。
[0132] RAID组发现命令有两种类型,第一种是RAID组的列表,当RAID控制器收到本命令后,RAID组列表数据结构写入到SQE中的数据指针指向的地址空间。请参见图10,图10为本申请实施例所提供的一种RAID组列表数据结构图,RAID组列表数据结构包括:RAID组1标识符、RAID组2标识符、……、RAID组N标识符。
[0133] 第二种是获取指定的RAID组信息。主机在SQE中的RAID管理命令参数中指明目标RAID组的标识符,RAID控制器收到此命令后,将RAID组信息数据结构写入到SQE中的数据指针指向的地址空间。RAID组信息包括以下内容:RAID组标识符、RAID组状态(正常/降级/故障)、 RAID组级别、RAID组逻辑块大小、RAID组容量、RAID Cache属性(包括Cache配额和容量)、RAID组后台任务状态及进度(重构/回拷/迁移/扩容)、RAID组物理盘列表及状态,列表中的每一项中包含一个物理盘标识符和物理盘状态。
[0134] (4)逻辑卷发现命令的处理流程:如图9所示,一个RAID组可以划分为多个逻辑卷。主机使用逻辑卷发现命令获取指定RAID组上的逻辑卷信息。主机在SQE中的RAID管理命令参数中指明目标RAID组的标识符。RAID控制器收到此命令后,将特定RAID组上的逻辑卷信息数据结构写入到SQE中的数据指针指向的地址空间。逻辑卷信息包括RAID组上所有逻辑卷列表,表中每一项内容包括了逻辑卷的信息,有以下内容:逻辑卷标识符、逻辑卷容量、逻辑卷状态、逻辑卷绑定的NVMe Namespace标识符
[0135] RAID组上的逻辑卷对主机的呈现方式和IO操作方式。如图 9所示为例,在RAID控制器下有6个物理盘,盘1到4组成了RAID组1,盘5和6组成了RAID组2。其中RAID组1被划分成了三个逻辑卷,RAID组2划分了一个逻辑卷。
[0136] 请参见图10,图10为本申请实施例所提供的一种RIAD逻辑卷与NVMe Namespace绑定关系示意图。逻辑卷分为两种状态,对主机可见和对主机不可见。对主机可见的逻辑卷通过绑定到NVMe Namespace上实现。对主机不可见的逻辑卷不绑定到NVMe Namespace。如图10所示,逻辑卷1绑定了Namespace1,逻辑卷3绑定到了Namespace2,逻辑卷4绑定到了Namespace3,这三个逻辑卷主机可见。逻辑卷2没有绑定到Namespace,因此对主机不可见。
[0137] 请参见图11,图11为本申请实施例所提供的一种逻辑卷与Namespace绑定流程图,具体可以包括以下步骤:
[0138] S1101:RAID管理工具发出逻辑卷绑定命令,参数为逻辑卷ID。
[0139] S1102:RIAD控制器收到逻辑卷绑定命令,选择一个空闲的Namespace用于和逻辑卷绑定。
[0140] S1103:RAID管控制器项主机报告Namespace有变化。
[0141] S1104:主机NVMe驱动程序发送命令获取变化的Namespace列表。
[0142] S1105:RAID控制器上报新绑定的Namespace标识符。
[0143] S1106:主机开始在新增加的Namespace上做IO操作,绑定完成。
[0144] 请参见图12,图12为本申请实施例所提供的一种逻辑卷与Namespace解除绑定流程图,具体可以包括以下步骤:
[0145] S1201:RAID管理工具发出逻辑卷绑解除定命令,参数为逻辑卷ID。
[0146] S1202:RIAD控制器收到逻辑卷解除绑定命令,并等待该逻辑卷上所有进行中的IO完成。
[0147] S1203:RAID管控制器向主机报告Namespace有变化。
[0148] S1204:主机NVMe驱动程序发送命令获取变化的Namespace列表。
[0149] S1205:RAID控制器上报解除绑定的Namespace为非活动状态。
[0150] S1206:主机NVMe驱动程序移除Namespace。
[0151] 当逻辑卷与Namespace绑定后,主机可以向Namespace发出IO读写命令,IO命令中包含了读写的逻辑块起始地址和逻辑块数。RAID控制器通过将对Namespace读写的IO命令转换为对逻辑卷的读写命令完成主机的IO请求,流程如图13所示,图13为本申请实施例所提供的一种Namesapce IO操作到逻辑卷IO操作转换流程图,具体包括以下步骤:
[0152] S1301:RAID控制器收到对Namespace的IO操作。
[0153] S1302:RIAD控制器查找到与Namespace绑定的逻辑卷标识符。
[0154] S1303:RAID控制器将对Namespace IO操作参数中的逻辑块地址和逻辑块数转换为对逻辑卷的逻辑块地址和逻辑块数。
[0155] S1304:RAID控制器在逻辑卷上完成IO操作。
[0156] S1305:RAID控制器向主机返回IO操作的结果状态。
[0157] RAID组向主机主动通知有RAID时间的方法。在RAID控制器工作时,其下管理的物理盘、RAID组和逻辑卷,以及RAID控制管理的后台任务可能发生状态变化,需要向主机上报相关的信息状态,请参见图14,图14为本申请实施例所提供的一种RAID事件主动上报流程图,具体包括以下步骤:
[0158] S1401:主机下发异步事件上报命令。
[0159] S1402:RIAD控制器发现RAID管理事件。
[0160] S1403:RAID控制器完成主机的异步事件上报命令,并在状态码中上报事件类型。
[0161] S1404:主机下发命令获取RAID管理事件详细数据。
[0162] S1405:RAID控制器向主机返回RAID管理事件详细数据。
[0163] 通过本实施例提供的设计和方法步骤,可以实现在标准的NVMe接口上实现RAID管理所需的所有命令和流程。由于NVMe一个标准接口,已广泛应用在SSD存储设备上,因此有良好的主机端驱动程序及管理工具,结合本发明的步骤,可以用较小的代价实现主机上的RAID管理工具,因此对于RAID控制器开发来说,可以缩短与主机接口相关的开发周期,降低整体的开发成本,并减小开发的技术难度。
[0164] 请参见图15,图15为本申请实施例所提供的一种RAID磁盘阵列管理系统的结构示意图,该系统可以应用于与RAID控制器连接的主机,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理系统包括:
[0165] 命令构造模块1501,用于利用所述RAID管理工具构造RAID管理命令,并将所述RAID管理命令封装为SQE格式;
[0166] 命令下发模块1502,用于利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息,以便所述RAID控制器在接收到所述通知信息后执行所述Admin SQ队列中的所述RAID管理命令。
[0167] 本实施例提供了与RAID控制器连接的主机,该主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,在主机设备需要管理与RAID控制器连接的RAID磁盘阵列时可以利用RAID管理工具构造RAID管理命令,并对RAID管理命令进行封装。NVMe设备驱动可以将RAID管理工具封装的RAID管理命令写入RAID控制器的Admin SQ队列。RAID控制器可以利读取并执行Admin SQ队列中的RAID管理命令。上述方案中RAID控制器和主机之间采用NVMe标准定义的接口,主机侧加载NVMe驱动程序。RAID控制器与主机之间NVMe定义的命令完成对RAID磁盘阵列的管理操作。本方案能够在NVMe接口上实现RAID磁盘阵列管理。
[0168] 进一步的,还包括:
[0169] 命令完成队列条目获取模块,用于若所述NVMe设备驱动接收到中断通知,则读取Admin CQ队列中的命令完成队列条目,并将所述命令完成队列条目返回至所述RAID管理工具;其中,所述命令完成队列条目由所述RAID控制器根据所述RAID管理命令的执行结果构造得到。
[0170] 进一步的,命令构造模块1501利用所述RAID管理工具构造RAID管理命令的过程包括:利用所述RAID管理工具构造包括命令操作码、命令参数和数据指针的RAID管理命令;其中,所述RAID控制器用于将执行所述RAID管理命令后得到的待返回数据存储至所述数据指针指向的地址空间。
[0171] 本申请实施例还提供一种RAID磁盘阵列管理系统,应用于与主机连接的RAID控制器,所述主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,所述RAID控制器与RAID磁盘阵列连接,所述RAID磁盘阵列管理方法包括:
[0172] 命令读取模块,用于接收到门铃寄存器发送的通知信息后,从Admin SQ队列中读取所述主机下发的RAID管理命令;其中,所述主机下发所述RAID管理命令的过程包括:利用所述RAID管理工具构造所述RAID管理命令,并将所述RAID管理命令封装为SQE格式;利用所述NVMe设备驱动将封装后的所述RAID管理命令写入所述RAID控制器的Admin SQ队列,并通过门铃寄存器向所述RAID控制器发送通知信息;
[0173] 命令执行模块,用于执行所述RAID管理命令对应的操作。
[0174] 本实施例提供了与主机连接的RAID控制器,该主机包括基于NVMe接口的RAID管理工具和NVMe设备驱动,在主机设备需要管理与RAID控制器连接的RAID磁盘阵列时可以利用RAID管理工具构造RAID管理命令,并对RAID管理命令进行封装。NVMe设备驱动可以将RAID管理工具封装的RAID管理命令写入RAID控制器的Admin SQ队列。RAID控制器可以利读取并执行Admin SQ队列中的RAID管理命令。上述方案中RAID控制器和主机之间采用NVMe标准定义的接口,主机侧加载NVMe驱动程序。RAID控制器与主机之间NVMe定义的命令完成对RAID磁盘阵列的管理操作。本方案能够在NVMe接口上实现RAID磁盘阵列管理。
[0175] 进一步的,还包括:
[0176] 上报模块,用于在对所述RAID磁盘阵列执行所述RAID管理命令对应的操作之后,根据所述RAID管理命令的执行结果构造命令完成队列条目;还用于将所述命令完成队列条目写入所述主机的Admin CQ队列,并向所述NVMe设备驱动发送中断通知,以便所述NVMe设备读取所述Admin CQ队列中的所述命令完成队列条目并将所述命令完成队列条目返回至所述RAID管理工具。
[0177] 进一步的,若所述RAID管理命令为RAID控制器发现命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:解析所述RAID控制器发现命令得到第一数据指针;汇总所述RAID控制器的特性数据,并将所述RAID控制器的特性数据返回至所述第一数据指针指向的地址空间;其中,所述RAID控制器的特性数据包括就绪状态、固件版本号、序列号、支持的RAID级别列表、每种RAID级别支持的物理盘数列表、支持的RAID数据排列方式列表、支持的RAID级别迁移类型列表、支持的物理盘类型列表、支持的数据Cache特性、支持的掉电保护特征和备用电源状态中的任一项或任几项的组合;所述数据Cache特性包括Cache容量和/或Cache策略类型。
[0178] 进一步的,若所述RAID管理命令为物理盘发现命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:解析所述物理盘发现命令得到第二数据指针;获取所述RAID磁盘阵列中所有物理盘的物理盘列表数据结构,并将所述物理盘列表数据结构返回至所述第二数据指针指向的地址空间;其中,所述物理盘列表数据结构包括每一所述物理盘的标识符;或,确定所述物理盘发现命令对应的目标物理盘,将所述目标物理盘的物理盘信息返回至所述第二数据指针指向的地址空间;其中,所述物理盘信息包括所述目标物理盘的标识符、物理盘状态、物理盘类型、物理盘支持的逻辑块大小、物理盘容量和物理盘拓扑信息中的任一项或任几项的组合。
[0179] 进一步的,若所述RAID管理命令为RAID组发现命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:解析所述RAID组发现命令得到第三数据指针;获取所述RAID磁盘阵列中所有RAID组的RAID组列表数据结构,并将所述RAID组列表数据结构返回至所述第三数据指针指向的地址空间;其中,所述RAID组列表数据结构包括每一所述RAID组的标识符;或,确定所述RAID组发现命令对应的目标RAID组,将所述目标RAID组的RAID组信息返回至所述第三数据指针指向的地址空间;其中,所述RAID组信息包括所述目标RAID组的标识符、RAID组状态、RAID组级别、RAID组支持的逻辑块大小、RAID组容量、RAID组Cache属性、RAID组后台任务状态及进度、以及RAID组物理盘列表及状态中的任一项或任几项的组合。
[0180] 进一步的,若所述RAID管理命令为逻辑卷发现命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:解析所述逻辑卷发现命令得到第四数据指针和待查询RAID组的标识符;根据所述待查询RAID组的标识符将所述待查询RAID组的逻辑卷信息返回至所述第四数据指针指向的地址空间;其中,所述逻辑卷信息包括逻辑卷标识符、逻辑卷容量、逻辑卷状态和逻辑卷绑定的NVM命名空间标识符中的任一项或任几项的组合。
[0181] 进一步的,若所述RAID管理命令为逻辑卷绑定命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:解析所述逻辑卷绑定命令得到待绑定逻辑卷ID;确定空闲的第一命名空间,并向所述主机发送命名空间绑定通知,以便所述主机发送待绑定命名空间查询命令;其中,所述待绑定命名空间查询命令用于获取待绑定的命名空间的标识符;若接收到所述待绑定命名空间查询命令,则将所述第一命名空间的标识符上传至所述主机,以便所述主机将所述第一命名空间的标识符与所述待绑定逻辑卷ID进行绑定。
[0182] 进一步的,若所述RAID管理命令为逻辑卷解绑命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:解析所述逻辑卷解绑命令得到待解绑逻辑卷ID;判断所述待解绑逻辑卷ID对应的逻辑卷上所有进行中的IO操作是否均执行完毕;若是,则向所述主机发送命名空间解绑通知,以便所述主机发送待解绑命名空间查询命令;其中,所述待解绑命名空间查询命令用于获取待解绑的命名空间的标识符;若接收到所述待解绑命名空间查询命令,则将第二命名空间的标识符上传至所述主机,以便所述主机解除所述第二命名空间的标识符与所述待解绑逻辑卷ID的绑定;其中,所述第二命名空间为与所述待解绑逻辑卷ID对应的逻辑卷绑定的命名空间。
[0183] 进一步的,若所述RAID管理命令为命名空间IO读写命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:确定所述命名空间IO读写命令对应的目标命名空间,并确定与所述目标命名空间绑定的目标逻辑卷;将所述命名空间IO读写命令中对所述目标命名空间的操作参数转换为对所述目标逻辑卷的操作参数;其中,所述操作参数包括逻辑块地址和逻辑块数;按照所述目标逻辑卷的操作参数对所述目标逻辑卷执行IO读写操作。
[0184] 进一步的,若所述RAID管理命令为异步事件上报命令,则命令执行模块执行所述RAID管理命令对应的操作的过程包括:检测RAID管理事件,并确定RAID管理事件对应的事件类型;向所述主机上报所述事件类型对应的状态码,以便所述主机向所述RAID控制器获取所述RAID管理事件的相关数据。
[0185] 由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0186] 本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read‑Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0187] 本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
[0188] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
[0189] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。