CN107515774B - 一种在线替换虚拟操作***底层块设备驱动的方法和装置 - Google Patents
一种在线替换虚拟操作***底层块设备驱动的方法和装置 Download PDFInfo
- Publication number
- CN107515774B CN107515774B CN201610425744.7A CN201610425744A CN107515774B CN 107515774 B CN107515774 B CN 107515774B CN 201610425744 A CN201610425744 A CN 201610425744A CN 107515774 B CN107515774 B CN 107515774B
- Authority
- CN
- China
- Prior art keywords
- driving state
- block
- block device
- structural body
- device driving
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
本申请提出一种在线替换虚拟操作***底层块设备驱动的方法和装置,涉及云计算产品领域,包括:构造第二块设备驱动状态结构体;确定第一块设备驱动状态结构体对应后端设备的输入/输出I/O完成;交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息。本发明使得I/O数据能从一类底层块设备驱动切换到另一类底层块设备驱动,在两类设备中自由切换而不影响虚拟机运行状况,大大提高了整套QEMU‑KVM虚拟化产品***的灵活性和可维护性。
Description
技术领域
本发明涉及云计算产品领域,具体涉及一种在线替换虚拟操作***底层块设备驱动的方法和装置。
背景技术
虚拟操作***QEMU是一款现有的模拟处理器产品,可以使用QEMU模拟一整套计算机硬件,并可以在虚拟硬件上运行一个完整的操作***以及各种程序。通常QEMU与现有的KVM(Kernel-based Virtual Machine,基于内核的虚拟机)虚拟化产品相互配合使用,被称为QEMU-KVM。
块设备是输入/输出设备中的一种,块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其他块而读写(即允许随机访问)。磁盘是最常见的块设备,比如一块普通的SATA(Serial Advanced Technology Attachment,串行高级技术附件)数据磁盘。
对于QEMU来说,其模拟的计算机硬件组件中,也包括了块设备,如若在虚拟机操作***里面使用这个块设备,就需要QEMU具备对应的底层块设备驱动(Block Drivers)。QEMU使用的块设备驱动来源包括但不局限于下列组件:
(1)保存在宿主机上的,以特定文件格式组织的文件。例如:qcow2格式,或者raw格式的文件;
(2)宿主机上的磁盘。
(3)分布式文件***。通常分布式文件***对外提供了一个网络协议接口,或者一个虚拟块设备接口。常见的分布式文件***有开源的Ceph***,以及阿里云的盘古***等。
QEMU模拟的底层块设备驱动是通过被称为“块设备驱动状态(Block DriverState,BDS)”的数据结构体来实现和表达的。一个BDS的结构体成员信息通常包含了其对应的设备接口上的设备名称、属性和标志位,以及设备的开关和操作方法等部分。
在大型的分布式产品实践中,一个分布式存储***可能提供了两套底层块设备驱动接口:分别是经由网络协议的分布式文件***接口和虚拟块设备的接口。在阿里云产品实践中,在虚拟块设备接口上提供了一个带缓存功能的组件以提供较快的I/O处理速度,因此此路径被称为快速I/O路径;而经由网络协议的分布式文件***接口保留了较慢的I/O处理速度,因此此路径为慢速I/O路径。在包含但不局限于下列情况下,其中一条路径可能会失效:
A、正常的从慢速I/O路径向快速I/O路径切换;
B、其中一套接口发生代码BUG,导致I/O路径不可用;
C、对其中一条路径上包含的代码组件进行热升级。
因此产生了对在线替换QEMU底层块设备驱动的需求。
已有的切换底层块设备驱动的方法中,有一个类似的方法,提供了两个文件的切换,具体来说,一个文件为虚拟机数据镜像,另一个为其快照增量,此两个文件分别为存放于宿主机上的虚拟机数据镜像,以及此镜像的增量快照。因此,此方法可以用于切换虚拟机的快照。此方法并不适用其他的底层块设备类型(如:磁盘、分布式存储***),因此不具备在多种底层块设备类型之间切换的能力。
发明内容
本发明提供一种在线替换虚拟操作***底层块设备驱动的方法和装置,实现I/O数据从一类底层块设备驱动切换到另一类底层块设备驱动。
为了实现上述发明目的,本发明采取的技术方案如下:
一种在线替换虚拟操作***底层块设备驱动的方法,包括:
构造第二块设备驱动状态结构体;
确定第一块设备驱动状态结构体对应后端设备的输入/输出I/O完成;
交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息。
优选地,所述方法之后还包括:
确定所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息交换状态;
当所述交换状态为交换成功时,关闭原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象;
当所述交换状态为交换失败时,恢复原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象。
优选地,构造第二块设备驱动状态块设备驱动状态结构体包括:
新建一个空的块设备驱动状态结构体作为第二块设备驱动状态结构体的框架;
获取所述第二块设备驱动状态结构体对应的输入/输出I/O路径上的块设备信息;
将所述块设备信息传递给所述空的块设备驱动状态结构体;
调用所述块设备信息对应的打开函数,将所述第二块设备驱动状态结构体打开,构造所述第二块设备驱动状态结构体。
优选地,确定第一块设备驱动状态块设备驱动状态结构体对应后端设备的输入/输出I/O完成包括:
停止所述第一块设备驱动状态结构体对应的输入/输出I/O路径接收下发的I/O数据流;
处理已经下发到所述第一块设备驱动状态结构体对应的输入/输出I/O路径上的I/O数据流,并等待所述I/O数据流执行完成。
优选地,交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息包括:
遍历所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息,依次交换所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息,并保持虚拟操作***QEMU对所述第一块设备驱动状态和第二块设备驱动状态结构体的引用不变。
本发明实施例还提供一种在线替换虚拟操作***底层块设备驱动的装置,包括:
构造模块,设置为构造第二块设备驱动状态结构体;
截流模块,设置为确定第一块设备驱动状态结构体对应后端设备的输入/输出I/O完成;
交换模块,设置为交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息。
优选地,所述的装置还包括:
状态模块,设置为确定所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息交换状态;
所述状态模块包括关闭单元和恢复单元,
所述关闭单元,设置为当所述交换状态为交换成功时,关闭原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象;
所述恢复单元,设置为当所述交换状态为交换失败时,恢复原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象。
优选地,所述构造模块包括:
新建单元,设置为新建一个空的块设备驱动状态结构体作为第二块设备驱动状态结构体的框架;
获取单元,设置为获取所述第二块设备驱动状态结构体对应的输入/输出I/O路径上的块设备信息;
传递模块,设置为将所述块设备信息传递给所述空的块设备驱动状态结构体;
打开单元,设置为调用所述块设备信息对应的打开函数,将所述第二块设备驱动状态结构体打开,构造所述第二块设备驱动状态结构体。
优选地,所述截流模块包括:
截断单元,设置为停止所述第一块设备驱动状态结构体对应的输入/输出I/O路径接收下发的I/O数据流;
等待单元,设置为处理已经下发到所述第一块设备驱动状态结构体对应的输入/输出I/O路径上的I/O数据流,并等待所述I/O数据流执行完成。
优选地,所述交换模块包括:
遍历单元,设置为遍历所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息;
互换单元,设置为依次交换所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息;并保持虚拟操作***QEMU对所述第一块设备驱动状态和第二块设备驱动状态结构体的引用不变。
本发明和现有技术相比,具有如下有益效果:
本发明使得I/O数据能从一类底层块设备驱动切换到另一类底层块设备驱动,并且不影响虚拟机现有的运行状况。本发明的技术方案提供了在线替换QEMU底层块设备驱动的方法,使I/O路径可以在两类设备中自由切换而不影响虚拟机运行状况,大大提高了整套QEMU-KVM虚拟化产品***的灵活性和可维护性。
附图说明
图1为相关技术慢速路径的示意图;
图2为相关技术快速路径的示意图;
图3为本发明实施例的在线替换虚拟操作***底层块设备驱动的方法的流程图;
图4为本发明实施例的在线替换虚拟操作***底层块设备驱动的装置的结构示意图;
图5为本发明实施例的慢速路径切换为快速路径的示意图。
具体实施方式
为使本发明的发明目的、技术方案和有益效果更加清楚明了,下面结合附图对本发明的实施例进行说明,需要说明的是,在不冲突的情况下,本申请中的实施例和实施例中的特征可以相互任意组合。
如图1所示,QEMU提供了一个基于网络协议接口的底层块设备驱动,建立了从虚拟机到分布式存储的I/O链路,此路径不包含任何缓存组件功能,此为慢速路径;
如图2所示,QEMU提供了一个基于带缓存功能的虚拟块设备接口的底层块设备驱动,也可以建立从虚拟机经由高速缓存组件并到达分布式存储后端的I/O链路,此为快速路径;
在相关技术中,只能固定选择图1或者图2中的单一条路径来处理I/O,在使用了本发明提供的切换技术后,可以在不影响虚拟机运行的情况下,在线将I/O路径从图1切换到图2所示的I/O路径,完成从慢速路径向快速路径的切换,反之亦然。
如图3所示,本发明实施例提供一种在线替换虚拟操作***底层块设备驱动的方法,包括:
S101、构造第二块设备驱动状态BDS结构体;
S102、确定第一块设备驱动状态BDS结构体对应后端设备的输入/输出I/O完成;
S103、交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息。
本发明实施例中的步骤S101中构造第二块设备驱动状态BDS结构体的目的是连接带缓存的虚拟块设备接口。本发明实施例中的成员信息除去背景技术中涉及的通用结构体成员信息,在本发明中还增加了两个结构体之间的相互引用方法,这部分信息也是要被交换的。
所述方法之后还包括:
S104、确定所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息交换状态;
当所述交换状态为交换成功时,关闭原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象;
当所述交换状态为交换失败时,恢复原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象。
BDS结构体在QEMU代码中为struct BlockDriverState结构体,其包含多个成员信息,例如设备名称、设备对象的指针引用等。
步骤S101具体包括:
新建一个空的块设备驱动状态结构体作为第二块设备驱动状态结构体的框架;
获取所述第二块设备驱动状态结构体对应的输入/输出I/O路径上的块设备信息;
将所述块设备信息传递给所述空的块设备驱动状态结构体;
调用所述块设备信息对应的打开函数,将所述第二块设备驱动状态结构体打开,构造所述第二块设备驱动状态结构体。
其中,块设备信息包括块设备名称等信息。
步骤S102具体包括:
停止所述第一块设备驱动状态结构体对应的输入/输出I/O路径接收下发的I/O数据流;
处理已经下发到所述第一块设备驱动状态结构体对应的输入/输出I/O路径上的I/O数据流,并等待所述I/O数据流执行完成。
步骤S103具体包括:
遍历所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息,依次交换所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息,并保持虚拟操作***QEMU对所述第一块设备驱动状态和第二块设备驱动状态结构体的引用不变。
本发明实施例在所述第一BDS和第二BDS包含的成员信息交换之后,QEMU使用的第一BDS,已经变成了第二BDS的成员信息的内容,第二BDS已经变成了第一BDS的成员信息的内容,但是QEMU对两个BDS的引用没有变化,因此实现所述第一BDS和第二BDS包含的成员信息相互交换。
如图4所示,一种在线替换虚拟操作***底层块设备驱动的装置,包括:
构造模块,设置为构造第二块设备驱动状态BDS结构体;
截流模块,设置为确定第一块设备驱动状态结构体对应后端设备的输入/输出I/O完成;
交换模块,设置为交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息。
所述的装置还包括:
状态模块,设置为确定所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息交换状态;
所述状态模块包括关闭单元和恢复单元,
所述关闭单元,设置为当所述交换状态为交换成功时,关闭原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象;
所述恢复单元,设置为当所述交换状态为交换失败时,恢复原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象。
所述构造模块包括:
新建单元,设置为新建一个空的块设备驱动状态结构体作为第二块设备驱动状态结构体的框架;
获取单元,设置为获取所述第二块设备驱动状态结构体对应的输入/输出I/O路径上的块设备信息;
传递模块,设置为将所述块设备信息传递给所述空的块设备驱动状态结构体;
打开单元,设置为调用所述块设备信息对应的打开函数,将所述第二块设备驱动状态结构体打开,构造所述第二块设备驱动状态结构体。
所述截流模块包括:
截断单元,设置为停止所述第一块设备驱动状态结构体对应的输入/输出I/O路径接收下发的I/O数据流;
等待单元,设置为处理已经下发到所述第一块设备驱动状态结构体对应的输入/输出I/O路径上的I/O数据流,并等待所述I/O数据流执行完成。
所述交换模块包括:
遍历单元,设置为遍历所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息;
互换单元,设置为依次交换所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息;并保持虚拟操作***QEMU对所述第一块设备驱动状态和第二块设备驱动状态结构体的引用不变。
实施例1
如图5所示,本发明实施例以第一BDS切换为第二BDS为例,说明在线替换虚拟操作***底层块设备驱动的方法的步骤:
图1所示QEMU使用经由分布式网络协议接口的分布式后端存储对应的底层块设备驱动为第一BDS;图2所示QEMU使用经由标准块设备接口的本地高速块设备文件对应的底层块设备驱动为第二BDS。和传统的BDS结构体类似,我们构造的两个BDS结构体都需要包含对应的块设备名称,例如第一BDS的块设备名称为:network://remote_uri/dev1,第二BDS的块设备名称为:/dev/vrdev1;和传统的BDS结构体不同之处在于,我们构造的两个BDS额外包含了两个新的成员信息,分别是:a)即将用于替换本设备的BDS的结构体指针引用,在这个例子中,第一和第二BDS会相互引用对方的BDS指针;b)即将用于替换本设备的BDS的块设备名称,在这个例子中,第一BDS的替换BDS块设备名称就是“/dev/vrdev1”.
首先,构造合适的第二BDS结构体,所述结构体中包含了最关键的部分,即快速路径上的高速块设备文件名称,在这个例子中,即为”/dev/vrdev1”。QEMU通过调用bdrv_new()函数创建一个空的BDS结构体,将这个设备名传递给新的BDS结构体后,调用块设备文件对应的打开函数bdrv_open(),将第二BDS结构体打开就绪,完成第二BDS结构体的构造。
然后,等待已经发生但未结束的I/O,其包括两个步骤,首先暂停新的I/O数据流下发(即“截流”),然后等待第一BDS上的I/O数据流完成(即“流干”)。两个步骤缺一不可:不截流,则一直会有新的I/O数据流下发,以致数据无法流干;不等待I/O数据流流干而提早进行下一步,则切换了I/O路径后,这部分I/O将无法返回,因为第一BDS所处的I/O路径届时已经销毁无法使用了。
再然后,第一BDS和第二BDS的交换。交换的是第一BDS和第二BDS包含的成员信息,而QEMU对所述第一BDS和第二BDS结构体的引用保持不变。QEMU通过调用bdrv_swap()函数完成两个BDS结构体成员信息的交换。在交换完成之后,QEMU仍然去原有的地址空间寻找BDS结构体,而这个结构体对应的成员内容已经被更新为崭新的成员。
最后,清理工作,如果交换成功,则关闭原有的BDS结构体,当I/O下发的时候,由于BDS结构体已经更新,I/O将会被调度到高速块设备文件中;如果交换失败了,则会发生回滚动作,BDS结构体将会恢复到切换之前的内容,I/O继续使用原有的路径。
实施例二
如图5所示,本发明实施例以高速块设备文件对应的BDS切换为分布式存储对应的BDS为例,说明在线替换虚拟操作***底层块设备驱动的方法的步骤:
首先,构造合适的分布式存储对应的BDS结构体,所述结构体中包含了最关键的部分,即快速路径上的高速块设备文件的设备名。QEMU创建一个空的BDS结构体,将这个设备名传递给新的BDS结构体后,调用块设备文件对应的打开函数,将分布式存储对应的BDS结构体打开就绪,完成分布式存储对应的BDS结构体的构造。
然后,等待已经发生但未结束的I/O,其包括两个步骤,首先暂停新的I/O数据流下发(即“截流”),然后等待高速块设备文件对应的BDS上的I/O数据流完成(即“流干”)。两个步骤缺一不可:不截流,则一直会有新的I/O数据流下发,以致数据无法流干;不等待I/O数据流流干而提早进行下一步,则切换了I/O路径后,这部分I/O将无法返回,因为高速块设备文件对应的BDS所处的I/O路径届时已经销毁无法使用了。
再然后,高速块设备文件对应的BDS和分布式存储对应的BDS的交换。交换的是高速块设备文件对应的BDS和分布式存储对应的BDS包含的成员信息,而QEMU对所述高速块设备文件对应的BDS和分布式存储对应的BDS结构体的引用保持不变。在交换完成之后,QEMU仍然去原有的地址空间寻找BDS结构体,而这个结构体对应的成员内容已经被更新为崭新的成员。
最后,清理工作,如果交换成功,则关闭原有的BDS结构体对象,当I/O下发的时候,由于BDS结构体已经更新,I/O将会被调度到高速块设备文件中;如果交换失败了,则会发生回滚动作,BDS结构体将会恢复到切换之前的内容,I/O继续使用原有的路径。
虽然本发明所揭示的实施方式如上,但其内容只是为了便于理解本发明的技术方案而采用的实施方式,并非用于限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭示的核心技术方案的前提下,可以在实施的形式和细节上做任何修改与变化,但本发明所限定的保护范围,仍须以所附的权利要求书限定的范围为准。
Claims (8)
1.一种在线替换虚拟操作***底层块设备驱动的方法,其特征在于,包括:
构造第二块设备驱动状态结构体,包括:
新建一个空的块设备驱动状态结构体作为所述第二块设备驱动状态结构体的框架;
获取所述第二块设备驱动状态结构体对应的输入/输出I/O路径上的块设备信息;
将所述块设备信息传递给所述空的块设备驱动状态结构体;
调用所述块设备信息对应的打开函数,将所述第二块设备驱动状态结构体打开,构造所述第二块设备驱动状态结构体;
确定第一块设备驱动状态结构体对应后端设备的输入/输出I/O完成;
交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息。
2.如权利要求1所述的方法,其特征在于:所述方法之后还包括:
确定所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息交换状态;
当所述交换状态为交换成功时,关闭原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象;
当所述交换状态为交换失败时,恢复原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象。
3.如权利要求1所述的方法,其特征在于:确定第一块设备驱动状态块设备驱动状态结构体对应后端设备的输入/输出I/O完成包括:
停止所述第一块设备驱动状态结构体对应的输入/输出I/O路径接收下发的I/O数据流;
处理已经下发到所述第一块设备驱动状态结构体对应的输入/输出I/O路径上的I/O数据流,并等待所述I/O数据流执行完成。
4.如权利要求1所述的方法,其特征在于:交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息包括:
遍历所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息,依次交换所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息,并保持虚拟操作***QEMU对所述第一块设备驱动状态和第二块设备驱动状态结构体的引用不变。
5.一种在线替换虚拟操作***底层块设备驱动的装置,其特征在于,包括:
构造模块,设置为构造第二块设备驱动状态结构体;
所述构造模块包括:
新建单元,设置为新建一个空的块设备驱动状态结构体作为第二块设备驱动状态结构体的框架;
获取单元,设置为获取所述第二块设备驱动状态结构体对应的输入/输出I/O路径上的块设备信息;
传递模块,设置为将所述块设备信息传递给所述空的块设备驱动状态结构体;
打开单元,设置为调用所述块设备信息对应的打开函数,将所述第二块设备驱动状态结构体打开,构造所述第二块设备驱动状态结构体;
截流模块,设置为确定第一块设备驱动状态结构体对应后端设备的输入/输出I/O完成;
交换模块,设置为交换所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息。
6.如权利要求5所述的装置,其特征在于:还包括:
状态模块,设置为确定所述第一块设备驱动状态结构体和所述第二块设备驱动状态结构体的成员信息交换状态;
所述状态模块包括关闭单元和恢复单元,
所述关闭单元,设置为当所述交换状态为交换成功时,关闭原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象;
所述恢复单元,设置为当所述交换状态为交换失败时,恢复原有的第一块设备驱动状态结构体和第二块设备驱动状态结构体对象。
7.如权利要求5所述的装置,其特征在于:所述截流模块包括:
截断单元,设置为停止所述第一块设备驱动状态结构体对应的输入/输出I/O路径接收下发的I/O数据流;
等待单元,设置为处理已经下发到所述第一块设备驱动状态结构体对应的输入/输出I/O路径上的I/O数据流,并等待所述I/O数据流执行完成。
8.如权利要求5所述的装置,其特征在于:所述交换模块包括:
遍历单元,设置为遍历所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息;
互换单元,设置为依次交换所述第一块设备驱动状态和第二块设备驱动状态包含的成员信息;并保持虚拟操作***QEMU对所述第一块设备驱动状态和第二块设备驱动状态结构体的引用不变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610425744.7A CN107515774B (zh) | 2016-06-15 | 2016-06-15 | 一种在线替换虚拟操作***底层块设备驱动的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610425744.7A CN107515774B (zh) | 2016-06-15 | 2016-06-15 | 一种在线替换虚拟操作***底层块设备驱动的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107515774A CN107515774A (zh) | 2017-12-26 |
CN107515774B true CN107515774B (zh) | 2021-02-05 |
Family
ID=60719999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610425744.7A Active CN107515774B (zh) | 2016-06-15 | 2016-06-15 | 一种在线替换虚拟操作***底层块设备驱动的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107515774B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063585A (zh) * | 2010-10-29 | 2011-05-18 | 华南理工大学 | 一种基于Xen的安全的虚拟磁盘的访问控制方法 |
CN102799483A (zh) * | 2012-06-28 | 2012-11-28 | 北京奇虎科技有限公司 | 一种用于转换操作***运行环境的方法和装置 |
CN105279010A (zh) * | 2015-10-20 | 2016-01-27 | 华为技术有限公司 | 基于虚拟机的设备热替换方法及装置 |
-
2016
- 2016-06-15 CN CN201610425744.7A patent/CN107515774B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063585A (zh) * | 2010-10-29 | 2011-05-18 | 华南理工大学 | 一种基于Xen的安全的虚拟磁盘的访问控制方法 |
CN102799483A (zh) * | 2012-06-28 | 2012-11-28 | 北京奇虎科技有限公司 | 一种用于转换操作***运行环境的方法和装置 |
CN105279010A (zh) * | 2015-10-20 | 2016-01-27 | 华为技术有限公司 | 基于虚拟机的设备热替换方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107515774A (zh) | 2017-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103562878B (zh) | 在镜像虚拟机***中的存储器检查点设置 | |
US9304804B2 (en) | Replicating virtual machines across different virtualization platforms | |
US9588787B2 (en) | Runtime virtual process creation for load sharing | |
DE102012218379B4 (de) | Paravirtualisierte virtuelle GPU | |
CN102341786B (zh) | 改变对网络访问的方法和设备 | |
US20080162800A1 (en) | Computer, Control Method for Virtual Device, and Program Thereof | |
US10802766B2 (en) | Database with NVDIMM as persistent storage | |
CN104871493A (zh) | 高性能计算(hpc)网络中的通信信道故障切换 | |
US8612973B2 (en) | Method and system for handling interrupts within computer system during hardware resource migration | |
US9529618B2 (en) | Migrating processes between source host and destination host using a shared virtual file system | |
CN105612498A (zh) | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** | |
CN105700944A (zh) | 虚拟机没有共享存储条件下的在线迁移方法和装置 | |
CN106095622A (zh) | 数据备份方法及装置 | |
CN101243396A (zh) | 用于在虚拟化环境中支持通用串行总线装置的方法和设备 | |
CN109656646B (zh) | 一种远程桌面控制方法、装置、设备及虚拟化芯片 | |
US9471366B2 (en) | Virtual machine disk image backup using block allocation area | |
US8732427B2 (en) | Systems and methods for collapsing a derivative version of a primary storage volume | |
CN104679662A (zh) | 用于管理共享存储器的方法和*** | |
CN112328365A (zh) | 一种虚拟机迁移方法、装置、设备及存储介质 | |
WO2019079128A1 (en) | REMAPPING VIRTUAL DEVICES FOR VIRTUAL MACHINES | |
CN104951244B (zh) | 用于存取数据的方法和设备 | |
US10698637B2 (en) | Stale block resynchronization in NVM based systems | |
CN106201564B (zh) | 在线升级基于内核虚拟机模块的设备和方法 | |
US20210232383A1 (en) | Virtual machine update while keeping devices attached to the virtual machine | |
CN106598696A (zh) | 一种虚拟机之间数据交互的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230613 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |