一种虚拟机配置中设备地址的分配方法和装置与流程

文档序号:11154584阅读:358来源:国知局
一种虚拟机配置中设备地址的分配方法和装置与制造工艺

本发明属于云计算技术领域,特别是涉及一种虚拟机配置中设备地址的分配方法和装置。



背景技术:

在虚拟机的配置中,会有很多虚拟设备,包括磁盘、网卡、显卡及声卡等,在这些设备的配置文件描述中,有一个可供选择的子选项设备地址(address),用来描述对应的虚拟机设备在虚拟总线上的位置,每一个设备地址都有一个必须的参数type,表示该设备在何种总线上,设备的地址类型是根据设备本身以及虚拟机的架构来决定的,例如控制器、网卡、显卡、virtio接口类型的磁盘等的地址类型为pci,而ide以及scsi接口类型的磁盘的地址类型为drive。pci类型的地址有如下可选参数,分别为domain(两位十六进制整数,qemu一般不用这一参数,默认为0x00)、bus(一个介于0~0xff的十六进制整数)、slot(一个介于0x0~0x1f的十六进制整数)、function(一个介于0~7的整数);drive类型的地址有如下可选参数:controller(控制器号)、bus(总线号)、target(目的号)、(总线上的单位编号)。控制器分为两种,模式分别为pci-root和pci-bridge,pci-root控制器有且只有一个,并且虚拟机的一些基础设备都位于最初的这个pci-root的控制器上,它相当于虚拟机最初的一个控制设备,而模式为pci-bridge的控制器用来扩展pci-root,由于pci-root最大只支持32个设备地址(它本身没有设备地址),因此为了能够让虚拟机支持更多的硬件设备,利用pci-bridge模式的控制器,便可以将pci-root的其中一个设备地址扩展成额外的32个地址,以此来实现虚拟机硬件设备的扩展。

如果在建立虚拟机时没有对设备地址中的各项属性进行指定,libvirt会在虚拟机开机时自动生成一个合适的地址,来描述该设备所在位置,然而对自动生成设备地址的虚拟机进行内存快照的操作时,由于快照中的设备地址已经由libvirt自动分配,与最初的虚拟机配置文件(还没有指定具体设备地址)不相匹配,会出现内存快照恢复失败的问题,还会导致scsi磁盘作为系统盘无法开机,因此需要在虚拟机创建之前,手动指定虚拟机中各项设备的总线地址,然而在虚拟机创建之后各项硬件配置会有改动,例如热添加磁盘、网卡设备等,还可能造成设备地址管理混乱。



技术实现要素:

为解决上述问题,本发明提供了一种虚拟机配置中设备地址的分配方法和装置,将虚拟机中的各个设备地址按照规则进行分配,能够避免内存快照恢复失败和scsi磁盘作为系统盘无法开机的问题。

本发明提供的一种虚拟机配置中设备地址的分配方法,包括:

根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量;

为固有硬件设备分配固定设备地址;

为ide和scsi接口类型的磁盘分配设备地址;

为网卡和virtio接口类型的磁盘分配设备地址。

优选的,在上述虚拟机配置中设备地址的分配方法中,所述根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量为:

根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类包括pci-root控制器、pci-bridge控制器、提供ide类型设备地址的控制器以及提供scsi类型设备地址的控制器。

优选的,在上述虚拟机配置中设备地址的分配方法中,所述为固有硬件设备分配固定设备地址为:

将bus=0,slot=0x01~0x10,function=0,domain=0的地址分配给所述固有硬件设备。

优选的,在上述虚拟机配置中设备地址的分配方法中,所述为ide和scsi接口类型的磁盘分配设备地址包括:

为所述ide接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0;controller=0,target=0,bus=0,unit=1;controller=0,target=0,bus=1,unit=0;controller=0,target=0,bus=1,unit=1;

为所述scsi接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0~31,而且,当所述scsi接口类型的磁盘为虚拟机系统盘时,则将其设备地址分配为controller=0,target=0,bus=0,unit=0。

优选的,在上述虚拟机配置中设备地址的分配方法中,所述为网卡和virtio接口类型的磁盘分配设备地址包括:

为所述网卡分配的设备地址为bus=0,slot=0x11~0x1f,function=0,domain=0;

