CN116301596A - 一种软件raid构建方法、装置、设备及存储介质 - Google Patents

一种软件raid构建方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116301596A
CN116301596A CN202310109431.0A CN202310109431A CN116301596A CN 116301596 A CN116301596 A CN 116301596A CN 202310109431 A CN202310109431 A CN 202310109431A CN 116301596 A CN116301596 A CN 116301596A
Authority
CN
China
Prior art keywords
raid
software
nvme
physical information
storage device
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.)
Pending
Application number
CN202310109431.0A
Other languages
English (en)
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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center 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 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202310109431.0A priority Critical patent/CN116301596A/zh
Publication of CN116301596A publication Critical patent/CN116301596A/zh
Pending legal-status Critical Current

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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种软件RAID构建方法、装置、设备及存储介质,涉及计算机技术领域,包括:当需要对目标存储设备进行软件RAID升级时,获取目标存储设备和待构建软件RAID的物理信息得到存储设备物理信息和软件RAID物理信息;将软件RAID设备物理信息替换为存储设备物理信息,并以隐藏的方式将目标存储设备加入到RAID组中;当主机接口呈现出升级到RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。本申请将存储设备系统升级到软件RAID系统的过程中,在底层软件层面将软件RAID的物理信息替换原存储设备的物理信息,并将原存储设备以隐藏的方式加入到RAID组中,能够使系统升级前后保持一致,并且用户访问存储设备的方式不需改变,从而达到平滑升级的目的。

Description

