WO2018119662A1 - 内核更新方法和装置、计算机设备 - Google Patents

内核更新方法和装置、计算机设备 Download PDF

Info

Publication number
WO2018119662A1
WO2018119662A1 PCT/CN2016/112370 CN2016112370W WO2018119662A1 WO 2018119662 A1 WO2018119662 A1 WO 2018119662A1 CN 2016112370 W CN2016112370 W CN 2016112370W WO 2018119662 A1 WO2018119662 A1 WO 2018119662A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
interface
logic
kernel
driving
Prior art date
Application number
PCT/CN2016/112370
Other languages
English (en)
French (fr)
Inventor
彭瑞林
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to CN201680003769.6A priority Critical patent/CN107003880B/zh
Priority to EP16923129.7A priority patent/EP3385836B1/en
Priority to PCT/CN2016/112370 priority patent/WO2018119662A1/zh
Priority to US16/004,044 priority patent/US10635511B2/en
Publication of WO2018119662A1 publication Critical patent/WO2018119662A1/zh

Links

Images

Classifications

    • 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/4406Loading of operating system
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Definitions

  • the computer device When updating the loadable kernel module, the computer device performs the following steps in the kernel update method: first, the computer device invalidates the first interface mapping table, and the invalid first interface mapping table causes the The interface module stops sending a new service request to the first driving logic according to the first interface mapping table, where the new service request refers to the interface module after the first interface mapping table is invalidated Receiving a service request of the service application; then the computer device replaces the first drive logic module in the loadable kernel module with a second drive logic module, and the second drive logic module is an updated drive logic module
  • the second driving logic module includes second driving logic capable of providing a driving service for the service application; finally, the computer device records each interface in the interface module and the interface corresponding to the interface in a second interface mapping table Driving logic in the second drive logic module.
  • the interface module may send the new service request to the second drive logic of the second drive logic module according to the second interface mapping table.
  • the drive logic module executes drive logic in the drive logic module for responding to network I/O requests in the drive logic module, the drive logic for transmitting data carried by the network I/O request to the network.
  • the drive logic module executes drive logic for the file system driver in the drive logic module to respond to the write request, the drive logic for writing data carried by the write request to the file system.
  • the computer device 100 (specifically, the interface module) sets an invalid identifier for the driving logic (specifically, the interface of the driving logic) in the first interface mapping table, where the invalid identifier indicates that the interface module is configured according to the
  • the driving logic (specifically, the interface of the driving logic) found by the first interface mapping table is invalid; for the interface module, the invalid driving logic is not used according to the first interface mapping table (specifically, the driving logic may be Interface) forwards service requests.
  • the interface module forwards the received service request of the service application to the first driving logic corresponding to the interface that receives the service request according to the first interface mapping table, where the first driving logic module pair
  • the service request performs the first driving logic, where the first driving logic refers to driving logic that provides a driving service for the service application in the first driving logic module;

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

一种内核更新方法和装置(700)、计算机设备(100),其中该计算机设备(100)执行该内核更新方法来更新内核中的可加载内核模块;首先将第一接口映射表置为无效(S411),无效的第一接口映射表使得接口模块停止将业务应用的业务请求发送至第一驱动逻辑模块的驱动逻辑,从而第一驱动逻辑模块暂停为业务应用提供驱动服务;然后替换该可加载内核模块中的该第一驱动逻辑模块为第二驱动逻辑模块(S412),并在第二接口映射表中记录该接口模块中的每个接口以及该接口对应的该第二驱动逻辑模块中的驱动逻辑(S413)。更新该可加载内核模块之后,第二驱动逻辑模块对该接口模块根据该第二接口映射表转发的该新的业务请求执行驱动逻辑,从而恢复为业务应用提供驱动服务。

Description