为所述virtio接口类型的磁盘分配的设备地址为所述pci-bridge控制器上的bus=1,slot=0x00~0x1f,function=0,domain=0。

本发明提供的一种虚拟机配置中设备地址的分配装置,包括:

确定单元,用于根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量;

第一地址分配单元,用于为固有硬件设备分配固定设备地址;

第二地址分配单元,用于为ide和scsi接口类型的磁盘分配设备地址;

第三地址分配单元,用于为网卡和virtio接口类型的磁盘分配设备地址。

优选的,在上述虚拟机配置中设备地址的分配装置中,所述确定单元具体用于根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类包括pci-root控制器、pci-bridge控制器、提供ide类型设备地址的控制器以及提供scsi类型设备地址的控制器。

优选的,在上述虚拟机配置中设备地址的分配装置中,所述为第一地址分配单元具体用于:

将bus=0,slot=0x01~0x10,function=0,domain=0的地址分配给所述固有硬件设备。

优选的,在上述虚拟机配置中设备地址的分配装置中,所述第二地址分配单元具体用于:

为所述ide接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0;controller=0,target=0,bus=0,unit=1;controller=0,target=0,bus=1,unit=0;controller=0,target=0,bus=1,unit=1;

为所述scsi接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0~31,而且,当所述scsi接口类型的磁盘为虚拟机系统盘时,则将其设备地址分配为controller=0,target=0,bus=0,unit=0。

优选的,在上述虚拟机配置中设备地址的分配装置中,所述第三地址分配单元具体用于:

为所述网卡分配的设备地址为bus=0,slot=0x11~0x1f,function=0,domain=0;

为所述virtio接口类型的磁盘分配的设备地址为所述pci-bridge控制器上的bus=1,slot=0x00~0x1f,function=0,domain=0。

通过上述描述可知,本发明提供的上述虚拟机配置中设备地址的分配方法和装置,由于该方法包括:根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量;为固有硬件设备分配固定设备地址;为ide和scsi接口类型的磁盘分配设备地址;为网卡和virtio接口类型的磁盘分配设备地址,将虚拟机中的各个设备地址按照规则进行分配,因此能够避免内存快照恢复失败和scsi磁盘作为系统盘无法开机的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的第一种虚拟机配置中设备地址的分配方法的示意图;

图2为本申请实施例提供的第一种虚拟机配置中设备地址的分配装置的示意图。

具体实施方式

本发明的核心思想在于提供一种虚拟机配置中设备地址的分配方法和装置,将虚拟机中的各个设备地址按照规则进行分配,能够避免内存快照恢复失败和scsi磁盘作为系统盘无法开机的问题。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请实施例提供的第一种虚拟机配置中设备地址的分配方法如图1所示,图1为本申请实施例提供的第一种虚拟机配置中设备地址的分配方法的示意图,该方法包括如下步骤:

S1:根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量;

需要说明的是,根据实际需求来规划虚拟机所需硬件设备的最大数量,以此来确定设备地址中controller(控制器)的数量,以使所有硬件设备都有足够的地址去安装。

S2:为固有硬件设备分配固定设备地址;

需要说明的是,这里所述的固有硬件设备包括显卡、声卡、内存气球以及控制器等设备,这些设备位于PCI-ROOT这一根控制器上,需要为其分配固定地址。

S3:为ide和scsi接口类型的磁盘分配设备地址;

需要说明的是,由于ide和scsi接口类型的磁盘设备地址中的各项参数和其他设备的参数是不同的,因此需要对这两类接口类型的磁盘单独设定设备地址,并且ide接口类型的磁盘最大只支持4个,所以该类型磁盘的设备地址是四个固定的地址。

S4:为网卡和virtio接口类型的磁盘分配设备地址。

需要说明的是,virtio接口类型的磁盘以及网卡可以分配很多个,它们的数量由步骤S1中的控制器数量所决定,因此需要在步骤S1中规划出虚拟机所需求的磁盘以及网卡的最大数量。由于这两类设备可以有多个,并且设备地址类型均为pci,因此可以为这两类设备根据控制器数量分配对应的地址范围,以区别两类不同的设备,方便日后管理,但这里并不限制于此,还可以不进行地址范围的区分。