一种软件RAID构建方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种软件RAID构建方法、装置、设备及存储介质。
背景技术
目前,在构建软件RAID(Redundant Arrays of Independent Disks,独立冗余磁盘阵列)时,通常使用MD(Multiple Devices driver for Linux,一种软件RAID实现方法)软件构建软件RAID系统,MD软件通过Linux的块设备层(Block Layer)对存储设备进行管理和访问操作。具体的,MD软件将多个节点的存储设备,如SATA(Serial AdvancedTechnology Attachment,串口硬盘)、SAS(Serial Attached SCSI,串行连接SCSI接口)、NVMe(Non Volatile Memory Express,非易失性内存接口规范)等设备以/dev/sda、/dev/sdb/、dev/sdc、
/dev/nvme0n1、/dev/nvme1n1等设备接口的形式加入到RAID组,然后完成软件RAID的功能。需要指出的是,MD软件包括用户态的mdadm管理软件和内核态的MD驱动管理软件,其中,用户态的mdadm管理软件用来完成RAID的配置管理等动作,内核态的MD驱动管理软件用来完成存储设备的实际RAID功能。
然而,在利用MD软件构建软件RAID系统时,由于设备名称会发生变化,因此软件RAID系统构建前后设备接口不一致,此时用户需要根据软件RAID的配置情况对系统进行相应的修改,如修改对应的操作脚本、代码或程序配置等,无法实现平滑过渡。例如,当利用MD软件将多个NVMe存储盘系统升级为软件RAID系统时,多个NVMe存储盘在生成软件RAID后设备名称会由/dev/nvme0n1、/dev/nvme1n1、/dev/nvme2n1变为/dev/md0、/dev/md1、/dev/md2。
因此,如何在利用MD软件构建软件RAID系统的过程中,实现平滑过渡并保持设备接口一致是目前还有待进一步解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种软件RAID构建方法、装置、设备及存储介质,能够使存储设备系统升级前后保持一致,并使用户访问存储设备的方式不需改变,即用户无感知存储设备的变化,从而方便主机操作系统和用户程序的使用,并达到平滑升级的目的。其具体方案如下:
第一方面,本申请公开了一种软件RAID构建方法,包括:
当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息;
将所述软件RAID设备物理信息替换为所述存储设备物理信息,并以隐藏的方式将所述目标存储设备加入到RAID组中;
当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
可选的,所述当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,包括:
当Linux系统监测到需要对NVMe存储盘设备进行软件RAID升级时,获取所述NVMe存储盘设备和待升级软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息。
可选的,所述以隐藏的方式将所述目标存储设备加入到RAID组中,包括:
加载自定义的NVMe设备内核态驱动软件,并通过所述NVMe设备内核态驱动软件对所述NVMe存储盘设备进行隐藏;
通过自定义的MD软RAID用户态mdadm管理软件生成创建所述NVMe存储盘设备的RAID组,并将隐藏后的所述NVMe存储盘设备加入到所述RAID组中的用户管理命令;
当自定义的MD软RAID内核态驱动软件接收到所述用户管理命令时,对所述用户管理命令进行解析,并创建所述NVMe存储盘设备的RAID组,再将隐藏后的所述NVMe存储盘设备加入到所述RAID组中;其中,所述NVMe设备内核态驱动软件和所述MD软RAID内核态驱动软件位于所述Linux系统的内核态,所述MD软RAID用户态mdadm管理软件位于所述Linux系统的用户态。
可选的,所述将所述软件RAID物理信息替换为所述存储物理信息之前,还包括:
判断所述Linux系统在初始化时是否加载有原始NVMe驱动,若所述Linux系统在初始化时加载有所述原始NVMe驱动,则对所述原始NVMe驱动进行解绑。
可选的,所述加载自定义的NVMe设备内核态驱动软件,包括:
加载自定义的NVMe设备内核态驱动软件,以通过所述NVMe设备内核态驱动软件扫描未加载驱动的所述NVMe存储盘设备;
判断当前是否工作在隐藏存储盘模式,若是则初始化所述NVMe设备内核态驱动软件,并封装获取所述隐藏存储盘模式的接口;
通过所述NVMe设备内核态驱动软件检测所述NVMe存储盘设备,并添加所述NVMe存储盘设备到设备列表中;
在添加所述NVMe存储盘设备到所述设备列表的过程中,为所述NVMe存储盘设备申请节点信息,并对所述节点信息进行初始化,以及检查当前设置的所述隐藏存储盘模式是否生效;
若生效,则在Linux设备驱动提供的Block层设备接口中增加隐藏模式标识,并记录所述存储设备物理信息、保存所述节点信息和所述节点信息对应的Linux块设备操作句柄信息。
可选的,所述记录所述存储设备物理信息、保存所述节点信息和所述节点信息对应的Linux块设备操作句柄信息之后,还包括:
封装获取所述存储设备物理信息的接口函数和所述节点信息对应的所述Linux块设备操作句柄信息的接口函数,以便其他模块的调用。
可选的,所述获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,包括:
获取所述目标存储设备和待构建软件RAID的设备标识符,得到存储设备设备标识符和软件RAID设备标识符。
第二方面,本申请公开了一种软件RAID构建装置,包括:
物理信息获取模块,用于当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息;
物理信息替换模块,用于将所述软件RAID设备物理信息替换为所述存储设备物理信息;
添加模块,用于以隐藏的方式将所述目标存储设备加入到RAID组中;
系统升级为模块,用于当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
第三方面,本申请公开了一种电子设备,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现前述的软件RAID构建方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述的软件RAID构建方法。
可见,本申请当监测到需要对目标存储设备进行软件RAID升级时,先获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,然后将所述软件RAID设备物理信息替换为所述存储设备物理信息,并以隐藏的方式将所述目标存储设备加入到RAID组中,当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。本申请将存储设备系统升级到软件RAID系统的过程中,在底层软件层面将软件RAID的物理信息替换原存储设备的物理信息,并将原存储设备以隐藏的方式加入到RAID组中,能够使存储设备系统升级前后保持一致,并使用户访问存储设备的方式不需改变,即用户无感知存储设备的变化,从而方便主机操作系统和用户程序的使用,达到平滑升级的目的。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种软件RAID构建方法流程图;
图2为本申请公开的一种具体的软件模块位置关系示意图;
图3为本申请公开的一种具体的软件RAID构建方法流程图;
图4为本申请公开的一种具体的软件RAID系统设备接口示意图;
图5为本申请公开的一种软件RAID构建装置结构示意图;
图6为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种软件RAID构建方法,参见图1所示,该方法包括:
步骤S11:当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息。
本实施例中,当系统监测到需要对目标存储设备进行软件RAID升级时,先获取上述目标存储设备和待构建软件RAID的物理信息,得到相应的存储设备物理信息和软件RAID物理信息。其中,所述目标存储设备包括但不限于SATA、SAS、NVMe等存储设备;所述软件RAID的物理信息包括但不限于总线号,设备号和功能号等信息。
在一种具体的实施方式中,所述当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,具体可以包括:当Linux系统监测到需要对NVMe存储盘设备进行软件RAID升级时,获取所述NVMe存储盘设备和待升级软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息。例如,当Linux系统监测到需要对NVMe存储盘设备进行软件RAID升级时,即将NVMe系统升级为软件RAID系统时,先确定出需要组建软件RAID的NVMe存储盘设备的物理信息和待升级软件RAID的物理信息,其中,所述物理信息具体可以为基于PCIe(Peripheral Component Interconnect express,一种高速串行计算机扩展总线标准)总线的BDF(Bus/Device/Function通常用来描述PCI/PCIe设备相对于PCI/PCIe系统总线的物理位置)信息,如总线号,设备号和功能号等。在Linux系统下可以通过lspci命令查看对应的NVMe存储盘设备的BDF信息。
步骤S12:将所述软件RAID设备物理信息替换为所述存储设备物理信息,并以隐藏的方式将所述目标存储设备加入到RAID组中。
本实施例中,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息之后,进一步的,将上述软件RAID设备物理信息替换为上述存储设备物理信息,然后以隐藏的方式将上述目标存储设备加入到RAID组中。当NVMe存储盘设备的物理信息为/dev/nvme0n1、待构建软件RAID的物理信息为/dev/md0时,将上述待构建软件RAID的物理信息/dev/md0替换为/dev/nvme0n1,然后以隐藏的方式将NVMe存储盘设备加入到RAID组中。
具体的,所述以隐藏的方式将所述目标存储设备加入到RAID组中,可以包括:加载自定义的NVMe设备内核态驱动软件,并通过所述NVMe设备内核态驱动软件对所述NVMe存储盘设备进行隐藏;通过自定义的MD软RAID用户态mdadm管理软件生成创建所述NVMe存储盘设备的RAID组,并将隐藏后的所述NVMe存储盘设备加入到所述RAID组中的用户管理命令;当自定义的MD软RAID内核态驱动软件接收到所述用户管理命令时,对所述用户管理命令进行解析,并创建所述NVMe存储盘设备的RAID组,再将隐藏后的所述NVMe存储盘设备加入到所述RAID组中;其中,所述NVMe设备内核态驱动软件和所述MD软RAID内核态驱动软件位于所述Linux系统的内核态,所述MD软RAID用户态mdadm管理软件位于所述Linux系统的用户态。需要指出的是,本实施例中预先创建了三个软件模块用于软件RAID的构建,分别为NVMe设备内核态驱动软件、MD软RAID内核态驱动软件和MD软RAID用户态mdadm管理软件;其中,所述NVMe设备内核态驱动软件具体可以实现NVMe存储盘设备的隐藏、保存NVMe存储盘设备注册到块设备层的操作接口指针地址、根据NVMe存储盘设备PCIe的BDF信息查找设备操作接口等相关功能,另外,该NVMe设备内核态驱动软件还可以提供接口开关,通过所述接口开关可以确定当前的工作模式,以兼容原有的NVMe存储盘设备名称和相关功能;所述MD软RAID用户态mdadm管理软件具体可以实现对待隐藏的NVMe存储盘设备的RAID组创建,添加待隐藏的NVMe存储盘设备以及删除待隐藏的NVMe存储盘设备等功能;所述MD软RAID内核态驱动软件具体可以实现接收来自所述MD软RAID用户态mdadm管理软件的RAID组创建、删除等命令、解析创建的RAID组、添加隐藏NVMe存储盘设备、删除隐藏NVMe存储盘设备的命令以及调用所述NVMe设备内核态驱动软件提供的接口、查找隐藏NVMe存储盘设备对应的underlay模式下的Linux的块设备层的访问接口以完成对待隐藏的NVMe存储盘设备的操作等功能。另外,参见图2所示,所述MD软RAID用户态mdadm管理软件与所述MD软RAID内核态驱动软件进行交互,用于完成软RAID相关的管理功能;所述MD软RAID内核态驱动软件与所述NVMe设备内核态驱动软件进行交互,用于完成操作系统或用户下发的IO访问请求。
并且,上述NVMe设备内核态驱动软件和上述MD软RAID内核态驱动软件位于Linux系统的内核态,而上述MD软RAID用户态mdadm管理软件位于Linux系统的用户态。在具体的实施过程中,可以先加载自定义的NVMe设备内核态驱动软件,然后通过上述NVMe设备内核态驱动软件对上述NVMe存储盘设备进行隐藏,接着通过自定义的MD软RAID用户态mdadm管理软件生成创建上述NVMe存储盘设备的RAID组,再将隐藏后的所述NVMe存储盘设备加入到上述RAID组中的用户管理命令,进一步的,当自定义的MD软RAID内核态驱动软件接收到上述用户管理命令时,先对上述用户管理命令进行解析,然后创建所述NVMe存储盘设备的RAID组,再将隐藏后的所述NVMe存储盘设备加入到上述RAID组中。
步骤S13:当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
本实施例中,将所述软件RAID设备物理信息替换为所述存储设备物理信息,并以隐藏的方式将所述目标存储设备加入到RAID组中之后,当主机接口呈现出升级到上述RAID组后,可以进一步的通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
可见,本申请实施例当监测到需要对目标存储设备进行软件RAID升级时,先获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,然后将所述软件RAID设备物理信息替换为所述存储设备物理信息,并以隐藏的方式将所述目标存储设备加入到RAID组中,当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。本申请实施例将存储设备系统升级到软件RAID系统的过程中,在底层软件层面将软件RAID的物理信息替换原存储设备的物理信息,并将原存储设备以隐藏的方式加入到RAID组中,能够使存储设备系统升级前后保持一致,并使用户访问存储设备的方式不需改变,即用户无感知存储设备的变化,从而方便主机操作系统和用户程序的使用,达到平滑升级的目的。
本申请实施例公开了一种具体的软件RAID构建方法,参见图3所示,该方法包括:
步骤S21:当Linux系统监测到需要对NVMe存储盘设备进行软件RAID升级时,获取所述NVMe存储盘设备和待升级软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息。
在一种具体的实施方式中,当Linux系统监测到需要对NVMe存储盘设备进行软件RAID升级时,可以先获取上述NVMe存储盘设备和待构建软件RAID的设备标识符,得到相应的存储设备设备标识符和软件RAID设备标识符。如获取NVMe存储盘设备的设备标识符/dev/nvme0n1和待构建软件RAID的设备标识符/dev/md0。
步骤S22:将所述软件RAID设备物理信息替换为所述存储设备物理信息,并加载自定义的NVMe设备内核态驱动软件,再通过所述NVMe设备内核态驱动软件对所述NVMe存储盘设备进行隐藏。
本实施例中,获取所述NVMe存储盘设备和待升级软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息之后,进一步的,将上述软件RAID设备物理信息替换为上述存储设备物理信息,然后加载自定义的NVMe设备内核态驱动软件,再通过上述NVMe设备内核态驱动软件对上述NVMe存储盘设备进行隐藏。
本实施例中,所述将所述软件RAID物理信息替换为所述存储物理信息之前,具体还包括:判断所述Linux系统在初始化时是否加载有原始NVMe驱动,若所述Linux系统在初始化时加载有所述原始NVMe驱动,则对所述原始NVMe驱动进行解绑。需要指出的是,在对软件RAID的物理信息进行替换之前,需要解绑待加入RAID组中的对应NVMe存储盘设备的原始NVMe驱动。具体的,如果Linux系统在初始化时默认加载了对应NVMe存储盘设备的原始驱动,则解绑对应的所述原始驱动;如果Linux系统初始化时没有加载NVMe驱动,则不需要进行解绑处理。
具体的,所述加载自定义的NVMe设备内核态驱动软件,可以包括:加载自定义的NVMe设备内核态驱动软件,以通过所述NVMe设备内核态驱动软件扫描未加载驱动的所述NVMe存储盘设备;判断当前是否工作在隐藏存储盘模式,若是则初始化所述NVMe设备内核态驱动软件,并封装获取所述隐藏存储盘模式的接口;通过所述NVMe设备内核态驱动软件检测所述NVMe存储盘设备,并添加所述NVMe存储盘设备到设备列表中;在添加所述NVMe存储盘设备到所述设备列表的过程中,为所述NVMe存储盘设备申请节点信息,并对所述节点信息进行初始化,以及检查当前设置的所述隐藏存储盘模式是否生效;若生效,则在Linux设备驱动提供的Block层设备接口中增加隐藏模式标识,并记录所述存储设备物理信息、保存所述节点信息和所述节点信息对应的Linux块设备操作句柄信息。本实施例中,在加载了自定义的NVMe设备内核态驱动软件之后,可以通过所述NVMe设备内核态驱动软件扫描到未加载原始驱动的上述NVMe存储设备,进一步的,判断当前Linux系统是否工作在隐藏存储盘模式,如果工作在隐藏存储盘模式则对上述NVMe设备内核态驱动软件进行初始化,并对获取上述隐藏存储盘模式的接口进行封装,以便所述Linux系统中其他模块的调用,默认情况下将所述Linux系统工作模式设置为隐藏存储盘模式,接着通过上述NVMe设备内核态驱动软件对所述NVMe存储盘设备进行检测,然后添加上述NVMe存储盘设备到预设的设备列表中。需要指出的是,在添加所述NVMe存储盘设备到上述设备列表的过程中,还可以为上述NVMe存储盘设备申请节点信息,并对上述节点信息进行初始化,然后检查当前设置的所述隐藏存储盘模式是否已经生效,如果使能了所述隐藏存储盘的模式,则在Linux设备驱动提供的Block层设备接口中增加隐藏模式标识,例如,在Linux设备驱动中,NVMe存储盘设备节点初始化标识中增加隐藏模式标识(GENHD_FL_HIDDEN),可以使用自定义的NVMe存储盘设备名称标识,参见图4所示,类似/dev/nvme_devXnY格式的设备名称,如果存在分区则是类似/dev/nvme_devXnYpZ格式的设备名称,其中X,Y,Z均为十进制数字,X为NVMe控制器的实例编号,通常从0开始,Y为NVMe控制器的NS标识,通常从1开始,Z为基于NVMe存储盘设备的分区标识,通常从1开始。与标准NVMe存储盘设备名称标识不同,(标准NVMe设备名称标识格式类似/dev/nvmeXnY格式的设备名称,如果存在分区,则为类似/dev/nvme_devXnYpZ格式的设备名称,其中X,Y,Z均为十进制数字,X为NVMe控制器的实例编号,通常从0开始,Y为NVMe控制器的NS标识,通常从1开始,Z为基于NVMe存储盘设备的分区标识,通常从1开始),然后再将NVMe存储盘设备加入到设备列表中。通过图4可以看出,对于从单盘NVMe系统升级到软件RAID系统后,用户看到的存储设备接口没有变化,软件RAID系统的接口设备名称/dev/nvme0n1与之前单盘系统的接口设备名称保持一致。当系统从NVMe盘(左侧)升级到软件RAID系统(右侧)工作时,经过底层软件的替换,用户应用访问/dev/nvme0n1设备没有变化,用户不需要对应用进行修改,可以直接使用,从而实现了平滑升级过渡。
另外,如果没有使能所述隐藏存储盘模式,则按照传统的NVMe流程继续进行初始化,生成标准的NVMe存储盘设备名称标识。具体的,隐藏存储盘模式设置的示例代码如下:
//other parameter definition code
struct gendisk*disk;
struct block_device*bdev;
//config other disk->flags parameters
disk->flags|=GENHD_FL_HIDDEN;
//add disk to block layer
device_add_disk(device,disk,…);
bdev=bdget_disk(disk,…);
//other initialization code
其中,struct gendisk*disk为保存存储盘设备节点信息的变量,struct block_device*bdev为保存Linux块设备操作存储盘的句柄信息的变量。
进一步的,记录所述NVMe存储盘设备的物理信息及PCIe的BDF信息,并保存所述NVMe存储盘设备的节点信息及对应的Linux块设备操作句柄信息。
本实施例中,所述记录所述存储设备物理信息、保存所述节点信息和所述节点信息对应的Linux块设备操作句柄信息之后,还可以包括:封装获取所述存储设备物理信息的接口函数和所述节点信息对应的所述Linux块设备操作句柄信息的接口函数,以便其他模块的调用。例如,封装提供获取NVMe存储盘设备信息的接口函数status get_gendisk_info(INPUT struct bdf_info bdf,OUPUTstruct gendisk*disk)和NVMe存储盘设备节点对应的Linux块设备操作句柄信息的接口函数status get_bdev_info(INPUT struct bdf_infobdf,OUPUTstruct block_device*bdev),以便所述Linux系统中的其他模块调用。此外,所述NVMe设备内核态驱动软件还可以完成其他标准NVMe驱动的初始化操作。
步骤S23:通过自定义的MD软RAID用户态mdadm管理软件生成创建所述NVMe存储盘设备的RAID组,并将隐藏后的所述NVMe存储盘设备加入到所述RAID组中的用户管理命令。
本实施例中,通过所述NVMe设备内核态驱动软件对所述NVMe存储盘设备进行隐藏之后,可以进一步的加载自定义的MD软RAID用户态mdadm管理软件,然后通过上述MD软RAID用户态mdadm管理软件生成创建上述NVMe存储盘设备的RAID组,再将隐藏后的所述NVMe存储盘设备加入到上述RAID组中的用户管理命令。
步骤S24:当自定义的MD软RAID内核态驱动软件接收到所述用户管理命令时,对所述用户管理命令进行解析,并创建所述NVMe存储盘设备的RAID组,再将隐藏后的所述NVMe存储盘设备加入到所述RAID组中;其中,所述NVMe设备内核态驱动软件和所述MD软RAID内核态驱动软件位于所述Linux系统的内核态,所述MD软RAID用户态mdadm管理软件位于所述Linux系统的用户态。
本实施例中,在用户态运行MD软RAID用户态mdadm管理软件创建RAID组,并添加隐藏的NVMe存储盘设备到RAID组之后,将参数传递给MD软RAID内核态驱动软件进行解析处理,具体可以通过解析时输入的设备名称参数来判断,当前选择的是隐藏存储盘模式还是原始设备标识模式。具体的,如果-C参数后面的设备名称为类似于/dev/nvmeXnY(X,Y为十进制数字)格式,则认为是隐藏存储盘模式;如果-C参数后面的设备名称为类似于/dev/mdX(X为十进制数字)格式,则认为是非隐藏存储盘模式。如果当前工作在隐藏存储盘模式,则创建RAID组命令中,物理盘列表信息输入为存储盘的物理位置信息的列表,如物理位置信息列表为NVMe存储盘设备对应的PCIe的BDF信息的列表。
具体的,隐藏存储盘模式的命令如下:
mdadm-C/dev/nvme0n1-a yes-l 5-n 40x040000 0x040100 0x0402000x040300
其中,-n 4表示有4个设备信息构成RAID组;
0x040000表示PCIe设备的总线号为4,设备号为0,功能号为0;
0x040100表示PCIe设备的总线号为4,设备号为1,功能号为0;
0x040200表示PCIe设备的总线号为4,设备号为2,功能号为0;
0x040300表示PCIe设备的总线号为4,设备号为3,功能号为0。
需要指出的是,PCIe的BDF信息在系统内是不重复的,可以用来标识系统内的PCIe设备,BDF信息在用户层解析后,可以调用内核提供的接口将其传递给内核层处理,通过上述命令可以将NVMe存储盘设备名称参数换成/dev/nvme0n1的设备名称,其他参数含义与原有的mdadm命令参数含义相同。
需要指出的是,如果在创建RAID组的过程中,所述NVMe设备内核态驱动软件加载失败,或者所述NVMe设备内核态驱动软件加载成功但是没有工作在隐藏存储盘模式,则/dev/nvme0n1的设备名称依然为未替换的NVMe存储盘设备名称,即/dev/md0,此时可以以该名称创建软件RAID组失败生成并打印相应的提示信息。另外,对输入的BDF参数列表信息进行检查时,如果NVMe存储盘设备的BDF信息存在重复,则无效,表明存在正在被其他RAID使用的情况,此时认为输入参数错误,可以打印相应的提示信息,并退出当前RAID组的创建。如果当前工作在非隐藏存储盘模式,即原有的原始设备标识模式,则维持原有的命令参数,即创建RAID组的命令中,物理盘列表信息为物理盘设备标识名称列表。
具体的,原始设备标识模式命令如下:
mdadm-C/dev/md0-a yes-l 5-n 4/dev/nvme0n1/dev/nvme1n1
/dev/nvme2n1/dev/nvme3n1
当设备名称在用户层解析后,将设备的主设备号和次设备号传递给内核层处理。如果加载了自定义NVMe设备内核态驱动软件,或加载了自定义NVMe设备内核态驱动软件但工作在隐藏存储盘模式,则此时以原有的NVMe标准设备名称已经被自定义名称替换,创建的RAID组会存在找不到对应设备标识的情况,此时将返回错误提示。
另外,所述将隐藏后的所述NVMe存储盘设备加入到所述RAID组中的具体过程可以包括:当工作在隐藏存储盘设备模式时,从参数列表中获取物理盘的BDF信息,并调用自定义NVMe设备内核态驱动软件提供的接口get_gendisk_info和get_bdev_info,然后根据输入的物理盘的BDF信息参数获取对存储盘底层软件的操作接口,即存储盘设备信息和存储盘设备节点对应的Linux块设备操作句柄信息,并保存在软件RAID的存储盘管理信息中,用于后续对存储盘进行操作;本实施例中,在添加NVMe存储盘设备到RAID组时,可以取消存储盘内核目标与软件RAID设备内核目标的关联关系,这样一来,在用户态使用系统命令lsblk时将只会显示软件RAID的存储块设备信息,不会显示与软件RAID的存储块设备关联的存储盘的设备信息。如果当前工作在非隐藏存储盘模式,即原有的原始设备标识模式,则维持原有的处理流程,即先通过主设备号次设备号查找对应设备操作接口,并保存在软件RAID的存储盘管理信息中,同时保持存储盘内核目标与软RAID设备内核目标的关联关系,这样一来,在用户态使用系统命令lsblk时则会显示软件RAID的存储块设备,还会显示与软件RAID的存储块设备关联的存储盘的设备信息。
具体的,内核目标管理关系的隐藏可以通过lsblk命令来查看,查看到的单盘系统的信息如下:
#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...other block device info...
nvme0n1 259:0 0 100M 0disk
对于原有的软件RAID系统,在创建RAID组后,查看到的存储盘信息如下:
Figure BDA0004076824310000141
此时可以看到存储盘和RAID组的关联关系。
当替换了存储设备标识,但未创建RAID组时,查看到的存储盘信息如下:
Figure BDA0004076824310000142
当替换了存储设备标识,并且创建了RAID组,但不隐藏存储盘与RAID组关联关系时,查看到的信息如下:
Figure BDA0004076824310000143
Figure BDA0004076824310000151
此时可以看到存储盘的标识已经修改为自定义的标识,由nvme0n1、nvme1n1、nvme2n1、nvme3n1变成了nvme_dev0n1、nvme_dev1n1、nvme_dev2n1、nvme_dev3n1,同时RAID组的标识替换了存储盘的标识,由md0变成了nvme0n1。此时由于没有工作在隐藏存储盘模式,因此显示了存储盘和RAID组的关联关系,并没有对关联关系和存储盘进行隐藏。
最终在隐藏存储盘模式下,创建RAID组后,隐藏存储盘与RAID组的关联关系,查看到的存储盘信息如下:
#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...other block device info...
nvme0n1 252:1 0 294M 0disk
此时显示的RAID组的设备标识nvme0n1与单盘系统的设备标识相同,但nvme0n1实际是RAID组的设备,原有的多个存储盘信息被隐藏,原有的软RAID的md0的设备标识被替换成了原有单盘系统的存储盘的设备标识nvme0n1;同时存储盘与RAID组的关联关系也被隐藏。
另外,所述MD软RAID内核态驱动软件还可以进行访问存储盘IO操作。具体的,如果当前工作模式为隐藏存储盘工作模式,对存储盘进行IO操作时,可以直接调用上述保存的隐藏存储盘模式的设备操作接口对存储盘进行访问;如果当前工作在非隐藏存储盘模式,即原有的原始设备标识模式,在对存储盘进行IO操作时,可以调用上述保存的非隐藏存储盘模式的设备操作接口,对存储盘进行访问。
步骤S25:当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
其中,关于上述步骤S25更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请实施例采用隐藏存储盘的方式,在单盘NVMe系统升级到软件RAID系统过程中,在底层软件层面将软件RAID的设备描述符替换原存储盘的设备描述符,同时对原存储盘以隐藏方式加入RAID组,在主机接口呈现出升级到RAID组后,能够与单盘NVMe系统保持一致的存储设备标识,用户访问存储盘的方式不变化,从而达到平滑升级的目的;从单盘NVMe系统升级到软件RAID系统后,用户看到的存储设备接口没有变化,软件RAID系统的接口设备名称与之前单盘NVMe系统的接口设备名称保持一致,从而解决了软件RAID系统构建前后设备接口不一致带来的问题,并且主机的操作系统和用户程序在系统升级前后,可以不用感知到存储设备的变化,从而方便了用户程序的使用。
相应的,本申请实施例还公开了一种软件RAID构建装置,参见图5所示,该装置包括:
物理信息获取模块11,用于当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息;
物理信息替换模块12,用于将所述软件RAID设备物理信息替换为所述存储设备物理信息;
添加模块13,用于以隐藏的方式将所述目标存储设备加入到RAID组中;
系统升级为模块14,用于当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
其中,关于上述各个模块的具体工作流程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例中,当监测到需要对目标存储设备进行软件RAID升级时,先获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,然后将所述软件RAID设备物理信息替换为所述存储设备物理信息,并以隐藏的方式将所述目标存储设备加入到RAID组中,当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。本申请实施例将存储设备系统升级到软件RAID系统的过程中,在底层软件层面将软件RAID的物理信息替换原存储设备的物理信息,并将原存储设备以隐藏的方式加入到RAID组中,能够使存储设备系统升级前后保持一致,并使用户访问存储设备的方式不需改变,即用户无感知存储设备的变化,从而方便主机操作系统和用户程序的使用,达到平滑升级的目的。
在一些具体实施例中,所述物理信息获取模块11,具体可以包括:
物理信息获取单元,用于当Linux系统监测到需要对NVMe存储盘设备进行软件RAID升级时,获取所述NVMe存储盘设备和待升级软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息。
在一些具体实施例中,所述添加模块13,具体可以包括:
内核态驱动软件加载单元,用于加载自定义的NVMe设备内核态驱动软件;
隐藏单元,用于通过所述NVMe设备内核态驱动软件对所述NVMe存储盘设备进行隐藏;
RAID组生成单元,用于通过自定义的MD软RAID用户态mdadm管理软件生成创建所述NVMe存储盘设备的RAID组;
第一存储盘设备添加单元,用于将隐藏后的所述NVMe存储盘设备加入到所述RAID组中的用户管理命令;
解析及创建单元,用于当自定义的MD软RAID内核态驱动软件接收到所述用户管理命令时,对所述用户管理命令进行解析,并创建所述NVMe存储盘设备的RAID组;
第二存储盘设备添加单元,用于将隐藏后的所述NVMe存储盘设备加入到所述RAID组中;其中,所述NVMe设备内核态驱动软件和所述MD软RAID内核态驱动软件位于所述Linux系统的内核态,所述MD软RAID用户态mdadm管理软件位于所述Linux系统的用户态。
在一些具体实施例中,所述物理信息替换模块12之前,还可以包括:
第一判断单元,用于判断所述Linux系统在初始化时是否加载有原始NVMe驱动;
解绑单元,用于如果所述Linux系统在初始化时加载有所述原始NVMe驱动,则对所述原始NVMe驱动进行解绑。
在一些具体实施例中,所述内核态驱动软件加载单元,具体可以包括:
扫描单元,用于加载自定义的NVMe设备内核态驱动软件,以通过所述NVMe设备内核态驱动软件扫描未加载驱动的所述NVMe存储盘设备;
第二判断单元,用于判断当前是否工作在隐藏存储盘模式;
初始化单元,用于如果当前工作在隐藏存储盘模式,则初始化所述NVMe设备内核态驱动软件;
接口封装单元,用于封装获取所述隐藏存储盘模式的接口;
存储盘设备检测单元,用于通过所述NVMe设备内核态驱动软件检测所述NVMe存储盘设备;
存储盘设备添加单元,用于添加所述NVMe存储盘设备到设备列表中;
节点信息申请单元,用于在添加所述NVMe存储盘设备到所述设备列表的过程中,为所述NVMe存储盘设备申请节点信息;
节点信息初始化单元,用于对所述节点信息进行初始化;
生效检查单元,用于检查当前设置的所述隐藏存储盘模式是否生效;
隐藏模式标识增加单元,用于如果所述隐藏存储盘模式生效,则在Linux设备驱动提供的Block层设备接口中增加隐藏模式标识;
信息存储单元,用于记录所述存储设备物理信息、保存所述节点信息和所述节点信息对应的Linux块设备操作句柄信息。
在一些具体实施例中,所述信息存储单元之后,还可以包括:
封装单元,用于封装获取所述存储设备物理信息的接口函数和所述节点信息对应的所述Linux块设备操作句柄信息的接口函数,以便其他模块的调用。
在一些具体实施例中,所述物理信息获取模块11,具体可以包括:
设备标识符获取单元,用于获取所述目标存储设备和待构建软件RAID的设备标识符,得到存储设备设备标识符和软件RAID设备标识符。
进一步的,本申请实施例还公开了一种电子设备,图6是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图6为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的软件RAID构建方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的软件RAID构建方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的软件RAID构建方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种软件RAID构建方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种软件RAID构建方法,其特征在于,包括:
当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息;
将所述软件RAID设备物理信息替换为所述存储设备物理信息,并以隐藏的方式将所述目标存储设备加入到RAID组中;
当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
2.根据权利要求1所述的软件RAID构建方法,其特征在于,所述当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,包括:
当Linux系统监测到需要对NVMe存储盘设备进行软件RAID升级时,获取所述NVMe存储盘设备和待升级软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息。
3.根据权利要求2所述的软件RAID构建方法,其特征在于,所述以隐藏的方式将所述目标存储设备加入到RAID组中,包括:
加载自定义的NVMe设备内核态驱动软件,并通过所述NVMe设备内核态驱动软件对所述NVMe存储盘设备进行隐藏;
通过自定义的MD软RAID用户态mdadm管理软件生成创建所述NVMe存储盘设备的RAID组,并将隐藏后的所述NVMe存储盘设备加入到所述RAID组中的用户管理命令;
当自定义的MD软RAID内核态驱动软件接收到所述用户管理命令时,对所述用户管理命令进行解析,并创建所述NVMe存储盘设备的RAID组,再将隐藏后的所述NVMe存储盘设备加入到所述RAID组中;其中,所述NVMe设备内核态驱动软件和所述MD软RAID内核态驱动软件位于所述Linux系统的内核态,所述MD软RAID用户态mdadm管理软件位于所述Linux系统的用户态。
4.根据权利要求3所述的软件RAID构建方法,其特征在于,所述将所述软件RAID物理信息替换为所述存储物理信息之前,还包括:
判断所述Linux系统在初始化时是否加载有原始NVMe驱动,若所述Linux系统在初始化时加载有所述原始NVMe驱动,则对所述原始NVMe驱动进行解绑。
5.根据权利要求4所述的软件RAID构建方法,其特征在于,所述加载自定义的NVMe设备内核态驱动软件,包括:
加载自定义的NVMe设备内核态驱动软件,以通过所述NVMe设备内核态驱动软件扫描未加载驱动的所述NVMe存储盘设备;
判断当前是否工作在隐藏存储盘模式,若是则初始化所述NVMe设备内核态驱动软件,并封装获取所述隐藏存储盘模式的接口;
通过所述NVMe设备内核态驱动软件检测所述NVMe存储盘设备,并添加所述NVMe存储盘设备到设备列表中;
在添加所述NVMe存储盘设备到所述设备列表的过程中,为所述NVMe存储盘设备申请节点信息,并对所述节点信息进行初始化,以及检查当前设置的所述隐藏存储盘模式是否生效;
若生效,则在Linux设备驱动提供的Block层设备接口中增加隐藏模式标识,并记录所述存储设备物理信息、保存所述节点信息和所述节点信息对应的Linux块设备操作句柄信息。
6.根据权利要求5所述的软件RAID构建方法,其特征在于,所述记录所述存储设备物理信息、保存所述节点信息和所述节点信息对应的Linux块设备操作句柄信息之后,还包括:
封装获取所述存储设备物理信息的接口函数和所述节点信息对应的所述Linux块设备操作句柄信息的接口函数,以便其他模块的调用。
7.根据权利要求1至6任一项所述的软件RAID构建方法,其特征在于,所述获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息,包括:
获取所述目标存储设备和待构建软件RAID的设备标识符,得到存储设备设备标识符和软件RAID设备标识符。
8.一种软件RAID构建装置,其特征在于,包括:
物理信息获取模块,用于当监测到需要对目标存储设备进行软件RAID升级时,获取所述目标存储设备和待构建软件RAID的物理信息,得到存储设备物理信息和软件RAID物理信息;
物理信息替换模块,用于将所述软件RAID设备物理信息替换为所述存储设备物理信息;
添加模块,用于以隐藏的方式将所述目标存储设备加入到RAID组中;
系统升级为模块,用于当主机接口呈现出升级到所述RAID组后,通过主机驱动程序软件将目标存储设备系统升级为软件RAID系统。
9.一种电子设备,其特征在于,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至7任一项所述的软件RAID构建方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的软件RAID构建方法。
CN202310109431.0A 2023-02-10 2023-02-10 一种软件raid构建方法、装置、设备及存储介质 Pending CN116301596A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310109431.0A CN116301596A (zh) 2023-02-10 2023-02-10 一种软件raid构建方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310109431.0A CN116301596A (zh) 2023-02-10 2023-02-10 一种软件raid构建方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116301596A true CN116301596A (zh) 2023-06-23