内核更新方法和装置、计算机设备 技术领域
本发明实施例涉及计算机领域,尤其涉及内核更新方法和装置、计算机设备。
背景技术
操作系统(英文:operating system,OS)的内核(英文:kernel)分为基础内核(英文:base kernel)和可加载内核模块(英文:loadable kernel module,LKM)。
可加载内核模块提供至少一个驱动。在需要使用该可加载内核模块的驱动时,在内存中暂时加载实现该可加载内核模块的文件,运行该文件来实现该驱动,运行该文件同时也实现了该可加载内核模块包括的其它驱动。
由于实现该可加载内核模块中所有驱动的计算机指令和数据是存储在同一文件中的,现有技术更新可加载内核模块的实现方式为:将旧的可加载内核模块整体卸载,再在内存中加载新的可加载内核模块的文件。在更新可加载内核模块时,即使该可加载内核模块中的某个驱动正在为业务应用提供驱动服务,仍断开该可加载内核模块与业务应用的通信连接,使得该业务应用不能继续向该可加载内核模块发送该驱动服务的业务请求,导致该驱动服务终止。
发明内容
有鉴于此,本申请提供了一种内核更新方法和装置、计算机设备,避免在更新可加载内核模块时终止为业务应用提供的驱动服务。
第一方面,本申请提供一种内核更新方法,该内核更新方法用于更新内核中的可加载内核模块。所述可加载内核模块包括接口模块和第一驱动逻辑模块,所述接口模块包括至少一个驱动中每个驱动的至少一个接口,所述第一 驱动逻辑模块包括所述至少一个驱动中每个驱动的至少一个驱动逻辑。
本申请在第一接口映射表记录所述接口模块中的每个接口与所述接口对应的驱动逻辑。这样,所述接口模块可以根据该第一接口映射表将接收的业务应用的业务请求转发至接收所述业务请求的接口对应的第一驱动逻辑,所述第一驱动逻辑模块对所述业务请求执行所述第一驱动逻辑,所述第一驱动逻辑是指所述第一驱动逻辑模块中为所述业务应用提供驱动服务的驱动逻辑。
当更新所述可加载内核模块时,计算机设备执行所述内核更新方法中的以下步骤:首先计算机设备将所述第一接口映射表置为无效,无效的所述第一接口映射表使得所述接口模块停止根据所述第一接口映射表将新的业务请求发送至所述第一驱动逻辑,所述新的业务请求是指所述接口模块在所述第一接口映射表被置为无效后接收的所述业务应用的业务请求;然后计算机设备将所述可加载内核模块中的所述第一驱动逻辑模块替换为第二驱动逻辑模块,所述第二驱动逻辑模块为更新的驱动逻辑模块,所述第二驱动逻辑模块包括能够为所述业务应用提供驱动服务的第二驱动逻辑;最后计算机设备在第二接口映射表中记录所述接口模块中的每个接口以及所述接口对应的所述第二驱动逻辑模块中的驱动逻辑。更新所述可加载内核模块之后,所述接口模块可以根据所述第二接口映射表将所述新的业务请求发送至所述第二驱动逻辑模块的第二驱动逻辑。
本发明实施例提供的内核更新方法,在替换驱动逻辑模块的期间,业务应用与接口模块的通信连接不中断,待完成替换驱动逻辑模块之后,业务应用可以基于该通信连接继续向接口模块发送业务请求,驱动逻辑模块响应该业务请求,从而恢复对业务应用提供的驱动服务。可见,相对于现有技术在更新可加载内核模块时需要终止为业务应用提供的驱动服务,本发明实施例在更新可加载内核模块时,仅暂停为业务应用提供驱动服务,由于该内核更新方法更新可加载内核模块所需的时间短,可以节省恢复该驱动服务的时间成本,提高恢复该驱动服务的效率;综合上述,该内核更新方法能够在用户未感知的情况下,实现该可加载内核模块的更新。
一种可能设计,所述可加载内核模块还包括数据模块;所述数据模块记 录所述第一驱动逻辑在被替换为所述第二驱动模块之前为所述业务应用提供驱动服务的状态。当计算机设备将所述可加载内核模块中的所述第一驱动逻辑模块替换为第二驱动逻辑模块后,所述第二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑。
所述第二驱动模块基于第一驱动模块在被替换前的状态,对所述新的业务请求执行所述第二驱动逻辑来继续为所述业务应用提供驱动服务,保证了提供驱动服务的连续性,同时实现在用户未感知的情况下完成该可加载内核模块的更新。
一种可能设计,在内核更新方法中,如果所述数据模块记录的所述状态为第一版本的数据,则计算机设备将所述数据模块中的所述第一版本的数据更新为所述第二驱动逻辑模块支持的第二版本的数据;第一版本与第二版本可以是指不同格式,或者可以是指排列数据的不同排列方式。
更新所述状态的版本,使得所述第二驱动逻辑模块能够识别所述数据模块记录的所述状态,并基于所述状态对所述新的业务请求执行所述第二驱动逻辑。
一种可能设计,在内核更新方法中,如果所述数据模块记录的所述状态为第一格式的数据,而所述第二驱动逻辑模块支持第二格式,则计算机设备将所述第一格式的数据更新为所述第二格式的数据;这样,所述第二驱动逻辑模块可以能够识别所述数据模块记录的所述状态,并基于所述状态对所述新的业务请求执行所述第二驱动逻辑。
一种可能设计,在内核更新方法中,计算机设备接收指示更新可加载内核模块的内核更新指令,在替换所述第一驱动逻辑模块之前确定所述第一驱动逻辑模块是否成功执行旧的业务请求,所述旧的业务请求为在接收到所述内核更新指令时被所述第一驱动逻辑模块执行所述第一驱动逻辑的任一业务请求。待所述第一驱动逻辑模块成功执行旧的业务请求之后,计算机设备再将所述第一接口映射表置为无效;这样可以保证为业务应用提供驱动服务的连续性。
一种可能设计,算机设备将所述第一接口映射表置为无效的一种具体实现是:计算机设备为该第一接口映射表设置无效标识,该无效标识指示该接 口模块该第一接口映射表是无效的;对该接口模块而言,不会使用无效的该第一接口映射表进行业务请求的转发。由于设置无效标识所需的时间成本和损耗资源的成本是相对较小的,因此通过设置无效标识将所述第一接口映射表置为无效是高效的。
一种可能设计,计算机设备将所述第一接口映射表置为无效的一种具体实现是:删除所述第一接口映射表中记录的所述第一驱动逻辑模块包括的所有驱动逻辑。这样,计算机设备可以将删除所述第一驱动逻辑模块包括的所有驱动逻辑的所述第一接口映射表作为第二接口映射表,并在该第二接口映射表中记录与该接口模块中的接口对应的该第二驱动逻辑模块的驱动逻辑,相对于使用新表生成该第二接口映射表,减少了在生成该第二接口映射表时需要记录的数据,提高了记录效率。
一种可能设计,计算机设备将所述第一驱动逻辑模块替换为所述第二驱动逻辑模块一种具体实现是:卸载所述可加载内核模块中的所述第一驱动逻辑模块;在所述可加载内核模块中加载所述第二驱动逻辑模块。卸载该第一驱动逻辑模块,可以完整释放该第一驱动逻辑模块所占用的资源(例如内存资源),然后再分配合适资源来加载该第二驱动逻辑模块,可以实现资源的有效利用。
第二方面,本申请提供一种内核更新装置,包括执行第一方面或第一方面的任意可能设计提供的内核更新方法的功能模块;第二方面对功能模块的划分不做限定,可以按照内核更新方法的流程步骤对应划分功能模块,也可以按照具体实现需要划分功能模块。
第三方面,本申请提供一种计算机设备,该计算机设备包括处理器和存储器。该存储器存储计算机指令;该处理器执行该存储器存储的计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可能设计提供的内核更新方法,或者使得该计算机设备实现第二方面中的内核更新装置。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机指令,当计算机设备的处理器执行该计算机指令时,该计算机设备执行上述第一方面或者第一方面的各种可能设计提供的内核更新方法,或者该计算机设备部署第二方面中的内核更新装置。
第五方面,提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令使得计算机设备实施上述第一方面或者第一方面的各种可能设计提供的内核更新方法,或者该计算机设备部署第二方面中的内核更新装置。
附图说明
图1为本发明实施例提供的计算机设备100的一种硬件结构示意图;
图2为本发明实施例提供的内核的一种功能划分示意图;
图3为本发明实施例提供的响应业务请求来提供驱动服务的一种流程示意图;
图4为本发明实施例提供的内核更新方法的一种流程示意图;
图5为更新“SCSI Driver”的一种状态变化示意图;
图6为更新“SCSI Driver”的一种流程示意图;
图7为本发明实施例提供的内核更新装置700的一种逻辑结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例提供的技术方案进行描述。
计算机设备实施例
参见图1,计算机设备100包括处理器101、内存102、通信接口103、总线104和存储器105。
存储器105存储计算机指令和数据;例如,存储器105存储操作系统(英文:operating system,OS)相关的计算机指令和数据。存储器105可以是以下的任一种或任一种组合:只读存储器(英文:read-only memory,ROM)、非易失性存储器(英文:non-volatile memory,NVM)、固态硬盘(英文:solid state drives,SSD)、机械硬盘、磁盘、磁盘阵列等存储介质。
处理器101,可以是以下的任一种:中央处理器(英文:central  processing unit,CPU)、ARM处理器、现场可编程门阵列(英文:field-programmable gate array,FPGA)、专用处理器等具有计算处理能力的器件。
内存(英文:memory)102,用于缓存处理器101运行的计算机指令和处理器101处理的数据;例如,内存102用于缓存处理器101从存储器105加载的计算机指令和数据;再例如,内存102用于缓存处理器101的临时处理结果(属于计算机指令或者数据两种中的一种)。
内存102可以包括易失性存储器和/或NVM。例如,内存102可以是以下的任一种或任一种组合:随机存取存储器(英文:random access memory,RAM)、同步动态随机存储器(英文:synchronous dynamic random access memory,SDRAM)、双倍速率同步动态随机存储器(英文:double data rate synchronous dynamic random access memory,DDR SDRAM)和NVM。
通信接口103用于计算机设备100与其他设备(例如其它计算机设备或者移动终端)进行数据交互。通信接口103可以是以下的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
总线104包括内存总线,还可以包括以下的任一种或任一种组合:工业标准体系结构(英文:Industry Standard Architecture,ISA)总线、外设组件互连标准(英文:Peripheral Component Interconnect,PCI)总线、扩展工业标准结构(英文:Extended Industry Standard Architecture,EISA)总线等用于数据传输的器件。图1用一条粗线表示总线104。
处理器101、内存102、通信接口103和存储器105均通过总线104连接。这样,处理器101可以通过总线104访问内存102和存储器105,以及通过总线104利用通信接口103与其他设备(例如其它计算机设备或者移动终端)进行数据交互。
在本发明实施例中,处理器101执行存储器105存储的计算机指令,使得计算机设备100执行下面方法实施例提供的各方法(例如内核更新方法),或者使得计算机设备100实现装置实施例提供的装置(例如内核更新装置)。
下面介绍下操作系统的内核
参见图2,操作系统(OS)的内核(英文:kernel)分为基础内核(英文:base kernel)和可加载内核模块。
基础内核是内核的核心部分。因此,该基础内核的文件是必须加载的部分。具体地,在每次启动OS时,加载该基础内核的文件到内存中,通过运行该基础内核的文件实现该基础内核的功能。
可加载内核模块是内核的可选部分,可加载内核模块提供至少一个驱动。应知,该可加载内核模块中所有驱动是同时被加载或被卸载的。现有技术在需要使用该可加载内核模块的驱动时,可以在内存中临时加载实现该可加载内核模块的文件,运行该文件来实现该驱动;后续在不需要使用该驱动时,可以卸载整个该可加载内核模块,包括释放实现该可加载内核模块所占用的资源,例如删除内存中的该文件来释放内存资源。因此,该可加载内核模块用于在该基础内核的基础上提供更多的驱动,实现功能扩展;和/或,该可加载内核模块用于对该基础内核中的驱动进行升级。
可加载内核模块,在不同操作系统中具有不同名称。举例说明,在类Unix系统(英文:Unix-like systems,UN*X或*nix)或者Microsoft Windows中,对于不同版本的操作系统,该可加载内核模块可能被称为不同的名称。例如在Linux操作系统中,该可加载内核模块仍被称为可加载内核模块(英文:loadable kernel module,LKM);例如在FreeBSD中,该可加载内核模块被称为内核可加载模块(英文:kernel loadable module,kld);例如在macOS中,该可加载内核模块被称为内核扩展(英文:kernel extension,kext);例如在AIX操作系统中,该可加载内核模块被称为内核扩展模块(英文:kernel extension module);例如在Windows NT中,该可加载内核模块被称为内核模式驱动(英文:kernel-mode driver);例如在VxWorks操作中,该可加载内核模块被称为可下载内核模块(英文:downloadable kernel module,DKM);另外,在其它的一些操作系统中,该可加载内核模块可以被称为内核可加载模块(英文:kernel Loadable Modules,KLM),或者可以直接被简称为内核模块(英文:kernel Modules,KMOD),应知,此处的KMOD不包含内核中的基础内核。
可加载内核模块的划分
参见图2,本发明实施例提供的可加载内核模块包括接口模块和驱动逻辑模块。因此在部署可加载内核模块时,操作系统需要分别加载用于实现该接口模块的文件和用于实现该驱动逻辑模块的文件。
本发明实施例通过该接口模块和该驱动逻辑模块实现该可加载内核模块提供的驱动。具体地,该可加载内核模块提供的驱动被分为该驱动的接口和该驱动的驱动逻辑,其中,该驱动的接口部署在该接口模块中,该驱动的驱动逻辑部署在该驱动逻辑模块中。驱动逻辑是指为业务应用提供驱动服务的模块。
具体地,可加载内核模块提供至少一个驱动;每个驱动具有至少一个接口和至少一个驱动逻辑,该驱动的接口与该驱动的驱动逻辑一一对应。可加载内核模块提供的每个驱动的接口都部署在接口模块,可加载内核模块提供的每个驱动的驱动逻辑都部署在驱动逻辑模块。
接口模块通过接口接收业务应用的业务请求,以及根据接口映射表将该业务请求转发至驱动逻辑模块中对应的驱动逻辑。
本发明实施例根据驱动的接口与该驱动的驱动逻辑之间的对应关系,在接口映射表中记录接口模块中的每个接口,以及记录与该接口模块中的每个接口对应的驱动逻辑;即在该接口映射表中记录该接口模块中的所有接口与驱动逻辑模块中的所有驱动逻辑的对应关系。这样,该接口模块可以根据接收业务请求的接口在该接口映射表中找出该接口对应的驱动逻辑,并将该业务请求转发至该驱动逻辑。
应知,相对于现有技术,该接口映射表是本发明实施例新增的,新增该接口映射表的目的是为了接口模块将接收的业务请求正确地转发至驱动逻辑。另外,本发明实施例可以通过该接口映射表控制是否将接口模块接收的业务请求向驱动逻辑转发,从而实现是否暂停为业务应用提供驱动服务的控制。
本发明实施例在接口映射表中记录接口模块中的每个接口,以及记录与该接口模块中的每个接口对应的驱动逻辑包括记录该接口模块的接口与该驱动逻辑模块中的驱动逻辑的标识之间的对应关系。该一个驱动逻辑的标识用 于唯一确定该驱动逻辑模块包括的一个驱动逻辑。例如,驱动逻辑的标识可以是驱动逻辑的接口。这样,在根据该接口映射表确定驱动逻辑的接口后,可以向该驱动逻辑的接口转发业务请求,从而将该业务请求发送至该驱动逻辑。
可选地,该接口映射表记录的该接口模块中的接口与该驱动逻辑模块中的驱动逻辑的接口之间的映射关系是一一映射关系。
以表1为例的接口映射表中,接口模块中的4个接口(“socket”、“send”、“recv”、“close”)分别映射的4个驱动逻辑的接口依次为“main_socket”、“main_send”、“main_recv”、“main_close”;该4个驱动逻辑依次具有的功能分别为“通过套接字建立业务应用与驱动的通信连接”、“驱动基于该通信连接向业务应用发送数据”、“驱动基于该通信连接接收业务应用的数据”、“关闭通过套接字建立的该通信连接”。
接口模块中的接口 驱动逻辑的接口
socket main_socket
send main_send
recv main_recv
close main_close
表1
本发明实施例中,接口映射表可以部署在接口模块上,或者独立部署,或者部署在其它模块上;但接口模块均可以访问到该接口映射表。
驱动逻辑模块执行驱动逻辑来提供驱动服务。每个驱动具有至少一个驱动逻辑,不同驱动逻辑实现不同功能,因此不同驱动逻辑提供不同驱动服务。
该驱动逻辑可以用程序(由计算机指令和数据构成)实现,该程序记录在文件(用于实现驱动逻辑模块的文件)中;驱动逻辑模块执行该驱动逻辑,包括将该文件加载到内存中、以及执行该文件中的程序来实现该驱动逻辑对应的功能,应知,如果该文件已在内存中,则执行该驱动逻辑可以省去加载该文件到内存的步骤。
每个驱动逻辑具有接口,每个驱动逻辑的接口在接口模块中具有对应的接口,例如表1。应知,当业务应用期望某个驱动逻辑提供驱动服务时,需 要向接口模块中的接口(与该个驱动逻辑的接口对应)发送该驱动逻辑对应的业务请求;这样,该接口模块根据接口映射表才能将从该接口接收的业务请求正确转发至该驱动逻辑的接口,从而驱动逻辑模块才能通过该驱动逻辑的接口接收到该业务请求,以及对该业务请求执行该驱动逻辑。
应知,该可加载内核模块提供的所有驱动是同时被加载或被卸载的。本发明实施例在需要使用该可加载内核模块的驱动时,在内存中加载实现该接口模块的文件和加载实现该驱动逻辑模块的文件,运行加载的文件来实现该驱动;后续在不需要使用驱动逻辑模块中的所有驱动时,卸载该接口模块和该驱动逻辑模块,包括释放该接口模块和该驱动逻辑模块分别占用的资源,例如删除内存中实现该接口模块的文件和实现该驱动逻辑模块的文件来释放内存资源。
本发明实施例更新可加载内核模块的主要工作是更新驱动逻辑模块。举例说明,卸载旧的驱动逻辑模块(可以称为第一驱动逻辑模块),包括删除内存中实现该旧的驱动逻辑模块的文件;在内存中加载新的驱动逻辑模块(可以称为第二驱动逻辑模块)的文件,从而实现驱动逻辑模块的更新。可见,发明实施例在更新驱动逻辑模块的过程中可以不用卸载接口模块,这与现有技术需要替换整个可加载内核模块不同。
可选地,参见图2,该可加载内核模块还可能包括数据模块。
数据模块,用于存储在卸载第一驱动逻辑模块之前该第一驱动逻辑模块为业务应用提供驱动服务的状态。这样,在加载第二驱动逻辑模块之后,该第二驱动逻辑模块可以根据该状态继续为业务应用提供驱动服务。
具体地,业务应用持续向第一驱动逻辑模块发送业务请求;第一驱动逻辑模块对在卸载第一驱动逻辑模块之前的最后一个业务请求执行驱动逻辑之后,在该数据模块存储该第一驱动逻辑模块为所述业务应用提供驱动服务的状态。
如果第一驱动逻辑模块包括的多个驱动的驱动逻辑分别为业务应用提供驱动服务,则需要在该数据模块存储该多个驱动的驱动逻辑中每个驱动逻辑为业务应用提供驱动服务的状态。
通常,不同驱动的驱动逻辑为业务应用提供驱动服务的状态通常不同, 以表2为例。
参见表2,网络驱动的驱动逻辑为业务应用提供驱动服务的状态包括:网络驱动使用的文件句柄(例如套接字句柄)、网络驱动的通信对端(例如远程服务器)的网络之间互连的协议(英文:Internet Protocol,IP)地址和通信对端的端口号。
参见表2,文件系统驱动的驱动逻辑为业务应用提供驱动服务的状态包括:文件系统驱动挂载文件系统的挂载点。
参见表2,硬件驱动的驱动逻辑为业务应用提供驱动服务的状态包括:硬件驱动所驱动的硬件的配置参数、硬件驱动所驱动的硬件的寄存器状态。
参见表2,块存储驱动的驱动逻辑为业务应用提供驱动服务的状态包括块存储驱动使用的虚拟磁盘的编号,还可以包括块存储驱动所驱动的虚拟块设备的容量大小。
Figure PCTCN2016112370-appb-000001
表2
可选地,在卸载第一驱动逻辑模块之前没有第一驱动逻辑模块为业务应用提供驱动服务的状态,则不需要数据模块来存储该状态;因此可加载内核模块可以不包括该数据模块,这样可以节省该数据模块所需的内存资源。
可选地,如果加载第二驱动逻辑模块不需要第一驱动逻辑模块为业务应用提供驱动服务的状态,则可以不需要数据模块来存储该状态;因此可加载内核模块可以不包括该数据模块,这样可以节省该数据模块所需的内存资源。
方法实施例
正常响应业务请求来提供驱动服务的方法流程
基于可加载内核模块包括接口模块和驱动逻辑模块,可加载内核模块响应业务请求来提供驱动服务的响应流程如图3所示。
步骤S311,接口模块接收业务应用发送的业务请求。
步骤S312,接口模块向驱动逻辑模块转发该业务请求。
本发明实施例中,业务应用向可加载内核模块中的驱动发送业务请求,具体是向该驱动在接口模块中的接口发送该业务请求。
应知,每个业务应用可以使用至少一个驱动。当该业务应用期望使用某个驱动时,向该接口模块中该个驱动的接口发送业务请求。
举例,业务应用在期望使用网络驱动时,向网络驱动在接口模块中的接口发送携带有待传输的数据的网络输入/输出(英文:input/output,I/O)请求,该网络I/O请求为一种类型的业务请求;该业务应用在期望向文件系统写数据时,向文件系统驱动在接口模块中的接口发送携带有待写入的数据的写请求,该写请求为一种类型的业务请求。
应知,多个业务应用可以使用同一驱动。期望使用某个驱动的多个业务应用,均可以向该驱动发送至少一个业务请求。
举例,不同业务应用期望通过网络传输数据时,可以分别向该网络驱动在接口模块中的接口发送携带有待传输的数据的网络I/O请求。后续,接口模块将接收的所有该网络I/O请求依次转发至网络驱动在驱动逻辑模块中的驱动逻辑;驱动逻辑模块针对所有该网络I/O请求分别执行一次该驱动逻辑来实现将所有该网络I/O请求携带的数据分别向网络发送。
应知,可能存在一个或多个驱动,该驱动只供单个业务应用使用。当该业务应用期望使用该驱动时,可以向该驱动在接口模块中的接口发送业务请求。
接口模块接收到业务应用的多个业务请求,可以不缓存而直接向该驱动在驱动逻辑模块中的驱动逻辑转发该多个业务请求,也可以先缓存该多个业务请求再向该驱动逻辑转发缓存的该个业务请求。
可选地,接口模块在缓存某个驱动的多个业务请求时,根据接收每个业务请求的时间将该多个业务请求按照时间先后顺序进行排序;后续,接口模 块将排序后的该多个业务请求依次向驱动逻辑模块中该驱动的驱动逻辑转发。
举例,接口模块将访问同一驱动的多个业务请求按照时间先后顺序进行排序后,逐个向驱动逻辑模块中该驱动的驱动逻辑发送该业务请求。具体地,待响应完已向该驱动逻辑发送的最新一个业务请求后,才将在已排序的该多个业务请求中该个业务请求的下一个业务请求向该驱动逻辑发送。
本发明实施例中,接口模块是根据接口映射表向驱动逻辑模块转发业务请求。具体地,接口模块根据接收业务请求的接口,在该接口映射表中查找到与该接口映射的驱动逻辑的接口,向该驱动逻辑的接口转发该业务请求;这样,驱动逻辑模块通过该驱动逻辑的接口接收到该业务请求,以便对该业务请求执行该驱动逻辑。
步骤S313,驱动逻辑模块响应接口模块在步骤S312转发的该业务请求。
接口模块向驱动在该驱动逻辑模块中的驱动逻辑转发该业务请求后,驱动逻辑模块响应该业务请求,包括对该业务请求执行该驱动逻辑来提供驱动服务。
例如,驱动逻辑模块执行网络驱动在驱动逻辑模块中用于响应网络I/O请求的驱动逻辑,该驱动逻辑用于将该网络I/O请求携带的数据向网络发送。
又例如,驱动逻辑模块执行文件系统驱动在驱动逻辑模块中用于响应写请求的驱动逻辑,该驱动逻辑用于将该写请求携带的数据写入文件系统。
可选地,接口模块的动作(包括执行步骤S311和步骤S312)和驱动逻辑模块的动作(包括执行步骤S313),均是计算机设备100中的处理器101执行计算机指令实现。
更新可加载内核模块的方法流程
参见图4,本发明实施例提供一种内核更新方法,该内核更新方法在更新可加载内核模块时主要是更新驱动逻辑模块。为体现驱动逻辑模块在更新前后的区别,在描述内核更新方法时,旧的驱动逻辑模块被称为第一驱动逻辑模块,更新的驱动逻辑模块被称为第二驱动逻辑模块。
该内核更新方法由计算机设备100实现。具体地,计算机设备100中的 处理器101执行计算机指令(可以存储在存储器105和/或内存102中)来实现该内核更新方法中的各个步骤。
该内核更新方法的可选步骤,计算机设备100在接收到内核更新指令时,计算机设备100确定该第一驱动逻辑模块成功执行旧的业务请求后再执行步骤S411,例如计算机设备100的接口模块确定该第一驱动逻辑模块成功执行该旧的业务请求后再执行步骤S411。其中,该内核更新指令指示更新该可加载内核模块。该旧的业务请求为该计算机设备100在接收到该内核更新指令时正在被该第一驱动逻辑模块执行驱动逻辑的任一业务请求。
具体地,业务应用使用驱动(通过系统调用)并向该驱动的接口发送该旧的业务请求时,会在该业务应用的上下文的堆栈中记录该驱动的接口。后续,该第一驱动逻辑模块在对该旧的业务请求执行驱动逻辑的过程中,如果需要向该业务应用反馈数据,则首先向该接口模块发送该数据;该接口模块接收该第一驱动逻辑模块向业务应用反馈的数据,并根据该第一接口映射表确定该驱动逻辑在接口模块中对应的接口,再根据该业务应用的上下文的堆栈向调用该接口的业务应用转发该数据。本发明实施例中,该接口模块在接收到该第一驱动逻辑模块执行最后一个该旧的业务请求反馈的数据时,确定该第一驱动逻辑模块成功执行该旧的业务请求。
等待该第一驱动逻辑模块成功执行该旧的业务请求后再执行步骤S411,可以保证业务应用的该旧的业务请求均能得到响应,保证业务应用的业务的正确性,提高了业务应用的安全性。
该内核更新方法的可选步骤,计算机设备100在接收到内核更新指令时,计算机设备100可以直接执行步骤S411,例如计算机设备100可以指示该接口模块直接执行步骤S411。计算机设备100不用等待该第一驱动逻辑模块成功执行该旧的业务请求而直接执行步骤S411,这样可以提高更新可加载内核模块的效率。
一种应用场景,若不需要关心在该可加载内核模块更新前为该业务应用提供驱动服务的情况,则计算机设备100在接收到内核更新指令时可以指示该接口模块直接执行步骤S411。
下面介绍内核更新方法的主要流程步骤(步骤S411、步骤S412和步骤 S413)。
步骤S411,将第一接口映射表置为无效。
该第一接口映射表为用于向该第一驱动逻辑模块转发业务请求的接口映射表;在该第一接口映射表中记录有接口模块中的每个接口,以及记录该第一驱动逻辑模块中与该接口模块中的每个接口对应的驱动逻辑;即在该第一接口映射表中记录该接口模块中的所有接口与该第一驱动逻辑模块中的所有驱动逻辑之间的对应关系,并且该对应关系和旧的驱动(旧的可加载内核模块提供的驱动)的接口与该旧的驱动的驱动逻辑之间的对应关系是相同的对应关系。
计算机设备100上部署有该接口模块和该第一驱动模块。
计算机设备100执行步骤S411将该第一接口映射表置为无效。可选地,计算机设备100指示该接口模块将该第一接口映射表置为无效,或者,计算机设备100通过该第一驱动逻辑模块指示该接口模块将该第一接口映射表置为无效;从而该接口模块根据计算机设备100的指示将该第一接口映射表置为无效。
计算机设备100将所述第一接口映射表置为无效的实现方式,本发明实施例不做限定,可以采用现有技术提供的实现方式,或者采用如下三种实现方式。
第一种实现方式,计算机设备100(具体可以是该接口模块)为该第一接口映射表设置无效标识,该无效标识指示该接口模块该第一接口映射表是无效的;对该接口模块而言,不会使用无效的该第一接口映射表进行业务请求的转发。
第二种实现方式,计算机设备100(具体可以是该接口模块)为该第一接口映射表中的驱动逻辑(具体可以是驱动逻辑的接口)设置无效标识,该无效标识指示该接口模块根据该第一接口映射表查找到的驱动逻辑(具体可以是驱动逻辑的接口)是无效的;对该接口模块而言,不会根据该第一接口映射表向无效的驱动逻辑(具体可以是驱动逻辑的接口)转发业务请求。
第三种实现方式,计算机设备100(具体可以是该接口模块)删除该第一接口映射表中记录的该第一驱动逻辑模块包括的所有驱动逻辑(具体可以 是驱动逻辑的接口)。这样,该接口模块根据该第一接口映射表查找不到驱动逻辑,具体可以是查找不到该第一驱动逻辑模块包括的所有驱动逻辑的接口。这样,未包含驱动逻辑(具体可以是驱动逻辑的接口)的该第一接口映射表,是无效的。
在计算机设备100将第一接口映射表被置为无效后,接口模块停止根据该第一接口映射表向该第一驱动逻辑模块转发新的业务请求;其中,该新的业务请求是指该接口模块在该第一接口映射表被置为无效后从业务应用接收的任一业务请求。这样,该第一驱动逻辑模块不会接收到该新的业务请求,也不用于响应该新的业务请求,暂停对业务应用提供驱动服务。
可选地,如果计算机设备100为接口模块在内存中分配有存储空间,则接口模块可以在第一接口映射表被置为无效后继续接收业务应用的该新的业务请求,并使用该存储空间缓存该新的业务请求。具体地,接口模块在该第一接口映射表被置为无效后,可以继续基于该可加载内核模块与业务应用的通信连接接收业务应用的该新的业务请求;接口模块将该新的业务请求缓存,但不向第一驱动逻辑模块转发该新的业务请求,暂时中断为该业务应用提供驱动服务;后续再响应新的业务请求,恢复为该业务应用提供驱动服务。
进一步可选地,由于该存储空间是有限的,所以在接口模块缓存该新的业务请求的同时,计算机设备100指示该业务应用停止向该接口模块继续发送该新的业务请求。
可选地,如果计算机设备100未为接口模块在内存中分配存储空间,该接口模块对从业务应用接收的业务请求只能直接向驱动逻辑模块转发,则计算机设备100在步骤S411将第一接口映射表置为无效之前,指示该业务应用停止向该接口模块发送任一该新的业务请求。这样可以避免丢失在执行步骤S411时该接口模块接收的该新的业务请求。
本发明实施例中,计算机设备100指示该业务应用停止向该接口模块发送该新的业务请求的一种实现方式,如果业务应用直接向该接口模块发送新的业务请求,则计算机设备100(具体可以是计算机设备100中部署的接口模块)通知该业务应用停止向该接口模块发送该新的业务请求。
进一步可选地,如果业务应用向该接口模块发送新的业务请求需要其它 模块中转,计算机设备100(具体可以是计算机设备100中部署的接口模块)通知其它模块暂停向该接口模块转发业务应用的新的业务请求。
步骤S412,将第一驱动逻辑模块替换为第二驱动逻辑模块。
该第二驱动逻辑模块包括能够为业务应用提供驱动服务的驱动逻辑,该驱动逻辑为更新的驱动(更新的可加载内核模块提供的驱动)的驱动逻辑。
应知,该第二驱动逻辑模块包括更新的驱动(更新的可加载内核模块提供的驱动)的驱动逻辑,而该第一驱动逻辑模块包括旧的驱动(旧的可加载内核模块提供的驱动)的驱动逻辑。通常,该更新的驱动的驱动逻辑与该旧的驱动的驱动逻辑可以部分或者全部不同,例如可以提供不同功能。
计算机设备100将第一驱动逻辑模块替换为第二驱动逻辑模块的实现方式,本发明实施例不做限定,可以采用现有技术提供的实现方式,或者采用如下两种实现方式。
第一种实现方式,计算机设备100不卸载可加载内核模块中的第一驱动逻辑模块,直接将该第一驱动逻辑模块替换为该第二驱动逻辑模块,例如利用该第一驱动逻辑模块所占用的内存资源加载第二驱动逻辑模块。这样可以保证替换效率,加快使用第二驱动逻辑模块响应新的业务请求的时间,从而减少恢复驱动服务的时间。
第二种实现方式,计算机设备100卸载该可加载内核模块中的该第一驱动逻辑模块,再在该可加载内核模块中加载该第二驱动逻辑模块。卸载该第一驱动逻辑模块,可以释放该第一驱动逻辑模块所占用的资源(例如内存资源),然后再分配资源来加载该第二驱动逻辑模块,可以实现资源的有效利用。相对于第一种实现方式,第二种实现方式可以保证该第二驱动逻辑模块后续运行的稳定,例如不会访问到该第一驱动逻辑模块在内存中残留的数据或指令而导致第二驱动逻辑模块运行异常。
本发明实施例中,为同一个业务应用提供驱动服务的更新的驱动(更新的可加载内核模块提供的驱动)的接口和旧的驱动(旧的可加载内核模块提供的驱动)的接口是相同的接口;因此在步骤S412(将第一驱动逻辑模块替换为第二驱动逻辑模块)的前后,接口模块中记录的接口是不变的。并且,接口模块中的接口对应的第一驱动逻辑模块中的驱动逻辑,与该接口对应的 第二驱动逻辑模块中的驱动逻辑,均为同一业务应用提供驱动服务。
步骤S413,在第二接口映射表中记录所述接口模块中的每个接口,以及所述接口对应的所述第二驱动逻辑模块中的驱动逻辑。
该第二接口映射表为用于向该第二驱动逻辑模块转发业务请求的接口映射表;在该第二接口映射表中记录有接口模块中的每个接口,以及记录有该第二驱动逻辑模块中与该接口模块中的每个接口对应的驱动逻辑;即在该第二接口映射表中记录该接口模块中的所有接口与该第二驱动逻辑模块中的所有驱动逻辑之间的对应关系,并且该对应关系和更新的驱动(更新的可加载内核模块提供的驱动)的接口与该更新的驱动的驱动逻辑之间的对应关系是相同的对应关系。
该第二接口映射表可以是不同于该第一接口映射表的新表。因此,第一接口映射表与第二接口映射表可以同时存在。如果后续再将第二驱动逻辑模块替换为第一驱动逻辑模块,计算机设备100可以将有效的第二接口映射表置为无效,而将无效的第一接口映射表置为有效;从而接口模块可以根据有效的第一接口映射表将业务请求发送至第一驱动逻辑模块。这样,可以实现在驱动逻辑模块更替时,使用更替后的驱动逻辑模块所对应的接口映射表高效地恢复驱动服务。
该第二接口映射表可以是被置为无效后的该第一接口映射表。因为在第一接口映射表和第二接口映射表记录有相同的接口(即接口模块包括的所有接口),计算机设备100在更新第二接口映射表记录的对应关系(更新为该接口模块包括的所有接口与该第二驱动逻辑模块包括的所有驱动逻辑之间的对应关系)时,只需要更新该第二驱动逻辑模块包括的所有驱动逻辑,减少了需要记录的数据,提高了记录效率。
一种实现举例,计算机设备100将删除该第一驱动逻辑模块包括的所有驱动逻辑(具体可以是驱动逻辑的接口)后的该第一接口映射表作为第二接口映射表,再在该第二接口映射表中建立该接口模块包括的所有接口与该第二驱动逻辑模块包括的所有驱动逻辑(具体可以是驱动逻辑的接口)之间的对应关系。
可选地,在第二接口映射表记录该接口模块包括的所有接口与该第二驱 动逻辑模块包括的所有驱动逻辑之间的对应关系之后,将第二接口映射表置为有效,以便接口模块根据有效的第二接口映射表将新的业务请求发送至第二驱动逻辑模块。
在本发明实施例中,如果在替换第一驱动逻辑为第二驱动逻辑之前,计算机设备100指示该业务应用停止了向该接口模块发送新的业务请求,则在步骤S412替换第一驱动逻辑模块为第二驱动逻辑模块之后,或者在该第二接口映射表中记录接口模块包括的所有接口与第二驱动逻辑模块包括的所有驱动逻辑之间的对应关系之后,计算机设备100指示该业务应用恢复向该接口模块发送新的业务请求。
如果接口模块缓存有新的业务请求,先将缓存的该新的业务请求向第二驱动逻辑模块转发,再转发在业务应用恢复向该接口模块发送新的业务请求之后从业务应用接收的新的业务请求。
接口模块根据第二接口映射表向第二驱动逻辑模块转发新的业务请求的一种实现方式,该接口模块根据接收该新的业务请求的接口,在该第二接口映射表查找该接口对应的驱动逻辑的接口,将该新的业务请求向该驱动逻辑的接口发送。从而,该第二驱动逻辑模块对该新的业务请求执行该驱动逻辑,恢复对业务应用提供驱动服务。
可选地,计算机设备100在该数据模块记录有该第一驱动逻辑模块在被替换前为所述业务应用提供驱动服务的状态,即该第一驱动逻辑模块在被替换前响应最后一个该业务请求后所处的状态。在替换该第一驱动逻辑模块为第二驱动逻辑模块之后,该第二驱动逻辑模块基于该状态对该新的业务请求执行驱动逻辑。
应知,如果存在以下两种情况,待计算机设备100更新该状态之后,该第二驱动逻辑模块才可以基于该状态响应该新的业务请求。
第一种情况,如果存在用于该第二驱动逻辑模块的与该状态相关的新数据,该新数据不用于第一驱动逻辑模块,则计算机设备100将该新数据添加到该数据模块中存储的该状态中。
第二种情况,如果所述数据模块记录的所述状态为第一版本的数据,则计算机设备100将所述数据模块中的所述第一版本的数据更新为所述第二驱 动逻辑模块支持的第二版本的数据。其中,第一版本与第二版本为不同版本,例如第一版本与第二版本是指不同格式,或者第一版本与第二版本分别排列数据的方式不同。
举例说明,所述数据模块记录的所述状态为第一格式的数据。在所述第二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑之前,计算机设备100将所述数据模块中的所述第一格式的数据更新为所述第二驱动逻辑模块支持的第二格式的数据。第一格式与第二格式是指不同格式,例如第一格式与第二格式分别采用不同二进制编码表示同一数据。
可见,现有技术需要卸载整个可加载内核模块,会终止为业务应用提供的驱动服务,以及释放该可加载内核模块与该业务应用的通信连接所占用的资源;待加载新的可加载内核模块后,业务应用再建立与新的可加载内核模块的通信连接,再基于该通信连接重新为该业务应用提供驱动服务。本发明实施例提供的内核更新方法,在替换驱动逻辑模块的期间,业务应用与接口模块的通信连接不中断,待完成替换驱动逻辑模块之后,业务应用可以基于该通信连接继续向接口模块发送业务请求,驱动逻辑模块响应该业务请求,从而恢复对业务应用提供的驱动服务;可见,本发明实施例在更新可加载内核模块时,仅暂停为业务应用提供驱动服务,由于该内核更新方法更新可加载内核模块所需的时间短,可以节省恢复该驱动服务的时间成本,提高恢复该驱动服务的效率;综合上述,该内核更新方法能够在用户未感知的情况下,实现该可加载内核模块的更新。
使用内核更新方法更新可加载内核模块的一种实现举例
图5提供了块存储业务的应用场景。在图5所示的应用场景中,Linux内核在图5中示意为“Linux Kernel”。本举例中,该“Linux Kernel”的可加载内核模块只包括一个驱动,该驱动为块存储驱动,该块存储驱动在图5中示意为“SCSI Driver”。
可加载内核模块的接口模块、驱动逻辑模块和数据模块,在图5中依次示意为“SCSI-IF”模块、“SCSI Driver Logic”模块、“SCSI-Data”模块。 其中,“SCSI-IF”模块部署“SCSI Driver”的接口,“SCSI Driver Logic”模块部署“SCSI Driver”的驱动逻辑,“SCSI-Data”模块用于存储“SCSI Driver Logic”模块为“虚拟机1”(部署业务应用)和“虚拟机2”(部署业务应用)分别提供驱动服务的状态。在图5中,旧的“SCSI Driver Logic”模块示意为“SCSI Driver Logic(old)”模块,更新的“SCSI Driver Logic”模块示意为“SCSI Driver Logic(new)”模块。
本应用场景中,块存储服务器(英文:block storage sever)创建虚拟磁盘,并通知“SCSI Driver”该虚拟磁盘的容量、该虚拟磁盘的编号、该虚拟磁盘的数量。“SCSI Driver”将状态数据(该虚拟磁盘的容量、该虚拟磁盘的编号、该虚拟磁盘的数量)记录到“SCSI-Data”模块中。
本应用场景中,“SCSI Driver”基于该虚拟磁盘,通过“Linux Kernel”的基本内核提供的块设备管理功能(在Linux内核中也称为Block-dev功能)创建两个虚拟块设备;这两个虚拟块设备在图5中分别示意为“/dev/sda”和“/dev/sdb”。
本应用场景中,业务应用分别部署在两个虚拟机(英文:virtual machine,VM)中,这两个虚拟机在图5中分别示意为“虚拟机1”和“虚拟机2”,并且“/dev/sda”和“/dev/sdb”分别供“虚拟机1”和“虚拟机2”使用;应知,上述两个虚拟机可以替换为进程或线程,即业务应用也可以部署在进程或线程中,“/dev/sda”和“/dev/sdb”供业务应用的进程或业务应用的线程使用。
本应用场景中,对“/dev/sda”或“/dev/sdb”的访问,实际上是对该虚拟磁盘的访问。具体地,“虚拟机1”和“虚拟机2”需要访问数据时各自向“/dev/sda”和“/dev/sdb”发送访问请求,该访问请求可以是读请求或写请求,该读请求指示读数据,该写请求指示写数据。提供设备管理功能的设备管理模块(在图5中示意为“Block-dev”模块),接收向“/dev/sda”发送的访问请求和接收向“/dev/sdb”发送的访问请求;“Block-dev”模块将接收的访问请求转换为小型计算机系统接口(英文:Small Computer System Interface,SCSI)命令字,其中,根据该访问请求转换得到的SCSI命令字记录有虚拟磁盘的编号、命令字操作模式、数据位置等信息;“Block-dev” 将转换得到的SCSI命令字发送至“SCSI Driver”的“SCSI-IF”模块。
“SCSI-IF”模块根据第三接口映射表将从“Block-dev”模块接收的SCSI命令字转发至“SCSI Driver”的“SCSI Driver Logic”模块;该第三映射表是指适用于本应用场景中的接口映射表,记录“SCSI Driver”在“SCSI-IF”模块的接口与“SCSI Driver”在“SCSI Driver Logic”模块中的驱动逻辑之间的对应关系。“SCSI Driver Logic”模块将SCSI命令字转化为网络请求,并根据块存储服务器的IP地址通过网络(如图5所示)将该网络请求发送至块存储服务器。
举例说明,“SCSI-IF”模块的第三接口映射表见表3。表3中,3个接口(“scsi-dispatch-func”、“scsi_disk_add”、“scsi_disk_rmv”)依次对应3个驱动逻辑的接口(“scsi_main_dispatch_func”、“scsi_main_disk_add”、“scsi_main_disk_rmv”);其中,“scsi_main_dispatch_func”为将SCSI命令字转换为网络请求的驱动逻辑的接口,“scsi_main_disk_add”为添加虚拟磁盘的驱动逻辑的接口,“scsi_main_disk_rmv”为卸载虚拟磁盘的驱动逻辑的接口。
接口 驱动逻辑的接口
scsi-dispatch-func scsi_main_dispatch_func
scsi_disk_add scsi_main_disk_add
scsi_disk_rmv scsi_main_disk_rmv
表3
“SCSI-IF”模块根据第三接口映射表将SCSI命令字向“scsi_main_dispatch_func”这个接口转发,“SCSI Driver Logic”模块对该SCSI命令字执行的驱动逻辑为:将该SCSI命令字转换为网络请求,该网络请求包括虚拟磁盘的编号和数据位置等信息。块存储服务器接收到该网络请求后,根据虚拟磁盘的编号确定虚拟磁盘,并根据该数据位置在该虚拟磁盘访问数据,例如从数据位置读取数据,或者向该数据位置写入数据。
图3所示的内核更新方法应用到图5所示的应用场景中的具体流程如图6所示。
步骤601,“UPD-CONTROL”模块向“SCSI Driver Logic(old)”模块 发送升级通知。
“UPD-CONTROL”模块,部署在计算机设备100中,用于控制可加载内核模块的升级流程,“UPD-CONTROL”模块未在图5中示意出。
本实施例中,“UPD-CONTROL”模块接收到内核更新指令时向“SCSI Driver Logic(old)”模块发送升级通知。
步骤602,“SCSI Driver Logic(old)”模块通知“SCSI–IF”模块注销“SCSI Driver Logic(Old)”模块。
具体地,“SCSI Driver Logic(old)”模块通知“SCSI–IF”模块将第三接口映射表置为无效,“SCSI–IF”模块将该第三接口映射表置为无效的具体实现参见上述对计算机设备100将第一接口映射表置为无效的细节描述,例如“SCSI–IF”模块可以为第三接口映射表(例如表3)设置无效标识,或者为该第三接口映射表(例如表3)中记录的该“SCSI Driver Logic(old)”模块包括的驱动逻辑的接口设置无效标识,或者删除该第三接口映射表(例如表3)中记录的该“SCSI Driver Logic(old)”模块包括的所有驱动逻辑的接口。
“SCSI Driver Logic(old)”模块将第三接口映射表置为无效,实现在“SCSI Driver Logic(old)”模块注销“SCSI Driver Logic(old)”模块。
步骤603,“SCSI–IF”模块阻塞访问请求。
具体地,“虚拟机1”和“虚拟机2”分别通过“/dev/sda”和“/dev/sdb”向“Block-dev”模块发送访问请求。“SCSI–IF”模块调用“Block-dev”模块提供的阻塞功能,该阻塞功能暂停“Block-dev”模块继续向“SCSI–IF”模块发送由该访问请求转换来的SCSI命令字。可选地,如果在内存中为“Block-dev”模块分配了存储空间,“Block-dev”模块可以继续接收“虚拟机1”的访问请求和“虚拟机2”的访问请求,在该存储空间缓存该访问请求,或者将接收的访问请求继续转换为SCSI命令字,缓存转换得到的SCSI命令字。
可选地,计算机设备100还可以通过操作系统将“虚拟机1”和“虚拟机2”置为阻塞状态。这样,被设置阻塞状态的“虚拟机1”和“虚拟机2”均停止通过“/dev/sda”和“/dev/sdb”向“Block-dev”模块发送访问请求; 从源头(“虚拟机1”和“虚拟机2”)停止访问请求的发送。如果为“Block-dev”模块分配了用于缓存访问请求或者SCSI命令字的存储空间,节省“Block-dev”模块该存储空间,以及避免因该存储空间不足而导致访问请求或者SCSI命令字的丢失。
可选地,如果未在内存中为“Block-dev”模块分配了存储空间,则对于每次从“虚拟机1”和“虚拟机2”接收的访问请求,“Block-dev”模块均将该访问请求均转换为SCSI命令字,并直接向“SCSI–IF”模块发送该SCSI命令字;因此在未为“Block-dev”模块分配存储空间的情况下,计算机设备100必须通过操作系统将“虚拟机1”和“虚拟机2”置为阻塞状态。
可选地,“SCSI–IF”模块等待步骤603阻塞访问请求之后,才通知“SCSI Driver Logic(old)”模块已完成“SCSI Driver Logic(old)”模块的注销,使得“SCSI Driver Logic(old)”模块在接收到完成注销的通知后执行步骤604。
步骤604,“SCSI Driver Logic(old)”模块将虚拟磁盘的编号存储至“SCSI-Data”模块。
本应用场景中,虚拟磁盘的编号为“SCSI Driver Logic(old)”模块在被更新前为“虚拟机1”和“虚拟机2”提供驱动服务的状态。“SCSI-Data”模块可以为内存中的部分存储空间。
“SCSI Driver Logic(old)”模块将虚拟磁盘的编号存储至“SCSI-Data”模块的同时,记录虚拟磁盘的编号的版本号。
步骤605,“UPD-CONTROL”模块卸载“SCSI Driver Logic(old)”模块。
“UPD-CONTROL”卸载“SCSI Driver Logic(old)”模块的具体卸载方式参见上述卸载第一驱动逻辑模块的相关描述。
图5(a)示意了卸载“SCSI Driver Logic(old)”模块之前的“SCSI Driver”,图5(b)示意了卸载“SCSI Driver Logic(old)”模块之后的“SCSI Driver”。
步骤606,“UPD-CONTROL”模块加载“SCSI Driver Logic(new)”模块。
“UPD-CONTROL”加载“SCSI Driver Logic(new)”模块的具体加载 方式参见上述加载第二驱动逻辑模块的相关描述。
图5(c)示意了加载“SCSI Driver Logic(new)”模块之后的“SCSI Driver”。
“SCSI Driver Logic(new)”模块被加载后,检查自己支持的状态的版本与“SCSI-Data”模块记录的虚拟磁盘的编号的版本是否不同,举例说明,版本不同可以是指所述状态的格式不同;如果版本不同,“SCSI Driver Logic(new)”模块执行步骤607;如果版本相同,“SCSI Driver Logic(new)”模块直接执行步骤608,即跳过执行步骤607。
步骤607,“SCSI Driver Logic(new)”模块升级“SCSI-Data”模块记录的虚拟磁盘的编号。
具体地,将“SCSI-Data”模块记录的虚拟磁盘的编号更新至“SCSI Driver Logic(new)”模块支持的版本的虚拟磁盘的编号。
步骤608,“SCSI Driver Logic(new)”模块通知“SCSI–IF”模块注册“SCSI Driver Logic(new)”模块。
具体地,“SCSI Driver Logic(new)”模块将“SCSI Driver Logic(new)”模块包括的驱动逻辑的接口发送至“SCSI–IF”模块,“SCSI–IF”模块使用“SCSI Driver Logic(new)”模块包括驱动逻辑的接口一一对应地更新第三接口映射表中“SCSI Driver Logic(old)”模块包括驱动逻辑的接口。
可选地,“SCSI Driver Logic(new)”模块将“SCSI Driver Logic(new)”模块包括的驱动逻辑的接口以固定格式发送给“SCSI–IF”模块;“SCSI–IF”模块根据该固定格式,一一对应地使用“SCSI Driver Logic(new)”模块包括的驱动逻辑的接口在第三接口映射表中更新“SCSI Driver Logic(old)”模块包括驱动逻辑的接口。
步骤609,“SCSI–IF”模块取消对访问请求的阻塞。
具体地,步骤609执行与步骤603相反的动作,例如“SCSI–IF”模块调用“Block-dev”模块提供的恢复功能,该恢复功能取消了“SCSI–IF”模块在步骤603中调用的阻塞功能,使得“Block-dev”模块继续向“SCSI–IF”模块发送由该访问请求转换来的SCSI命令字。
可选地,如果在卸载“SCSI Driver Logic(old)”模块之前,计算机设 备100先前通过操作系统将“虚拟机1”和“虚拟机2”置为阻塞状态,则在加载“SCSI Driver Logic(new)”模块之后,通过操作系统取消“虚拟机1”和“虚拟机2”的阻塞状态,使得“虚拟机1”和“虚拟机2”可以通过“/dev/sda”和“/dev/sdb”向“Block-dev”模块发送访问请求。
“SCSI–IF”模块执行步骤609之后,可以通知“SCSI Driver Logic(new)”模块已取消对访问请求的阻塞。从而“SCSI Driver Logic(new)”模块执行步骤610。
步骤610,“SCSI Driver Logic(new)”模块通知“UPD-CONTROL”模块加载成功。
加载“SCSI Driver Logic(new)”模块后,“Block-dev”模块将在步骤603阻塞的访问请求转换为SCSI命令字,并向“SCSI–IF”模块发送该SCSI命令字;“SCSI–IF”模块根据更新的第三接口映射表将该SCSI命令字转发至“SCSI Driver Logic(new)”模块的接口;“SCSI Driver Logic(new)”模块使用自己的与SCSI命令字对应的驱动逻辑将接收的SCSI命令字转换为网络请求,该网络请求包括版本更新后的虚拟磁盘的编号;“SCSI Driver Logic(new)”模块将该网络请求发送至块存储服务器。
装置实施例
本装置实施例提供一种内核更新装置,该内核更新装置部署在计算机设备100上。该内核更新装置包括用于执行上述方法实施例提供的内核更新方法的功能模块;本装置实施例对该功能模块的划分不做限定,可以按照内核更新方法的流程步骤对应划分功能模块,也可以按照具体实现需要划分功能模块。
图7示例性地提供一种对该内核更新装置700的功能划分。
在本示例中,所述可加载内核模块包括接口模块和第一驱动逻辑模块,所述接口模块包括至少一个驱动中每个驱动的至少一个接口,所述第一驱动逻辑模块包括所述至少一个驱动中每个驱动的至少一个驱动逻辑;对所述可加载内核模块、驱动、接口模块、第一驱动逻辑模块、接口和驱动逻辑的细节描述,参见方法实施例中的相关描述。
第一接口映射表用于记录所述接口模块中的每个接口与所述接口对应的所述第一驱动逻辑模块的驱动逻辑。对所述第一接口映射表的细节描述,参见方法实施例中的相关描述。
在更新所述可加载内核模块之前,接口模块根据第一接口映射表将接收的业务应用的业务请求转发至接收所述业务请求的接口对应的第一驱动逻辑,所述第一驱动逻辑模块对所述业务请求执行所述第一驱动逻辑,所述第一驱动逻辑是指所述第一驱动逻辑模块中为所述业务应用提供驱动服务的驱动逻辑;
当更新所述可加载内核模块时,参见图7,所述内核更新装置700包括:
设置单元701,用于将所述第一接口映射表置为无效,无效的所述第一接口映射表使得所述接口模块停止根据所述第一接口映射表将所述第一接口映射表被置为无效后接收的所述业务应用的新的业务请求发送至所述第一驱动逻辑;
替换单元702,用于将所述可加载内核模块中的所述第一驱动逻辑模块替换为第二驱动逻辑模块,所述第二驱动逻辑模块为更新的驱动逻辑模块;所述第二驱动逻辑模块包括能够为所述业务应用提供驱动服务的第二驱动逻辑;因此,所述第二驱动逻辑是指所述第二驱动逻辑模块中为所述业务应用提供驱动服务的驱动逻辑;
记录单元703,用于在第二接口映射表中记录所述接口模块中的每个接口以及所述接口对应的所述第二驱动逻辑模块中的驱动逻辑,以便所述接口模块根据所述第二接口映射表将所述新的业务请求发送至所述第二驱动逻辑模块的第二驱动逻辑。
可选地,所述可加载内核模块还包括数据模块,所述数据模块用于记录所述第一驱动逻辑在被替换前为所述业务应用提供驱动服务的状态;对所述数据模块和所述状态的细节描述,参见方法实施例中的相关描述。
所述第二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑。
可选地,所述数据模块记录的所述状态为第一格式的数据;
参见图7,所述内核更新装置700还包括:更新模块704,用于在所述第 二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑之前,将所述第一格式的数据更新为所述第二驱动逻辑模块支持的第二格式的数据。
可选地,参见图7,所述内核更新装置700还包括:
确定单元705,用于在所述设置单元701将所述第一接口映射表置为无效之前,接收内核更新指令,所述内核更新指令指示更新所述可加载内核模块;用于确定所述第一驱动逻辑模块成功执行旧的业务请求,所述旧的业务请求为在接收到所述内核更新指令时被所述第一驱动逻辑模块执行所述第一驱动逻辑的任一业务请求。
可选地,所述设置单元701具体用于:删除所述第一接口映射表中记录的所述第一驱动逻辑模块包括的所有驱动逻辑。
可选地,所述替换单元702,用于:卸载所述可加载内核模块中的所述第一驱动逻辑模块,在所述可加载内核模块中加载所述第二驱动逻辑模块。
可选地,设置单元701和记录单元703均可以集成到接口模块,设置单元701的功能和记录单元703的功能均可以由该接口模块实现。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (13)

  1. 一种内核更新方法,其特征在于,所述内核包括可加载内核模块,所述可加载内核模块包括接口模块和第一驱动逻辑模块,所述接口模块包括至少一个驱动中每个驱动的至少一个接口,所述第一驱动逻辑模块包括所述至少一个驱动中每个驱动的至少一个驱动逻辑;所述接口模块用于根据第一接口映射表将接收的业务应用的业务请求转发至接收所述业务请求的接口对应的第一驱动逻辑,所述第一驱动逻辑模块用于对所述业务请求执行所述第一驱动逻辑;所述第一接口映射表用于记录所述接口模块中的每个接口与所述接口对应的驱动逻辑;
    当更新所述可加载内核模块时,所述内核更新方法包括:
    将所述第一接口映射表置为无效,无效的所述第一接口映射表使得所述接口模块停止根据所述第一接口映射表将所述第一接口映射表被置为无效后接收的所述业务应用的新的业务请求发送至所述第一驱动逻辑;
    将所述可加载内核模块中的所述第一驱动逻辑模块替换为第二驱动逻辑模块,所述第二驱动逻辑模块为更新的驱动逻辑模块;所述第二驱动逻辑模块包括能够为所述业务应用提供驱动服务的第二驱动逻辑;
    在第二接口映射表中记录所述接口模块中的每个接口以及所述接口对应的所述第二驱动逻辑模块中的驱动逻辑,以便所述接口模块根据所述第二接口映射表将所述新的业务请求发送至所述第二驱动逻辑模块的第二驱动逻辑。
  2. 根据权利要求1所述的方法,其特征在于,所述可加载内核模块还包括数据模块;
    所述数据模块用于记录所述第一驱动逻辑在被替换前为所述业务应用提供驱动服务的状态;
    将所述可加载内核模块中的所述第一驱动逻辑模块替换为第二驱动逻辑模块后,所述方法还包括:
    所述第二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑。
  3. 根据权利要求2所述的方法,其特征在于,
    所述数据模块记录的所述状态为第一格式的数据;
    所述第二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑之前,所述方法还包括:
    将所述第一格式的数据更新为所述第二驱动逻辑模块支持的第二格式的数据。
  4. 根据权利要求1至3任一项所述的方法,其特征在于,将所述第一接口映射表置为无效之前,所述方法还包括:
    接收内核更新指令,所述内核更新指令指示更新所述可加载内核模块;
    确定所述第一驱动逻辑模块成功执行旧的业务请求,所述旧的业务请求为在接收到所述内核更新指令时被所述第一驱动逻辑模块执行所述第一驱动逻辑的任一业务请求。
  5. 根据权利要求1至4任一项所述的方法,其特征在于,所述将所述第一接口映射表置为无效,具体为:
    删除所述第一接口映射表中记录的所述第一驱动逻辑模块包括的所有驱动逻辑。
  6. 根据权利要求1至5任一项所述的方法,其特征在于,所述将所述第一驱动逻辑模块替换为所述第二驱动逻辑模块,包括:
    卸载所述可加载内核模块中的所述第一驱动逻辑模块;
    在所述可加载内核模块中加载所述第二驱动逻辑模块。
  7. 一种内核更新装置,其特征在于,内核包括可加载内核模块,所述可加载内核模块包括接口模块和第一驱动逻辑模块,所述接口模块包括至少一个驱动中每个驱动的至少一个接口,所述第一驱动逻辑模块包括所述至少一个驱动中每个驱动的至少一个驱动逻辑;所述接口模块用于根据第一接口映射表将接收的业务应用的业务请求转发至接收所述业务请求的接口对应的第一驱动逻辑,所述第一驱动逻辑模块用于对所述业务请求执行所述第一驱动逻辑;所述第一接口映射表用于记录所述接口模块中的每个接口与所述接口对应的驱动逻辑;
    当更新所述可加载内核模块时,所述内核更新装置包括:
    设置单元,用于将所述第一接口映射表置为无效,无效的所述第一接口 映射表使得所述接口模块停止根据所述第一接口映射表将所述第一接口映射表被置为无效后接收的所述业务应用的新的业务请求发送至所述第一驱动逻辑;
    替换单元,用于将所述可加载内核模块中的所述第一驱动逻辑模块替换为第二驱动逻辑模块,所述第二驱动逻辑模块为更新的驱动逻辑模块;所述第二驱动逻辑模块包括能够为所述业务应用提供驱动服务的第二驱动逻辑;
    记录单元,用于在第二接口映射表中记录所述接口模块中的每个接口以及所述接口对应的所述第二驱动逻辑模块中的驱动逻辑,以便所述接口模块根据所述第二接口映射表将所述新的业务请求发送至所述第二驱动逻辑模块的第二驱动逻辑。
  8. 根据权利要求7所述的内核更新装置,其特征在于,所述可加载内核模块还包括数据模块,所述数据模块用于记录所述第一驱动逻辑在被替换前为所述业务应用提供驱动服务的状态;
    所述第二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑。
  9. 根据权利要求8所述的内核更新装置,其特征在于,所述数据模块记录的所述状态为第一格式的数据;
    所述内核更新装置还包括:更新模块,用于在所述第二驱动逻辑模块基于所述数据模块记录的所述状态对所述新的业务请求执行所述第二驱动逻辑之前,将所述第一格式的数据更新为所述第二驱动逻辑支持的第二格式的数据。
  10. 根据权利要求7至9任一项所述的内核更新装置,其特征在于,所述内核更新装置还包括:
    确定单元,用于在所述设置单元将所述第一接口映射表置为无效之前,接收内核更新指令,所述内核更新指令指示更新所述可加载内核模块;用于确定所述第一驱动逻辑模块成功执行旧的业务请求,所述旧的业务请求为在接收到所述内核更新指令时被所述第一驱动逻辑模块执行所述第一驱动逻辑的任一业务请求。
  11. 根据权利要求7至10任一项所述的内核更新装置,其特征在于,所述设置单元具体用于:删除所述第一接口映射表中记录的所述第一驱动逻 辑模块包括的所有驱动逻辑。
  12. 根据权利要求7至1任一项所述的内核更新装置,其特征在于,所述替换单元,用于:卸载所述可加载内核模块中的所述第一驱动逻辑模块,在所述可加载内核模块中加载所述第二驱动逻辑模块。
  13. 一种计算机设备,其特征在于,包括处理器和存储器;
    所述存储器,用于存储计算机指令;
    所述处理器,用于执行所述存储器存储的计算机指令,使得所述计算机设备执行权利要求1至6任一项所述的内核更新方法。
