支持内核在线更新的方法、服务器和相关设备与流程

文档序号:32383507发布日期:2022-11-30 03:47阅读:67来源:国知局
支持内核在线更新的方法、服务器和相关设备与流程

1.本技术涉及计算机领域,尤其涉及一种支持内核在线更新的方法、服务器和相关设备。


背景技术:

2.服务器的内核(kernel)是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统。为了维持系统的稳定性,服务器每隔一段时间都需要对内核进行更新或修复,内核更新或修复需要服务器重启,造成运行在服务器中的业务中断,对用户产生很大影响。
3.为了避免内核更新和修复过程中服务器的重启,内核跳转技术应运而生。内核跳转指的是待更新的第一内核加载已更新的第二内核的启动参数和启动文件后,第一内核关闭,第二内核初始化,第二内核接替第一内核工作,实现对第一内核的更新,该方法可以免于服务器重启造成的业务中断。但是,内核跳转过程中,第二内核的加载和初始化也需要较长的时间,造成长达几十秒的业务中断,对业务运行产生影响,降低用户的使用体验。


技术实现要素:

4.本技术提供了一种支持内核在线更新的方法、服务器和相关设备,用于解决内核更新和修复过程中,由于内核跳转所需的业务中断时间过长导致用户使用体验差的问题。
5.第一方面,提供了一种支持内核在线更新的服务器,该服务器可包括处理器、内存以及多个pci设备,内存记录有第一内核的代码,其中,处理器,用于执行第一内核的代码以启动第一内核,并在第一内核启动的情况下扫描多个外设部件互连标准(peripheral component interconnect,pci)设备,将多个pci设备的拓扑信息记录到内存的预设地址中,在执行第一内核的代码的过程中,处理器还可接收内核跳转命令,根据内核跳转命令停止执行第一内核的代码,并执行第二内核的代码以启动第二内核,在第二内核启动的情况下从内存的预设地址中获取拓扑信息。
6.具体实现中,上述处理器可以由至少一个通用处理器构成,例如中央处理器(central processing unit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic)、可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld)、现场可编程逻辑门阵列(field-programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。
7.上述内存可以是易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram)、动态随机存储器(dynamic ram,dram)、静态随机存储器(static ram,sram)、同步动态随机存储器(synchronous dynamic ram,sdram)、双倍速率同步动态随机存储器(double data rate ram,ddr)、高速缓存(cache)等等,内存还可以包括上述种
类的组合。
8.上述多个pci设备可以是与pci总线的扩展插槽相连的pci设备,比如声卡、网卡(nic)、通用串行总线(universal serial bus,usb)卡、集成开发环境(interated development environment,ide)接口卡、磁盘阵列(redundant arrays of independent disks,raid)卡、视频采集卡等等,本技术不作具体限定。多个pci设备的拓扑信息是多个pci设备在设备初始化时建立的总线拓扑结构,用于描述多个pci设备组成的设备系统的拓扑结构,具体可以是一个数据结构链表,处理器执行第一内核的代码扫描多个pci设备时,可以从pci总线上搜索所有pci设备,并依次为每个pci设备编号、定位后获得该拓扑信息。
9.值得注意的是,pci设备还可以包括pcie(peripheral component interconnect express,高速串行计算机扩展总线)设备。
10.可选地,上述用于存储拓扑结构的内存的预设地址,可以是在处理器执行第一内核的代码之前已向内存中申请的一段存储空间的地址,也可以是处理器接收到内核跳转命令,停止执行第一内核的代码之前,向内存申请的一段存储空间的地址,本技术不作具体限定。内核跳转命令具体可以是kexec命令,该命令用于指示当前正在运行内核跳转到新内核,当然,也可以是其他内核跳转命令,本技术不对此进行限定。
11.实施第一方面描述的服务器,该服务器中的处理器可以执行内存中的第一内核的代码,将多个pci设备的拓扑信息存储在内存的预设地址中,当处理器停止执行第一内核的代码,执行第二内核的代码后,可以从上述内存的预设地址中获取该拓扑信息,从而免于内核跳转过程中对多个pci设备的重复扫描,减少内核跳转过程中的业务中断时长,提高用户的使用体验。
12.在第一方面的一种可能的实现方式中,第二内核的代码是对第一内核的代码进行漏洞修复或功能升级后获得的代码,处理器,还用于根据内核跳转命令获取第二内核的代码,将第二内核的代码加载至内存。
13.可选地,处理器可从预定位置获取第二内核的代码,系统管理员可将第二内核的代码预先设置在预定位置,其中预定位置例如为内存的某个地址,或某个网络文件服务器。
14.具体地,处理器可以将第二内核的代码加载至内存之后,将第二内核的代码在内存中的起止地址存储于页表中,处理器根据该页表获取第二内核的代码的起止地址,然后根据该起止地址从内存中获取第二内核的代码并执行,启动第二内核。
15.可选地,处理器停止执行第一内核的代码,并执行第二内核的代码以启动第二内核后,可以将第一内核的代码所在的内存空间进行回收,减少内存的占用空间,提高内存利用率。若第二内核运行过程中也需要进行内核更新,那么可以接收新的内核跳转命令,根据新的内核跳转命令接收更新后的第三内核的代码,并将第三内核的代码加载至上述回收后的内存空间,当然,也可以将其加载至其他内存空间,本技术不作具体限定。
16.上述实现方式,处理器接收内核跳转命令后,将更新好的第二内核的代码加载至内存中,处理器执行第二内核的代码,不仅可以实现内核的在线更新,避免由于服务器中断为用户带来的不便,而且处理器执行第二内核的代码后,可以从内存的预设地址中获取拓扑信息,免于内核跳转过程中对多个pci设备的重复扫描,减少内核跳转过程中的业务中断时长,提高用户的使用体验。
17.在第一方面的一种可能的实现方式中,处理器,还用于在根据内核跳转命令停止
执行第一内核的代码之前,指示多个pci设备自身保留各自的设备状态信息,处理器,还用于执行第二内核的代码从内存的预设地址中获取拓扑信息之后,从多个pci设备读取设备状态信息。
18.具体实现中,pci设备的设备状态信息可以包括该pci设备所包括的功能特性的状态,比如该pci设备的sr-iov的状态为开启或关闭,处理器可以指示多个pci设备将设备状态信息存储在本地的寄存器中。当处理器停止执行第一内核的代码,执行第二内核的代码以启动第二内核,并从内存的预设地址获取拓扑信息后,可以与多个pci设备进行通信,获取每个pci设备的设备状态信息,由于处理器停止执行第一内核的代码之前,并没有关闭多个pci设备,因此多个pci设备可以根据状态信息继承设备状态,而无需再重新进行设备启动和设备初始化。
19.实施上述实现方式,通过将pci设备的设备状态信息保留在pci设备本地,可以使得处理器110执行第二内核的代码后,通过状态继承的方式恢复多个pci设备,无需再重启和初始化pci设备,应理解,pci设备启动和初始化所需的时间通常为秒级,而根据设备状态进行对设备进行恢复所需的时间为毫秒级,因此使用上述实现方式,可以减少内核跳转过程中的业务中断时长,提高用户的使用体验。
20.在第一方面的一种可能的实现方式中,第一内核中设置有虚拟实例,多个pci设备中的一者或任意组合直通至虚拟实例,其中,该虚拟实例为虚拟机或容器。简单来说,本技术提供的支持内核在线更新的服务器也可以部署于云数据中心,需要说明的,服务器进行内核的在线更新之前,可以先将第一内核中的虚拟实例迁移至其他服务器中,然后对服务器进行内核在线更新,从而避免内核更新为用户带来的业务中断,提高用户的使用体验。
21.可选地,多个pci设备还可以是支持单根输入输出虚拟化(single root i/o virtualization,sr-iov)标准的硬件设备中的物理功能(physical function,pf)或者虚拟功能(virtual function,vf)。其中,sr-iov是一种基于硬件的虚拟化解决方案,该标准可以将一个pci设备虚拟化为多个pci虚拟设备,每个pci虚拟设备都可分配给不同的虚拟机使用。
22.实施上述实现方式,由于云数据中心通常拥有海量的服务器,内核跳转的需求量很大,使用本技术提供的支持内核在线更新的服务器,在内核更新过程中不仅无需进行服务器重启,避免了云数据中心由于服务器重启带来的繁重运维,并且可以有效减少内核更新所需的时间,避免了云数据中心由于长时间的业务中断,提高用户的使用体验。
23.第二方面,提供了一种支持内核在线更新的设备,该设备包括:第一内核,用于在启动的情况下扫描多个pci设备,将多个pci设备的拓扑信息记录到内存的预设地址中;第一内核,还用于接收内核跳转命令,根据内核跳转命令启动第二内核;第二内核,在启动的情况下从内存的预设地址中获取拓扑信息。
24.实施第二方面描述的设备,可以在第一内核退出时,将多个pci设备的拓扑信息存储在内存中,并指示每个pci设备将自身的设备状态信息存储在设备本地,这样,第二内核加载和初始化时,可以从内存中获取该设备信息,无需重新扫描多个pci设备,减少第二内核加载和初始化所需的时间,并且,可向每个pci设备获取设备状态信息,使得pci设备可以根据设备状态信息实现状态继承,使得多个pci设备无需重启和初始化,进一步减少内核跳转过程中的业务中断时长,提高用户的使用体验。
25.可选地,第二内核是对第一内核进行漏洞修复或功能升级后的内核。
26.可选地,第一内核,还用于在根据内核跳转命令,指示多个pci设备自身保留各自的设备状态信息。
27.可选地,第二内核,还用于从内存的预设地址中获取拓扑信息之后,从多个pci设备读取设备状态信息。
28.可选地,第一内核中设置有虚拟实例,多个pci设备中的一者或任意组合直通至虚拟实例。
29.可选地,上述虚拟实例为虚拟机或容器。
30.第三方面,提供了一种支持内核在线更新的方法,该方法包括以下步骤:第一内核在启动的情况下扫描多个pci设备,将多个pci设备的拓扑信息记录到内存的预设地址中;第一内核接收内核跳转命令,根据内核跳转命令启动第二内核;第二内核在启动的情况下从内存的预设地址中获取拓扑信息。
31.实施第三方面描述的方法,可以在第一内核退出时,将多个pci设备的拓扑信息存储在内存中,并指示每个pci设备将自身的设备状态信息存储在设备本地,这样,第二内核加载和初始化时,可以从内存中获取该设备信息,无需重新扫描多个pci设备,减少第二内核加载和初始化所需的时间,并且,可向每个pci设备获取设备状态信息,使得pci设备可以根据设备状态信息实现状态继承,使得多个pci设备无需重启和初始化,进一步减少内核跳转过程中的业务中断时长,提高用户的使用体验。
32.可选地,该方法还包括以下步骤:第二内核是第一内核进行漏洞修复或功能升级后的内核。
33.可选地,在第一内核根据内核跳转命令启动第二内核之前,第一内核可停止多个pci设备,指示多个pci设备自身保留各自的设备状态信息。
34.可选地,第二内核从内存的预设地址中获取拓扑信息之后,还可从多个pci设备读取设备状态信息。
35.可选地,第一内核中设置有虚拟实例,多个pci设备中的一者或任意组合直通至虚拟实例。
36.可选地,上述虚拟实例为虚拟机或容器。
37.第四方面,提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
38.第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
39.第六方面,提供了一种计算设备,该计算设备包括处理器,该处理器用于执行上述各方面描述的方法。
40.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
41.图1是本技术提供的一种支持内核在线更新的服务器的结构示意图;
42.图2是pci设备的物理功能和虚拟功能的示意图;
43.图3是本技术提供的一种公有云的数据中心的架构图;
44.图4是本技术提供的支持内核在线更新的设备的结构示意图;
45.图5是本技术提供的一种支持内核在线更新的方法的步骤流程示意图;
46.图6是本技术提供的一种pci设备系统的结构示意图;
47.图7是本技术提供的一种内核跳转的步骤流程示意图;
48.图8是本技术提供的一种计算设备的结构示意图。
具体实施方式
49.为了便于理解本发明的技术方案,首先,对本发明涉及的“内核跳转”的应用场景进行解释说明。
50.内核(kernel)是一个提供硬件抽象层、磁盘即文件系统控制、多任务等功能的系统软件,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定系统的性能和稳定性。应理解,操作系统若直接对硬件进行操作,所需的步骤非常复杂,操作系统的内核可提供一种硬件抽象的方法来完成这些操作,使得程序设计更为简单,因此,内核(kernel)又被称为操作系统的核心。
51.通常情况下,操作系统运行过程中会出现各种安全漏洞,内核为了维持系统的稳定性,服务器每隔一段时间都需要对内核进行更新或修复,内核更新或修复需要服务器重启,对业务运行产生很大影响。为了避免内核更新和修复过程中服务器的重启,内核跳转技术应运而生。内核跳转指的是将待修复的第一内核关闭,加载更新好的第二内核,然后重新初始化第二内核,第二内核接替第一内核工作,实现对第一内核的更新,该方法可以免于服务器重启造成的业务中断。
52.但是,内核跳转过程中,第二内核的加载和初始化也需要较长的时间,比如在退出第一内核时,需要将与服务器相连的所有pci设备进行关闭,在加载和初始化第二内核时,则需要重新扫描和初始化上述所有pci设备,应理解,一个pci设备在重新扫描和初始化阶段所需的时间多为秒级,一台服务器上连接的设备通常为十多个,导致内核跳转过程也会造成长达几十秒的业务中断,对业务运行产生影响,降低用户的使用体验。
53.为了解决上述内核跳转过程长达几十秒的业务中断对业务运行产生的影响,本技术提供了一种支持内核在线更新的服务器,该服务器中的处理器可以执行内存中的第一内核的代码,将多个pci设备的拓扑信息存储在内存的预设地址中,当处理器停止执行第一内核的代码,执行第二内核的代码后,可以从上述内存的预设地址中获取该拓扑信息,从而免于内核跳转过程中对多个pci设备的重复扫描,减少内核跳转过程中的业务中断时长,提高用户的使用体验。
54.如图1所示,图1是本技术提供的一种支持内核在线更新的服务器,该服务器可包括处理器110、内存120、多个pci设备130以及总线140,其中,处理器110、内存120以及多个pci设备130可以通过总线140相互连接,也可通过无线传输等其他手段实现通信。具体实现中,总线140可以是pci总线,应理解,图1中用一条粗线表示总线140,但并不表示仅有一根总线或一种类型的总线。
55.其中,服务器100可以是物理服务器,比如x86服务器、arm服务器等等,也可以是基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,nfv)技
术实现的虚拟机(virtual machine,vm),虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,比如云计算中的虚拟设备,本技术不作具体限定。
56.处理器110可以由至少一个通用处理器构成,例如中央处理器(central processing unit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic)、可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld)、现场可编程逻辑门阵列(field-programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。
57.处理器110用于执行各种类型的数字存储指令,例如存储在内存120中的代码,它能使计服务器100提供多种服务。
58.内存120可以是易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram)、动态随机存储器(dynamic ram,dram)、静态随机存储器(static ram,sram)、同步动态随机存储器(synchronous dynamic ram,sdram)、双倍速率同步动态随机存储器(double data rate ram,ddr)、高速缓存(cache)等等,内存120还可以包括上述种类的组合。
59.内存120用于存储代码,以供处理器110执行,其中,该代码可至少包括第一内核的代码、第二内核的代码以及拓扑信息,其中,第一内核的代码以及第二内核的代码可包括内核函数启动、初始化和运行过程中所需的程序代码,具体可以包括启动参数、内核文件等等,本技术不作具体限定。拓扑信息是多个pci设备130在设备初始化时建立的总线拓扑结构,用于描述多个pci设备130组成的设备系统的拓扑结构,具体可以是一个数据结构链表,第一内核扫描多个pci设备130时,可以从pci总线上搜索所有pci设备,并依次为每个pci设备编号、定位后获得该拓扑信息。内存120还可包括更多代码和信息,比如若处理器110为多核处理器,内存120中还可包括更多内核的代码,本技术不作具体限定。
60.具体实现中,处理器110执行内存120中的第一内核的代码可以启动第一内核,并在第一内核启动的情况下扫描多个pci设备130,将多个pci设备130的拓扑信息记录到内存120的预设地址中。处理器110在执行第一内核的代码过程中,可接收内核跳转命令,根据内核跳转命令停止执行第一内核的代码,并执行第二内核的代码以启动第二内核,在第二内核启动的情况下从内存120的预设地址中获取拓扑信息。其中,内核跳转命令具体可以是kexec命令,该命令用于指示当前正在运行内核跳转到新内核,当然,也可以是其他内核跳转命令,本技术不对此进行限定。
61.可以理解的,图1中的pci总线140数量只有1条,但是实际环境中,总线数量非常多,并且总线可分为主干总线、二级总线、三级总线以及从属总线等等,每种总线上都连接有pci设备,这些pci设备组成的拓扑结构十分复杂,处理器110扫描多个pci设备130获得其拓扑信息将会消耗大量时间。本技术提供的服务器100,处理器110执行第二内核的代码后,从内存120的预设地址获取拓扑信息,而无需再对多个pci设备130进行扫描,避免了重新扫描多个pci设备所消耗的大量时间,减少内核跳转过程中的业务中断时长,提高用户的使用体验。
62.在一实施例中,第二内核的代码是对第一内核的代码进行漏洞修复或功能升级后
获得的代码,这样,处理器执行第二内核的代码,并从内存120的预设地址中获取拓扑信息后,可以实现内核的在线更新,而无需停止整个服务器对第一内核进行更新,提高用户的使用体验。
63.应理解,图1中内存120虽然包括第一内核的代码和第二内核的代码,但是具体实现中,第二内核的代码是处理器接收到内核跳转指令并接收到第二内核的代码后,将其加载至内存120中的。具体地,处理器110可根据内核跳转命令接收第二内核的代码,然后将第二内核的代码加载至内存120。在停止执行上述第一内核的代码后,可执行第二内核的代码启动第二内核,在第二内核启动的情况下从内存120的预设地址中获取该拓扑信息。具体实现中,处理器110可以将第二内核的代码加载至内存120之后,将第二内核的代码在内存120中的起止地址存储于页表中,处理器110根据该页表获取第二内核的代码的起止地址,然后根据该起止地址从内存120中获取第二内核的代码并执行,启动第二内核。
64.可选地,处理器110停止执行第一内核的代码,并执行第二内核的代码以启动第二内核后,可以将第一内核的代码所在的内存空间进行回收,减少内存120的占用空间,提高内存利用率。若第二内核运行过程中也需要进行内核更新,那么可以接收新的内核跳转命令,根据新的内核跳转命令接收更新后的第三内核的代码,并将第三内核的代码加载至上述回收后的内存空间,当然,也可以将其加载至其他内存空间,本技术不作具体限定。
65.需要说明的,上述用于存储拓扑结构的内存120的预设地址,可以是在处理器110执行第一内核的代码之前已向内存120中申请的一段存储空间的地址,也可以是处理器110接收到内核跳转命令,停止执行第一内核的代码之前,向内存120申请的一段存储空间的地址,本技术不作具体限定。
66.多个pci设备130可以是与pci总线的扩展插槽相连的pci设备,比如声卡、网卡(nic)、通用串行总线(universal serial bus,usb)卡、集成开发环境(interated development environment,ide)接口卡、磁盘阵列(redundant arrays of independent disks,raid)卡、视频采集卡等等,本技术不作具体限定。其中,图1以多个pci设备130的数量为n个为例进行了说明,具体实现中,本技术不对多个pci设备130的设备数量和类型进行限定。
67.多个pci设备130还可以是支持单根输入输出虚拟化(single root i/o virtualization,sr-iov)标准的硬件设备中的物理功能(physical function,pf)或者虚拟功能(virtual function,vf)。其中,sr-iov是一种基于硬件的虚拟化解决方案,该标准可以将一个pci设备虚拟化为多个pci虚拟设备,每个pci虚拟设备都可分配给不同的虚拟机使用。
68.具体地,一个支持sr-iov标准的硬件设备可以分为至少一个pf和至少一个vf,其中,pf指的是该硬件设备所支持的一项pci功能,一个pf可以扩展出多个vf,vf指的是该硬件设备虚拟出来的实例。举例来说,如图2所示,图2是pci设备的物理功能和虚拟功能的示意图,该pci设备1开启了sr-iov功能,该pci设备1可包括多个物理功能,图2以pf1和pf2为例进行了举例说明,每个物理功能可扩展出多个虚拟功能,图2以pf1扩展出vf11~vf13、pf2扩展出vf21~vf23为例进行了举例说明。假设图2所示的pci设备1是支持sr-iov标准的物理网卡,那么pf可以是该物理网卡所支持的一项pci功能,每个vf以一个独立网卡的形式向虚拟机呈现。应理解,上述举例用于说明,应理解,图2用于举例,本技术不对每个pci设备
的vf和pf数量进行限定。
69.在一实施例中,处理器110在根据内核跳转命令停止执行第一内核的代码之前,可以指示多个pci设备130自身保留各自的设备状态信息。其中,pci设备的设备状态信息可以包括该pci设备所包括的功能特性的状态,比如该pci设备的sr-iov的状态为开启或关闭。处理器110可以指示多个pci设备130将设备状态信息存储在本地的寄存器中。
70.在一实施例中,处理器110可用于执行第二内核的代码,从内存的预设地址中获取拓扑信息之后,从多个pci设备读取设备状态信息。具体实现中,处理器110执行第二内核的代码,从内存120的预设地址获取拓扑信息后,可以与多个pci设备130进行通信,以使每个pci设备从本地的寄存器中获取设备状态信息,由于处理器110停止执行第一内核的代码之前,并没有关闭多个pci设备130,因此多个pci设备130可以根据状态信息继承设备状态,而无需再重新进行设备启动和设备初始化。
71.可以理解的,pci设备启动和初始化所需的时间通常为秒级,而根据设备状态进行对设备进行恢复所需的时间为毫秒级,因此本技术通过将pci设备的设备状态信息保留在pci设备本地,可以使得处理器110执行第二内核的代码后,通过状态继承的方式恢复多个pci设备,可以减少内核跳转过程中的业务中断时长,提高用户的使用体验。
72.举例来说,若多个pci设备130中的某个pci设备需打开sr-iov功能,根据pci规范(pci spec)可知,该设备初始化所需的时间约为1秒,使用本技术提供的支持内核在线更新的服务器,可在处理器110停止执行第一内核的代码之前,指示该pci设备保留设备状态信息在本地寄存器中。这样,处理器110执行第二内核的代码,从内存120的预设地址获取拓扑信息后,可以从该pci设备读取设备状态信息,使得该pci设备可以根据设备状态信息实现状态继承,无需再重复打开sr-iov功能,从而为内核跳转过程的业务中断时长至少缩短1秒,若服务器连接了成百上千的pci设备,可以减少更多的业务中断时长,提高用户的使用体验。
73.应理解,本技术提供的服务器100存在多种划分方式,图1是一种示例性地划分方式,服务器100还可包括更多的模块,比如服务器100还可包括外存、通信接口等等,各个模块之间可以合并为更少或拆分为更多的模块,各个模块与服务器100之间的位置关系也不构成任何限制。
74.下面对本技术提供的服务器100的部署场景进行说明。
75.本技术提供的支持内核在线个更新的服务器100可以部署于单个物理服务器,比如图1所示的服务器100是一台物理机,多个pci设备130是与该物理机相连的物理设备。在该场景下,本技术提供的服务器100可以实现内核的在线更新,减少内核的在线更新中业务中断的时间,提高用户的使用体验。
76.本技术提供的服务器100还可部署于云环境,举例来说,图3是一种公有云的数据中心的架构图,本技术提供的服务器100可以部署于如图3所示的公有云的数据中心300中,如图3所示,公有云的数据中心300可包括云管理节点310和硬件资源池320。
77.其中,云管理节点310可以是通用的物理服务器实现的,例如arm服务器或者x86服务器,也可以是nfv技术实现的虚拟机,云管理节点310也可以是硬件资源池320中的虚拟机或者物理服务器,本技术不作具体限定。
78.硬件资源池320可以包括至少一个物理机(图3以资源池包括物理机1、物理机2、物
理机3和物理机4为例进行了举例说明),其中,物理机可以是通用的物理服务器,例如arm服务器或者x86服务器,本技术不作具体限定。硬件资源池320中的物理机可以通过内部网络与其他物理机或云管理节点310之间进行通信。其中,每一个物理机至少包括硬件资源(比如物理机1包括硬件资源1,物理机2包括硬件资源2)和操作系统(比如操作系统1和操作系统2),一些物理机还可包括多个虚拟实例,该虚拟实例可以是容器(比如物理机1包括容器11和容器12),也可以是虚拟机(比如虚拟机21和虚拟机22),物理机中的多个虚拟实例可以共享该物理机中的操作系统和硬件资源。其中,硬件资源(比如硬件资源1和硬件资源2)可以包括服务器的各种可用硬件资源,比如处理器1、存储器1、多个pci设备1等等,还可以包括用户可能需要的其他硬件资源,本技术不作具体限定。操作系统(比如操作系统1和操作系统2)可以是容器、虚拟机或物理机适用的操作系统,比如安卓(android)操作系统、windows操作系统、linux操作系统等等,本技术不作具体限定。需要说明的是,操作系统可以是官方完整的操作系统,也可以是为了适应服务器的运行方式对官方完整的操作系统的个别驱动模块进行修改后的操作系统,本技术不做具体限定。并且,图3所示的物理机数量、虚拟机数量、容器数量、硬件资源种类和数量仅用于举例说明,本技术不作具体限定。
79.通过云管理节点310,用户可根据自己的需求付费租用各种规格的虚拟实例或bms。具体地,云管理节点310可以接收用户发送的租用请求,该租用请求中携带有规格需求,根据该规格需求和硬件资源池320的资源空闲情况,从硬件资源池320中符合该创建规格需求的虚拟机、容器或bms,比如用户请求付费租用一台配置有网卡的虚拟机,管理节点310可以根据规格需求和硬件资源池320的资源空闲情况,从硬件资源池320中创建vm1,并将网卡的vf1分配给该虚拟机使用。应理解,上述举例用于说明,本技术不作具体限定。
80.具体实现中,若用户请求创建一个规格为x的容器,云管理节点310接收到用户发送的租用请求后,可以根据该请求中携带的规格x以及硬件资源池320的资源空闲情况,确定创建该容器的物理机(比如图3中的物理机1),然后向该物理机上的云管理代理节点(比如图3中物理机1内的云管理代理节点1)发送容器创建请求,该容器创建请求中携带上述规格x,云管理代理节点1可以根据该容器创建请求,创建规格为x的容器(比如图3中的容器11)。若用户请求创建一个规格为y的虚拟机,云管理节点310接收到用户发送的租用请求后,可以根据该请求中携带的规格y以及硬件资源池320的资源空闲情况,确定创建该虚拟机的物理(比如图3中的物理机2),然后向该物理机上的虚拟机管理器(比如图3中的虚拟机管理器2)发送虚拟机创建请求,该虚拟机创建请求中携带上述规格y,虚拟机管理器2可以根据该虚拟机创建请求,创建规格为y的虚拟机(比如图3中的虚拟机21)。应理解,上述举例用于说明,本技术不作具体限定。
81.可选地,本技术提供的支持内核在线更新的服务器100可以是该硬件资源池320中的物理机。其中,服务器100中的处理器110、内存120以及多个pci设备130可以是物理机中的硬件资源,比如处理器110可以是处理器1,内存120可以是存储器1,多个pci设备130可以是多个pci设备1,图3用于举例说明,本技术不作具体限定。
82.在图3所示的应用场景中,第一内核的代码、第二内核的代码以及拓扑信息可以存储于存储器(比如图3中的存储器1)中,处理器(比如图3中的处理器1)执行存储器中的第一内核的代码可以启动第一内核,第一内核中设置有虚拟实例,多个pci设备中的一者或者任意组合直通至该虚拟实例。
83.需要说明的,服务器100进行内核的在线更新之前,可以先将第一内核中的虚拟实例迁移至其他服务器中,然后对服务器100进行内核在线更新,从而避免内核更新为用户带来的业务中断,提高用户的使用体验。
84.可选地,服务器100也可以是物理机中的虚拟实例,应理解,同一台物理机中的多个虚拟实例可以共享该物理机中的操作系统和硬件资源,因此服务器是虚拟实例时,实质也是对该虚拟机所在的物理机进行内核的在线更新。举例来说,假设服务器100为容器,比如图3中的容器11,该容器11与容器12共享物理机1的操作系统和物理资源,在该应用场景下,第一内核的代码可以存储于存储器1中,处理器1执行第一内核的代码可以启动第一内核,并在第一内核启动的情况下扫描多个pci设备1,将多个pci设备的拓扑信息记录到存储器1的预设地址中,处理器1在执行第一内核的代码的过程中接收内核跳转命令时,可根据内核跳转命令接收第二内核的代码,并将其加载至存储器1中,然后停止执行第一内核的代码,执行第二内核的代码以启动第二内核,在第二内核启动的情况下从存储器1的预设地址中获取拓扑信息,实现第一内核的在线更新,整个内核更新过程无需物理机1关闭和重启,而且不需要重复对多个pci设备1进行重复扫描,减少业务中断时长,提高用户的使用体验。
85.进一步的,参考图2实施例可知,与容器11直通多个pci设备130可以是物理设备、物理功能或者虚拟功能。假设在上述例子中,与容器11直通的多个pci设备可以是图2所示的pci设备1划分出的物理功能pf1。在该应用场景下,处理器1接收内核跳转命令后,可以指示pf1将设备状态信息保留设备状态信息,将该状态信息存储于本地的寄存器中,处理器1执行第二内核的代码以启动第二内核,并存存储器1的预设地址中获取拓扑信息后,可以重新获取pf1的设备状态信息,使得pf1可以根据状态信息继承设备状态,而无需再重新进行设备启动和设备初始化。应理解,上述举例用于说明,本技术不作具体限定。
86.可以理解的,图3所示的云数据中心300拥有海量的服务器,内核跳转的需求量很大,使用本技术提供的支持内核在线更新的服务器,在内核更新过程中不仅无需进行服务器重启,避免了云数据中心由于服务器重启带来的繁重运维,并且可以有效减少内核更新所需的时间,避免了云数据中心由于长时间的业务中断,提高用户的使用体验。
87.综上可知,本技术提供的支持内核在线更新的服务器,该服务器中的处理器可以执行内存中的第一内核的代码,将多个pci设备的拓扑信息存储在内存的预设地址中,当处理器停止执行第一内核的代码,执行第二内核的代码后,可以从上述内存的预设地址中获取该拓扑信息,从而免于内核跳转过程中对多个pci设备的重复扫描,减少内核跳转过程中的业务中断时长,提高用户的使用体验。
88.图4是本技术提供的一种支持在线更新的设备的结构示意图。该设备200可以是图1~图3实施例中的服务器100,设备200可包括第一内核210、第二内核220、内存230和多个pci设备240,第一内核210、第二内核220、内存230和多个pci设备240可以通过内部总线相互连接,也可通过无线传输等其他手段实现,其中,总线可以分为地址总线、数据总线、控制总线等,总线可以是pci总线。应理解,图4是一种示例性的划分方式,各个模块单元之间可以合并或者拆分为更多或者更少的模块单元,本技术不作具体的限定,并且,图4中所示的设备和模块之间的位置关系也不构成任何限制。
89.其中,设备200可以是物理服务器,比如x86服务器、arm服务器等等,也可以是基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,nfv)技术
实现的虚拟机(virtual machine,vm),虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,比如云计算中的虚拟设备,本技术不作具体限定。
90.第一内核210和第二内核220是设备200处理器中的内核,其中,第二内核220是对第一内核210进行漏洞修复或功能升级后的内核,换句话说,第一内核210是待更新的内核,第二内核220是已经更新好的内核,使用第二内核220接替第一内核210的工作,可以实现第一内核210的在线更新。值得注意的是,图4中设备200虽然包括了两个内核,但是具体实现中,本技术不对设备200中的内核数量进行限定。
91.多个pci设备240可以是与设备200中的pci总线的扩展插槽相连的pci设备,其具体描述可参考前述图1~图3实施例中的多个pci设备130,这里不重复赘述。其中,图4以多个pci设备240的数量为n个为例进行了说明,具体实现中,本技术不对多个pci设备240的设备数量和类型进行限定。值得注意的是,参考图1~图3实施例可知,多个pci设备240可以是物理设备,也可以是支持sr-iov标准的物理设备中的pf或者vf。其中,sr-iov、pf以及vf的描述可以参考图2实施例,这里不再重复赘述。
92.内存230可以是第一内核210和第二内核220都可以访问的共享内存区域,具体实现可参考前述图1~图3实施例中的内存120的描述,这里不重复赘述。其中,内存230可用于存储第一内核210启动后对pci设备240进行扫描后获得的拓扑信息。拓扑信息用于描述多个pci设备240组成的设备系统的拓扑结构,具体可以是一个数据结构链表。关于拓扑信息的描述可以参考前述图1和图2实施例,这里不重复赘述。
93.在本技术实施例中,第一内核210用于在启动的情况下扫描多个pci设备240,将多个pci设备的拓扑信息记录到内存230的预设地址中,当第一内核210接收到内核跳转命令后,设备200可根据内核跳转命令启动第二内核220,第二内核200用于在启动的情况下从内存230的预设地址中获取上述拓扑信息。
94.具体实现中,第一内核210接收内核跳转命令后,可以接收第二内核的代码,然后将第二内核的代码加载于内存230中,使得第一内核210关闭后,处理器可以执行内存230中的第二内核的代码,实现第二内核220的启动。
95.应理解,服务器200扫描多个pci设备240获得其拓扑信息将会消耗大量时间,本身提供的支持内核在线更新的设备,第一内核210关闭,第二内核220启动后可以从内存230中可获取多个pci设备的拓扑信息,避免了重新扫描多个pci设备所消耗的大量时间,减少内核跳转、更新过程中的业务中断时长,提高用户的使用体验。
96.在一实施例中,第一内核210还可用于根据内核跳转命令,指示多个pci设备240自身保留各自的设备状态信息。具体地,各个pci设备可以将自身的设备状态信息存储在本地的寄存器中,其中,状态信息可包括设备所包括的功能特性的状态,比如sr-iov的状态为开启或关闭。状态信息的详细描述可参考图1~图3实施例,这里不再重复赘述。
97.在一实施例中,第二内核220还用于从内存230中读取拓扑信息后,与多个pci设备240进行重新连接,从每个pci设备读取设备状态信息,由于第一内核210在内核停止运行前并没有关闭多个pci设备240,因此多个pci设备240可以根据状态信息继承设备状态,而无需再重新进行设备初始化,使得第二内核220启动后重连一个pci设备所需的时间由秒级降为毫秒级,进一步减少内核跳转过程中的业务中断时长,提高用户的使用体验。
98.可以理解的,上述内核跳转的过程中,服务器200无需重新扫描多个pci设备,从内存230中可以获取到多个pci设备240的拓扑信息,从而减少内核跳转所需的时间,并且,每个设备通过状态继承可以减少设备初始化所需的时间,从而进一步减少内核跳转所需的时间,提高用户的使用体验。
99.在一实施例中,第一内核210中设置有虚拟实例,该虚拟实例可以是图3实施例中的容器或虚拟机,多个pci设备240中的一者或者任意组合直通至该虚拟实例。应理解,第一内核210设置有虚拟实例的描述可以参考图3实施例,这里不再重复赘述。
100.综上可知,本技术提供的支持内核在线更新的设备,该设备可以在第一内核退出时,将多个pci设备的拓扑信息存储在内存中,并指示每个pci设备将自身的设备状态信息存储在设备本地,这样,第二内核加载和初始化时,可以从内存中获取该设备信息,无需重新扫描多个pci设备,减少第二内核加载和初始化所需的时间,并且,可向每个pci设备获取设备状态信息,使得pci设备可以根据设备状态信息实现状态继承,使得多个pci设备无需重启和初始化,进一步减少内核跳转过程中的业务中断时长,提高用户的使用体验。
101.下面对本技术提供的一种支持内核在线更新的方法进行说明,该方法可应用于如图1~图3所示的服务器100中,也可以应用于如图4所示的设备200中。
102.图5是本技术提供的一种支持内核在线更新的方法的步骤流程示意图,如图5所示,本技术提供的一种支持内核在线更新的方法可包括以下步骤:
103.步骤s310:第一内核启动的情况下扫描多个pci设备,将多个pci设备的拓扑信息记录到内存的预设地址中,其中,拓扑信息包括与服务器相连的多个pci设备的信息。
104.具体实现中,拓扑信息可以是第一内核在内核启动后存储在内存中的,也可以是第一内核在接收到内核跳转指令后存储在内存中的,本技术不作具体限定。应理解,内存和拓扑信息的描述可参考图1~图3实施例,这里不重复赘述。
105.在一实施例中,拓扑信息可以是第一内核在总线上搜索全部设备后获得的,具体可以是一个数据结构链表,用于描述多个pci设备所组成的设备系统的拓扑结构,该数据链表可包括全部设备的编号和位置等信息。
106.具体实现中,pci总线可以通过pci桥(bridge)对总线进行扩展,pci桥可以一端与主干总线(primary bus)相连,另一端与从属总线(subordinate bus)相连,使得二级总线也可以连接更多的pci设备,以此类推,使得多个pci总线和pci桥可以组成一个树形结构,连接大量的pci设备。基于此,pci设备的拓扑信息获取方式可以如下:第一内核可以使用深度优先遍历(depth first search,dfs)算法来对主干总线进行扫描,然后对扫描出的主干总线上连接的每个pci设备和pci桥进行编号,对每个pci桥连接的从属总线进行编号,然后对每条从属总线进行扫描,再对扫描出的从属总线上连接的每个pci设备和pci桥进行编号,以此类推,从而获得拓扑信息。
107.举例来说,如图6所示,图6是一种pci设备系统的结构图,第一内核可以通过以下步骤获得拓扑信息:使用dfs算法对主干总线进行设备扫描和编号,标记主干总线的编号为bus0,对扫描出的主干总线上连接的pci设备和pci桥进行编号,从而将设备1标记为d1,桥1编号为bridge1,桥2编号为bridge2,然后将与桥1连接的从属级总线编号为bus1,与桥2连接的从属总线编号为bus2,对bus1和bus2分别进行设备扫描和编号,对bus1上连接的设备2编号为d2,对bus2上连接的设备3编号为d3,最终获得每个设备的编号以及设备所在总线上
的编号组成的数据结构链表,比如链表1对bus0上的pci设备和pci桥进行表述,链表2对bus1上的pci设备和pci桥进行描述,以此类推,获得图6所示的pci设备系统的拓扑信息。应理解,图6用于举例说明,本技术不作具体限定。
108.可以理解的,第一内核扫描多个pci设备获得拓扑信息的步骤流程较为复杂,需要消耗较长的时间,本技术通过将拓扑信息存储在内存中,第二内核启动后从内存中获取拓扑信息,可以免于第二内核重复对多个pci设备进行扫描,减少内核跳转所需的时间,进而减少业务中断的时间,提高用户的使用体验。
109.步骤s320:第一内核接收内核跳转命令,根据内核跳命令,指示多个pci设备保留各自的设备状态信息。
110.具体地,可以指示多个pci设备将各自的设备状态信息存储在设备本地的寄存器中。其中,状态信息可包括设备所包括的功能特性的状态,比如sr-iov的状态为开启或关闭。状态信息的详细描述可参考前述实施例,这里不重复赘述。
111.值得注意的是,若pci设备是物理设备的vf,那么可以将vf的状态信息和vf的标识号(bus device function,bdf)存储在该物理设备的寄存器中,其中,vf的bdf用以识别与该vf直通的虚拟实例。可以理解的,第一内核停止之前并没有关闭多个pci设备,这样可以使得设备的状态信息保留在设备本地,使得第二内核启动后可以指示各个pci设备根据本地的状态信息进行状态继承,从而免于多个pci设备进行重启和初始化,减少内核跳转过程所需的时间,提高用户的使用体验。
112.步骤s330:第一内核停止运行,第二内核启动。
113.具体实现中,第一内核接收内核跳转命令后,可以接收第二内核的代码,然后将第二内核的代码加载于内存中,使得第一内核关闭后,处理器可以执行内存中的第二内核的代码,实现第二内核的启动。应理解,由于第一内核退出前第二内核还未建立,第一内核无法将第二内核的代码发送给第二内核,因此服务器可以建立一个用于存储起止地址的页表,第一内核将第二内核的代码存储于内存后,可以将第二内核的代码在内存中的起止地址存储于该页表中,处理器可以从该页表中获取起止地址,与内存进行映射,根据内存中的启动信息实现第二内核的启动和初始化。第二内核启动后,还可对第一内核的代码在内存中的空间进行回收,提高内存的利用率。
114.举例来说,如图7所示,第一内核为正在运行的内核,运行过程中,第一内核可将扫描好的pci设备的拓扑信息存储于内存的预设地址中。接着,第一内核可接收内核跳转命令,该内核跳转命令具体可以是kexec命令,根据内核跳转命令,接收第二内核的代码,并将其加载在内存中,其中,第二内核的代码可以是对第一内核的代码进行漏洞修复或功能升级后的代码,然后将第二内核的代码的起始地址存储在预先创建的页表中。第一内核停止后,处理器可以从预先创建的页表中获取第二内核的代码的起始地址,然后从该起始地址处获取第二内核的代码,处理器执行第二内核的代码运行第二内核,然后对第一内核的代码所在的内存空间进行回收,提高内存的利用率。并且,第二内核启动后,可以从上述内存的预设地址中获取拓扑信息,从而免于对多个pci设备进行重复扫描,减少设备扫描所花费的时间,将内核跳转所需的时间缩短数倍,减少内核跳转业务中断时长,提高用户的使用体验。
115.步骤s340:第二内核从内存的预设地址中获取拓扑信息。
116.可以理解的,第二内核从内存中获取拓扑信息,可以避免重复对多个pci设备进行设备扫描,减少设备扫描所花费的时间,将内核跳转所需的时间缩短数倍,减少内核跳转业务中断时长,提高用户的使用体验。
117.步骤s350:第二内核从多个pci设备读取设备状态信息,实现多个pci设备的状态继承。
118.具体实现中,第二内核可根据拓扑信息确定每个pci设备的编号和pci设备所在的pci总线编号和pci桥编号,然后与每个pci设备进行通信,使得每个pci设备可以根据本地的状态信息进行状态继承,比如根据状态信息确定该设备中各个功能的开启情况,若部分功能已经开启,则无需再重复再对部分功能进行功能初始化,使得第二内核启动后,单个pci设备的状态初始化时间由秒级缩短到毫秒级,对于多个设备来说,内核跳转所需的时长降低更加明显,提高用户的使用体验。
119.在一些实施例中,若部分设备无法将状态信息存储在本地,此时也可以停止多个pci设备,然后退出第一内核,第二内核根据拓扑信息完成第二内核的初始化,多个pci设备可以重新进行初始化,不进行状态继承,本技术不作具体限定。
120.在一实施例中,第一内核中设置有虚拟实例,该虚拟实例可以是图3实施例中的容器或虚拟机,多个pci设备中的一者或者任意组合直通至该虚拟实例。应理解,第一内核设置有虚拟实例的例子可以参考图3实施例,这里不再重复赘述。
121.可以理解的,使用本技术提供的方法对服务器进行内核的在线更新,可以使得第一内核和第二内核的跳转过程所需的时间明显减少,使得第一内核更新和修复的效率提高,无论是单个服务器还是云环境中的内核更新,不但可以避免服务器重启,而且可以避免内核跳转所造成的长时间业务中断,提高用户的使用体验。
122.综上可知,本技术提供的支持内核在线更新的方法,可以在第一内核退出时,将多个pci设备的拓扑信息存储在内存中,并指示每个pci设备将自身的设备状态信息存储在设备本地,这样,第二内核加载和初始化时,可以从内存中获取该设备信息,无需重新扫描多个pci设备,减少第二内核加载和初始化所需的时间,并且,可向每个pci设备获取设备状态信息,使得pci设备可以根据设备状态信息实现状态继承,使得多个pci设备无需重启和初始化,进一步减少内核跳转过程中的业务中断时长,提高用户的使用体验。
123.图8是本技术提供的一种计算设备800的结构示意图。其中,计算设备800可以是图1-图7中的服务器100或设备200。如图8所示,计算设备800包括:处理器810、通信接口820以及存储器830。其中,处理器810、通信接口820以及存储器830可以通过内部总线840相互连接,也可通过无线传输等其他手段实现通信。本技术实施例以通过总线连接为例,总线可以是pci总线。总线840可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
124.处理器810以由至少一个通用处理器构成,例如cpu,或者cpu和硬件芯片的组合。上述硬件芯片可以是asic、pld或其组合。上述pld可以是cpld、fpga、gal或其任意组合。处理器230执行各种类型的数字存储指令,例如存储存储器830中的软件或者固件程序,它能使计算设备800提供多种服务。处理器830可以是图1实施例中的处理器110。
125.存储器830用于存储程序代码,并由处理器810来控制执行,以执行上述实施例中服务器100或者设备200的处理步骤。程序代码中可以包括一个或多个软件模块,这一个或
多个软件模块可以为图4实施例中提供的软件模块,如第一内核和第二内核,其中,第一内核用于在启动的情况下扫描多个pci设备,将多个pci设备的拓扑信息记录到内存的预设地址中,第一内核还用于接收内核跳转命令,根据内核跳转命令启动第二内核;第二内核用于在启动的情况下从内存的预设地址中获取拓扑信息。具体可用于执行图5实施例中的s310-步骤s350及其可选步骤,还可以用于执行图1-图7实施例描述的其他由服务器100或设备200执行的步骤,这里不再进行赘述。
126.存储器830可以包括易失性存储器,例如ram、dram、sram、sdram、ddr、cache等等,存储器830还可以包括上述种类的组合。存储器830可以是前述图1实施例中的内存120,这里不重复展开赘述。
127.通信接口820可以为有线接口(例如以太网接口),可以为内部接口(例如pci总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与与其他设备或模块进行通信。
128.需要说明的是,本实施例可以是通用的物理服务器实现的,例如,arm服务器或者x86服务器,也可以是基于通用的物理服务器结合nfv技术实现的虚拟机实现的,虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,比如在本实施例可以在云计算基础设施上实现,在云计算基础设施上实现的具体过程可以参考图3实施例,这不重复赘述。
129.需要说明的,图8仅仅是本技术实施例的一种可能的实现方式,实际应用中,计算设备800还可以包括更多或更少的部件,这里不作限制。关于本技术实施例中未示出或未描述的内容,可参见前述图1-图7实施例中的相关阐述,这里不再赘述。
130.应理解,图8所示的计算设备还可以是至少一个物理服务器构成的计算机集群,具体可参考图3实施例,为了避免重复,此处不再赘述。
131.本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在处理器上运行时,图1-图7所示的方法流程得以实现。
132.本技术实施例还提供一种计算机程序产品,当计算机程序产品在处理器上运行时,图1-图7所示的方法流程得以实现。
133.上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含至少一个可用介质集合的服务器、数据中心等数据存储节点。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,dvd)、或者半导体介质。半导体介质可以是ssd。
134.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉
本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1