Family

ID=86823147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310109431.0A Pending CN116301596A (zh) 2023-02-10 2023-02-10 一种软件raid构建方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116301596A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117055824A (zh) * 2023-10-12 2023-11-14 苏州元脑智能科技有限公司 控制器、控制器的配置方法及系统、存储介质及电子设备
CN117278505A (zh) * 2023-11-21 2023-12-22 苏州元脑智能科技有限公司 一种raid卡节点之间的消息传输方法、系统、设备以及介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117055824A (zh) * 2023-10-12 2023-11-14 苏州元脑智能科技有限公司 控制器、控制器的配置方法及系统、存储介质及电子设备
CN117055824B (zh) * 2023-10-12 2024-02-09 苏州元脑智能科技有限公司 控制器、控制器的配置方法及系统、存储介质及电子设备
CN117278505A (zh) * 2023-11-21 2023-12-22 苏州元脑智能科技有限公司 一种raid卡节点之间的消息传输方法、系统、设备以及介质
CN117278505B (zh) * 2023-11-21 2024-02-09 苏州元脑智能科技有限公司 一种raid卡节点之间的消息传输方法、系统、设备以及介质

Similar Documents

Publication Publication Date Title
US9253192B1 (en) Pluggable login architecture and dynamic resource recognition
CN101650660B (zh) 从中央存储装置引导计算机系统
JP4592814B2 (ja) 情報処理装置
US7444621B2 (en) Method and system for providing a common operating system
CN1315042C (zh) 创建和使用具有选定功能的操作系统的方法和系统
CN116301596A (zh) 一种软件raid构建方法、装置、设备及存储介质
US8510712B1 (en) Testing in-container software objects
US8918783B2 (en) Managing virtual computers simultaneously with static and dynamic dependencies
US20120072565A1 (en) Configuration Verification, Recommendation, and Animation Method for a Disk Array in a Storage Area Network (SAN)
CN103412769A (zh) 外接卡参数配置方法、设备以及系统
US20110010700A1 (en) Virtualization of configuration settings
WO2010021630A2 (en) Server virtualized using virtualization platform
KR20020035570A (ko) 자동적인 장치 드라이버 구성을 위한 방법, 시스템 및컴퓨터 판독 가능 저장 매체
US20130185402A1 (en) Method and apparatus for developing service processor solutions
CN108509215B (zh) 一种系统软件的更换方法、装置、终端设备及存储介质
CN105144093A (zh) 使用基础设施管理代理供应的工作负荷部署
CN113342590B (zh) NVMe设备调试功能实现方法、装置、设备及存储介质
US20220244943A1 (en) Software and firmware updates in a combined single pane of glass interface
CN113835644B (zh) 整机迁移方法、装置、设备及存储介质
CN104137062A (zh) 将代码动态注入到运行中的进程
US10452371B2 (en) Automating enablement state inputs to workflows in z/OSMF
US8086834B2 (en) System and method for populating a dedicated system service repository for an information handling system
US20150160955A1 (en) Dynamically modifiable component model
US7644259B2 (en) Customization of option ROM images
Rothman et al. Harnessing the UEFI Shell: Moving the platform beyond DOS

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