PCT/CN2016/112370 2016-12-27 2016-12-27 内核更新方法和装置、计算机设备 WO2018119662A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201680003769.6A CN107003880B (zh) 2016-12-27 2016-12-27 内核更新方法和装置、计算机设备
EP16923129.7A EP3385836B1 (en) 2016-12-27 2016-12-27 Kernel update method and apparatus
PCT/CN2016/112370 WO2018119662A1 (zh) 2016-12-27 2016-12-27 内核更新方法和装置、计算机设备
US16/004,044 US10635511B2 (en) 2016-12-27 2018-06-08 Kernel update method and apparatus, and computer device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/112370 WO2018119662A1 (zh) 2016-12-27 2016-12-27 内核更新方法和装置、计算机设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/004,044 Continuation US10635511B2 (en) 2016-12-27 2018-06-08 Kernel update method and apparatus, and computer device

Publications (1)

Publication Number Publication Date
WO2018119662A1 true WO2018119662A1 (zh) 2018-07-05

Family

ID=59431621

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/112370 WO2018119662A1 (zh) 2016-12-27 2016-12-27 内核更新方法和装置、计算机设备

Country Status (4)

Country Link
US (1) US10635511B2 (zh)
EP (1) EP3385836B1 (zh)
CN (1) CN107003880B (zh)
WO (1) WO2018119662A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3376392A1 (de) * 2017-03-15 2018-09-19 Siemens Aktiengesellschaft Verfahren zum betrieb eines automatisierungssystems und nach dem verfahren arbeitendes automatisierungssystem
US10503518B2 (en) * 2017-10-11 2019-12-10 Microsoft Technology Licensing, Llc Initializing hardware components using parallel driver loading and serial access granting
US10929122B1 (en) * 2019-10-23 2021-02-23 Microsoft Technology Licensing, Llc Modifying program modules in running applications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101655801A (zh) * 2009-09-11 2010-02-24 华为技术有限公司 驱动软件升级的方法及装置
CN102830983A (zh) * 2011-06-14 2012-12-19 上海未来宽带技术及应用工程研究中心有限公司 一种可动态加载不同终端交换芯片驱动的方法
US20140359593A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Maintaining known dependencies for updates
CN104679532A (zh) * 2013-11-27 2015-06-03 腾讯科技(深圳)有限公司 内核模块加载方法和装置
CN105335195A (zh) * 2015-11-02 2016-02-17 北京金山安全软件有限公司 一种设备驱动升级方法、装置及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071856A1 (en) * 2003-09-26 2005-03-31 Kumar C.P. Vijay Dynamically loadable stub modules
US7818736B2 (en) * 2005-09-14 2010-10-19 International Business Machines Corporation Dynamic update mechanisms in operating systems
US20070174849A1 (en) * 2006-01-12 2007-07-26 Cheung Yan M Non-disruptive multipath device driver update system and method
US7890664B1 (en) * 2008-03-31 2011-02-15 Emc Corporation Methods and apparatus for non-disruptive upgrade by redirecting I/O operations
US8527665B2 (en) * 2011-04-15 2013-09-03 Ixia Redirecting function calls

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101655801A (zh) * 2009-09-11 2010-02-24 华为技术有限公司 驱动软件升级的方法及装置
CN102830983A (zh) * 2011-06-14 2012-12-19 上海未来宽带技术及应用工程研究中心有限公司 一种可动态加载不同终端交换芯片驱动的方法
US20140359593A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Maintaining known dependencies for updates
CN104679532A (zh) * 2013-11-27 2015-06-03 腾讯科技(深圳)有限公司 内核模块加载方法和装置
CN105335195A (zh) * 2015-11-02 2016-02-17 北京金山安全软件有限公司 一种设备驱动升级方法、装置及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3385836A4 *