通过上述描述可知,本申请实施例提供的上述第一种虚拟机配置中设备地址的分配方法,由于包括:根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量;为固有硬件设备分配固定设备地址;为ide和scsi接口类型的磁盘分配设备地址;为网卡和virtio接口类型的磁盘分配设备地址,将虚拟机中的各个设备地址按照规则进行分配,因此能够避免内存快照恢复失败和scsi磁盘作为系统盘无法开机的问题。

本申请实施例提供的第二种虚拟机配置中设备地址的分配方法,是在上述第一种虚拟机配置中设备地址的分配方法的基础上,还包括如下技术特征:

所述根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量为:

根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类包括pci-root控制器、pci-bridge控制器、提供ide类型设备地址的控制器以及提供scsi类型设备地址的控制器。

需要说明的是,先规划出虚拟机所需的最大硬件数量,例如需要虚拟机最大支持61个pci设备,4个ide设备以及32个scsi设备,则一共需要一个pci-root控制器、一个pci-bridge控制器、一个提供ide类型设备地址的控制器以及一个提供scsi类型设备地址的控制器。其中,pci-root控制器本身不占用设备地址并提供初始64个设备地址,余下三个控制器分别占用一个pci设备地址。

本申请实施例提供的第三种虚拟机配置中设备地址的分配方法,是在上述第二种虚拟机配置中设备地址的分配方法的基础上,还包括如下技术特征:

所述为固有硬件设备分配固定设备地址为:

将bus=0,slot=0x01~0x10,function=0,domain=0的地址分配给所述固有硬件设备。

需要说明的是,统计虚拟机中所有固定设备数量,如显卡、声卡等设备,这些设备的地址类型均为pci,因此将bus=0,slot=0x01~0x10,function=0,domain=0这16个地址分配给虚拟机的这些固有设备。

本申请实施例提供的第四种虚拟机配置中设备地址的分配方法,是在上述第二种虚拟机配置中设备地址的分配方法的基础上,还包括如下技术特征:

所述为ide和scsi接口类型的磁盘分配设备地址包括:

由于ide和scsi接口类型的磁盘的地址类型为drive,并且ide接口类型磁盘最大支持4块,因此,为所述ide接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0;controller=0,target=0,bus=0,unit=1;controller=0,target=0,bus=1,unit=0;controller=0,target=0,bus=1,unit=1;

为所述scsi接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0~31,而且,当所述scsi接口类型的磁盘为虚拟机系统盘时,则将其设备地址分配为controller=0,target=0,bus=0,unit=0,否则虚拟机开机时将不会识别该磁盘。

需要说明的是,上述两种接口类型的磁盘的地址并不冲突,因为二者属于不同的控制器,一个是ide类型的控制器,另一个是scsi类型的控制器。

本申请实施例提供的第五种虚拟机配置中设备地址的分配方法,是在上述第二种只第四种虚拟机配置中设备地址的分配方法中任一种的基础上,还包括如下技术特征:

所述为网卡和virtio接口类型的磁盘分配设备地址包括:

为所述网卡分配的设备地址为bus=0,slot=0x11~0x1f,function=0,domain=0;

为所述virtio接口类型的磁盘分配的设备地址为所述pci-bridge控制器上的bus=1,slot=0x00~0x1f,function=0,domain=0。

需要说明的是,这样能够将网卡设备和virtio磁盘设备地址区分开来,以方便日后管理,避免混乱。

本申请实施例提供的第一种虚拟机配置中设备地址的分配装置如图2所示,图2为本申请实施例提供的第一种虚拟机配置中设备地址的分配装置的示意图,该装置包括:

确定单元201,用于根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类和数量,需要说明的是,根据实际需求来规划虚拟机所需硬件设备的最大数量,以此来确定设备地址中controller(控制器)的数量,以使所有硬件设备都有足够的地址去安装;

第一地址分配单元202,用于为固有硬件设备分配固定设备地址,需要说明的是,这里所述的固有硬件设备包括显卡、声卡、内存气球以及控制器等设备,这些设备位于PCI-ROOT这一根控制器上,需要为其分配固定地址;

第二地址分配单元203,用于为ide和scsi接口类型的磁盘分配设备地址,需要说明的是,由于ide和scsi接口类型的磁盘设备地址中的各项参数和其他设备的参数是不同的,因此需要对这两类接口类型的磁盘单独设定设备地址,并且ide接口类型的磁盘最大只支持4个,所以该类型磁盘的设备地址是四个固定的地址;

