CN115826874A - 一种虚拟raid卡的实现方法、装置及组件 - Google Patents
一种虚拟raid卡的实现方法、装置及组件 Download PDFInfo
- Publication number
- CN115826874A CN115826874A CN202211708531.7A CN202211708531A CN115826874A CN 115826874 A CN115826874 A CN 115826874A CN 202211708531 A CN202211708531 A CN 202211708531A CN 115826874 A CN115826874 A CN 115826874A
- Authority
- CN
- China
- Prior art keywords
- raid
- information
- control module
- disk
- logical volume
- 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
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种虚拟RAID卡的实现方法,包括:在虚拟化工具中模拟生成RAID卡控制模块,建立RAID卡控制模块与用户操作系统的通信连接;RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;RAID卡控制模块基于RAID组中RAID创建逻辑卷,根据创建的逻辑卷动态创建命名空间,并将命名空间与逻辑卷对应绑定;RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中的磁盘进行读写,本发明还提出了一种虚拟RAID卡的实现装置及组件,有效地降低RAID卡的实现成本,完善RAID卡的功能。
Description
技术领域
本发明涉及RAID卡领域,尤其是涉及一种虚拟RAID卡的实现方法、装置及组件。
背景技术
RAID(RedundantArrayofIndependentDisks,独立磁盘冗余磁盘阵列)技术可以采用软件方式实现,也可以采用硬件方式实现,或者采用软硬结合的方式实现。
软RAID(用软件方式实现的RAID卡)没有专用的控制芯片和I/O芯片,完全由操作系统和CPU来实现所的RAID的功能。现代操作系统基本上都提供软RAID支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。目前,操作系统支持的最常见的RAID等级有RAID0、RAID1、RAID10、RAID01和RAID5等。
软RAID的配置管理和数据恢复都比较简单,但是RAID所有任务的处理完全由CPU来完成,如计算校验值,所以执行效率比较低下,这种方式需要消耗大量的运算资源,支持RAID模式较少,很难广泛应用。
软RAID由操作系统来实现,因此,操作系统所在分区不能作为RAID的逻辑成员磁盘,软RAID不能保护系统盘。对于部分操作系统而言,RAID的配置信息保存在系统信息中,而不是单独以文件形式保存在磁盘上。这样当系统意外崩溃而需要重新安装时,RAID信息就会丢失。另外,磁盘的容错技术并不等于完全支持在线更换、热插拔或热交换,能否支持错误磁盘的热交换与操作系统实现相关,有的操作系统热交换。
硬RAID拥有自己的RAID控制处理与I/O处理芯片,甚至还有阵列缓冲,对CPU的占用率和整体性能是三类实现中最优的,但实现成本也最高的。硬RAID通常都支持热交换技术,在系统运行下更换故障磁盘。硬RAID包含RAID卡和主板上集成的RAID芯片,服务器平台多采用RAID卡。RAID卡由RAID核心处理芯片(RAID卡上的CPU)、端口、缓存和电池4部分组成。其中,端口是指RAID卡支持的磁盘接口类型,如IDE(IntegratedDriveElectronics,是电子集成驱动器)/ATA(AdvancedTechnologyAttachment,高技术配置)、SCSI(SmallComputerSystemInterface,小型计算机系统接口)、SATA(SerialAdvancedTechnologyAttachment,硬盘接口新规范)、SAS(SerialAttachedSCSI,串行连接SCSI,是新一代的SCSI技术)、FC(FibreChannel,网状通道技术)等接口。
软RAID性能欠佳,而且不能保护系统分区,因此很难应用于桌面系统。而硬RAID成本非常昂贵,不同RAID相互独立,不具互操作性。因此人们采取软件与硬件结合的方式来实现RAID,从而获得在性能和成本上的一个折中,即较高的性价比。这种RAID虽然采用了处理控制芯片,但是为了节省成本,芯片往往比较廉价且处理能力较弱,RAID的任务处理大部分还是通过固件驱动程序由CPU来完成。
现有技术中,目前还没有通过软件的方式,实现硬件RAID卡功能的方案,仅有在qemu(QuickEmulator,一个通用的开源仿真与虚拟化工具)中设置nvme-ctl(NVME控制器),如图1所示,在nvme-ctl底下挂在多个ns(namespace,即命名空间),多个ns属于一个盘。实际的存储设备通过block(存储块)模块(即block-dev)处理;在qemu启动时与block-dev关联,然后读取这个设备大小等信息,并且把这些信息再映射到需要模拟的ns中;ns设备(即ns-dev1)是nvme-ctl的一个子设备。但是,block模块不是nvme-ctl的子设备,只是在ns设备启动时做了关联;ns只能在启动的时候就指定,不能再运行的过程中动态创建;没有对磁盘的模拟方式,对于操作系统只能看到ns,无法看到磁盘,因此,虽然可以在qemu中可以创建多个nvme-ctl,但没有硬件RAID的模拟实现方案,在操作系统看来,没有硬件RAID卡属性,不利于降低RAID卡的实现成本,完善RAID卡的功能。
发明内容
本发明为了解决现有技术中存在的问题,创新提出了一种虚拟RAID卡的实现方法、装置及组件,有效解决由于现有技术造成RAID卡实现成本高且功能不完善的问题,有效地降低RAID卡的实现成本,完善RAID卡的功能。
本发明第一方面提供了一种虚拟RAID卡的实现方法,包括:
在虚拟化工具中模拟生成RAID卡控制模块,建立RAID卡控制模块与用户操作系统的通信连接;
RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;
RAID卡控制模块基于RAID组中RAID创建逻辑卷,根据创建的逻辑卷创建命名空间,并将命名空间与逻辑卷对应绑定;
RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写。
可选地,所述RAID卡控制模块基于NVME协议创建,用于命令队列的创建、删除、处理与响应,实现异步事件的触发。
可选地,所述根据创建的逻辑卷信息创建命名空间之后,还包括:
将创建的命名空间信息均关联到RAID卡控制模块。
可选地,所述将命名空间与逻辑卷对应绑定具体是:将逻辑卷的起始地址用作命名空间的起始地址,将逻辑卷的空间大小用作命名空间的空间大小。
可选地,RAID卡控制模块发送自身信息之前,还包括:
在虚拟化工具中模拟生成信息管理模块,所述信息管理模块用于存储RAID组中RAID查询信息、磁盘查询信息、逻辑卷查询信息、命名空间查询信息,所述RAID组中RAID查询信息用于RAID卡控制模块根据RAID索引信息查找RAID信息,所述磁盘查询信息用于RAID卡控制模块根据磁盘索引信息查找磁盘信息,所述逻辑卷查询信息用于RAID卡控制模块根据逻辑卷索引信息查找逻辑卷信息,所述命名空间查询信息用于RAID卡控制模块根据命名空间索引信息查找命名空间信息。
进一步地,所述RAID组查询信息包括RAID组中RAID信息、逻辑卷信息、磁盘信息以及RAID组中RAID、逻辑卷、磁盘之间的对应索引关系。
可选地,RAID卡控制模块发送自身信息之前,还包括:
在虚拟化工具中模拟生成磁盘控制模块,所述磁盘控制模块作为RAID卡控制模块的子设备,用于将磁盘信息注册到RAID卡控制模块,便于RAID卡控制模块通过磁盘控制模块来对磁盘进行读写。
可选地,RAID卡控制模块发送自身信息之前,还包括:在虚拟化工具中模拟生成RAID算法模块,所述RAID算法模块用于实现数据镜像、数据条带和数据校验。
可选地,所述RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写具体包括:
RAID卡控制模块获取到逻辑卷的ID信息以及读写对象信息,根据逻辑卷的ID信息确定逻辑卷所在RAID信息;
根据逻辑卷所在RAID信息确定RAID中对应的磁盘信息;
获取待读写数据在各个磁盘中的偏移、大小;
调用对应磁盘的IO接口完成待读写数据的读写操作。
进一步地,将每个磁盘的任务队列标识符与RAID卡控制模块的任务队列标识符均重新映射为一线性任务队列标识符。
本发明第二方面提供了一种虚拟RAID卡的实现装置,包括:
生成单元,在虚拟化工具中模拟生成RAID卡控制模块,建立RAID卡控制模块与用户操作系统的通信连接;
发送单元,RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;
创建单元,RAID卡控制模块基于RAID组创建逻辑卷,根据创建的逻辑卷创建命名空间,并将命名空间与逻辑卷对应绑定;
读写单元,RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写。
本发明第三方面提供了一种虚拟RAID卡的实现组件,包括:RAID卡控制模块、RAID组、磁盘、命名空间、块设备,所述RAID卡控制模块与用户操作系统的通信连接,发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;基于RAID组创建逻辑卷,根据创建的逻辑卷创建命名空间,并将命名空间与逻辑卷对应绑定;基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写;每个磁盘下对应一个块设备,所述块设备用于存储写入磁盘的数据。
本发明采用的技术方案包括以下技术效果:
1、本发明在虚拟化工具中模拟生成RAID卡控制模块,RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;RAID卡控制模块基于RAID组中RAID动态创建逻辑卷,根据创建的逻辑卷创建命名空间,并将命名空间与逻辑卷对应绑定;基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写,可以通过用软件的方法模拟生成硬件RAID,可以具有硬件RAID功能,现有技术中是针对RAID控制读写,本方案是针对RAID中磁盘的读写控制,有效解决由于现有技术造成RAID卡实现成本高且功能不完善的问题,有效地降低RAID卡的实现成本,完善RAID卡的功能。
2、本发明技术方案中将创建的命名空间信息均关联到RAID卡控制模块,便于RAID卡控制模块可以获取命名空间信息,可以实现命名空间的动态管理。
3、本发明技术方案中在虚拟化工具中模拟生成信息管理模块,所述信息管理模块用于存储RAID组中RAID查询信息、磁盘查询信息、逻辑卷查询信息、命名空间查询信息,使得用户能够及时获取虚拟RAID卡中的RAID、磁盘、逻辑卷、命名空间信息,实现虚拟RAID卡的动态管理。
4、本发明技术方案中在虚拟化工具中模拟生成磁盘控制模块,可以将磁盘信息注册到RAID卡控制模块,便于RAID卡控制模块通过磁盘控制模块来对磁盘进行读写,可以实现对RAID中的磁盘的读写。
应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中利用qemu实现RAID卡(RAID卡功能不完善)的方案示意图;
图2为本发明方案中实施例一方法的流程示意图(一);
图3为本发明方案中实施例一利用qemu实现硬件RAID卡的方案示意图;
图4为本发明方案中实施例一ns创建、调用的流程示意图;
图5为本发明方案中实施例一方法的流程示意图(二);
图6为本发明方案中实施例一Raid、volume、disk相互之间的索引关系示意图;
图7为本发明方案中实施例一方法的流程示意图(三);
图8为本发明方案中实施例一方法的流程示意图(四);
图9为本发明方案中实施例一方法中步骤S14的流程示意图(四);
图10为本发明方案中实施例一磁盘的任务队列标识符与RAID卡控制模块的任务队列标识符的重新映射关系示意图;
图11为本发明方案中实施例二装置的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
如图2-图3所示,本发明提供了一种虚拟RAID卡的实现方法,包括:
S11,在虚拟化工具中模拟生成RAID卡控制模块,建立RAID卡控制模块与用户操作系统的通信连接;
S12,RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;
S13,RAID卡控制模块基于RAID组中RAID创建逻辑卷,根据创建的逻辑卷动态创建命名空间,并将命名空间与逻辑卷对应绑定;
S14,RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写。
其中,在步骤S11中,RAID卡控制模块通基于NVME(Non-Volatile MemoryExpress,非易失性内存主机控制器接口规范)协议创建,用于命令队列的创建、删除、处理与响应,实现异步事件的触发。RAID卡控制模块作为qemuPCI(PeripheralComponentInterconnect,外设组件互联标准)设备的子设备,可以模拟实现bar(基地址寄存器)空间寄存器的处理与响应、中断的处理与响应。RAID卡控制模块作为一个NVME设备,实现了命令队列(如提交队列sq、完成队列cq)的创建、删除、处理与响应。该设备实现了NVME异步事件的触发。该设备增加了RAID管理命令入口(RAID管理命令接口),RAID卡控制模块通过与RAID管理模块与用户操作系统通信,用于处理自定义的RAID命令,实现用户通过RAID卡控制模块结构索引其它RAID相关的管理信息。
RAID管理命令的定义与实现具体如下:
NVME协议规定了NVME指令的含义与格式,实现一套标准的协议指令,为厂商自定义指令预留了部分操作码范围。RAID卡控制模块遵循NVME协议的要求,对预留操作码重新定义。RAID卡控制模块(raid-ctl)通过如上的这些扩展命令的定义与实现,完成了RAID卡管理接口的模拟,从而实现了硬件RAID的相关功能。
具体地,RAID管理命令可以包括:
RAID卡控制模块信息获取指令,用于用户操作系统(guest软件)获取RAID卡控制模块详细信息。RAID卡控制模块信息包含了RAID卡控制模块的ID(Identitydocument,身份标识号),RAID卡控制模块版本号,RAID卡控制模块状态信息,RAID卡控制模块最大支持的阵列个数,每个阵列最大支持的磁盘个数,每个阵列最大支持的逻辑卷(logicvolume)个数,最大缓存(cache)大小等。
磁盘信息的获取指令,用于用户操作系统(guest软件)获取RAID卡控制模块下挂载磁盘信息。磁盘信息包含磁盘ID、磁盘SN(serial number,序列号)、磁盘容量、磁盘lba(LogicalBlockAddress,逻辑区块地址)Format(格式)、磁盘是否加入raid组,已加入RAID组的磁盘ID。
RAID组创建、删除、修改、查询指令,用于用户操作系统(guest软件)对RAID组进行操作,将盘加入到RAID组或从RAID组中是删除,修改RAID组的等级,缓存策略等。RAID组信息包含了:RAID组中RAID的ID、RAID组中RAIDr级别、RAID组中RAID条带单元大小、RAID组中RAID缓存策略、RAID组中RAID中物理盘的缓存策略、RAID组中RAID总容量大小、RAID组中RAID剩余容量大小、RAID组中RAID包含物理盘的个数、RAID组中RAID中物理盘的详细信息。
逻辑卷创建、删除、查询指令,用于用户操作系统(guest软件)对逻辑卷进行操作。逻辑卷信息包含:逻辑卷的ID、逻辑卷所在RAID的ID、逻辑卷容量大小、逻辑卷LBAFormat、逻辑卷容量、逻辑卷缓存策略等。
其中,在步骤S12中,RAID卡控制模块通过RAID管理命令向用户操作系统发送自身信息(RAID卡控制模块信息)以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成对应的RAID组。
其中,在步骤S13中,RAID卡控制模块基于RAID组中RAID创建逻辑卷,根据创建的逻辑卷动态创建命名空间,并将命名空间与逻辑卷对应绑定。具体地,qemu中原有命名空间(ns)的实现是直接虚拟出一个ns设备,在初始化的时候与存储区域关联,但是,qemu启动后只能查询无法修改。
本发明将ns的创建是基于RAID组的创建,并且将ns的创建、删除封装成被其它模块调用的接口,实现了ns动态创建、删除的功能。如图4所示,根据创建的逻辑卷信息创建命名空间之后,将创建的命名空间信息均关联到RAID卡控制模块;当ns被创建后,可以从RAID卡控制模块索引到所有的ns信息。当用户操作系统发送identify指令后,RAID卡控制模块将ns的信息传递给用户操作系统,使得用户操作系统可以在运行过程中创建、删除、查询ns,功能与硬件RAID卡保持一致。
优选地,将命名空间与逻辑卷对应绑定具体是:将逻辑卷的起始地址用作命名空间的起始地址,将逻辑卷的空间大小用作命名空间的空间大小。
进一步地,如图5所示,本发明技术方案还提供了一种虚拟RAID卡的实现方法,在步骤S12之前,还包括:
S111,在虚拟化工具中模拟生成信息管理模块,信息管理模块用于存储RAID组中RAID查询信息(RAID_info信息管理子模块)、磁盘查询信息(disk_info信息管理子模块)、逻辑卷查询信息(volume_info信息管理子模块)、命名空间查询信息(ns_info信息管理子模块),RAID组中RAID查询信息用于RAID卡控制模块根据RAID索引信息查找RAID信息,磁盘查询信息用于RAID卡控制模块根据磁盘索引信息查找磁盘信息,逻辑卷查询信息用于RAID卡控制模块根据逻辑卷索引信息查找逻辑卷信息,命名空间查询信息用于RAID卡控制模块根据命名空间索引信息查找命名空间信息。
本发明实施例通过定义并创建信息管理模块,用于维护更丰富的RAID查询信息、磁盘查询信息、逻辑卷查询信息、命名空间查询信息,例如,磁盘查询信息包含磁盘的serialnumber(SN,即序列号)、modelnumer(型号)、lbaf(LogicalBlockAddressFormat,逻辑区块地址格式)、status(状态)、磁盘是否加入raid组,已加入RAID组的磁盘ID,并且具有极强的可扩展性,用于未来实现更丰富内容。
具体地,RAID组查询信息包括RAID组中RAID信息、逻辑卷信息、磁盘信息以及RAID组中RAID、逻辑卷、磁盘之间的对应索引关系。RAID信息中维护了RAID、volume、disk各自的信息保存以及三者之间的依存关系,从而实现整个RAID的管理,RAID信息挂载到RAID卡控制模块中。如图6所示,RAID、逻辑卷、磁盘相互之间的索引关系,RAID卡控制模块既可以根据用户输入的RAID信息索引确定对应的磁盘信息或逻辑卷信息;也可以根据用户输入的逻辑卷信息索引确定对应的RAID信息或命名空间信息;还可以根据用户输入的磁盘信息索引确定对应的RAID信息,提高了索引的灵活性以及效率。
进一步地,如图7所示,本发明技术方案还提供了一种虚拟RAID卡的实现方法,在步骤S12之前,还包括:
S112,在虚拟化工具中模拟生成磁盘控制模块,磁盘控制模块作为RAID卡控制模块的子设备,用于将磁盘信息注册到RAID卡控制模块,便于RAID卡控制模块通过磁盘控制模块来对磁盘进行读写。
在步骤S112中,通过创建磁盘控制模块(disk-ctl设备)作为RAID卡控制模块的子设备,用于管理磁盘的信息。其中包含父节点信息、存储接口信息、磁盘容量、磁盘缓存信息、磁盘ID;而且,磁盘控制模块还封装了磁盘的读写、flush(刷新)、drain(删除)接口。将磁盘信息注册到RAID卡控制模块,并分配给一个磁盘ID。便于RAID卡控制模块通过磁盘控制模块来对磁盘进行读写。
进一步地,如图8所示,本发明技术方案还提供了一种虚拟RAID卡的实现方法,在步骤S12之前,还包括:
S113,在虚拟化工具中模拟生成RAID算法模块,RAID算法模块用于实现数据镜像、数据条带和数据校验。
在步骤S113中,新增了raid算法入口(RAID算法模块,即Raid_算法),用于实现数据镜像、数据条带和数据校验,并基于这些算法实现raid1、raid5、raid6方案。
具体地,如图9所示,在步骤S14具体包括:
S141,RAID卡控制模块获取到逻辑卷的ID信息,根据逻辑卷的ID信息确定逻辑卷所在RAID信息;
S142,根据逻辑卷所在RAID信息确定RAID中对应的磁盘信息;
S143,获取待读写数据在各个磁盘中的偏移、大小;
S144,调用对应磁盘的IO接口完成待读写数据的读写操作。
其中,在步骤S14中,RAID卡控制模块通过RAID数据IO接口、磁盘IO接口实现RAID中磁盘读写。RAID数据IO接口读写操作是基于逻辑卷的,一个RAID创建后不能直接进行IO读写,需要先创建逻辑卷,并且绑定ns后才能进行IO读写操作。在对RAID中磁盘进行读写时,需要RAID卡控制模块信息、逻辑卷ID、基于逻辑卷数据的offset(偏移)、基于逻辑卷数据的size(大小),写操作时需包含被写入的数据,读操作时需要包含读取数据被存储的地址。
在步骤S141中,RAID卡控制模块获取到在命令队列中的提交队列中解析出Nvme-cmd,并获取到逻辑卷的ID,根据逻辑卷的ID索引到逻辑卷信息(volume_info,即逻辑卷详细信息)。
在步骤S142中,RAID卡控制模块根据逻辑卷信息(逻辑卷信息所在RAID信息)确定RAID中对应的磁盘信息。
在步骤S143中,RAID卡控制模块获取待读写数据在各个待写入磁盘中的偏移、大小;具体地,首先,使用逻辑卷信息(volume_info)中基于RAID的offset_1、以及读写接口的offset_2计算出数据在raid中实际的offset信息(偏移信息);然后,使用RAID信息(raid_info)索引到对应的磁盘信息;使用RAID信息(raid_info)中RAID等级,并调用RAID算法模块,计算出RAID数据[offset、size]在各个磁盘中的offset、size;使用RAID信息(raid_info)中raid等级,并调用RAID算法模块,计算出校验数据,以及校验数据在各个磁盘中的offset、size。
在步骤S144中,调用对应磁盘的IO接口完成待读写数据以及待读写数据对应的校验数据的IO读写操作。
进一步地,为区分不同的读写对象(即RAID或RAID中磁盘),定义自定义命令,为磁盘创建命令队列(提交队列以及完成队列);在RAID卡控制模块的bar空间为每个磁盘划分bar空间地址,响应磁盘的doorbell(唤醒)操作。如图10所示,将每个磁盘QID(任务队列标识符)与RAID卡控制模块的QID重新映射到一个线性的QID。可以看到磁盘的QID被映射到了高位位区,当处理提交队列时,可以根据QID来区分此次IO是RAID卡控制模块的IO还是磁盘的IO,从而区分不同的读写对象。本方案中通过对队列QID以及RAID卡控制模块的操作,相比于现有技术中对RAID中数据读写,可以实现RAID中磁盘数据的读写,提高了读写效率。
本发明在虚拟化工具中模拟生成RAID卡控制模块,RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;RAID卡控制模块基于RAID组中RAID动态创建逻辑卷,根据创建的逻辑卷创建命名空间,并将命名空间与逻辑卷对应绑定;基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写,可以通过用软件的方法模拟生成硬件RAID,可以具有硬件RAID功能,现有技术中是针对raid控制读写,本方案是针对RAID中磁盘的读写控制,有效解决由于现有技术造成RAID卡实现成本高且功能不完善的问题,有效地降低RAID卡的实现成本,完善RAID卡的功能。
本发明技术方案中将创建的命名空间信息均关联到RAID卡控制模块,便于RAID卡控制模块可以获取命名空间信息,可以实现命名空间的动态管理。
本发明技术方案中在虚拟化工具中模拟生成信息管理模块,所述信息管理模块用于存储RAID组中RAID查询信息、磁盘查询信息、逻辑卷查询信息、命名空间查询信息,使得用户能够及时获取虚拟RAID卡中的RAID、磁盘、逻辑卷、命名空间信息,实现虚拟RAID卡的动态管理。
本发明技术方案中在虚拟化工具中模拟生成磁盘控制模块,可以将磁盘信息注册到RAID卡控制模块,便于RAID卡控制模块通过磁盘控制模块来对RAID中的磁盘的读写。
实施例二
如图11所示,本发明技术方案还提供了一种虚拟RAID卡的实现装置,包括:
生成单元101,在虚拟化工具中模拟生成RAID卡控制模块,建立RAID卡控制模块与用户操作系统的通信连接;
发送单元102,RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;
创建单元103,RAID卡控制模块基于RAID组创建逻辑卷,根据创建的逻辑卷动态创建命名空间,并将命名空间与逻辑卷对应绑定;
读写单元104,RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写。
其中,在生成单元101中,RAID卡控制模块通基于NVME(Non-VolatileMemoryExpress,非易失性内存主机控制器接口规范)协议创建,用于命令队列的创建、删除、处理与响应,实现异步事件的触发。RAID卡控制模块作为qemuPCI(PeripheralComponent Interconnect,外设组件互联标准)设备的子设备,可以模拟实现bar(基地址寄存器)空间寄存器的处理与响应、中断的处理与响应。RAID卡控制模块作为一个NVME设备,实现了命令队列(如提交队列sq、完成队列cq)的创建、删除、处理与响应。该设备实现了NVME异步事件的触发。该设备增加了RAID管理命令入口(RAID管理命令接口),RAID卡控制模块通过与RAID管理模块与用户操作系统通信,用于处理自定义的RAID命令,实现用户通过RAID卡控制模块结构索引其它RAID相关的管理信息。
其中,在发送单元102中,RAID卡控制模块通过RAID管理命令向用户操作系统发送自身信息(RAID卡控制模块信息)以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成对应的RAID组。
其中,在创建单元103中,RAID卡控制模块基于RAID组中RAID创建逻辑卷,根据创建的逻辑卷动态创建命名空间,并将命名空间与逻辑卷对应绑定。具体地,qemu中原有命名空间(ns)的实现是直接虚拟出一个ns设备,在初始化的时候与存储区域关联,但是,qemu启动后只能查询无法修改。
本发明将ns的创建是基于RAID组的创建,并且将ns的创建、删除封装成被其它模块调用的接口,实现了ns动态创建、删除的功能。如图4所示,根据创建的逻辑卷信息创建命名空间之后,将创建的命名空间信息均关联到RAID卡控制模块;当ns被创建后,可以从RAID卡控制模块索引到所有的ns信息。当用户操作系统发送identify指令后,RAID卡控制模块将ns的信息传递给用户操作系统,使得用户操作系统可以在运行过程中创建、删除、查询ns,功能与硬件RAID卡保持一致。
优选地,将命名空间与逻辑卷对应绑定具体是:将逻辑卷的起始地址用作命名空间的起始地址,将逻辑卷的空间大小用作命名空间的空间大小。
进一步地,本发明技术方案还提供了一种虚拟RAID卡的实现装置中的生成单元101,还可以在虚拟化工具中模拟生成信息管理模块,信息管理模块用于存储RAID组中RAID查询信息(RAID_info信息管理子模块)、磁盘查询信息(disk_info信息管理子模块)、逻辑卷查询信息(volume_info信息管理子模块)、命名空间查询信息(ns_info信息管理子模块),RAID组中RAID查询信息用于RAID卡控制模块根据RAID索引信息查找RAID信息,磁盘查询信息用于RAID卡控制模块根据磁盘索引信息查找磁盘信息,逻辑卷查询信息用于RAID卡控制模块根据逻辑卷索引信息查找逻辑卷信息,命名空间查询信息用于RAID卡控制模块根据命名空间索引信息查找命名空间信息。
本发明实施例通过定义并创建信息管理模块,用于维护更丰富的RAID查询信息、磁盘查询信息、逻辑卷查询信息、命名空间查询信息,例如,磁盘查询信息包含磁盘的serialnumber(SN,即序列号)、modelnumer(型号)、lbaf(LogicalBlockAddressFormat,逻辑区块地址格式)、status(状态)、磁盘是否加入raid组,已加入RAID组的磁盘ID,并且具有极强的可扩展性,用于未来实现更丰富内容。
具体地,RAID组查询信息包括RAID组中RAID信息、逻辑卷信息、磁盘信息以及RAID组中RAID、逻辑卷、磁盘之间的对应索引关系。RAID信息中维护了RAID、volume、disk各自的信息保存以及三者之间的依存关系,从而实现整个RAID的管理,RAID信息挂载到RAID卡控制模块中。如图6所示,RAID、逻辑卷、磁盘相互之间的索引关系,RAID卡控制模块既可以根据用户输入的RAID信息索引确定对应的磁盘信息或逻辑卷信息;也可以根据用户输入的逻辑卷信息索引确定对应的RAID信息或命名空间信息;还可以根据用户输入的磁盘信息索引确定对应的RAID信息,提高了索引的灵活性以及效率。
进一步地,本发明技术方案还提供了一种虚拟RAID卡的实现装置中的生成单元101,还可以在虚拟化工具中模拟生成磁盘控制模块,磁盘控制模块作为RAID卡控制模块的子设备,用于将磁盘信息注册到RAID卡控制模块,便于RAID卡控制模块通过磁盘控制模块来对磁盘进行读写。
通过创建磁盘控制模块(disk-ctl设备)作为RAID卡控制模块的子设备,用于管理磁盘的信息。其中包含父节点信息、存储接口信息、磁盘容量、磁盘缓存信息、磁盘ID;而且,磁盘控制模块还封装了磁盘的读写、flush(刷新)、drain(删除)接口。将磁盘信息注册到RAID卡控制模块,并分配给一个磁盘ID。便于RAID卡控制模块通过磁盘控制模块来对磁盘进行读写。
进一步地,本发明技术方案还提供了一种虚拟RAID卡的实现装置中的生成单元101,还可以在虚拟化工具中模拟生成RAID算法模块,RAID算法模块用于实现数据镜像、数据条带和数据校验,并基于这些算法实现raid1、raid5、raid6方案。
本发明实施例中装置的有益效果同实施例一中的有益效果相同,本实施例在此不做赘述。
实施例三
如图3所示,本发明技术方案还提供了一种虚拟RAID卡的实现组件(即qemu),包括:RAID卡控制模块(Raid_ctr)、RAID组(Raid_a、Raid_b)、磁盘(disk_dev1、disk_dev2、disk_dev3、disk_dev4)、命名空间(ns_1、ns_2、ns_3、ns_4)、块设备(block_dev1、block_dev2、block_dev3、block_dev4),RAID卡控制模块通过RAID卡管理模块(Raid_management)与用户操作系统通信连接,发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组(Raid_a、Raid_b);基于RAID组(Raid_a、Raid_b)创建逻辑卷(Raid_a对应vol_1、vol_4,Raid_b对应vol_2、vol_3),根据创建的逻辑卷创建命名空间,并将命名空间与逻辑卷对应绑定(vol_1对应ns_1,vol_2对应ns_2,vol_3对应ns_3,vol_4对应ns_4);基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写;每个磁盘下对应一个块设备(disk_dev1对应block_dev1,disk_dev2对应block_dev2,disk_dev3对应block_dev3,disk_dev4对应block_dev4),块设备用于存储写入磁盘的数据文件(block_dev1对应host_file1,block_dev2对应host_file2,block_dev3对应host_file3,block_dev4对应host_file4)。
其中,RAID卡控制模块通过与RAID管理模块与用户操作系统通信,用于处理自定义的RAID命令,实现用户通过RAID卡控制模块结构索引其它RAID相关的管理信息。RAID卡控制模块通过RAID管理命令向用户操作系统发送自身信息(RAID卡控制模块信息)以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成对应的RAID组。
进一步地,在虚拟RAID卡的实现组件(即qemu)中,还包括信息管理模块,信息管理模块用于存储RAID组中RAID查询信息(RAID_info信息管理子模块,即Raid_info)、磁盘查询信息(disk_info信息管理子模块,即disk_info)、逻辑卷查询信息(volume_info信息管理子模块,即volume_info)、命名空间查询信息(ns_info信息管理子模块,即ns_info),RAID组中RAID查询信息用于RAID卡控制模块根据RAID索引信息查找RAID信息,磁盘查询信息用于RAID卡控制模块根据磁盘索引信息查找磁盘信息,逻辑卷查询信息用于RAID卡控制模块根据逻辑卷索引信息查找逻辑卷信息,命名空间查询信息用于RAID卡控制模块根据命名空间索引信息查找命名空间信息。
进一步地,在虚拟RAID卡的实现组件(即qemu)中,还包括磁盘控制模块(图中未示出),磁盘控制模块作为RAID卡控制模块的子设备,用于将磁盘信息注册到RAID卡控制模块,便于RAID卡控制模块通过磁盘控制模块来对磁盘(disk_dev1、disk_dev2、disk_dev3、disk_dev4)进行读写控制。通过创建磁盘控制模块(disk-ctl设备)作为RAID卡控制模块的子设备,用于管理磁盘的信息。
进一步地,在虚拟RAID卡的实现组件(即qemu)中,还包括RAID算法模块(Raid_算法),RAID算法模块用于实现数据镜像、数据条带和数据校验,并基于这些算法实现raid1、raid5、raid6方案。
需要说明的是,qemu中RAID组(Raid_a、Raid_b)为实际RAID功能模块,而qemu外部的Raid_a、Raid_b为qemu中Raid_a、Raid_b在用户操作系统中的实际呈现形式,同理,qemu外部的逻辑卷(vol_1、vol_2、vol_3、vol_4)为qemu中ns_1、ns_2、ns_3、ns_4在用户操作系统中的实际呈现形式。
本发明实施例中组件的有益效果同实施例一中的有益效果相同,本实施例在此不做赘述。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (12)
1.一种虚拟RAID卡的实现方法,其特征在于,包括:
在虚拟化工具中模拟生成RAID卡控制模块,建立RAID卡控制模块与用户操作系统的通信连接;
RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;
RAID卡控制模块基于RAID组中RAID创建逻辑卷,根据创建的逻辑卷动态创建命名空间,并将命名空间与逻辑卷对应绑定;
RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中的磁盘进行读写。
2.根据权利要求1所述的一种虚拟RAID卡的实现方法,其特征在于,所述RAID卡控制模块基于NVME协议创建,用于命令队列的创建、删除、处理与响应,实现异步事件的触发。
3.根据权利要求1所述的一种虚拟RAID卡的实现方法,其特征在于,所述根据创建的逻辑卷信息创建命名空间之后,还包括:
将创建的命名空间信息均关联到RAID卡控制模块。
4.根据权利要求1所述的一种虚拟RAID卡的实现方法,其特征在于,所述将命名空间与逻辑卷对应绑定具体是:将逻辑卷的起始地址用作命名空间的起始地址,将逻辑卷的空间大小用作命名空间的空间大小。
5.根据权利要求1所述的一种虚拟RAID卡的实现方法,其特征在于,RAID卡控制模块发送自身信息之前,还包括:
在虚拟化工具中模拟生成信息管理模块,所述信息管理模块用于存储RAID组中RAID查询信息、磁盘查询信息、逻辑卷查询信息、命名空间查询信息,所述RAID组中RAID查询信息用于RAID卡控制模块根据RAID索引信息查找RAID信息,所述磁盘查询信息用于RAID卡控制模块根据磁盘索引信息查找磁盘信息,所述逻辑卷查询信息用于RAID卡控制模块根据逻辑卷索引信息查找逻辑卷信息,所述命名空间查询信息用于RAID卡控制模块根据命名空间索引信息查找命名空间信息。
6.根据权利要求5所述的一种虚拟RAID卡的实现方法,其特征在于,所述RAID组查询信息包括RAID组中RAID信息、逻辑卷信息、磁盘信息以及RAID组中RAID、逻辑卷、磁盘之间的对应索引关系。
7.根据权利要求1所述的一种虚拟RAID卡的实现方法,其特征在于,RAID卡控制模块发送自身信息之前,还包括:
在虚拟化工具中模拟生成磁盘控制模块,所述磁盘控制模块作为RAID卡控制模块的子设备,用于将磁盘信息注册到RAID卡控制模块,便于RAID卡控制模块通过磁盘控制模块来对磁盘进行读写。
8.根据权利要求1所述的一种虚拟RAID卡的实现方法,其特征在于,RAID卡控制模块发送自身信息之前,还包括:在虚拟化工具中模拟生成RAID算法模块,所述RAID算法模块用于实现数据镜像、数据条带和数据校验。
9.根据权利要求1所述的一种虚拟RAID卡的实现方法,其特征在于,所述RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中的磁盘进行读写具体包括:
RAID卡控制模块获取到逻辑卷的ID信息,根据逻辑卷的ID信息确定逻辑卷所在RAID信息;
根据逻辑卷所在RAID信息确定RAID中对应的磁盘信息;
获取待读写数据在各个磁盘中的偏移、大小;
调用对应磁盘的IO接口完成待读写数据的读写操作。
10.根据权利要求9所述的一种虚拟RAID卡的实现方法,其特征在于,将每个磁盘的任务队列标识符与RAID卡控制模块的任务队列标识符均重新映射为一线性任务队列标识符。
11.一种虚拟RAID卡的实现装置,其特征在于,包括:
生成单元,在虚拟化工具中模拟生成RAID卡控制模块,建立RAID卡控制模块与用户操作系统的通信连接;
发送单元,RAID卡控制模块发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;
创建单元,RAID卡控制模块基于RAID组创建逻辑卷,根据创建的逻辑卷动态创建命名空间,并将命名空间与逻辑卷对应绑定;
读写单元,RAID卡控制模块基于RAID组信息、逻辑卷信息、磁盘信息对RAID中的磁盘进行读写。
12.一种虚拟RAID卡的实现组件,其特征在于,包括:RAID卡控制模块、RAID组、磁盘、命名空间、块设备,所述RAID卡控制模块与用户操作系统的通信连接,发送自身信息以及RAID卡控制模块下所挂载的磁盘信息,根据用户的选择生成RAID组;基于RAID组创建逻辑卷,根据创建的逻辑卷创建命名空间,并将命名空间与逻辑卷对应绑定;基于RAID组信息、逻辑卷信息、磁盘信息对RAID中磁盘进行读写;每个磁盘下对应一个块设备,所述块设备用于存储写入磁盘的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211708531.7A CN115826874A (zh) | 2022-12-29 | 2022-12-29 | 一种虚拟raid卡的实现方法、装置及组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211708531.7A CN115826874A (zh) | 2022-12-29 | 2022-12-29 | 一种虚拟raid卡的实现方法、装置及组件 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115826874A true CN115826874A (zh) | 2023-03-21 |
Family
ID=85519309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211708531.7A Pending CN115826874A (zh) | 2022-12-29 | 2022-12-29 | 一种虚拟raid卡的实现方法、装置及组件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115826874A (zh) |
-
2022
- 2022-12-29 CN CN202211708531.7A patent/CN115826874A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6519679B2 (en) | Policy based storage configuration | |
US7689803B2 (en) | System and method for communication using emulated LUN blocks in storage virtualization environments | |
KR101930117B1 (ko) | 비휘발성 스토리지 장치 세트의 휘발성 메모리 표현 기법 | |
US8838892B2 (en) | Data storage method and storage device | |
US8533419B2 (en) | Method for controlling data write to virtual logical volume conforming to thin provisioning, and storage apparatus | |
US9959058B1 (en) | Utilizing flash optimized layouts which minimize wear of internal flash memory of solid state drives | |
US8966476B2 (en) | Providing object-level input/output requests between virtual machines to access a storage subsystem | |
US8719495B2 (en) | Concatenating a first raid with a second raid | |
CN103534688B (zh) | 数据恢复方法、存储设备和存储系统 | |
US11860791B2 (en) | Methods for managing input-output operations in zone translation layer architecture and devices thereof | |
US10788999B2 (en) | Information system, management program, and program exchange method of information system | |
US8140886B2 (en) | Apparatus, system, and method for virtual storage access method volume data set recovery | |
CN109313593B (zh) | 存储系统 | |
CN114489472A (zh) | 操作存储设备的方法和使用该方法操作存储系统的方法 | |
US8055835B2 (en) | Apparatus, system, and method for migrating wear spots | |
US11379128B2 (en) | Application-based storage device configuration settings | |
JP2002073393A (ja) | 複数層論理ボリューム管理システムのシステムおよび方法 | |
US9665581B1 (en) | Managing file system checking | |
CN104571965A (zh) | 一种raid重建的优化方法 | |
CN108334453B (zh) | 一种文件调试方法、装置、终端设备及存储介质 | |
US11822804B2 (en) | Managing extent sharing between snapshots using mapping addresses | |
CN115826874A (zh) | 一种虚拟raid卡的实现方法、装置及组件 | |
CN101859232A (zh) | 一种可变长度数据存储接口 | |
US11544013B2 (en) | Array-based copy mechanism utilizing logical addresses pointing to same data block | |
US20200057576A1 (en) | Method and system for input/output processing for write through to enable hardware acceleration |
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 |