CN114676086A - 一种插拔硬盘的方法、装置、电子设备及介质 - Google Patents
一种插拔硬盘的方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN114676086A CN114676086A CN202210302353.1A CN202210302353A CN114676086A CN 114676086 A CN114676086 A CN 114676086A CN 202210302353 A CN202210302353 A CN 202210302353A CN 114676086 A CN114676086 A CN 114676086A
- Authority
- CN
- China
- Prior art keywords
- hard disk
- hot plug
- nvme hard
- plug event
- nvme
- 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
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000004590 computer program Methods 0.000 claims description 13
- 238000001514 detection method Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 9
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4081—Live connection to bus, e.g. hot-plugging
Abstract
本申请公开了一种插拔硬盘的方法、装置、电子设备及介质,涉及计算机技术领域。该方法包括:检测NVMe硬盘的热插拔事件,其中,NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件;通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动;将处理后的NVMe硬盘的热插拔事件上报至用户态驱动。热插拔即带电插拔,本申请中将NVMe硬盘的热插拔事件注册到pciehp中断,通过pciehp中断将热插拔事件进行上报至内核态驱动以及用户态驱动进行热插拔处理,解决了更换NVMe硬盘时需要断电的问题,从而提高存储业务的稳定性及可靠性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种插拔硬盘的方法、装置、电子设备及介质。
背景技术
在云计算时代,海量数据需要通过存储设备写入到后端硬盘中,并在需要的时候从后端硬盘中读取出来,目前主流的基于非易失性存储器协议(Non-Volatile MemoryExpress,NVMe)的硬盘(简称NVMe硬盘)有几T的容量,当应用到企业级的存储场景中时,一块NVMe硬盘不能满足需求,它需要几十甚至上百块的NVMe硬盘才能满足要求。但是任何设备都有使用寿命,在使用过程中也可能出现异常的损坏,这种情况下就要适时的替换掉异常的NVMe硬盘,但如果每替换一张盘就给设备下一次电,从而影响存储业务的稳定性及可靠性。
由此可见,如何提高存储业务的稳定性及可靠性,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种插拔硬盘的方法、装置、电子设备及介质,用于提高存储业务的稳定性及可靠性。
为解决上述技术问题,本申请提供一种插拔硬盘的方法,包括:
检测NVMe硬盘的热插拔事件;其中,所述NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件,所述NVMe硬盘支持热插拔;
通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动以便于所述内核态驱动对所述NVMe硬盘进行热插拔处理;
将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动以便于所述用户态驱动对所述NVMe硬盘进行热插拔处理。
优选地,所述NVMe硬盘的个数为多个,所述通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动包括:
选取目标内核态驱动;其中,所述目标内核态驱动的个数为一个;
通过所述pciehp中断将各所述NVMe硬盘的热插拔事件上报至所述目标内核态驱动。
优选地,在所述检测NVMe硬盘的热插拔事件之前,还包括:
修改所述NVMe硬盘的上一级桥片的配置空间以便于上一级所述桥片的completion timeout寄存器的值在预设范围内。
优选地,所述通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动以便于所述内核态驱动对所述NVMe硬盘进行热插拔处理包括:
通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动;
通过所述内核态驱动获取所述NVMe硬盘对应的寄存器的状态值;
根据所述寄存器的状态值判断所述NVMe硬盘是否发生热插拔事件;
若是,则通过所述内核态驱动对所述NVMe硬盘进行热插拔处理。
优选地,所述将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动包括:
通过Netlink协议将处理后的所述NVMe硬盘的热插拔事件上报至所述用户态驱动。
优选地,在所述将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动以便于所述用户态驱动对所述NVMe硬盘进行热插拔处理之后,还包括:
在所述用户态驱动中添加热插拔标志位。
优选地,所述在所述用户态驱动中添加热插拔标志位之后,还包括:
根据所述热插拔标志位获取发生热插拔事件的所述NVMe硬盘;
将发生热插拔事件的所述NVMe硬盘上存储的数据存储至未发生热插拔事件的所述NVMe硬盘中。
为了解决上述技术问题,本申请还提供一种插拔硬盘的装置,包括:
检测模块,用于检测NVMe硬盘的热插拔事件;其中,所述NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件,所述NVMe硬盘支持热插拔;
第一上报模块,用于通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动以便于所述内核态驱动对所述NVMe硬盘进行热插拔处理;
第二上报模块,用于将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动以便于所述用户态驱动对所述NVMe硬盘进行热插拔处理。
为了解决上述技术问题,本申请还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述的插拔硬盘的方法的步骤。
为了解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的插拔硬盘的方法的步骤。
本申请所提供的插拔硬盘的方法,该方法包括:检测NVMe硬盘的热插拔事件,其中,NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件;通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动以便于内核态驱动对NVMe硬盘进行热插拔处理;将处理后的NVMe硬盘的热插拔事件上报至用户态驱动以便于用户态驱动对NVMe硬盘进行热插拔处理。热插拔即带电插拔,本申请中将NVMe硬盘的热插拔事件注册到pciehp中断,通过pciehp中断将热插拔事件进行上报至内核态驱动以及用户态驱动进行热插拔处理,解决了更换NVMe硬盘时需要断电的问题,从而提高存储业务的稳定性及可靠性。
此外,本申请还提供一种插拔硬盘的装置、电子设备及计算机可读存储介质,与上述提到的插拔硬盘的方法相对应,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种插拔硬盘的方法;
图2为本申请的一实施例提供的一种插拔硬盘的装置的结构图;
图3为本申请另一实施例提供的一种电子设备的结构图;
图4为本申请实施例提供的一种热插拔方法的应用场景示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种插拔硬盘的方法、装置、电子设备及介质,用于提高存储业务的稳定性及可靠性。
当前在更换硬盘时通常需要断电才能拔盘,在断电的过程中,若存在正在运行的程序,则会影响程序的正常运行,导致存储业务不稳定以及可靠性降低。因此,本申请采用热插拔技术(Hot plug technology)实现更换硬盘时不需要断电的问题。热插拔即带电插拔,允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。图1为本申请提供的一种插拔硬盘的方法,如图1所示,该方法包括:
S10:检测NVMe硬盘的热插拔事件;其中,NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件,NVMe硬盘支持热插拔。
在应用中,存在支持热插拔的硬盘以及不支持热插拔的硬盘,对于不支持热插拔的硬盘则无法采用热插拔技术实现硬盘的热插拔,因此本申请采用支持热插拔的硬盘。常用的支持热插拔的硬盘有串口(Serial ATA,SATA)硬盘V2.0版本,NVMe硬盘等。需要说明的是,对于支持热插拔的硬盘的插拔均在本申请的保护范围内。由于NVMe是硬盘新的传输标准,具有较低的延时、较高的传输性能以及更低的功耗控制,故而本申请采用支持热插拔的NVMe硬盘,即硬盘的u.2接口上有长短针。为了实现对硬盘的热插拔,需要预先将NVMe硬盘的热插拔事件注册到pciehp中断上。当硬盘的u.2接口的长短针检测到物理电平变化即检测到NVMe硬盘发生热插拔事件。如当检测到物理电平的值由0变为1,表示NVMe硬盘由未插入状态变为插入的状态;当检测到物理电平的值由1变为0,表示NVMe硬盘由插入状态变为拔出状态。
S11:通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动以便于内核态驱动对NVMe硬盘进行热插拔处理。
由于预先将NVMe硬盘的热插拔事件注册到pciehp中断上,因此当检测到NVMe硬盘的热插拔事件后便会触发pciehp中断,通过pciehp中断将热插拔事件上报。操作系统的运行级别包括运行在内核态以及运行在用户态。内核态主要是运行操作系统程序,操作硬件,而用户态主要是运行用户程序。处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的;而处于核心态执行中的进程,则能访问所有的内存空间和对象,且所占有的处理机是不允许被抢占的。在实施中,为了实现对NVMe硬盘的热插拔处理,可以在内核态进行处理,也可以是在用户态进行处理,也可以既在内核态又在用户态进行处理,此处不作限定。本实施例中采用先在内核态对热插拔事件进行处理,然后再在用户态对热插拔事件进行处理。一方面,先在内核态对热插拔事件进行处理,由于内核态能够访问所有的内存空间和对象,因此使能够较快速地对热插拔事件进行处理,另一方面,在内核态对热插拔事件进行处理之后,在用户态对热插拔事件再次处理,使得用户能够根据需要的场景对热插拔事件进行处理。因此,先通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动以便于内核态驱动对NVMe硬盘进行热插拔处理。pciehp中断将NVMe盘的热插拔事件上报给NVMe硬盘的内核态驱动,内核态驱动开始检测NVMe硬盘的一些寄存器,可以根据寄存器的状态值判断是否发生了热插拔事件。内核态驱动确认发生了NVMe硬盘的热插拔事件后开始进行NVMe硬内核态的热插拔处理流程,包括资源释放,异常处理等。
S12:将处理后的NVMe硬盘的热插拔事件上报至用户态驱动以便于用户态驱动对NVMe硬盘进行热插拔处理。
上述步骤中将热插拔事件在内核态进行处理,在实际中,用户可能需要根据实际的需求,对热插拔事件进行处理。因此在内核态处理完热插拔事件之后,在用户态进一步地对热插拔事件进行处理。在用户态热插拔事件进行处理可以是通过Netlink协议将热插拔事件上报给在操作系统用户态执行的驱动,然后NVMe用户态驱动对热插拔事件进行处理。在处理过程中,可以将NVMe硬盘添加热插拔标志位,便于业务层感知到热插拔事件。
本实施例所提供的插拔硬盘的方法,该方法包括:检测NVMe硬盘的热插拔事件,其中,NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件;通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动以便于内核态驱动对NVMe硬盘进行热插拔处理;将处理后的NVMe硬盘的热插拔事件上报至用户态驱动以便于用户态驱动对NVMe硬盘进行热插拔处理。热插拔即带电插拔,本实施例中将NVMe硬盘的热插拔事件注册到pciehp中断,通过pciehp中断将热插拔事件进行上报至内核态驱动以及用户态驱动进行热插拔处理,解决了更换NVMe硬盘时需要断电的问题,从而提高存储业务的稳定性及可靠性。
在实施中,当同时插入或者拔出多个NVMe硬盘时,若pciehp中断分核心上报时,则pciehp中断对多个核心均产生影响,导致其余业务的稳定性受到影响。因此,作为优选地实施方式,NVMe硬盘的个数为多个,通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动包括:
选取目标内核态驱动;其中,目标内核态驱动的个数为一个;
通过pciehp中断将各NVMe硬盘的热插拔事件上报至目标内核态驱动。
在实施中,NVMe硬盘的个数可能是一个,也可能是多个。当NVMe硬盘的个数为一个时,插入或拔出该硬盘,pciehp中断将该热插拔事件上报至一个核心,也就是热插拔事件几乎只影响该核心;而当NVMe硬盘的个数为多个时,同时插入或拔出多个硬盘时,pciehp中断将热插拔事件分核心上报,导致热插拔事件影响的核心的数量较多,由于在不同核心上可能也存在其余业务,因此会影响其余业务的稳定性。故而,本实施例统一指定pciehp中断上报的核心,也就是选取目标内核态驱动。需要说明的是,本实施例中优选地选取目标内核态驱动的数量是一个,但是在实施中,目标内核态驱动的数量可以大于一个,发生热插拔事件的磁盘的个数要大于目标内核态驱动的数量。对于目标内核态驱动的选择,可以预先统计相对空闲的核心,将较空闲的核心作为目标内核态驱动。确定目标内核态驱动之后,通过pciehp中断将各NVMe硬盘的热插拔事件上报至目标内核态驱动。
本实施例所提供的将各NVMe硬盘的热插拔事件上报至一个目标内核态驱动,统一指定pciehp中断的上报核心,使得同时插入多块NVMe硬盘不会发生硬盘的分核心上报,用以减轻pciehp中断对不同核心的影响。
在实施中,为了防止插入或拔出NVMe硬盘时NVMe硬盘长时间没有应答造成的中央处理器(Central Processing Unit,CPU)的异常。作为优选地实施方式,在检测NVMe硬盘的热插拔事件之前,还包括:
修改NVMe硬盘的上一级桥片的配置空间以便于上一级桥片的completiontimeout寄存器的值在预设范围内。
CPU和NVMe硬盘之间通过桥片连接,桥片用来扩展设备。桥片的个数可能为多个。在实施中,可能会出现插入或拔出NVMe硬盘时NVMe硬盘长时间没有应答造成CPU的异常,为了能够及时发现这种问题以及对这种问题进行处理,修改NVMe硬盘的上一级桥片的配置空间,使得上一级桥片的completion timeout寄存器的值在预设范围内。当寄存器的值不在该预设范围内,则说明NVMe硬盘的热插拔出现异常。在实施中,对于预设范围的具体的数值不作限定,优选地,预设范围为16ms到55ms。
本实施例所提供的在检测NVMe硬盘的热插拔事件之前,修改NVMe硬盘的上一级桥片的配置空间以便于上一级桥片的completion timeout寄存器的值在预设范围内,能够尽可能地防止插入或拔出NVMe硬盘时NVMe硬盘长时间没有应答造成CPU的异常。
在上述实施例的基础上,为了能够准确地判断出NVMe硬盘发生了热插拔事件,作为优选地实施方式,通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动以便于内核态驱动对NVMe硬盘进行热插拔处理包括:
通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动;
通过内核态驱动获取NVMe硬盘对应的寄存器的状态值;
根据寄存器的状态值判断NVMe硬盘是否发生热插拔事件;
若是,则通过内核态驱动对NVMe硬盘进行热插拔处理。
当检测到NVMe硬盘的热插拔事件后,通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动,内核态驱动开始检测NVMe硬盘的对应的寄存器。当寄存器的状态值发生变化后,说明NVMe硬盘发生了热插拔事件,如寄存器的值由0变为1,表示发生了NVMe硬盘的插入事件;当寄存器的值由1变为0,表示发生了NVMe硬盘的拔出事件。然后内核态驱动确认发生了NVMe硬盘的热插拔事件后开始进行内核态的热插拔处理流程,包括资源释放,异常处理等。
本实施例所提供的根据寄存器的状态值的变化能够准确地判断出NVMe硬盘发生了热插拔事件。
为了实现内核态驱动和用户态驱动之间的通信,在实施中,作为优选地实施方式,将处理后的NVMe硬盘的热插拔事件上报至用户态驱动包括:通过Netlink协议将处理后的NVMe硬盘的热插拔事件上报至用户态驱动。
内核态驱动对热插拔事件进行处理之后,再在用户态驱动对热插拔事件进行处理,因此,需要进行内核态驱动和用户态驱动之间的通信。在实施中,可以通过ioctl或Netlink协议等实现内核态驱动和用户态驱动两者之间的通信,此处对实现两者之间的通信的具体方式不作限定。Netlink协议相比于ioctl,具有以下优点:使用Netlink通过自定义一种新的协议并加入协议族即可通过socket API使用Netlink协议完成数据交换,而ioctl和proc文件系统均需要通过程序加入相应的设备或文件;Netlink使用socket缓存队列,是一种异步通信机制,而ioctl是同步通信机制,如果传输的数据量较大,会影响系统性能;Netlink支持多播,属于一个Netlink组的模块和进程都能获得该多播消息;Netlink允许内核发起会话,而ioctl和系统调用只能由用户空间进程发起。因此,本实施例采用Netlink协议将处理后的NVMe硬盘的热插拔事件上报至用户态驱动。建立netlink会话如下:在内核使用netlink_kernel_create()创建套接字,指明接受函数;在用户态创建套接字,并将进程ID发送至内核空间;内核接受函数收到用户空间进程ID;用户空间与内核空间可以通信。
本实施例所提供的通过Netlink协议将处理后的NVMe硬盘的热插拔事件上报至用户态驱动,实现了内核态驱动和用户态驱动之间的通信。
为了便于业务层感知到热插拔事件,在实施中,作为优选地实施方式,在将处理后的NVMe硬盘的热插拔事件上报至用户态驱动以便于用户态驱动对NVMe硬盘进行热插拔处理之后,还包括:
在用户态驱动中添加热插拔标志位。
当NVMe硬盘发生热插拔事件后,若未在用户态驱动中添加热插拔标记位,则业务层无法感知到热插拔事件,进而无法及时终止正在执行的任务,并告知其它相连接的设备将所在链路断开。故而,在用户态驱动中添加热插拔标记位,根据热插拔标记位能够及时地通知业务层发生了热插拔事件。对于热插拔标志位的设置方式不作限定。如热插拔标志位上的数字为1时,代表发生了热插拔事件。
本实施例所提供的在用户态驱动中添加热插拔标志位,根据热插拔标志位业务层能够感知到热插拔事件,告知存储设备本块盘发生了热插拔,进而能够及时地对热插拔事件进行处理。
上述实施例中在用户态驱动中添加了热插拔标志位,进而可以根据热插拔标志位对热插拔事件进行及时处理,提高存储业务的稳定性及可靠性。优选地,在用户态驱动中添加热插拔标志位之后,还包括:
根据热插拔标志位获取发生热插拔事件的NVMe硬盘;
将发生热插拔事件的NVMe硬盘上存储的数据存储至未发生热插拔事件的NVMe硬盘中。
根据热插拔标志位获取到发生热插拔事件的NVMe硬盘之后,需要对该NVMe硬盘上的数据写入其余硬盘上。由于发生热插拔事件的NVMe硬盘上的数据不稳定,而未发生热插拔事件的NVMe硬盘上的数据相比发生热插拔事件的NVMe硬盘上的数据稳定,因此将发生热插拔事件的NVMe硬盘上的数据保存到未发生热插拔事件的NVMe硬盘上。对于未发生热插拔事件的NVMe硬盘的选择可以根据盘的冗余算法来选取合适的NVMe硬盘。然后再将发生热插拔事件的NVMe硬盘上的数据保存到该NVMe硬盘上。
本实施例所提供的根据热插拔标志位获取发生热插拔事件的NVMe硬盘;将发生热插拔事件的NVMe硬盘上存储的数据存储至未发生热插拔事件的NVMe硬盘中,提高了存储业务的稳定性及可靠性。
在上述实施例中,对于插拔硬盘的方法进行了详细描述,本申请还提供一种插拔硬盘的装置、电子设备对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图2为本申请的一实施例提供的一种插拔硬盘的装置的结构图。本实施例基于功能模块的角度,包括:
检测模块10,用于检测NVMe硬盘的热插拔事件;其中,NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件,NVMe硬盘支持热插拔;
第一上报模块11,用于通过pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动以便于内核态驱动对NVMe硬盘进行热插拔处理;
第二上报模块12,用于将处理后的NVMe硬盘的热插拔事件上报至用户态驱动以便于用户态驱动对NVMe硬盘进行热插拔处理。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例所提供的插拔硬盘的装置,通过检测模块检测NVMe硬盘的热插拔事件;通过第一上报模块经pciehp中断将NVMe硬盘的热插拔事件上报至内核态驱动;通过第二上报模块将处理后的NVMe硬盘的热插拔事件上报至用户态驱动。热插拔即带电插拔,本实施例中将NVMe硬盘的热插拔事件注册到pciehp中断,通过pciehp中断将热插拔事件进行上报至内核态驱动以及用户态驱动进行热插拔处理,解决了更换NVMe硬盘时需要断电的问题,从而提高存储业务的稳定性及可靠性。
图3为本申请另一实施例提供的一种电子设备的结构图。本实施例基于硬件角度,如图3所示,电子设备包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的插拔硬盘的方法的步骤。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图形处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的插拔硬盘的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于上述所提到的插拔硬盘的方法所涉及到的数据等。
在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图3中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的电子设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:插拔硬盘的方法,效果同上。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请提供的计算机可读存储介质包括上述提到的插拔硬盘的方法,效果同上。
为了使本领域的技术人员更好的理解本申请的技术方案,下面结合附图4对上述本申请作进一步的详细说明,图4为本申请实施例提供的一种热插拔方法的应用场景示意图。如图4所示,该过程包括:
S13:将NVMe硬盘的热插拔事件注册到pciehp中断上;
S14:指定pciehp中断的上报核心;
S15:修改NVMe硬盘上一级桥片的配置空间中的completion timeout寄存器的值;
S16:在NVMe硬盘的用户态驱动添加热插拔标志位;
S17:对正常上电的NVMe硬盘做插拔动作;
S18:操作系统俘获NVMe硬盘热插拔事件,并进行pciehp中断注册;
S19:pciehp中断上报热插拔事件给NVMe硬盘的内核态驱动;
S20:内核态驱动做中断处理,并通过Netlink协议上报给用户态驱动;
S21:用户态驱动接收到热插拔中断进行用户态驱动的中断处理。
由此可见,本实施例中将NVMe硬盘的热插拔事件注册到pciehp中断,通过pciehp中断将热插拔事件进行上报至内核态驱动以及用户态驱动进行热插拔处理,解决了更换NVMe硬盘时需要断电的问题,从而提高存储业务的稳定性及可靠性。
以上对本申请所提供的一种插拔硬盘的方法、装置、电子设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种插拔硬盘的方法,其特征在于,包括:
检测NVMe硬盘的热插拔事件;其中,所述NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件,所述NVMe硬盘支持热插拔;
通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动以便于所述内核态驱动对所述NVMe硬盘进行热插拔处理;
将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动以便于所述用户态驱动对所述NVMe硬盘进行热插拔处理。
2.根据权利要求1所述的插拔硬盘的方法,其特征在于,所述NVMe硬盘的个数为多个,所述通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动包括:
选取目标内核态驱动;其中,所述目标内核态驱动的个数为一个;
通过所述pciehp中断将各所述NVMe硬盘的热插拔事件上报至所述目标内核态驱动。
3.根据权利要求2所述的插拔硬盘的方法,其特征在于,在所述检测NVMe硬盘的热插拔事件之前,还包括:
修改所述NVMe硬盘的上一级桥片的配置空间以便于上一级所述桥片的completiontimeout寄存器的值在预设范围内。
4.根据权利要求1至3任意一项所述的插拔硬盘的方法,其特征在于,所述通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动以便于所述内核态驱动对所述NVMe硬盘进行热插拔处理包括:
通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动;
通过所述内核态驱动获取所述NVMe硬盘对应的寄存器的状态值;
根据所述寄存器的状态值判断所述NVMe硬盘是否发生热插拔事件;
若是,则通过所述内核态驱动对所述NVMe硬盘进行热插拔处理。
5.根据权利要求4所述的插拔硬盘的方法,其特征在于,所述将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动包括:
通过Netlink协议将处理后的所述NVMe硬盘的热插拔事件上报至所述用户态驱动。
6.根据权利要求5所述的插拔硬盘的方法,其特征在于,在所述将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动以便于所述用户态驱动对所述NVMe硬盘进行热插拔处理之后,还包括:
在所述用户态驱动中添加热插拔标志位。
7.根据权利要求6所述的插拔硬盘的方法,其特征在于,所述在所述用户态驱动中添加热插拔标志位之后,还包括:
根据所述热插拔标志位获取发生热插拔事件的所述NVMe硬盘;
将发生热插拔事件的所述NVMe硬盘上存储的数据存储至未发生热插拔事件的所述NVMe硬盘中。
8.一种插拔硬盘的装置,其特征在于,包括:
检测模块,用于检测NVMe硬盘的热插拔事件;其中,所述NVMe硬盘的热插拔事件为预先注册到pciehp中断上的热插拔事件,所述NVMe硬盘支持热插拔;
第一上报模块,用于通过所述pciehp中断将所述NVMe硬盘的热插拔事件上报至内核态驱动以便于所述内核态驱动对所述NVMe硬盘进行热插拔处理;
第二上报模块,用于将处理后的所述NVMe硬盘的热插拔事件上报至用户态驱动以便于所述用户态驱动对所述NVMe硬盘进行热插拔处理。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的插拔硬盘的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的插拔硬盘的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210302353.1A CN114676086A (zh) | 2022-03-25 | 2022-03-25 | 一种插拔硬盘的方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210302353.1A CN114676086A (zh) | 2022-03-25 | 2022-03-25 | 一种插拔硬盘的方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676086A true CN114676086A (zh) | 2022-06-28 |
Family
ID=82075409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210302353.1A Pending CN114676086A (zh) | 2022-03-25 | 2022-03-25 | 一种插拔硬盘的方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676086A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508659A (zh) * | 2011-10-21 | 2012-06-20 | 浪潮电子信息产业股份有限公司 | 一种Linux下PCI EXPRESS热插拔的方法 |
CN107479900A (zh) * | 2017-08-28 | 2017-12-15 | 北京翼辉信息技术有限公司 | 一种适用于实时操作系统的热插拔软件方案 |
CN210639540U (zh) * | 2019-11-21 | 2020-05-29 | 苏州浪潮智能科技有限公司 | 一种可支持MultiHost的OCP NIC3.0转接卡 |
CN114020670A (zh) * | 2021-10-28 | 2022-02-08 | 郑州云海信息技术有限公司 | 一种pcie卡的管理方法、系统、设备及存储介质 |
-
2022
- 2022-03-25 CN CN202210302353.1A patent/CN114676086A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508659A (zh) * | 2011-10-21 | 2012-06-20 | 浪潮电子信息产业股份有限公司 | 一种Linux下PCI EXPRESS热插拔的方法 |
CN107479900A (zh) * | 2017-08-28 | 2017-12-15 | 北京翼辉信息技术有限公司 | 一种适用于实时操作系统的热插拔软件方案 |
CN210639540U (zh) * | 2019-11-21 | 2020-05-29 | 苏州浪潮智能科技有限公司 | 一种可支持MultiHost的OCP NIC3.0转接卡 |
CN114020670A (zh) * | 2021-10-28 | 2022-02-08 | 郑州云海信息技术有限公司 | 一种pcie卡的管理方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2942712B1 (en) | Server control method and server control device | |
US8433833B2 (en) | Dynamic reassignment for I/O transfers using a completion queue | |
EP3206127B1 (en) | Method, computer, and apparatus for migrating memory data | |
US9529410B2 (en) | Service processor (SP) initiated data transaction with BIOS utilizing power off commands | |
US9529750B2 (en) | Service processor (SP) initiated data transaction with bios utilizing interrupt | |
WO2016202040A1 (zh) | 一种基于pcie子卡热插拔的方法及装置 | |
US9806959B2 (en) | Baseboard management controller (BMC) to host communication through device independent universal serial bus (USB) interface | |
US10346321B2 (en) | Method to trigger NVDIMM save from remote management interface | |
WO2021072880A1 (zh) | 虚拟机内部快照异步创建方法、装置、系统及存储介质 | |
CN110806925B (zh) | 音频播放方法及设备 | |
US20090019388A1 (en) | Anti-virus usage model at an exterior panel of a computer | |
CN110399168B (zh) | 多数据盘存储服务器的系统启动方法、装置及设备 | |
CN116737636A (zh) | Pcie设备热拔插控制方法及相关装置 | |
CN116149559A (zh) | 队列处理方法、装置、服务器、电子设备和存储介质 | |
WO2022148070A1 (zh) | 固态盘暴力热拔出操作的处理方法、装置、系统及介质 | |
EP2869189A1 (en) | Boot up of a multiprocessor computer | |
JP2008269570A (ja) | コンピュータ構成においてデバイスのクリティカル性を判断する方法及びシステム | |
CN107479900B (zh) | 一种适用于实时操作系统的热插拔软件方案 | |
CN112000535A (zh) | 一种基于SAS Expander卡的硬盘异常识别方法及处理方法 | |
CN113412480B (zh) | 挂载处理方法、装置、电子设备及计算机可读取存储介质 | |
CN114676086A (zh) | 一种插拔硬盘的方法、装置、电子设备及介质 | |
CN115168119A (zh) | 一种服务器pcie链路检测方法、装置以及介质 | |
CN114884836A (zh) | 一种虚拟机高可用方法、装置及介质 | |
WO2017124918A1 (zh) | 一种设备热处理方法和装置 | |
CN114461471A (zh) | 一种判断pcie链路训练过程状态的方法、装置及介质 |
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 |