第三地址分配单元204,用于为网卡和virtio接口类型的磁盘分配设备地址,需要说明的是,virtio接口类型的磁盘以及网卡可以分配很多个,它们的数量由步骤S1中的控制器数量所决定,因此需要在步骤S1中规划出虚拟机所需求的磁盘以及网卡的最大数量。由于这两类设备可以有多个,并且设备地址类型均为pci,因此可以为这两类设备根据控制器数量分配对应的地址范围,以区别两类不同的设备,方便日后管理,但这里并不限制于此,还可以不进行地址范围的区分。

本申请实施例提供的第二种虚拟机配置中设备地址的分配装置,是在上述第一种虚拟机配置中设备地址的分配装置的基础上,还包括如下技术特征:

所述确定单元具体用于根据计划添加的设备的数量,确定安装到PCI总线上的控制器的种类包括pci-root控制器、pci-bridge控制器、提供ide类型设备地址的控制器以及提供scsi类型设备地址的控制器。

需要说明的是,先规划出虚拟机所需的最大硬件数量,例如需要虚拟机最大支持61个pci设备,4个ide设备以及32个scsi设备,则一共需要一个pci-root控制器、一个pci-bridge控制器、一个提供ide类型设备地址的控制器以及一个提供scsi类型设备地址的控制器。其中,pci-root控制器本身不占用设备地址并提供初始64个设备地址,余下三个控制器分别占用一个pci设备地址。

本申请实施例提供的第三种虚拟机配置中设备地址的分配装置,是在上述第二种虚拟机配置中设备地址的分配装置的基础上,还包括如下技术特征:

所述为第一地址分配单元具体用于:

将bus=0,slot=0x01~0x10,function=0,domain=0的地址分配给所述固有硬件设备。

需要说明的是,统计虚拟机中所有固定设备数量,如显卡、声卡等设备,这些设备的地址类型均为pci,因此将bus=0,slot=0x01~0x10,function=0,domain=0这16个地址分配给虚拟机的这些固有设备。

本申请实施例提供的第四种虚拟机配置中设备地址的分配装置,是在上述第二种虚拟机配置中设备地址的分配装置的基础上,还包括如下技术特征:

所述第二地址分配单元具体用于:

为所述ide接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0;controller=0,target=0,bus=0,unit=1;controller=0,target=0,bus=1,unit=0;controller=0,target=0,bus=1,unit=1;

为所述scsi接口类型的磁盘分配的设备地址为controller=0,target=0,bus=0,unit=0~31,而且,当所述scsi接口类型的磁盘为虚拟机系统盘时,则将其设备地址分配为controller=0,target=0,bus=0,unit=0,否则虚拟机开机时将不会识别该磁盘。

需要说明的是,上述两种接口类型的磁盘的地址并不冲突,因为二者属于不同的控制器,一个是ide类型的控制器,另一个是scsi类型的控制器。

本申请实施例提供的第五种虚拟机配置中设备地址的分配装置,是在上述第二种至第四种虚拟机配置中设备地址的分配装置中任一种的基础上,还包括如下技术特征:

所述第三地址分配单元具体用于:

为所述网卡分配的设备地址为bus=0,slot=0x11~0x1f,function=0,domain=0;

为所述virtio接口类型的磁盘分配的设备地址为所述pci-bridge控制器上的bus=1,slot=0x00~0x1f,function=0,domain=0。

需要说明的是,这样能够将网卡设备和virtio磁盘设备地址区分开来,以方便日后管理,避免混乱。

综上所述,本申请实施例提供的上述方法和装置,能够在虚拟机创建之前自动分配虚拟机中的硬件设备地址,避免了虚拟机开机时libvirt自动分配设备地址的弊端,使得虚拟机在进行内存快照恢复任务时快照中的虚拟机配置文件与原始虚拟机配置文件一致,避免了内存快照恢复失败的问题;还可以避免以scsi接口类型的磁盘作为系统盘的虚拟机被libvirt自动分配到任意设备地址从而导致界面启动失败的问题,还能进一步控制虚拟化平台中各个虚拟机设备数量,达到节约资源的效果。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1