CN112445738A - 一种热插拔处理方法、装置及设备 - Google Patents
一种热插拔处理方法、装置及设备 Download PDFInfo
- Publication number
- CN112445738A CN112445738A CN202011363523.4A CN202011363523A CN112445738A CN 112445738 A CN112445738 A CN 112445738A CN 202011363523 A CN202011363523 A CN 202011363523A CN 112445738 A CN112445738 A CN 112445738A
- Authority
- CN
- China
- Prior art keywords
- plug
- hot
- event
- pcie
- equipment
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000012545 processing Methods 0.000 claims description 38
- 238000000605 extraction Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 13
- 238000003780 insertion Methods 0.000 description 8
- 230000037431 insertion Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 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
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种热插拔处理方法、装置及设备,该方法包括:当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果插入设备为PCIe switch,扫描插入设备的下行口,在插入设备的下行口挂载硬盘时,初始化插入设备的下行口挂载的硬盘,如果插入设备为硬盘,则初始化插入设备;当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果拔出设备为PCIe switch,扫描拔出设备的下行口,在拔出设备的下行口挂载硬盘时,注销拔出设备的下行口挂载的硬盘,回收相应资源,如果拔出设备为硬盘,则注销拔出设备,回收相应资源。能够实现较好的热插拔支持易用性及相应存储系统的较好的可服务性。
Description
技术领域
本发明涉及存储技术领域,更具体地说,涉及一种热插拔处理方法、装置及设备。
背景技术
在存储领域,NVMe SSD(NVMe固态硬盘)直接连接到通用的PCIe Bus(PCIe总线)上,而NVMe SSD的热插拔完全依赖于Host的PCIe处理机制,但是传统的PCIe处理机制对热插拔支持易用性并不好,特别是暴力热插拔(PCIe surprise hot plug),很容易导致NVMeSSD相应存储系统的可服务性较差。
发明内容
本发明的目的是提供一种热插拔处理方法、装置及设备,能够实现较好的热插拔支持易用性,进而实现相应存储系统的较好的可服务性。
为了实现上述目的,本发明提供如下技术方案:
一种热插拔处理方法,包括:
当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果所述插入设备为PCIe switch,则扫描所述插入设备的下行口,在所述插入设备的下行口挂载硬盘时,初始化所述插入设备的下行口挂载的硬盘,如果所述插入设备为硬盘,则初始化所述插入设备;
当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果所述拔出设备为PCIe switch,则扫描所述拔出设备的下行口,在所述拔出设备的下行口挂载硬盘时,注销所述拔出设备的下行口挂载的硬盘,并回收相应资源,如果所述拔出设备为硬盘,则注销所述拔出设备,并回收相应资源。
优选的,确定发生热拔出事件的设备为拔出设备之后,还包括:
如果接收到总线错误信号则忽略;其中,所述总线错误信号为上层应用读写所述拔出设备的下行口挂载的硬盘或者所述拔出设备时生成的。
优选的,发生热插入事件或者热拔出事件之前,还包括:
分配允许分配的空间范围内最大值的内存空间、地址空间及io空间,以供相应的硬盘使用。
优选的,发生热插入事件或者热拔出事件之前,还包括:
选定支持PCIe的热插拔事件的内核版本,控制与所述PCIe switch连接的存储控制器使用该支持PCIe的热插拔事件的内核版本。
优选的,发生热插入事件或者热拔出事件之前,还包括:
在所述内核中注册所述PCIe switch对应的PCIe驱动及所述硬盘的PCIe驱动,为所述PCIe驱动设置相应的值为空的device号,并在确定出所使用的PCIe switch及硬盘后在对应的device号中填入相应的值。
优选的,发生热插入事件或者热拔出事件之前,还包括:
确定所有的所述PCIe switch包含于同一组播组,任意所述PCIe switch的下行口挂载的全部硬盘包含于同一组播组,以供通过广播的方式实现相应组播组内PCIe switch或者硬盘的信息发送。
优选的,发生热插入事件或者热拔出事件之前,还包括:
初始化netlink组件,并在所述上层应用对应控件初始化一对netlink组件的netlink socket;其中,一对所述netlink socket分别实现所述PCIe switch的热插拔事件的接收及所述硬盘的热插拔事件的接收。
优选的,发生热插入事件或者热拔出事件之后,还包括:
如果发生热插入事件或者热拔出事件的数量为多个,则利用多个线程以一一对应的方式实现对该多个热插入事件或者热拔出事件的并行处理。
一种热插拔处理装置,包括:
热插入模块,用于:当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果所述插入设备为PCIe switch,则扫描所述插入设备的下行口,在所述插入设备的下行口挂载硬盘时,初始化所述插入设备的下行口挂载的硬盘,如果所述插入设备为硬盘,则初始化所述插入设备;
热拔出模块,用于:当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果所述拔出设备为PCIe switch,则扫描所述拔出设备的下行口,在所述拔出设备的下行口挂载硬盘时,注销所述拔出设备的下行口挂载的硬盘,并回收相应资源,如果所述拔出设备为硬盘,则注销所述拔出设备,并回收相应资源。
一种热插拔处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述热插拔处理方法的步骤。
本发明提供了一种热插拔处理方法、装置及设备,该方法包括:当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果所述插入设备为PCIe switch,则扫描所述插入设备的下行口,在所述插入设备的下行口挂载硬盘时,初始化所述插入设备的下行口挂载的硬盘,如果所述插入设备为硬盘,则初始化所述插入设备;当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果所述拔出设备为PCIe switch,则扫描所述拔出设备的下行口,在所述拔出设备的下行口挂载硬盘时,注销所述拔出设备的下行口挂载的硬盘,并回收相应资源,如果所述拔出设备为硬盘,则注销所述拔出设备,并回收相应资源。本申请在发生热插拔事件后,针对发生热插入的PCIe switch下挂载的硬盘进行初始化以为io做准备,针对发生热插入的硬盘进行初始化以为io做准备,针对发生热拔出的PCIe switch下挂载的硬盘进行注销并回收相应资源,针对发生热拔出的硬盘进行注销并回收相应资源,从而通过上述针对不同事件下不同设备的具体处理,实现较好的热插拔支持易用性,进而实现相应存储系统的较好的可服务性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种热插拔处理方法的流程图;
图2为本发明实施例提供的一种热插拔处理方法中设备连接示意图;
图3为本发明实施例提供的一种热插拔处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了本发明实施例提供的一种热插拔处理方法的流程图,可以包括:
S11:当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果插入设备为PCIe switch,则扫描插入设备的下行口,在插入设备的下行口挂载硬盘时,初始化插入设备的下行口挂载的硬盘,如果插入设备为硬盘,则初始化插入设备。
本发明实施例提供的一种热插拔处理方法的执行主体可以为对应的热插拔处理装置,而热插拔处理装置可以设置于存储控制器内,因此该热插拔处理方法的执行主体可以为存储控制器,本申请以热插拔处理方法的执行主体为存储控制器进行具体说明。
本申请实施例中PCIe switch(PCIe switch是PCIe标准中定义的)可以为JOBF(Just a bunch of NVMe Flash,NVMe硬盘扩展柜),是在一个底板上安装的带有多个磁盘驱动器的存储设备,其原理实现上一般使用PCIe PCIe switch,如microsemi的psx系列PM8546等;具体来说,如图2所示,JBOF的前端可以通过mini sas线缆或PCIe线缆连接至存储控制器(机头),JBOF的后端连接有NVMe SSD盘,PCIe(PCI-Express,peripheralcomponent interconnect express)是一种高速串行计算机扩展总线标准,其属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理、错误报告、端对端的可靠性传输、热插拔以及服务质量(QOS)等功能。当PCIe线缆发生插拔时,会导致JBOF和其挂载的NVMe SSD盘同时发生热插拔。本申请实施例中的硬盘均可以指NVMe SSD盘,而热插拔(与热插拔事件的含义相同,热插拔消息则为通知发生热插拔事件的消息)具体则可以为暴力热插拔(PCIe surprise hot plug),具体指用户在不通知存储系统的情况下,直接插拔设备。
热插拔事件包含热插入事件及热拔出事件,而PCIe的热插拔事件则为基于PCIe线缆分别连接存储控制器及硬盘时,发生的热插拔事件。如果发生的热插拔事件为热插入事件且发生热插入事件的设备为PCIe switch,则可以在PCIe switch的下行口挂载有硬盘时,对这些硬盘进行初始化以为io做准备;如果发生的热插拔事件为热插入事件且发生热插入事件的设备为硬盘,则可以直接对这些硬盘进行初始化以为io做准备;从而通过这种方式,实现热插入事件后对相应硬盘的正常使用。
S12:当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果拔出设备为PCIe switch,则扫描拔出设备的下行口,在拔出设备的下行口挂载硬盘时,注销拔出设备的下行口挂载的硬盘,并回收相应资源,如果拔出设备为硬盘,则注销拔出设备,并回收相应资源。
如果发生的热插拔事件为热拔出事件且发生热拔出事件的设备为PCIe switch,则可以在PCIe switch的下行口挂载有硬盘时,对这些硬盘进行注销,并回收相应的资源;如果发生的热插拔事件为热拔出事件且发生热拔出事件的设备为硬盘,则可以直接对这些硬盘进行初始化注销,并回收相应的资源;其中,注销硬盘后硬盘则无法再被使用,而回收注销的硬盘对应的资源包含存储空间的资源、通信连接的资源等全部资源,从而通过这种方式,实现热拔出事件后对相应硬盘的正常回收。
本申请在发生热插拔事件后,针对发生热插入的PCIe switch下挂载的硬盘进行初始化以为io做准备,针对发生热插入的硬盘进行初始化以为io做准备,针对发生热拔出的PCIe switch下挂载的硬盘进行注销并回收相应资源,针对发生热拔出的硬盘进行注销并回收相应资源,从而通过上述针对不同事件下不同设备的具体处理,实现较好的热插拔支持易用性,进而实现相应存储系统的较好的可服务性。
本发明实施例提供的一种热插拔处理方法,确定发生热拔出事件的设备为拔出设备之后,还可以包括:
如果接收到总线错误信号则忽略;其中,总线错误信号为上层应用读写拔出设备的下行口挂载的硬盘或者拔出设备时生成的。
需要说明的是,总线错误信号即为SIGBUS信号,当设备(PCIe switch或者硬盘)发生热拔出后,上层应用还在读写该设备,则会导致SIGBUS信号,为了避免影响相应功能的正常使用,本申请实施例在接收到该SIGBUS信号时会直接忽略,待上层io超时后按照其超时io的方式进行相应处理。
本发明实施例提供的一种热插拔处理方法,发生热插入事件或者热拔出事件之前,还可以包括:
分配允许分配的空间范围内最大值的内存空间、地址空间及io空间,以供相应的硬盘使用。
需要说明的是,分配内存空间、地址空间及io空间具体可以为存储控制器指示BIOS执行的,且可以是依据最大配置分配BDF和BAR空间实现上述几项空间的分配的,通过分配允许分配的空间范围内的最大值,能够保证PCIe switch下所有的硬盘都具有足够内存空间和BDF等使用。其中,BDF(Bus Number、Device Number、Function Number)中,BusNumber占用8位,Device Number占用5位,Function Number占用3位,因此,PCIe总线最多支持256个子总线,每个子总线最多支持32个设备,每个设备最多支持8个功能;而BAR空间则表示BAR寄存器(基地址寄存器)对应的空间。
本发明实施例提供的一种热插拔处理方法,发生热插入事件或者热拔出事件之前,还可以包括:
选定支持PCIe的热插拔事件的内核版本,控制与PCIe switch连接的存储控制器使用该支持PCIe的热插拔事件的内核版本。
为了使得存储控制器的内核能够支持PCIe热插拔,本申请实施例中在选定内核的内核版本时,需要选择能够支持PCIe热插拔的内核版本,进而在存储控制器上运行该内核版本,从而避免因热插拔发生导致存储控制器出现异常。其中,根据测试linux 3.10-957版本以上均支持PCIe热插拔。另外,还可以使用microchip公司的chiplink软件配置PCIePCIeswitch,根据硬件设计定义PCIe热插拔用到的信号定义,而定义的信号主要包含PERST信号和Presence信号;PERST用于控制PCIe设备的复位,Presence用于检测线缆插入;还可以按照下列语句依据PCIe spec配置Slot Capability:
Hot-plug Capable-Must be 1b to enable hot plug handling;
Hot-plug Surprise-Must be 0b to make use of DPC。
本发明实施例提供的一种热插拔处理方法,发生热插入事件或者热拔出事件之前,还可以包括:
在内核中注册PCIe switch对应的PCIe驱动及硬盘的PCIe驱动,为PCIe驱动设置相应的值为空的device号,并在确定出所使用的PCIe switch及硬盘后在对应的device号中填入相应的值。
为了实现PCIe switch及硬盘的有效使用,本申请中还需要注册相应的PCIe驱动;具体来说,注册硬盘的PCIe驱动,在其pci_device_id[]表中配置相关的device号,还可以将该device号保留为空,进而通过启动脚本修改new_id的方式支持不同厂家的硬盘,也即在确定出需要使用的硬盘后再填入相应的device号的值,优选具体实施为,在存储系统启动时,加载完硬盘的PCIe驱动后,往/sys/bus/pci/driver/*/new_id写入支持盘的Vendorid、device id等;在内核中注册PCIe switch的PCIe驱动,在其pci_device_id[]表中配置相关的device号,如对于microsemi pm8546,此处填充0x8546,当然也可以与配置硬盘的device号的原理一致,也即先保留其为空,再根据使用的PCIe switch填写相应的device号的值,均在本发明的保护范围之内;由此,能够在不同厂家生产不同设备上具有通用性。
另外,对于PCIe switch,在其pci_probe()函数中使用netlink组件中的netlink_broadcast()发送HOTADD广播消息至上层应用(如用户空间驱动)实现热插入消息的广播,在其pci_remove()函数中使用netlink组件中的netlink_broadcast()发送HOTREMOVE广播消息至上层应用实现热拔出消息的广播;对于硬盘,在其pci_probe()函数中使用netlink组件中的netlink_broadcast()发送HOTADD广播消息至上层应用实现热插入消息的广播,在其pci_remove()函数中使用netlink组件中的netlink_broadcast()发送HOTREMOVE广播消息至上层应用实现热拔出消息的广播;本申请中使用netlink_broadcast()可以处理多个Jbof扩展的场景。
本发明实施例提供的一种热插拔处理方法,发生热插入事件或者热拔出事件之前,还可以包括:
确定所有的PCIe switch包含于同一组播组,任意PCIe switch的下行口挂载的全部硬盘包含于同一组播组,以供通过广播的方式实现相应组播组内PCIe switch或者硬盘的信息发送。
本申请中可以创建组播组,具体来说,同一存储控制器下的全部PCIe switch可以属于同一组播组,同一PCIe switch下挂载的硬盘可以属于同一组播组,从而在针对任意设备(可以为一个,也可以为多个)实现信息发送时,可以将该信息在该任意设备所属的组播组内进行广播,而该任意设备接收到信息后实现相应的处理即可,从而便于同时实现信息至多个设备的发送,提高了信息发送及处理的效率。
本发明实施例提供的一种热插拔处理方法,发生热插入事件或者热拔出事件之前,还包括:
初始化netlink组件,并在上层应用对应控件初始化一对netlink组件的netlinksocket;其中,一对netlink socket分别实现PCIe switch的热插拔事件的接收及硬盘的热插拔事件的接收。
其中,存储控制器可以利用内核初始化netlink组件,而netlink socket(netlink套接字)则是基于netlink组件生成的,其中,netlink socket是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC),也是网络应用程序与内核通信的最常用的接口;具体来说,可以在上层应用(如用户空间)初始化一对Netlink socket,一个用于接收PCIeswitch内核PCIe热插拔事件,另一个用于接收硬盘内核PCIe热插拔事件;且能够支持多JBOF场景,可为每个JBOF初始化一对netlink socket并加入相应组播组。
本发明实施例提供的一种热插拔处理方法,发生热插入事件或者热拔出事件之后,还可以包括:
如果发生热插入事件或者热拔出事件的数量为多个,则利用多个线程以一一对应的方式实现对该多个热插入事件或者热拔出事件的并行处理。
本申请在接收到PCIe的热插入事件后,可以根据BDF情况为每个JBOF分工处理,也即获取能够实现热插拔事件处理的多个线程,进而利用这多个线程以一一对应的关系实现对应多个热插拔事件的并行处理,从而提高热插拔处理的效率。
本申请实施例中实现PCIe的热插拔可以涉及以下部分:一是BIOS的资源分配,确保硬盘和PCIe switch能分配到足够的内存地址空间和bus号等;二是内核对于PCIe的热插拔事件的支持,否则内核在发生热插拔事件时可能会发生异常;三是PCIe switch上下行口的配置,用于支持热插拔事件;四是应用程序相关处理,接受热插拔事件,做相关设备的增加、删除以及设备暴力拔出后对于其未释放资源的访问进行异常处理等,主要包含PCIeswitch和硬盘的PCIe驱动等。具体来说,可以包括以下内容:
一BIOS依据最大配置分配BDF和BAR空间,保证PCIe switch下所有的NVMe SSD盘有足够内存空间和BDF;
二选定内核版本,根据测试linux 3.10-957版本以上均支持PCIe热插拔;
使用microchip公司的chiplink软件配置PCIe PCIe switch,根据硬件设计定义PCIe热插拔用到的信号定义,主要包含PERST信号和Presence信号,PERST用于控制PCIe设备的复位,Presence用于检测线缆插入;按照下列语句依据PCIe spec配置SlotCapability:
Hot-plug Capable-Must be 1b to enable hot plug handling;
Hot-plug Surprise-Must be 0b to make use of DPC;
三内核初始化netlink组件,创建组播组,注册PCIe switch PCIe驱动,在其pci_device_id[]表中配置相关device号,如对于microsemi pm8546此处填充0x8546。在其pci_probe()函数中使用netlink组件中的netlink_broadcast()发送HOTADD广播消息至用户空间驱动,在其pci_remove()函数中使用netlink组件中的netlink_broadcast()发送HOTREMOVE广播消息至用户空间驱动,使用netlink_broadcast()可以处理多个Jbof扩展的场景;
四注册NVMe SSD PCIe驱动,在其pci_device_id[]表中保留为空,通过启动脚本修改new_id的方式支持不同厂家NVMe SSD,优选具体实施方式为在系统启动时,加载完NVMe SSD PCIe驱动后,往/sys/bus/pci/driver/*/new_id写入支持盘的Vendor id,device id等。在其pci_probe()函数中使用netlink组件中的netlink_broadcast()发送HOTADD广播消息至用户空间驱动;在其pci_remove()函数中使用netlink组件中的netlink_broadcast()发送HOTREMOVE广播消息至用户空间驱动,使用netlink_broadcast()可以处理多个Jbof扩展的场景;
五处理SIGBUS信号,当设备拔出后,上层应用还在读写设备后导致SIGBUS信号,需修改该信号的处理方式为忽略,上层io超时后会有相关处理;
六用户空间初始化一对netlink socket,一个用于接收PCIe switch内核PCIe热插拔事件,一个用于接收NVMe SSD drive内核PCIe热插拔事件;支持多JBOF场景,可为每个JBOF初始化一对netlink socket并加入相应组播组;
七接收到PCIe热插入事件后,根据BDF情况为每个JBOF分工处理。对于PCIeswitch可分别扫描其下行口是否有NVMe SSD drive,对于NVMe SSD drive可直接发起硬盘的初始化流程,为io做准备;
八接收到PCIe热拔出事件后,根据BDF情况为每个JBOF分工处理。对于PCIeswitch可分别将其下行口挂载设备注销,并释放相关资源,对于NVMe SSD drive可直接发起盘的注销流程,回收相关资源。
可见,本申请提出基于PCIe链路的JBOF热插拔处理方法,达到在JOBF线缆插拔和硬盘发生插拔时,处理JBOF和硬盘的热插拔事件,以增加系统可服务性,防止系统异常、业务中断等情况的发生。
本发明实施例还提供了一种热插拔处理装置,如图3所示,可以包括:
热插入模块11,用于:当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果插入设备为PCIe switch,则扫描插入设备的下行口,在插入设备的下行口挂载硬盘时,初始化插入设备的下行口挂载的硬盘,如果插入设备为硬盘,则初始化插入设备;
热拔出模块12,用于:当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果拔出设备为PCIe switch,则扫描拔出设备的下行口,在拔出设备的下行口挂载硬盘时,注销拔出设备的下行口挂载的硬盘,并回收相应资源,如果拔出设备为硬盘,则注销拔出设备,并回收相应资源。
本发明实施例提供的一种热插拔处理装置,还可以包括:
忽略模块,用于:确定发生热拔出事件的设备为拔出设备之后,如果接收到总线错误信号则忽略;其中,总线错误信号为上层应用读写拔出设备的下行口挂载的硬盘或者拔出设备时生成的。
本发明实施例提供的一种热插拔处理装置,还可以包括:
分配模块,用于:发生热插入事件或者热拔出事件之前,分配允许分配的空间范围内最大值的内存空间、地址空间及io空间,以供相应的硬盘使用。
本发明实施例提供的一种热插拔处理装置,还可以包括:
版本控制模块,用于:发生热插入事件或者热拔出事件之前,选定支持PCIe的热插拔事件的内核版本,控制与PCIe switch连接的存储控制器使用该支持PCIe的热插拔事件的内核版本。
本发明实施例提供的一种热插拔处理装置,还可以包括:
驱动设置模块,用于:发生热插入事件或者热拔出事件之前,在内核中注册PCIeswitch对应的PCIe驱动及硬盘的PCIe驱动,为PCIe驱动设置相应的值为空的device号,并在确定出所使用的PCIe switch及硬盘后在对应的device号中填入相应的值。
本发明实施例提供的一种热插拔处理装置,还可以包括:
确定模块,用于:发生热插入事件或者热拔出事件之前,确定所有的PCIe switch包含于同一组播组,任意PCIe switch的下行口挂载的全部硬盘包含于同一组播组,以供通过广播的方式实现相应组播组内PCIe switch或者硬盘的信息发送。
本发明实施例提供的一种热插拔处理装置,还可以包括:
通信设置模块,用于:发生热插入事件或者热拔出事件之前,初始化netlink组件,并在上层应用对应控件初始化一对netlink组件的netlink socket;其中,一对netlinksocket分别实现PCIe switch的热插拔事件的接收及硬盘的热插拔事件的接收。
本发明实施例提供的一种热插拔处理装置,还可以包括:
并行模块,用于:发生热插入事件或者热拔出事件之后,如果发生热插入事件或者热拔出事件的数量为多个,则指示热插入模块和/或热拔出模块利用多个线程以一一对应的方式实现对该多个热插入事件或者热拔出事件的并行处理。
本发明实施例还提供了一种热插拔处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上任一项热插拔处理方法的步骤。
需要说明的是,本发明实施例提供的一种热插拔处理装置及设备中相关部分的说明请参见本发明实施例提供的一种热插拔处理方法中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种热插拔处理方法,其特征在于,包括:
当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果所述插入设备为PCIe switch,则扫描所述插入设备的下行口,在所述插入设备的下行口挂载硬盘时,初始化所述插入设备的下行口挂载的硬盘,如果所述插入设备为硬盘,则初始化所述插入设备;
当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果所述拔出设备为PCIe switch,则扫描所述拔出设备的下行口,在所述拔出设备的下行口挂载硬盘时,注销所述拔出设备的下行口挂载的硬盘,并回收相应资源,如果所述拔出设备为硬盘,则注销所述拔出设备,并回收相应资源。
2.根据权利要求1所述的方法,其特征在于,确定发生热拔出事件的设备为拔出设备之后,还包括:
如果接收到总线错误信号则忽略;其中,所述总线错误信号为上层应用读写所述拔出设备的下行口挂载的硬盘或者所述拔出设备时生成的。
3.根据权利要求2所述的方法,其特征在于,发生热插入事件或者热拔出事件之前,还包括:
分配允许分配的空间范围内最大值的内存空间、地址空间及io空间,以供相应的硬盘使用。
4.根据权利要求3所述的方法,其特征在于,发生热插入事件或者热拔出事件之前,还包括:
选定支持PCIe的热插拔事件的内核版本,控制与所述PCIe switch连接的存储控制器使用该支持PCIe的热插拔事件的内核版本。
5.根据权利要求4所述的方法,其特征在于,发生热插入事件或者热拔出事件之前,还包括:
在所述内核中注册所述PCIe switch对应的PCIe驱动及所述硬盘的PCIe驱动,为所述PCIe驱动设置相应的值为空的device号,并在确定出所使用的PCIe switch及硬盘后在对应的device号中填入相应的值。
6.根据权利要求5所述的方法,其特征在于,发生热插入事件或者热拔出事件之前,还包括:
确定所有的所述PCIe switch包含于同一组播组,任意所述PCIe switch的下行口挂载的全部硬盘包含于同一组播组,以供通过广播的方式实现相应组播组内PCIe switch或者硬盘的信息发送。
7.根据权利要求6所述的方法,其特征在于,发生热插入事件或者热拔出事件之前,还包括:
初始化netlink组件,并在所述上层应用对应控件初始化一对netlink组件的netlinksocket;其中,一对所述netlink socket分别实现所述PCIe switch的热插拔事件的接收及所述硬盘的热插拔事件的接收。
8.根据权利要求7所述的方法,其特征在于,发生热插入事件或者热拔出事件之后,还包括:
如果发生热插入事件或者热拔出事件的数量为多个,则利用多个线程以一一对应的方式实现对该多个热插入事件或者热拔出事件的并行处理。
9.一种热插拔处理装置,其特征在于,包括:
热插入模块,用于:当发生PCIe的热插入事件时,确定发生热插入事件的设备为插入设备;如果所述插入设备为PCIe switch,则扫描所述插入设备的下行口,在所述插入设备的下行口挂载硬盘时,初始化所述插入设备的下行口挂载的硬盘,如果所述插入设备为硬盘,则初始化所述插入设备;
热拔出模块,用于:当发生PCIe的热拔出事件时,确定发生热拔出事件的设备为拔出设备;如果所述拔出设备为PCIe switch,则扫描所述拔出设备的下行口,在所述拔出设备的下行口挂载硬盘时,注销所述拔出设备的下行口挂载的硬盘,并回收相应资源,如果所述拔出设备为硬盘,则注销所述拔出设备,并回收相应资源。
10.一种热插拔处理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述热插拔处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011363523.4A CN112445738A (zh) | 2020-11-27 | 2020-11-27 | 一种热插拔处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011363523.4A CN112445738A (zh) | 2020-11-27 | 2020-11-27 | 一种热插拔处理方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445738A true CN112445738A (zh) | 2021-03-05 |
Family
ID=74738267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011363523.4A Pending CN112445738A (zh) | 2020-11-27 | 2020-11-27 | 一种热插拔处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445738A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023155363A1 (zh) * | 2022-02-17 | 2023-08-24 | 浪潮(山东)计算机科技有限公司 | 服务器动态热备份的方法、装置、设备及存储介质 |
CN117591458A (zh) * | 2024-01-18 | 2024-02-23 | 四川惟芯科技有限公司 | 一种固态硬盘热插拔管理系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117259A (zh) * | 2009-12-31 | 2011-07-06 | 成都市华为赛门铁克科技有限公司 | 地址空间资源分配处理方法及装置 |
CN106126460A (zh) * | 2016-06-16 | 2016-11-16 | 迈普通信技术股份有限公司 | 热插拔设备预留资源分配方法、装置和系统 |
-
2020
- 2020-11-27 CN CN202011363523.4A patent/CN112445738A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117259A (zh) * | 2009-12-31 | 2011-07-06 | 成都市华为赛门铁克科技有限公司 | 地址空间资源分配处理方法及装置 |
CN106126460A (zh) * | 2016-06-16 | 2016-11-16 | 迈普通信技术股份有限公司 | 热插拔设备预留资源分配方法、装置和系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023155363A1 (zh) * | 2022-02-17 | 2023-08-24 | 浪潮(山东)计算机科技有限公司 | 服务器动态热备份的方法、装置、设备及存储介质 |
CN117591458A (zh) * | 2024-01-18 | 2024-02-23 | 四川惟芯科技有限公司 | 一种固态硬盘热插拔管理系统及方法 |
CN117591458B (zh) * | 2024-01-18 | 2024-04-09 | 四川惟芯科技有限公司 | 一种固态硬盘热插拔管理系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107423169B (zh) | 用于测试高速外围设备互连设备的方法和系统 | |
CN112445738A (zh) | 一种热插拔处理方法、装置及设备 | |
CN103078747B (zh) | PCIe交换机及其工作方法 | |
US20160224493A1 (en) | Universal serial bus (usb) kvm switch using virtual usb for switching among multiple hosts | |
JPH11328092A (ja) | コンピュ―タの一次及び二次装置の自動構成方法 | |
WO2021098485A1 (zh) | PCIe设备的上下电控制方法以及系统 | |
CN213365380U (zh) | 一种服务器主板及服务器 | |
CN105354162A (zh) | 基于Linux实现PCIE设备热插拔的方法及装置 | |
US10042800B2 (en) | Active USB device and switching method for operating mode thereof | |
CN112463689A (zh) | 一种ocp卡热插拔装置、方法及计算机可读存储介质 | |
US20070255869A1 (en) | Device evaluation using automatic connection path reconfiguration | |
CN105426265B (zh) | 具有虚拟装置的系统和装置以及控制虚拟装置的方法 | |
US6883055B2 (en) | Hot swap method | |
EP1372069A2 (en) | Method system and software for configuring a graphics processing communication mode | |
US20100023669A1 (en) | Host controller disposed in multi-function card reader | |
US20200203898A1 (en) | System and Method for Remote Management of Network Interface Peripherals | |
CN110399168B (zh) | 多数据盘存储服务器的系统启动方法、装置及设备 | |
CN107506323B (zh) | 一种热插拔处理方法及装置 | |
CN116737636A (zh) | Pcie设备热拔插控制方法及相关装置 | |
US8527667B2 (en) | Apparatuses and methods for transferring data | |
CN110413554B (zh) | 热插拔系统及热插拔方法 | |
CN111124985A (zh) | 一种移动终端只读控制方法及装置 | |
US20170293580A1 (en) | Server system and data access method using the same | |
CN114003528A (zh) | Ocp转接卡、转接系统及转接方法 | |
EP2255291A1 (en) | Systems and methods of communicatively coupling a host computing device and a peripheral device |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210305 |