Also Published As

Publication number Publication date
EP3385836B1 (en) 2023-07-05
EP3385836A4 (en) 2019-02-20
CN107003880A (zh) 2017-08-01
US20180293117A1 (en) 2018-10-11
CN107003880B (zh) 2020-04-03
US10635511B2 (en) 2020-04-28
EP3385836A1 (en) 2018-10-10

Similar Documents

Publication Publication Date Title
JP5026509B2 (ja) マシンから仮想マシンへの変換
US9600315B2 (en) Seamless takeover of a stateful protocol session in a virtual machine environment
US9354907B1 (en) Optimized restore of virtual machine and virtual disk data
US8447826B1 (en) Method and apparatus for providing highly available storage groups
US20110264776A1 (en) Deploying an operating system
US10620871B1 (en) Storage scheme for a distributed storage system
WO2018119662A1 (zh) 内核更新方法和装置、计算机设备
JP2004234114A (ja) 計算機システム、計算機装置、オペレーティングシステムの移送方法及びプログラム
WO2023061172A1 (zh) 应用升级方法、装置、计算设备和芯片系统
US11762600B2 (en) Data processing method, apparatus, and system
JP4322240B2 (ja) 再起動方法、システム及びプログラム
US11922176B2 (en) Containerized firmware services
US10942821B1 (en) Method and apparatus for dynamic binding and unbinding thin logical storage volumes to snapshots of a file system
WO2022242665A1 (zh) 一种数据存储方法及相关装置
CN113722147A (zh) 一种保持业务连接方法及相关设备
CN108334401B (zh) 实现逻辑卷动态分配并支持虚拟机动态迁移的系统及方法
WO2023231572A1 (zh) 一种容器的创建方法、装置及存储介质
CN117687738A (zh) 一种缓存控制方法、装置和计算机设备
CN114003341A (zh) 分布式存储服务的升级方法、装置、电子设备及存储介质
AU2012200600A1 (en) "Converting machines to virtual machines"

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2016923129

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2016923129

Country of ref document: EP

Effective date: 20180705

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16923129

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE