CN117008844B - 存储设备的设备控制方法及装置、存储介质及电子设备 - Google Patents

存储设备的设备控制方法及装置、存储介质及电子设备 Download PDF

Info

Publication number
CN117008844B
CN117008844B CN202311259643.3A CN202311259643A CN117008844B CN 117008844 B CN117008844 B CN 117008844B CN 202311259643 A CN202311259643 A CN 202311259643A CN 117008844 B CN117008844 B CN 117008844B
Authority
CN
China
Prior art keywords
attribute
target
command
specified
tlv
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
CN202311259643.3A
Other languages
English (en)
Other versions
CN117008844A (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 CN202311259643.3A priority Critical patent/CN117008844B/zh
Publication of CN117008844A publication Critical patent/CN117008844A/zh
Application granted granted Critical
Publication of CN117008844B publication Critical patent/CN117008844B/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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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

本申请实施例提供了一种存储设备的设备控制方法及装置、存储介质及电子设备,其中,该方法包括:通过目标设备的设备主机获取一组操作参数的参数信息,其中,一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,目标磁盘设备为设备主机所连接的磁盘设备;使用一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令;通过设备主机将目标操作命令发送给目标磁盘设备,以由目标磁盘设备执行目标操作命令所指示的目标属性操作,其中,目标属性操作与目标操作命令所指示的操作类型对应,目标属性操作是对目标操作命令指示的业务对象的对象属性执行的。

Description

存储设备的设备控制方法及装置、存储介质及电子设备
技术领域
本申请实施例涉及存储器设备交互技术领域,具体而言,涉及一种存储设备的设备控制方法及装置、存储介质及电子设备。
背景技术
磁盘阵列卡是计算机系统上的高速串行计算机扩展总线标准(PeripheralComponent Interconnect express,简称为PCIe)存储设备,通过PCIe总线连接到主机,并在上层业务使用主机系统接口(Small Computer System Interface,简称为SCSI)与主机进行命令的交互。
相关技术中,并未具体定义主机系统接口的上层业务的协议,上层业务的协议内容需要磁盘阵列卡制造厂商自定义实现,由于各个厂商自定义的管理命令并不相同,导致了磁盘阵列卡控制器和主机配置管理工具接口互相不兼容,主机与磁盘阵列卡交互困难。
由此可见,相关技术中的存储设备的设备控制方法,存在存储设备配置管理效率不高的技术问题。
发明内容
本申请实施例提供了一种存储设备的设备控制方法及装置、存储介质及电子设备,以至少解决相关技术中的存储设备的设备控制方法存在存储设备配置管理效率不高的技术问题。
根据本申请的一个实施例,提供了一种存储设备的设备控制方法,包括:通过目标设备的设备主机获取一组操作参数的参数信息,其中,所述一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,所述目标磁盘设备为所述设备主机所连接的磁盘设备;使用所述一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,所述目标操作命令是基于所述一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的;通过所述设备主机将所述目标操作命令发送给所述目标磁盘设备,以由所述目标磁盘设备执行所述目标操作命令所指示的目标属性操作,其中,所述目标属性操作与所述目标操作命令所指示的操作类型对应,所述目标属性操作是对所述目标操作命令指示的业务对象的对象属性执行的。
根据本申请的又一个实施例,提供了一种存储设备的设备控制装置,包括:获取单元,用于通过目标设备的设备主机获取一组操作参数的参数信息,其中,所述一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,所述目标磁盘设备为所述设备主机所连接的磁盘设备;构造单元,用于使用所述一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,所述目标操作命令是基于所述一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的;发送单元,用于通过所述设备主机将所述目标操作命令发送给所述目标磁盘设备,以由所述目标磁盘设备执行所述目标操作命令所指示的目标属性操作,其中,所述目标属性操作与所述目标操作命令所指示的操作类型对应,所述目标属性操作是对所述目标操作命令指示的业务对象的对象属性执行的。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请实施例,通过目标设备的设备主机获取与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作分别对应的操作参数,由此,能够通过设备主机读取目标磁盘设备的相关操作参数;按照操作参数与控制命令中命令字段之间的对应关系,使用操作参数的参数信息进行操作命令的构建,以得到待发送的目标操作命令,由此,基于操作参数与控制命令的映射关系构造目标操作命令,能够提高目标操作命令的构建效率、使得命令定义的兼容性更强;通过设备主机将目标操作命令发送至目标磁盘设备,由目标磁盘设备对目标操作命令所指示的业务对象的对象属性执行与目标操作命令所指示的操作类型对应的属性操作,由此,能够使设备主机发送目标操作命令完成对目标磁盘设备的管理和控制;从而达到提高设备主机对目标磁盘设备的配置管理效率的技术效果;解决了相关技术中的存储设备的设备控制方法存在存储设备配置管理效率不高的技术问题。
附图说明
图1是本申请实施例的一种存储设备的设备控制的计算机终端的硬件结构框图;
图2是根据本申请实施例的存储设备的设备控制方法的流程示意图;
图3是根据本申请实施例的一种存储设备的设备控制方法的示意图;
图4是根据本申请实施例的另一种存储设备的设备控制方法的示意图;
图5是根据本申请实施例的又一种存储设备的设备控制方法的示意图;
图6是根据本申请实施例的一种可选的RAID卡属性示意图;
图7是本申请实施例提供的一种可选的存储设备的设备控制装置的结构框图;
图8是本申请实施例提供的一种可选的电子设备的计算机系统的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1、统一可扩展固件接口(Unified Extensible Firmware Interface,简称为UEFI),用来定义操作系统与系统固件之间的软件界面。
2、非易失性内存主机控制器接口规范(Non-Volatile Memory express,简称为NVMe)是一个逻辑设备接口规范,基于设备逻辑接口的总线传输协议规范,用于访问通过高速串行计算机扩展总线标准(Peripheral Component Interconnect Express,简称为PCIe)总线附加的非易失性存储器介质。
3、磁盘冗余阵列(Redundant Array of Independent Disks,简称为RAID),用于将多个磁盘设备组合起来,成为一个或多个存储阵列组。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种动态随机存储器颗粒测试的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器或可编程逻辑器件等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的消息的传输方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
传统存储设备(例如磁盘阵列卡)通常是计算机系统上的高速串行计算机扩展总线标准设备,通过PCIe总线连接到主机,并在上层业务使用主机系统接口进行命令的交互,并未具体定义主机接口上层业务的协议,主机接口上层业务的协议需要存储设备制造厂商自定义实现。由于各厂商自定义的管理命令各不相同,导致了存储设备控制器和主机配置管理工具接口上互相不兼容。
NVMe(Non-Volatile Memory express)规范是一种开源的高速固态硬盘存储设备接口,使用NVMe接口实现主机管理命令驱动和磁盘阵列卡控制器交互,既可以提高性能,又可以减少开发成本。但NVMe规范仅定义了基本的存储设备接口,没有包括磁盘阵列卡相关命令的配置管理定义。磁盘阵列卡配置界面上配置管理功能复杂繁多,按照功能需求制定NVME命令格式,根据近几百条的功能需求,需要制订大量的自定义命令,命令的制定和协议的扩展极其混乱,没有系统性。而且制定的自定义命令的扩展性较差,新增或者修改功能都需要新扩展协议来实现。
根据本申请实施例的一个方面,提供了一种存储设备的设备控制方法,能够通过设备主机高效配置管理存储设备、使得操作命令定义的兼容性、扩展性更强,以由计算机终端来执行本实施例中的存储设备的设备控制方法为例,图2是根据本申请实施例的存储设备的设备控制方法的流程示意图,如图2所示,该流程包括如下步骤:
在步骤S202中,通过目标设备的设备主机获取一组操作参数的参数信息,其中,一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,目标磁盘设备为设备主机所连接的磁盘设备。
通过目标设备的设备主机获取设备主机所连接的目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作分别对应的操作参数,能够通过设备主机读取目标磁盘设备上的相关参数,以便于后续针对性地构建目标操作命令。
在一些实施例中,目标磁盘设备可以是磁盘阵列卡(Redundant Array ofIndependent Disks,简称为RAID卡),或者其他与设备主机相连接且具有存储功能的设备,本申请在此不做限定。
在一些实施例中,当目标存储设备为磁盘阵列卡时,待操作的指定业务对象对应的操作参数可以是磁盘阵列卡控制器、磁盘阵列卡阵列、逻辑卷和物理盘;待操作的指定对象属性对应的操作参数可以是具体的对象数据(例如,对象名称、对象内容等);待执行的指定属性操作对应的操作参数可以是对于指定数据的增加、删除、查找、修改等。
通过本申请提供的实施例,能够通过设备主机读取目标磁盘设备的具体参数信息,以便于后续针对性地构建操作命令。
在步骤S204中,使用一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,目标操作命令是基于一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的。
由于NVMe规范仅定义了基本的存储设备接口,没有包括存储设备相关命令的配置管理定义。存储设备配置界面上配置管理功能复杂繁多,按照功能需求制定NVME命令格式,需要制订大量的自定义命令,命令的制定和协议的扩展极其混乱,因此,本申请实施例根据操作参数中的操作参数与操作命令中的命令字段之间的对应关系,使用操作参数的参数信息进行操作命令构造,能够使得操作命令的兼容性更强。可选地,RAID卡主机配置管理工具采用了传输速率更快的NVMe协议传输,配置管理命令的传输速率更快,NVME协议是存储领域主流开源代码,软件开发维护成本低。
在一些实施例中,操作参数即为存储设备的待操作业务对象、待执行操作类型、以及待操作对象属性所对应的参数,操作命令可以是NVME命令。
在一些实施例中,当目标存储设备为磁盘阵列卡时,磁盘阵列卡NVMe管理命令属于NVMe Admin命令集中的厂商自定义命令类型,其中,NVMe管理命令包括:admin命令和I/O命令;admin命令用于主机管理控制存储设备,I/O命令用于数据传输。
在一些实施例中,当目标磁盘设备为磁盘阵列卡时,根据磁盘阵列卡的功能操作类型划分:增加,删除,修改和查询功能,根据磁盘阵列卡的实现业务对象模块划分:磁盘阵列卡控制器,磁盘阵列卡阵列,逻辑卷和物理盘。而每种对象的特性和状态可以通过一系列的属性表示,主机通过读取或者设置对象的属性值完成对磁盘阵列卡系统的管理和控制;因此,对于磁盘阵列卡构造目标操作命令,就是构造上述四种对象的管理控制命令。
根据NVMe Admin自定义命令的封装类型格式,按照一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系,使用一组操作参数的参数信息进行操作命令构造,可以将命令分为操作码,控制区,和数据区。
其中,操作码用于表示磁盘阵列卡构造的命令属于查询类还是管理配置类;控制区封装了操作对象,操作类型和关键操作参数;数据区负责具体配置或者查询对象的特性信息。
通过本申请提供的实施例,操作参数中的操作参数与操作命令中的命令字段之间的对应关系,采用对象模版的方法构建目标操作命令,使得目标操作命令定义的兼容性更强和代码的扩展性更强。
在步骤S206中,通过设备主机将目标操作命令发送给目标磁盘设备,以由目标磁盘设备执行目标操作命令所指示的目标属性操作,其中,目标属性操作与目标操作命令所指示的操作类型对应,目标属性操作是对目标操作命令指示的业务对象的对象属性执行的。
目标操作命令可以指示以下信息:业务对象,对象属性,属性操作的操作类型,设备主机可以将目标操作命令发送给目标磁盘设备,在接收到目标操作命令之后,目标磁盘设备可以对其进行解析,得到目标操作命令所指示的业务对象、对象属性以及属性操作的操作类型,并执行目标操作命令所指示的目标属性操作,目标属性操作与目标操作命令所指示的操作类型对应,其是对目标操作命令指示的业务对象的对象属性执行的。
在一些实施例中,目标磁盘设备可以为磁盘阵列卡,在此情况下,目标操作命令所指示的业务对象可以是磁盘阵列卡控制器、磁盘阵列卡阵列、逻辑卷和物理盘中的至少一个;目标操作命令所指示的操作类型可以是对上述业务对象的增加,删除,修改和查询功能中的至少一种。
通过本申请提供的实施例,设备主机将操作命令发送至磁盘设备,以使得磁盘设备对所指示的对象执行相应的属性操作,实现对存储设备的高效控制。
通过本申请实施例的上述步骤,通过目标设备的设备主机获取一组操作参数的参数信息,其中,一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,目标磁盘设备为设备主机所连接的磁盘设备;使用一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,目标操作命令是基于一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的;通过设备主机将目标操作命令发送给目标磁盘设备,以由目标磁盘设备执行目标操作命令所指示的目标属性操作,其中,目标属性操作与目标操作命令所指示的操作类型对应,目标属性操作是对目标操作命令指示的业务对象的对象属性执行的,解决了相关技术中的存储设备的设备控制方法存在存储设备配置管理效率不高的技术问题,提高了设备主机对目标磁盘设备的配置管理效率。
在一个示例性实施例中,通过目标设备的设备主机获取一组操作参数的参数信息,包括:
S11,通过目标设备的设备主机获取通过命令配置界面所配置的一组操作参数的参数信息。
其中,命令配置界面是用于配置设备主机与目标磁盘设备之间的操作命令的界面,命令配置界面包含用于配置待执行的操作类型的第一配置区域、用于配置待操作的业务对象的第二配置区域、以及用于配置待操作的对象属性的第三配置区域。
在一些实施例中,命令配置界面可以是统一可扩展固件接口(UnifiedExtensible Firmware Interface,简称UEFI)用于定义操作系统与系统固件之间的软件界面,在这里,命令配置界面是设备主机操作系统与目标磁盘设备系统固件之间的操作命令界面。
在一些实施例中,命令配置界面的第一配置区域用于配置待执行的操作类型,例如,增加、删除、查询、修改等操作;命令配置界面的第二配置区域用于配置待操作的业务对象,例如,当目标磁盘设备为磁盘阵列卡时,业务对象可以是磁盘阵列卡控制器、磁盘阵列卡阵列、逻辑卷和物理盘;命令配置界面的第三配置区域用于配置待操作的对象属性,例如,具体的存储数据等。
通过本申请提供的实施例,能够通过可视化的命令配置界面,将各种配置功能映射到目标操作对象,从而后续对目标磁盘设备上的目标对象进行配置和管理。
在一个示例性实施例中,使用一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,包括:
S21,使用一组操作参数的参数信息执行以下的操作指令构造操作,得到待发送的目标操作命令:
根据指定属性操作的操作类型,设置指定操作命令中的操作码字段中的操作码,其中,操作码字段中的操作码用于指示对应的操作类型属于读操作或者写操作;
将数据缓存区的数据指针写入到指定操作命令的数据指针字段,其中,数据缓存区用于存储指定对象属性的属性信息,数据缓存区的数据指针指向数据缓存区的首地址;
基于一组操作参数的参数信息设置指定操作命令中的一组控制字段,其中,一组控制字段用于写入业务对象的对象标识以及操作类型的类型标识。
在一些实施例中,操作码字段中的操作码(Opcode)代表所构造的待发送的目标操作命令的操作类型,操作类型包括读操作和写操作,例如,读操作可以是对目标磁盘设备上存储内容的查询;写操作可以是对目标磁盘设备上存储内容的修改等。
在一些实施例中,用户在命令配置界面上进行的配置操作即为主机发出的目标操作命令,目标操作命令可以抽象为主机管理工具和磁盘设备控制器通过交互特定数据(TLV数据),实现读取和设置磁盘设备上目标对象的属性值,完成磁盘设备管理操作,其中,每一个配置操作交互称为一个磁盘设备管理命令操作(即目标操作命令)。
例如,当目标磁盘设备为磁盘阵列卡时,构造磁盘阵列卡对象属性读取命令并执行,主机与磁盘阵列卡控制器的交互步骤如下:
在步骤1中,主机构造磁盘阵列卡属性读取命令。
在一些实施例中,构造磁盘阵列卡属性读取命令时,需要通过提交队列条目设置以下字段:
在CDW0中基于“Opcode”字段设置命令操作码,其中,CDW即Command DWord为提交队列条目(Submission Queue Entry)中的命令集。
分配数据缓存区(buffer),用于存放磁盘阵列卡控制器返回的属性TLV数据;构建“PRP List”并将指针填入“DPTR”字段,其中,PRP是一个64位的内存物理地址指针,“PRPList”即为内存物理地址指针列表;“DPTR”即为数据指针。
将分配的数据缓存区长度填入CDW10字段。
将命令定义的操作对象类型和关键参数填入控制区CDW12~CDW15内。
在步骤2中,主机将命令发送给数据缓存区控制器(即RAID控制器)。
在步骤3中,数据缓存区控制器解析命令的控制区,并执行解析出来的命令,将返回的属性值构造为TLV数据,写入“DPTR”字段指定的数据缓存区中,命令完成队列条目中CDW0字段设置的数据缓存区长度。
在步骤4中,数据缓存区控制器将完成队列条目完成命令发送至主机。
在步骤5中,主机接收到RAID控制器的命令,解析“DPTR”字段中存放的TLV数据,并根据界面显示要求显示到界面上。
例如,设备主机构造RAID卡对象属性设置命令并执行,主机与RAID控制器的交互步骤如下:
在步骤1中,主机构造数据缓存区属性设置命令。
在一些实施例中,构造数据缓存区属性设置命令,需要通过提交队列条目设置以下字段:
在CDW0中基于“Opcode”字段设置命令操作码;
分配数据缓存区,并构造封装操作对象属性的TLV数据、构造“PRP List”并将指针填入“DPTR”字段,其中,PRP是一个64位的内存物理地址指针,“PRP List”即为内存物理地址指针列表;“DPTR”即为数据指针。
将数据缓存区真实有效长度填入“NDT”字段,其中,“NDT”字段用于表示数据传输中的双字节数据类型(Double Word,简称DWord)数目。
将命令定义的操作对象类型和关键参数字段填入CDW12~CDW15。
在步骤2中,主机将命令发送给数据缓存区控制器。
在步骤3中,数据缓存区控制器解析命令的控制区和TLV数据的数据区,并执行解析出来的命令,将执行结果信息通过完成队列条目发送给主机。
通过本申请提供的实施例,能够通过操作码字段指定属性操作的操作类型,通过数据缓存区存储指定对象属性的属性信息,并设置控制字段写入业务对象的对象标识以及操作类型的类型标识。
在一个示例性实施例中,根据指定属性操作的操作类型,设置指定操作命令中的操作码字段中的操作码,包括:
S31,在指定属性操作的操作类型为对象属性设置操作的情况下,设置操作码字段中的操作码为第一操作码,其中,第一操作码用于指示指定属性操作属于写操作,指定属性操作包括以下至少之一:增加操作,删除操作,修改操作;
S32,在指定属性操作的操作类型为对象属性查询操作的情况下,设置操作码字段中的操作码为第二操作码,其中,第二操作码用于指示指定属性操作属于读操作。在一些实施例中,针对目标存储磁盘的对象的指定属性操作的操作类型可以是设置操作或是查询操作。
当目标操作命令的操作类型为设置操作类型时,设置操作码字段中的操作码为第一操作码,第一操作用于指示待执行的操作类型属于写操作,写操作可以是针对目标存储磁盘的对象的指定属性的增加操作、删除操作、修改操作等。
当目标操作命令的操作类型为查询操作类型时,设置操作码字段中的操作码为第二操作码,第二操作用于指示待执行的操作类型属于读操作,读操作可以是针对目标存储磁盘的对象的指定属性的查询操作等。
通过本申请提供的实施例,能够根据目标操作命令的指定属性操作的操作类型,设置操作码字段,即将设置操作的操作码字段设置为第一操作码(写),将查询操作的操作码字段设置为第二操作码(读)。
在一个示例性实施例中,上述方法还包括:
S41,在指定属性操作的操作类型为对象属性设置操作的情况下,按照标识符长度属性值TLV格式对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据。
S42,将与指定对象属性对应的TLV数据存储到数据缓存区中,以通过数据缓存区将与指定对象属性对应的TLV数据传递给目标磁盘设备。
磁盘设备系统中对象的属性在数据结构上采用TLV格式表示,TLV格式即Tag(标识)、Length(长度)、Value(值)的首字母缩写,每个TLV数据代表磁盘设备上的一个属性,属性可以是只读的,也可以是读写的。一个TLV数据格式定义如表1所示。
表1
每个TLV数据由标识、长度和值组成,标识为定长2个字节,用于表示某个具体属性的标识符,该标识符是全局唯一的;长度为定长2个字节,用于表示接下来属性值的有效数据的长度字节数;长度是无符号整数,基数为一个字节长度,可表示的有效长度为1~65536个字节;(属性)值(Value)的具体含义由每个“Tag”定义,长度由“Length”指定,值的字节长度可以是固定的也可以是变化的。
通过本申请提供的实施例,通过TLV格式表示与操作对象属性对应的数据,能够使得命令定义的兼容性更强。
在一个示例性实施例中,在指定属性操作的操作类型为对象属性设置操作的情况下,按照标识符长度属性值TLV格式对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据,包括:
S51,在指定属性操作的操作类型为对象属性设置操作的情况下,根据指定业务对象的对象类型申请封包器,得到目标封包器。
其中,目标封包器用于基于指定业务对象的对象属性模板按照TLV格式对指定对象属性的属性信息进行封装处理,指定业务对象的对象属性模板用于标识指定业务对象的一组预设对象属性;
S52,通过目标封包器对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据。
在一些实施例中,为了将目标操作命令从设备主机传输至目标磁盘设备,可以设计一个针对TLV格式的封包器,设备主机根据传入的目标操作命令的指定属性操作的操作类型(控制器、阵列、卷、盘)申请目标封包器;通过目标封包器对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据。
在一些实施例中,磁盘阵列卡系统中存在四种对象,即磁盘阵列卡控制器,磁盘阵列卡阵列、逻辑卷、物理盘。而每种对象的特性和状态可以通过一系列的属性表示,主机通过读取或者设置对象的属性值完成对磁盘阵列卡系统的管理和控制。例如,为了针对不同操作对象的TLV数据的解析和封装,对每个对象的属性设计一个对象属性模版,以使操作对象的属性按照TLV格式封装和解析,对象属性模版参考图3。
可选地,采用面向RAID卡操作对象的管理来制定NVMe Admin自定义命令协议,能够增强协议的扩展性;采用对象模版的方法去封装和解析TLV格式的数据,代码兼容性强,软件开发维护成本低。
通过本申请提供的实施例,能够通过封包器基于指定业务对象的对象属性模板按照TLV格式对指定对象属性的属性信息进行封装,以便于后续从设备主机将目标操作命令传输至目标磁盘设备。
在一个示例性实施例中,通过目标封包器对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据,包括:
S61,通过目标封包器使用指定对象属性的属性信息为目标封包器中与指定对象属性对应的信元的标识符、长度和属性值进行赋值,其中,目标封包器包含与一组预设对象属性中的每个预设对象属性对应的信元
S62,遍历出目标封包器中的有效信元,并按照TLV格式对遍历到的有效信元的信息进行封装处理,得到与指定对象属性对应的TLV数据,其中,有效信元是其中的标识符、长度和属性值已赋值的信元。
在一个示例性实施例中,上述方法还包括:
S71,在按照TLV格式对遍历到的有效信元的信息进行封装处理之后,释放目标封包器。
在一些实施例中,根据业务所需要的属性调用封包器进行封包器的信元赋值,包括与指定对象属性对应的信元的标识符、长度和属性值进行赋值,直到业务所需要的信元都完成赋值。最后,调用封包器的封包功能函数,把封包器中的有效信元,封装成一个标准的TLV数据的数据报文。报文使用完成后,释放该封包器。参考图4,具体可以通过以下步骤表示:
在步骤1中,根据操作对象类型申请一个TLV格式的封包器。其中,操作对象类型包括控制器,阵列、逻辑卷、物理盘。
在步骤2中,根据操作对象的标识符、长度、属性值,调用TLV格式的封包器进行信元赋值。其中,信元(Cell)用于表示在通信中,由信头串和信息串组成的固定长度比特串。例如,在异步转移模式系统中,一个信元由53个字节(5个字节的信头和48个字节的信息段)组成。
在步骤3中,当操作对象的所需要信元赋值完毕时,基于TLV数据的封包器的封包功能,遍历TLV数据的封包器中有效信元,按照TLV数据的封包原则进行报文封装,最终生成的数据TLVBuff和长度TLVBuffLen。
在步骤4中,释放操作对象的TLV数据的封包器(即,目标封包器)。
通过本申请提供的实施例,能够基于封包器对指定对象属性的属性信息进行信元赋值,得到最终需要传递的数据。
在一个示例性实施例中,在指定属性操作的操作类型为对象属性设置操作的情况下,按照标识符长度属性值TLV格式对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据,包括:
S81,在指定属性操作的操作类型为对象属性设置操作的情况下,当指定对象属性包含多个对象属性时,按照TLV格式对多个对象属性中的每个对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据。
其中,与指定对象属性对应的TLV数据包含与每个对象属性对应的TLV项,与每个对象属性对应的TLV项按照4字节进行数据对齐。
在一些实施例中,TLV格式下的标识符域与长度域固定为2个字节,而属性值域可以是多个字节。为了使每个TLV项的标识符域与长度域对齐,需要将每个对象属性对应的TLV项按照4字节进行数据对齐。
在一个示例性实施例中,在按照TLV格式对多个对象属性中的每个对象属性的属性信息进行封装处理的过程中,上述方法还包括:
S91,在封装后的与多个对象属性中的目标对象属性对应的TLV项的长度不是4字节的整倍数的情况下,在与目标对象属性对应的TLV项尾部添加指定字节,以将与目标对象属性对应的TLV项的长度补齐为4字节的整倍数。
在一些实施例中,操作对象的多个属性可以组合为复杂的TLV数据结构,如表2所示,即为三个属性组成的TLV数据格式:
表2
在这里,每个TLV数据项的起始位置需要4字节对齐,如果不是4字节对齐的,需要在前一个TLV尾部添加额外字节(Pad)补齐4字节对齐。如TLV1长度为6个字节,需要在尾部补齐2个字节(即Pad为2Byte),TLV3需要在尾部补齐3个字节(即Pad为3Byte),以达到4字节对齐的目的。
在一个示例性实施例中,在与每个对象属性对应的TLV项中,标识符所占用的字节长度为2个字节,长度信息占用的字节长度为2个字节,属性值占用的字节长度为固定长度或者可变长度。
在本实施例中,TLV数据结构可以包含3个部分,3个部分依次为:Tag(即,标识符),Length(即,长度信息),Value(即,属性值),对应地,与每个对象属性对应的TLV项(即,每个对象属性)包括3部分,即,Tag、Length、Value。为了提高数据读取的效率,在本实施例中,在与每个对象属性对应的TLV项中,3个部分可以配置为:
Tag,固定长度,2个字节(Byte),为某个具体属性的标识符,该标识符是是全局唯一的;
Length,固定长度,2个字节(2Byte),表示接下来的Value有效数据的长度字节数,无符号整数,基数为一个字节长度,可表示的有效长度为1~65536个字节;
Value,属性值,Value的具体含义由每个Tag类型定义,长度由Length指定。对于一个特定的Tag,其Value长度可以是固定的,也可以是可变的,即,Value可以为固定长度,也可以为可变长度。
这里,在与每个对象属性对应的TLV项中,Tag、Length和Value是依次设置的,即,前两个字节为Tag,紧接着的两个字节为Length,随后的一定数量(由Length指定)的字为Value。
通过本实施例,通过设置与一个对象属性对应的TLV项中的标识符、长度信息和属性值所占用的字节数,可以提高数据读取的效率。
在一个示例性实施例中,上述方法还包括:
S101,在指定属性操作的操作类型为对象属性读取操作的情况下,在接收到目标磁盘设备响应于目标操作命令返回的响应消息的情况下,基于数据缓存区的数据指针,从数据缓存区中读取出目标磁盘设备存入的与指定对象属性对应的标识符长度属性值TLV数据;
S102,从与指定对象属性对应的TLV数据中解析出指定对象属性的属性信息。
在本实施例中,指定属性操作的操作类型可以为对象属性读取操作,例如,查询操作。目标磁盘设备在接收到目标操作命令,可以对目标操作命令进行解析,确定出指定业务对象、指定属性操作以及指定对象属性。如果确定出指定属性操作的操作类型为对象属性读取操作,则可以对指定业务对象的指定对象属性执行属性信息读取操作,从而得到指定对象属性的属性信息,在得到指定对象属性的属性信息之后,目标磁盘设备可以采用与前述实施例中类似的方式将指定对象属性的属性信息封装为对应的TLV数据,从而得到与指定对象属性对应的TLV数据,并将与指定对象属性对应的TLV数据按照数据缓存区的数据指针,写入到数据缓存区。同时,其还可以向设备主机发送目标操作命令的响应消息,以指示已对指定业务对象的指定对象属性执行指定属性操作,也就是,已读取指定业务对象的指定对象属性的属性信息,读取的指定对象属性的属性信息已写入到数据缓存区中。
在接收目标磁盘设备响应于目标操作命令返回的响应消息的情况下,设备主机可以基于数据缓存区的数据指针,从数据缓存区中读取出目标磁盘设备存入的与指定对象属性对应的TLV数据。由于此时指定对象属性的属性信息是以TLV形式保存的,因此,可以对与指定对象属性对应的TLV数据进行解析,从中解析出指定对象属性的属性信息。解析出的指定对象属性的属性信息可以在目标设备的显示界面上进行显示。
例如,对于RAID卡对象属性读取命令,其交互流程可以包括:
步骤1,主机构造RAID属性读取命令。
RAID属性读取命令可以为SQE命令,可以设置以下字段构造命令SQE:
1、在CDW0中的Opcode中设置命令操作码;
2、分配数据buffer(缓存区),用于存放RAID控制器返回的属性TLV数据结构,构造PRP List,并将指针填入DPTR字段;
3、将分配的数据buffer的长度信息填入CDW10字段;
4、将命令定义的操作类型、对象类型和关键参数(例如,指定对象属性的属性标识,如果不指定,则为读取全部的对象属性,还可以为其他的命令参数)填入控制区的CDW12~CDW 15内;
步骤2,主机将构造的RAID属性读取命令发送给RAID控制器(即,RAID卡中的控制器)。
步骤3,RAID控制器解析RAID属性读取命令的控制区,并执行解析出来的命令,将返回的属性值构造为TLV数据结构,写入DPTR字段指定的数据buffer中,并构造命令CQE,其中的CDW0字段设置的是buffer长度。
步骤4,RAID控制器发送CQE完成命令。
步骤5,主机接收到RAID控制器的CQE完成命令,解析DPTR字段并解析数据buffer中对应存放的TLV数据,并根据界面显示要求显示到界面上。
通过本实施例,通过buffer中的TLV数据保存读取的对象属性的属性信息,可以提高主机与磁盘设备之间数据交互的效率。
在一个示例性实施例中,从与指定对象属性对应的TLV数据中解析出指定对象属性的属性信息,包括:
S111,根据指定业务对象的对象类型申请数据解析器,得到目标解析器,其中,目标解析器用于基于指定业务对象的对象属性模板从与指定对象属性对应的TLV数据解析出指定对象属性的属性信息,指定业务对象的对象属性模板用于标识指定业务对象的一组预设对象属性;
S112,通过目标解析器对与指定对象属性对应的TLV数据进行数据解析,得到指定对象属性的属性信息。
在本实施例中,为了提高TLV数据解析的效率,可以为不同的业务对象配置对应的对象属性模板,一个业务对象的对象属性模板用于标识为该业务对象预设的一组对象属性,例如,为指定业务对象预设的一组对象属性为一组预设对象属性,已经进行过说明的,在此不做赘述。按照每个业务对象对应的对象属性模板,可以为其配置对应的TLV数据的解析器,在该TLV数据的解析器,针对本业务对象每个预设的对象属性设置对应的信元,初始状态下信元中除了标识符(对象属性的属性标识)以外,长度信息和属性值均为空。
对于与指定对象属性对应的TLV数据,设备主机可以根据指定业务对象的对象类型申请数据解析器,得到目标解析器,目标解析器用于基于指定业务对象的对象属性模板从与指定对象属性对应的TLV数据解析出指定对象属性的属性信息;通过目标解析器对与指定对象属性对应的TLV数据进行数据解析,得到指定对象属性的属性信息。
可选地,目标磁盘设备返回的响应消息中还可以携带有与指定对象属性对应的TLV数据的长度信息,按照先标识符、再长度信息、最后属性值的顺序依次解析与指定对象属性对应的TLV数据,也可以直接解析出指定对象属性的属性信息,而采用目标解析器进行TLV数据解析,可以快速方便的获取每个属性的值。此外,目标解析器中的信息使用完成之后,可以释放该目标解析器(即,TLV数据解析器)。
通过本实施例,采用对象模版的方法解析TLV格式的数据,代码兼容性强,同时可以降低软件开发的维护成本。
在一个示例性实施例中,目标解析器包含与一组预设对象属性中的每个预设对象属性对应的信元,与前述类似的,初始状态下,信元中除了标识符(对象属性的属性标识,即,模版内指定属性的tag编号)以外,长度信息和属性值均为空。对应地,通过目标解析器对与指定对象属性对应的TLV数据进行数据解析,得到指定对象属性的属性信息,包括:
S121,通过目标解析器按照一组预设对象属性依次对与指定对象属性对应的TLV数据进行解析,为解析到对应的标识符、长度信息和属性值的信元进行赋值;
S122,遍历出目标解析器中的有效信元,根据遍历到的有效信元的标识符和属性值,确定为指定对象属性的属性信息,其中,有效信元是其中的标识符、长度信息和属性值已赋值的信元。
对于目标解析器,可以按照一组预设对象属性依次对与指定对象属性对应的TLV数据进行解析,并为解析到对应的标识符、长度信息和属性值的信元进行赋值。如果一个预设对象属性未解析到对应的标识符、长度信息和属性值中的全部,则可以跳过该预设对象属性(也可以未解析到对应的标识符即跳过),继续解析下一个预设对象属性。
在针对所有的预设对象属性均已解析完成,则可以遍历出目标解析器中的有效信元,即,标识符、长度信息和属性值已赋值的信元;根据遍历到的有效信元的标识符和属性值,即可确定为指定对象属性的属性信息。
例如,为了实现RAID卡所在的主机自定义命令响应的解析,可以设计一个TLV数据的解析器,参考图5,首先,通过入参区分解析的业务对象,根据解析属性的长度动态申请解析信元的内存,并挂载在TLV数据的解析器上,用于存放每一个属性解析的信息;其次,按照TLV数据封装属性的规则,解析各信元值,并存放于上述申请的解析信元的内存中;最后,根据报文长度,循环解析,直到解析结束。在解析完成后,返回解析器,业务根据模版内指定属性的标识符(Tagid),可以快速获取每个属性的值,TLV数据的解析器中的信息使用完成后,需要释放该TLV数据的解析器。示例性地,TLV数据解析的流程可以包括:
步骤1,根据操作对象类型申请一个TLV数据的解析器。
其中,操作对象类型包括RAID控制器,RAID阵列、逻辑卷、物理盘。
步骤2,根据数据区的数据TLV Buff和长度TLV BuffLen,调用TLV数据的解析器进行信元的解析。
步骤3,通过操作对象的标识符(Tagid)在TLV数据的解析器中获取相应的值。
步骤4,释放操作对象的TLV数据的解析器。
通过本实施例,解析器以信元为单位对TLV数据依次进行数据解析,可以提高数据解析的完整性和效率。
在一个示例性实施例中,通过目标解析器按照一组预设对象属性依次对与指定对象属性对应的TLV数据进行解析,并为解析到对应的标识符、长度信息和属性值的信元进行赋值,包括:
S131,在通过目标解析器按照一组预设对象属性中的当前对象属性对与指定对象属性对应的TLV数据进行解析的过程中,在解析到与当前对象属性对应的当前信元的标识符和长度信息的情况下,按照解析出的当前信元的长度信息解析出当前信元的属性值;
S132,使用解析出的当前信元的标识符、长度信息和属性值,为目标解析器中的当前信元进行赋值。
在本实施例中,对于解析到的任一预设对象属性,即,当前对象属性,在通过目标解析器按照当前对象属性对与指定对象属性对应的TLV数据进行解析的过程中,如果解析到与当前对象属性对应的当前信元的标识符和长度信息,则确定与指定对象属性对应的TLV数据包含与当前对象属性对应的信元(即,TLV项),可以按照解析出的当前信元的长度信息解析出当前信元的属性值,即,以当前信元的长度信息的结束位置开始向后偏移当前信元的长度信息所指示的字节长度,这些字节中的数据,即为当前信元的属性值;并使用解析出的当前信元的标识符、长度信息和属性值,为目标解析器中的当前信元进行赋值。
通过本实施例,解析器基于一个信元长度信息所指示的长度解析对应的属性值,可以提高TLV数据解析的效率,同时,也可以提高TLV数据解析的准确性。
在一个示例性实施例中,在按照解析出的当前信元的长度信息解析出当前信元的属性值之后,上述方法还包括:
S141,在当前信元的标识符、长度信息和属性值的长度和不是4字节的整数倍的情况下,当当前对象属性不是与一组预设对象属性的最后一个对象属性时,将当前解析到的位置向后偏移至满足字节对齐条件之后,通过目标解析器按照一组预设对象属性中当前对象属性的下一个对象属性继续对与指定对象属性对应的TLV数据进行解析,其中,字节对齐条件为在与指定对象属性对应的TLV数据中,与一个对象属性对应的信元按照4字节进行数据对齐。
为了方便数据读取,可以以4字节为单位进行数据存取,即,一个对象属性对应的信元所占用的字节数为4的整倍数。对于标识符、长度信息和属性值所占用的字节数不为4字节的整倍数的情况,可以通过添加额外字节补齐4字节(添加的方式参数前述实施例,在此不做赘述),以实现数据对齐。在进行数据解析时,如果当前信元的标识符、长度信息和属性值的长度和不是4字节的整数倍,则表示后面的几个字节中保存的是额外字节,即,无效字节,而当前对象属性不是与一组预设对象属性的最后一个对象属性,需要解析当前对象属性的下一个对象属性。此时,为了提高数据读取的效率,可以将当前解析到的位置向后偏移至满足字节对齐条件之后,通过目标解析器按照当前对象属性的下一个对象属性继续对与指定对象属性对应的TLV数据进行解析,这里,字节对齐条件为在与指定对象属性对应的TLV数据中,与一个对象属性对应的信元按照4字节进行数据对齐。也即,将当前解析到的位置向后偏移一定字节至满足4字节数据对齐条件之后,再继续后续的解析操作。
例如,解析对象由多个属性的TLV结构组合为复杂的TLV数据结构,例如,如表3所示的包含三个属性的TLV数据结构:
表3
再对上述TLV数据结构进行解析时,首先解析首个TLV数据结构的起始位置,tag占两个字节,然后解析它的长度,通过长度确定Value的长度范围,如果Length的长度是4的整数倍,直接偏移Length长度,按照上述方法继续解析下一个TLV数据块;如果不是4字节的倍数,需要在TLV尾部Value的长度上额外偏移一个最小数(小于4字节),使得调整后长度(Length与偏移最小数的和)是4的整倍数,然后继续解析下一个TLV数据块。
例如,当TLV1长度为6个字节时,解析完TLV1的数据区后,需要在尾部继续偏移2个字节,才能进行TLV2数据区的解析。
通过本实施例,以4字节为单位进行TLV数据对齐,可以降低数据解析的复杂度,提高数据解析的效率。这里,4字节与数据存储的方式匹配,对于其他的数据存储方式,也可以是其他的字节数(在必要的情况下),在此不做赘述。
在一个示例性实施例中,在通过设备主机将目标操作命令发送给目标磁盘设备之后,方法还包括:
S151,接收目标磁盘设备响应于目标操作命令返回的响应消息。
其中,目标操作命令为提交队列条目SQE命令,目标操作命令的响应消息为完成队列条目CQE命令,其中,SQE命令和CQE命令均属于非易失性内存主机控制器接口规范NVMe管理命令。
NVMe标准定义了基本的厂商自定义命令的提交队列条目(Submission QueueEntry,简称SQE)结构和完成队列条目(Completion Queue Entry,简称CQE)。NVMe管理命令的提交队列条目的结构可以参考表4:
表4
NVMe管理命令的完成队列条目的结构可以参考表5:
表5
在一个示例性实施例中,一组控制字段为命令双字节CDW10到CDW15中的全部或者部分。
在一些实施例中RAID卡NVME Admin配置管理工具自定义命令原则为:
通过操作码(Opcode)字段定义拓展命令的操作码,其中,操作码可以是查询类或配置管理类,操作码字段总是0-6位(opcode [6:0])。
命令集(CDW10-CDW15)为定义命令的控制区,其中,定义命令的操作对象和操作命令类型和关键命令参数。
数据指针(Data Pointer)定义了对象的数据区,操作或者查询对象的操作属性会封装在对象的数据区,方便信息的传输。
RAID卡配置管理工具自定义命令操作码字段扩展定义,可参考表6所示的RAID管理命令列表:
表6
RAID查询命令(Identify Command)用于获取关于RAID控制器、RAID控制器下挂载的物理盘,RAID阵列,以及逻辑存储卷的描述信息。描述信息以TLV数据结构形式表示。
RAID标识命令使用了提交队列条目结构中的数据指针、Command Dword 10字段、Command Dword 12字段,其中,Command Dword 10定义了命令操作对象获取信息需要存放数据的空间大小,Command Dword 12定义了命令的操作对象,Command Dword 12字段的结构,如表7所示。
表7
RAID标识命令返回的数据结构与命令中的控制器、磁盘、阵列或卷值相关,如表8所示。
表8
RAID管理命令(Management Command)用于管理RAID阵列的后台任务,例如,创建或者删除RAID阵列和逻辑卷、修改RAID阵列和逻辑卷参数、修改物理磁盘参数。
RAID管理命令使用了提交队列条目结构中的数据指针、Command Dword 10字段、Command Dword 12字段、Command Dword 13字段,其中,Command Dword 12字段定义了命令的操作对象和操作类型, Command Dword 13字段定义了命令的操作对象的关键参数,Command Dword 12字段值如表9所示。
表9
在一个示例性实施例中,目标磁盘设备为磁盘冗余阵列RAID卡,其中,RAID卡用于将多个磁盘设备组合为一个或多个存储阵列组,指定业务对象的对象类型为以下至少之一:RAID控制器,RAID阵列,逻辑卷,物理盘。
在RAID卡系统中存在四种对象,即RAID控制器,RAID阵列、逻辑卷、物理盘。而RAID卡的各种功能可以映射到每种对象的特性和状态,都可以通过对象的一系列的属性来表示,主机通过查询或者设置对象的属性值完成对RAID系统的管理和控制。
参考图6,图6是根据本申请实施例的一种可选的RAID卡属性示意图,其中,RAID卡属性包括控制器属性、阵列属性、卷属性、盘属性。
在一些实施例中,RAID控制器是一种硬件设备或软件程序,用于管理计算机或存储阵列中的硬盘驱动器或固态硬盘;
在一些实施例中,RAID阵列以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能,能够将数据切割成许多区段,分别存放在各个硬盘上。
在一些实施例中,传统分区扩展性差,逻辑卷能够很好的解决该问题允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小允许在多个物理设备间重新组织文件系统。
在一些实施例中,物理盘这个概念是相对于逻辑磁盘而言的,物理盘即物理磁盘包括硬盘,也包括软盘和U盘等存储盘。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一方面,还提供了一种存储设备的设备控制装置,该装置用于实现上述实施例中所提供的存储设备的设备控制方法,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的一种存储设备的设备控制装置的结构框图,如图7所示,该装置包括:
获取单元701,用于通过目标设备的设备主机获取一组操作参数的参数信息,其中,一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,目标磁盘设备为设备主机所连接的磁盘设备;
构造单元702,用于使用一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,目标操作命令是基于一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的;
发送单元703,用于通过设备主机将目标操作命令发送给目标磁盘设备,以由目标磁盘设备对目标操作命令所指示的业务对象的对象属性执行与目标操作命令所指示的操作类型对应的属性操作。
通过本申请实施例,通过目标设备的设备主机获取一组操作参数的参数信息,其中,一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,目标磁盘设备为设备主机所连接的磁盘设备;使用一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,目标操作命令是基于一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的;通过设备主机将目标操作命令发送给目标磁盘设备,以由目标磁盘设备执行目标操作命令所指示的目标属性操作,其中,目标属性操作与目标操作命令所指示的操作类型对应,目标属性操作是对目标操作命令指示的业务对象的对象属性执行的,解决了相关技术中的存储设备的设备控制方法存在存储设备配置管理效率不高的技术问题,提高了设备主机对目标磁盘设备的配置管理效率。
可选地,获取单元包括:
获取模块,用于通过目标设备的设备主机获取通过命令配置界面所配置的一组操作参数的参数信息,其中,命令配置界面是用于配置设备主机与目标磁盘设备之间的操作命令的界面,命令配置界面包含用于配置待执行的操作类型的第一配置区域、用于配置待操作的业务对象的第二配置区域、以及用于配置待操作的对象属性的第三配置区域。
可选地,构造单元包括:
使用模块,用于使用一组操作参数的参数信息执行以下的操作指令构造操作,得到待发送的目标操作命令:
第一设置模块,用于根据指定属性操作的操作类型,设置指定操作命令中的操作码字段中的操作码,其中,操作码字段中的操作码用于指示对应的操作类型属于读操作或者写操作;
写入模块,用于将数据缓存区的数据指针写入到指定操作命令的数据指针字段,其中,数据缓存区用于存储指定对象属性的属性信息,数据缓存区的数据指针指向数据缓存区的首地址;
第二设置模块,用于基于一组操作参数的参数信息设置指定操作命令中的一组控制字段,其中,一组控制字段用于写入业务对象的对象标识以及操作类型的类型标识。
可选地,第一设置模块包括:
第一设置子模块,用于在指定属性操作的操作类型为对象属性设置操作的情况下,设置操作码字段中的操作码为第一操作码,其中,第一操作码用于指示指定属性操作属于写操作,指定属性操作包括以下至少之一:增加操作,删除操作,修改操作;
第二设置子模块,用于在指定属性操作的操作类型为对象属性查询操作的情况下,设置操作码字段中的操作码为第二操作码,其中,第二操作码用于指示指定属性操作属于读操作
可选地,上述装置还包括:
封装单元,用于在指定属性操作的操作类型为对象属性设置操作的情况下,按照标识符长度属性值TLV格式对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据;
传递单元,用于将与指定对象属性对应的TLV数据存储到数据缓存区中,以通过数据缓存区将与指定对象属性对应的TLV数据传递给目标磁盘设备。
可选地,封装单元包括:
第一申请模块,用于在指定属性操作的操作类型为对象属性设置操作的情况下,根据指定业务对象的对象类型申请封包器,得到目标封包器,其中,目标封包器用于基于指定业务对象的对象属性模板按照TLV格式对指定对象属性的属性信息进行封装处理,指定业务对象的对象属性模板用于标识指定业务对象的一组预设对象属性;
封装模块,用于通过目标封包器对指定对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据。
可选地,封装模块包括:
赋值子模块,用于通过目标封包器使用指定对象属性的属性信息为目标封包器中与指定对象属性对应的信元的标识符、长度和属性值进行赋值;
遍历子模块,用于遍历出目标封包器中的有效信元,并按照TLV格式对遍历到的有效信元的信息进行封装处理,得到与指定对象属性对应的TLV数据,其中,有效信元是其中的标识符、长度和属性值已赋值的信元。
可选地,上述装置还包括:
释放单元,用于在按照TLV格式对遍历到的有效信元的信息进行封装处理之后,释放目标封包器。
可选地,封装单元包括:
对齐模块,用于在指定属性操作的操作类型为对象属性设置操作的情况下,当指定对象属性包含多个对象属性时,按照TLV格式对多个对象属性中的每个对象属性的属性信息进行封装处理,得到与指定对象属性对应的TLV数据,其中,与指定对象属性对应的TLV数据包含与每个对象属性对应的TLV项,与每个对象属性对应的TLV项按照4字节进行数据对齐。
可选地,上述装置还包括:
补齐单元,在按照TLV格式对多个对象属性中的每个对象属性的属性信息进行封装处理的过程中,在封装后的与多个对象属性中的目标对象属性对应的TLV项的长度不是4字节的整倍数的情况下,在与目标对象属性对应的TLV项尾部添加指定字节,以将与目标对象属性对应的TLV项的长度补齐为4字节的整倍数。
可选地,上述装置还包括:
存入单元,用于在指定属性操作的操作类型为对象属性读取操作的情况下,在接收到目标磁盘设备响应于目标操作命令返回的响应消息的情况下,基于数据缓存区的数据指针,从数据缓存区中读取出目标磁盘设备存入的与指定对象属性对应的标识符长度属性值TLV数据;
解析单元,用于从与指定对象属性对应的TLV数据中解析出指定对象属性的属性信息。
可选地,解析单元包括:
第二申请模块,用于根据指定业务对象的对象类型申请数据解析器,得到目标解析器,其中,目标解析器用于基于指定业务对象的对象属性模板从与指定对象属性对应的TLV数据解析出指定对象属性的属性信息,指定业务对象的对象属性模板用于标识指定业务对象的一组预设对象属性;
解析模块,用于通过目标解析器对与指定对象属性对应的TLV数据进行数据解析,得到指定对象属性的属性信息。
可选地,解析模块包括:
解析子模块,用于通过目标解析器按照一组预设对象属性依次对与指定对象属性对应的TLV数据进行解析,并为解析到对应的标识符、长度信息和属性值的信元进行赋值;
遍历子模块,用于遍历出目标解析器中的有效信元,根据遍历到的有效信元的标识符和属性值,确定为指定对象属性的属性信息,其中,有效信元是其中的标识符、长度信息和属性值已赋值的信元。
可选地,解析子模块包括:
解析子单元,用于在通过目标解析器按照一组预设对象属性中的当前对象属性对与指定对象属性对应的TLV数据进行解析的过程中,在解析到与当前对象属性对应的当前信元的标识符和长度信息的情况下,按照解析出的当前信元的长度信息解析出当前信元的属性值;
使用子单元,用于使用解析出的当前信元的标识符、长度信息和属性值,为目标解析器中的当前信元进行赋值。
可选地,上述装置还包括:
继续解析单元,用于在当前信元的标识符、长度信息和属性值的长度和不是4字节的整数倍的情况下,当当前对象属性不是与一组预设对象属性的最后一个对象属性时,将当前解析到的位置向后偏移至满足字节对齐条件之后,通过目标解析器按照一组预设对象属性中当前对象属性的下一个对象属性继续对与指定对象属性对应的TLV数据进行解析,其中,字节对齐条件为在与指定对象属性对应的TLV数据中,与一个对象属性对应的信元按照4字节进行数据对齐。
可选地,上述装置还包括:
接收单元,用于接收目标磁盘设备响应于目标操作命令返回的响应消息,其中,目标操作命令为提交队列条目SQE命令,目标操作命令的响应消息为完成队列条目CQE命令,其中,SQE命令和CQE命令均属于非易失性内存主机控制器接口规范NVMe管理命令。
根据本申请实施例的又一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,参考图8,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理器801执行时,执行本申请实施例提供的各种功能。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
参考图8,图8是根据本申请实施例的一种可选的电子设备的计算机系统的结构框图。
图8示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。如图8所示,计算机系统800包括中央处理器801(Central Processing Unit,简称为CPU),其可以根据存储在只读存储器802(Read-Only Memory,ROM)中的程序或者从存储部分808加载到随机访问存储器803(Random Access Memory,简称为RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器803中,还存储有系统操作所需的各种程序和数据。中央处理器801、在只读存储器802以及随机访问存储器803通过总线804彼此相连。输入/输出接口805(Input /Output接口,简称为I/O接口)也连接至总线804。
以下部件连接至输入/输出接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(Cathode Ray Tube,简称为CRT)、液晶显示器(Liquid Crystal Display,简称为LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至输入/输出接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理器801执行时,执行本申请的系统中限定的各种功能。
需要说明的是,图8示出的电子设备的计算机系统800仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例而已,并不用于限制本申请实施例,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请实施例的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

Claims (21)

1.一种存储设备的设备控制方法,其特征在于,包括:
通过目标设备的设备主机获取一组操作参数的参数信息,其中,所述一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,所述目标磁盘设备为所述设备主机所连接的磁盘设备;
使用所述一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,所述目标操作命令是基于所述一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的;
通过所述设备主机将所述目标操作命令发送给所述目标磁盘设备,以由所述目标磁盘设备执行所述目标操作命令所指示的目标属性操作,其中,所述目标属性操作与所述目标操作命令所指示的操作类型对应,所述目标属性操作是对所述目标操作命令指示的业务对象的对象属性执行的;
其中,所述使用所述一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,包括:使用所述一组操作参数的参数信息执行以下的操作命令构造操作,得到待发送的所述目标操作命令:根据所述指定属性操作的操作类型,设置指定操作命令中的操作码字段中的操作码,其中,所述操作码字段中的操作码用于指示对应的操作类型属于读操作或者写操作;将数据缓存区的数据指针写入到所述指定操作命令的数据指针字段,其中,所述数据缓存区用于存储所述指定对象属性的属性信息,所述数据缓存区的数据指针指向所述数据缓存区的首地址;基于所述一组操作参数的参数信息设置所述指定操作命令中的一组控制字段,其中,所述一组控制字段用于写入业务对象的对象标识以及操作类型的类型标识。
2.根据权利要求1所述的方法,其特征在于,所述通过目标设备的设备主机获取一组操作参数的参数信息,包括:
通过所述目标设备的所述设备主机获取通过命令配置界面所配置的所述一组操作参数的参数信息,其中,所述命令配置界面是用于配置所述设备主机与所述目标磁盘设备之间的操作命令的界面,所述命令配置界面包含用于配置待执行的属性操作的操作类型的第一配置区域、用于配置待操作的业务对象的第二配置区域、以及用于配置待操作的对象属性的第三配置区域。
3.根据权利要求1所述的方法,其特征在于,所述根据所述指定属性操作的操作类型,设置指定操作命令中的操作码字段中的操作码,包括:
在所述指定属性操作的操作类型为对象属性设置操作的情况下,设置所述操作码字段中的操作码为第一操作码,其中,所述第一操作码用于指示所述指定属性操作属于写操作,所述指定属性操作包括以下至少之一:增加操作,删除操作,修改操作;
在所述指定属性操作的操作类型为对象属性查询操作的情况下,设置所述操作码字段中的操作码为第二操作码,其中,所述第二操作码用于指示所述指定属性操作属于读操作。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述指定属性操作的操作类型为对象属性设置操作的情况下,按照标识符长度属性值TLV格式对所述指定对象属性的属性信息进行封装处理,得到与所述指定对象属性对应的TLV数据;
将与所述指定对象属性对应的TLV数据存储到所述数据缓存区中,以通过所述数据缓存区将与所述指定对象属性对应的TLV数据传递给所述目标磁盘设备。
5.根据权利要求4所述的方法,其特征在于,所述在所述指定属性操作的操作类型为对象属性设置操作的情况下,按照标识符长度属性值TLV格式对所述指定对象属性的属性信息进行封装处理,得到与所述指定对象属性对应的TLV数据,包括:
在所述指定属性操作的操作类型为对象属性设置操作的情况下,根据所述指定业务对象的对象类型申请封包器,得到目标封包器,其中,所述目标封包器用于基于所述指定业务对象的对象属性模板按照TLV格式对所述指定对象属性的属性信息进行封装处理,所述指定业务对象的对象属性模板用于标识所述指定业务对象的一组预设对象属性;
通过所述目标封包器对所述指定对象属性的属性信息进行封装处理,得到与所述指定对象属性对应的TLV数据。
6.根据权利要求5所述的方法,其特征在于,所述目标封包器包含与所述一组预设对象属性中的每个预设对象属性对应的信元;
所述通过所述目标封包器对所述指定对象属性的属性信息进行封装处理,得到与所述指定对象属性对应的TLV数据,包括:
通过所述目标封包器使用所述指定对象属性的属性信息为所述目标封包器中与所述指定对象属性对应的信元的标识符、长度信息和属性值进行赋值;
遍历出所述目标封包器中的有效信元,并按照TLV格式对遍历到的所述有效信元的信息进行封装处理,得到与所述指定对象属性对应的TLV数据,其中,所述有效信元是其中的标识符、长度信息和属性值已赋值的信元。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述按照TLV格式对遍历到的所述有效信元的信息进行封装处理之后,释放所述目标封包器。
8.根据权利要求4所述的方法,其特征在于,所述在所述指定属性操作的操作类型为对象属性设置操作的情况下,按照标识符长度属性值TLV格式对所述指定对象属性的属性信息进行封装处理,得到与所述指定对象属性对应的TLV数据,包括:
在所述指定属性操作的操作类型为对象属性设置操作的情况下,当所述指定对象属性包含多个对象属性时,按照TLV格式对所述多个对象属性中的每个对象属性的属性信息进行封装处理,得到与所述指定对象属性对应的TLV数据,其中,与所述指定对象属性对应的TLV数据包含与所述每个对象属性对应的TLV项,与所述每个对象属性对应的TLV项按照4字节进行数据对齐。
9.根据权利要求8所述的方法,其特征在于,在所述按照TLV格式对所述多个对象属性中的每个对象属性的属性信息进行封装处理的过程中,所述方法还包括:
在封装后的与所述多个对象属性中的目标对象属性对应的TLV项的长度不是4字节的整倍数的情况下,在与所述目标对象属性对应的TLV项尾部添加指定字节,以将与所述目标对象属性对应的TLV项的长度补齐为4字节的整倍数。
10.根据权利要求8所述的方法,其特征在于,在与所述每个对象属性对应的TLV项中,标识符所占用的字节长度为2个字节,长度信息占用的字节长度为2个字节,属性值占用的字节长度为固定长度或者可变长度。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述指定属性操作的操作类型为对象属性读取操作的情况下,在接收到所述目标磁盘设备响应于所述目标操作命令返回的响应消息的情况下,基于所述数据缓存区的数据指针,从所述数据缓存区中读取出所述目标磁盘设备存入的与所述指定对象属性对应的标识符长度属性值TLV数据;
从与所述指定对象属性对应的TLV数据中解析出所述指定对象属性的属性信息。
12.根据权利要求11所述的方法,其特征在于,所述从与所述指定对象属性对应的TLV数据中解析出所述指定对象属性的属性信息,包括:
根据所述指定业务对象的对象类型申请数据解析器,得到目标解析器,其中,所述目标解析器用于基于所述指定业务对象的对象属性模板从与所述指定对象属性对应的TLV数据解析出所述指定对象属性的属性信息,所述指定业务对象的对象属性模板用于标识所述指定业务对象的一组预设对象属性;
通过所述目标解析器对与所述指定对象属性对应的TLV数据进行数据解析,得到所述指定对象属性的属性信息。
13.根据权利要求12所述的方法,其特征在于,所述目标解析器包含与所述一组预设对象属性中的每个预设对象属性对应的信元;
所述通过所述目标解析器对与所述指定对象属性对应的TLV数据进行数据解析,得到所述指定对象属性的属性信息,包括:
通过所述目标解析器按照所述一组预设对象属性依次对与所述指定对象属性对应的TLV数据进行解析,并为解析到对应的标识符、长度信息和属性值的信元进行赋值;
遍历出所述目标解析器中的有效信元,根据遍历到的所述有效信元的标识符和属性值,确定为所述指定对象属性的属性信息,其中,所述有效信元是其中的标识符、长度信息和属性值已赋值的信元。
14.根据权利要求13所述的方法,其特征在于,所述通过所述目标解析器按照所述一组预设对象属性依次对与所述指定对象属性对应的TLV数据进行解析,并为所述解析到对应的标识符、长度信息和属性值的信元进行赋值,包括:
在通过所述目标解析器按照所述一组预设对象属性中的当前对象属性对与所述指定对象属性对应的TLV数据进行解析的过程中,在解析到与所述当前对象属性对应的当前信元的标识符和长度信息的情况下,按照解析出的所述当前信元的长度信息解析出所述当前信元的属性值;
使用解析出的所述当前信元的标识符、长度信息和属性值,为所述目标解析器中的所述当前信元进行赋值。
15.根据权利要求14所述的方法,其特征在于,在所述按照解析出的所述当前信元的长度信息解析出所述当前信元的属性值之后,所述方法还包括:
在所述当前信元的标识符、长度信息和属性值的长度和不是4字节的整数倍的情况下,当所述当前对象属性不是与所述一组预设对象属性的最后一个对象属性时,将当前解析到的位置向后偏移至满足字节对齐条件之后,通过所述目标解析器按照所述一组预设对象属性中所述当前对象属性的下一个对象属性继续对与所述指定对象属性对应的TLV数据进行解析,其中,所述字节对齐条件为在与所述指定对象属性对应的TLV数据中,与一个对象属性对应的信元按照4字节进行数据对齐。
16.根据权利要求1所述的方法,其特征在于,在所述通过所述设备主机将所述目标操作命令发送给所述目标磁盘设备之后,所述方法还包括:
接收所述目标磁盘设备响应于所述目标操作命令返回的响应消息,其中,所述目标操作命令为提交队列条目SQE命令,所述目标操作命令的响应消息为完成队列条目CQE命令,其中,SQE命令和所述CQE命令均属于非易失性内存主机控制器接口规范NVMe管理命令。
17. 根据权利要求16所述的方法,其特征在于,所述一组控制字段为命令双字节CDW10到CDW 15中的全部或者部分。
18.根据权利要求1至16中任一项所述的方法,其特征在于,所述目标磁盘设备为磁盘冗余阵列RAID卡,其中,所述RAID卡用于将多个磁盘设备组合为一个或多个存储阵列组,所述指定业务对象的对象类型为以下至少之一:RAID控制器,RAID阵列,逻辑卷,物理盘。
19.一种存储设备的设备控制装置,其特征在于,包括:
获取单元,用于通过目标设备的设备主机获取一组操作参数的参数信息,其中,所述一组操作参数包含与目标磁盘设备上的待操作的指定业务对象、待操作的指定对象属性、以及待执行的指定属性操作对应的操作参数,所述目标磁盘设备为所述设备主机所连接的磁盘设备;
构造单元,用于使用所述一组操作参数的参数信息进行操作命令构造,得到待发送的目标操作命令,其中,所述目标操作命令是基于所述一组操作参数中的操作参数与操作命令中的命令字段之间的对应关系构建的;
发送单元,用于通过所述设备主机将所述目标操作命令发送给所述目标磁盘设备,以由所述目标磁盘设备执行所述目标操作命令所指示的目标属性操作,其中,所述目标属性操作与所述目标操作命令所指示的操作类型对应,所述目标属性操作是对所述目标操作命令指示的业务对象的对象属性执行的;
其中,所述构造单元包括:使用模块,用于使用一组操作参数的参数信息执行以下的操作指令构造操作,得到待发送的目标操作命令;第一设置模块,用于根据指定属性操作的操作类型,设置指定操作命令中的操作码字段中的操作码,其中,操作码字段中的操作码用于指示对应的操作类型属于读操作或者写操作;写入模块,用于将数据缓存区的数据指针写入到指定操作命令的数据指针字段,其中,数据缓存区用于存储指定对象属性的属性信息,数据缓存区的数据指针指向数据缓存区的首地址;第二设置模块,用于基于一组操作参数的参数信息设置指定操作命令中的一组控制字段,其中,一组控制字段用于写入业务对象的对象标识以及操作类型的类型标识。
20.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至18任一项中所述的方法的步骤。
21.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至18任一项中所述的方法的步骤。
CN202311259643.3A 2023-09-27 2023-09-27 存储设备的设备控制方法及装置、存储介质及电子设备 Active CN117008844B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311259643.3A CN117008844B (zh) 2023-09-27 2023-09-27 存储设备的设备控制方法及装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311259643.3A CN117008844B (zh) 2023-09-27 2023-09-27 存储设备的设备控制方法及装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN117008844A CN117008844A (zh) 2023-11-07
CN117008844B true CN117008844B (zh) 2024-01-26

Family

ID=88562083

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311259643.3A Active CN117008844B (zh) 2023-09-27 2023-09-27 存储设备的设备控制方法及装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN117008844B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582215A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 硬盘操作命令的执行方法、硬盘及存储介质
CN114327241A (zh) * 2020-09-29 2022-04-12 伊姆西Ip控股有限责任公司 管理磁盘的方法、电子设备和计算机程序产品
CN115525225A (zh) * 2022-09-26 2022-12-27 阿里巴巴集团控股有限公司 磁盘控制、信息处理、磁盘访问的确定方法以及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4616898B2 (ja) * 2008-05-07 2011-01-19 株式会社日立製作所 ストレージ装置制御方法および計算機システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582215A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 硬盘操作命令的执行方法、硬盘及存储介质
CN114327241A (zh) * 2020-09-29 2022-04-12 伊姆西Ip控股有限责任公司 管理磁盘的方法、电子设备和计算机程序产品
CN115525225A (zh) * 2022-09-26 2022-12-27 阿里巴巴集团控股有限公司 磁盘控制、信息处理、磁盘访问的确定方法以及电子设备

Also Published As

Publication number Publication date
CN117008844A (zh) 2023-11-07

Similar Documents

Publication Publication Date Title
JP7137430B2 (ja) データ記憶装置及びブリッジ装置
US9292224B2 (en) Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system
US9330042B2 (en) Determining extended capability of a channel path
US9927984B2 (en) Electronic system with interface control mechanism and method of operation thereof
CN102750249B (zh) 上位机与下位机通信的方法、装置及系统
CN113179216A (zh) 一种寄存器的远程配置方法、计算机设备及存储介质
US10133492B2 (en) Electronic system with interface control mechanism and method of operation thereof
CN117008844B (zh) 存储设备的设备控制方法及装置、存储介质及电子设备
CN110995754B (zh) 一种数据报文索引的管理方法和装置以及设备
US6742173B2 (en) Communication and control model for field programmable gate arrays and other programmable logic devices
CN114328342A (zh) 一种用于PCIe异构加速卡的新型程控配置方法
CN111126983A (zh) 一种基于销售终端的收单连接方法和销售终端及销售设备
CN110995755B (zh) 一种配置数据报文的方法和装置以及设备
CN111064728B (zh) 一种数据报文的组包和解包方法和装置以及设备
CN110442629B (zh) 大数据多中心异构动态数据转换方法
CN113220238B (zh) 一种通用sas控制器接口实现方法
CN117376110B (zh) 交互数据的传输方法、系统及装置、存储介质及电子设备
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
CN117608686A (zh) 加速器的配置、传输方法、装置、设备、介质及服务器
CN116569154A (zh) 数据传输方法和相关装置
CN113608791A (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