公开/公告号CN105573671A
专利类型发明专利
公开/公告日2016-05-11
原文格式PDF
申请/专利权人 国云科技股份有限公司;
申请/专利号CN201510923289.9
申请日2015-12-11
分类号G06F3/06;
代理机构广东莞信律师事务所;
代理人余伦
地址 523808 广东省东莞市松山湖科技产业园区松科苑14号楼
入库时间 2023-12-18 15:12:16
法律状态公告日
法律状态信息
法律状态
2020-02-14
授权
授权
2019-12-03
著录事项变更 IPC(主分类):G06F3/06 变更前: 变更后: 申请日:20151211
著录事项变更
2016-06-08
实质审查的生效 IPC(主分类):G06F3/06 申请日:20151211
实质审查的生效
2016-05-11
公开
公开
技术领域
本发明涉及云计算技术领域,特别是一种获取虚拟机磁盘对应磁盘文件的方法。
背景技术
在云计算环境下,虚拟机全面取代物理机成为用户的计算机资源,在这种情况下,用户尤其是云平台管理员强烈希望自己能够像原先管理物理机一样的方式管理自己的虚拟机,这就要求云平台技术人员从虚拟机的各个方面提供对应功能供管理员使用。
虚拟机像物理机一样存在磁盘存储资源,只不过虚拟机的磁盘一般是通过在宿主机里面创建多个对应格式的磁盘文件,然后将其挂载给虚拟机进行使用的。当某台虚拟机存在多个虚拟磁盘的时候,虚拟机管理员如果需要获取各个磁盘对应的哪个磁盘文件的时候,通常的方法步骤如下:
1、开始创建磁盘文件的时候,给每个磁盘文件分配不一样的空间大小;
2、当需要查看虚拟机里面磁盘对应的磁盘文件时,首先读取磁盘空间大小;然后在宿主机上面利用virshdumpxml将虚拟机的配置文件导出来;最后针对配置文件里面的磁盘文件一个一个进行qemu-img命令查看其空间找到磁盘对应文件。
这种方法存在如下的弊端:
1、管理员创建磁盘文件的时候必须保证每个磁盘文件的空间大小不一样,这个要求很难保证,而且也不合理;另外当磁盘文件空间大小相差不是很大的时候,得到的结果也不准确可靠;
2、后续的寻找磁盘对应磁盘文件的过程太繁琐,需要依次读取虚拟机配置文件里面的每个磁盘文件空间大小;当虚拟机存在很多个磁盘的时候,这种方法很难有高效性可言。
为了简单可靠的实现对虚拟机的磁盘进行更细粒度的管理维护,需要一种简单有效的获取虚拟机磁盘对应磁盘文件的方法。
PCI与PCI地址
PCI是PeripheralComponentInterconnect(外围设备互联)的简称,是普遍使用在桌面及更大型的计算机上的外设总线。PCI架构被设计为ISA标准的替代品,它有三个主要目标:获得在计算机和外设之间传输数据时更好的性能;尽可能的平台无关;简化往系统中添加和删除外设的工作。
PCI是一种外设总线规范,该允许单个系统拥有高达256个总线,所以总线编号是8位。但对于大型系统而言,这是不够的,所以,引入了域的概念,每个PCI域可以拥有最多256个总线,每个总线上可支持32个设备,所以设备号是5位,而每个设备上最多可有8种功能,所以功能号是3位。由此,我们可以得出一个诸如0000:00:1f.1的PCI设备的地址是0号域0号总线上的31号设备上的1号功能。
发明内容
本发明解决的技术问题在于提供一种获取虚拟机磁盘对应磁盘文件的方法,解决了现阶段云平台环境下获取虚拟机磁盘对应磁盘文件方法存在的繁琐且不合理、不可靠的问题。
本发明解决上述技术问题的技术方案是:
所述的方法包括:
在虚拟机里面通过简单工具得到各个磁盘逻辑地址;
在宿主机中执行命令查看虚拟机PCI设备信息,并根据所述磁盘逻辑地址找到磁盘设备ID;
最后根据所述磁盘设备ID,在宿主机上利用虚拟化工具找到磁盘对应的磁盘文件。
所述的虚拟机磁盘是指利用宿主机上面自创建的相应格式文件;
所述的相应格式文件根据虚拟化类型的不同而有所差别,XEN虚拟化类型下的vhd格式文件,KVM虚拟化类型下的qcow2格式文件,还包括了通用的raw格式文件等;
所述的各种格式文件之间只是在存储方式上面存在一定的差异性,在一定条件下都可以相互间进行转换。
所述的简单工具可以是一个工具命令,或者一段简单程序,也可以是像在windows操作系统里面手动的点击查看设备管理器属性等;
所述的工具命令可以是linux系统中的lspci及其附加命令。
所述的逻辑地址是指计算机所有PCI设备的外设地址,它以冒号和逗号分隔为4个部分,第一个16位表示域,第二个8位表示一个总线编号,第三个5位表示一个设备号,最后是3位,表示功能号;
所述的磁盘逻辑地址是指磁盘作为计算机里面的一个PCI设备,在计算机里面存在唯一的PCI外设地址。
所述的在宿主机中执行命令查看虚拟机PCI设备信息,并根据所述磁盘逻辑地址找到磁盘设备ID包括:
在宿主机中执行virshqemu-monitor-command...“infopci”等libvirt命令查看指定虚拟机的PCI设备信息;
根据每个PCI设备显示的信息找到上述步骤在虚拟机里面获取到的磁盘PCI逻辑地址;
PCI地址一致的PCI设备即为虚拟机磁盘,接着即可得到该磁盘对应的磁盘ID。
本发明方案的有益效果如下:
1、提供一种新的、更加简单可靠且高效的获取虚拟机磁盘对应磁盘文件的方法,本发明提供的获取磁盘对应文件方法原理简单、结果精确,方法也易实现。
2、本发明提供的方法具有通用性,不仅是虚拟机磁盘可以用该方法,虚拟机上面的网卡、显卡等只要是PCI类型资源都可以使用本发明提供的方法。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,为本发明实施例提供的一种获取虚拟机磁盘对应磁盘文件的方法的流程示意图,所述方法包括:
管理员实现在虚拟机里面通过简单工具得到各个磁盘逻辑地址。
具体的我们以linux虚拟机为例,执行如下命令获取磁盘逻辑地址:
[rootcontroller~]#lspci|grepSATA
00:1f.2SATAcontroller:IntelCorporation82801JI(ICH10Family)SATAAHCIController
如上,我们通过执行lspci将linux虚拟机里面所有的PCI设备列举出来,然后通过grepSATA过滤出来SATA类型磁盘。当然,这里需要根据用户虚拟机具体磁盘类型进行指定。
我们获取到该虚拟机里面有一个硬盘,其逻辑地址为00:1f.2,即0号域0号总线上的31号设备上的1号功能。
接着管理员在宿主机中执行命令查看虚拟机PCI设备信息,并根据所述磁盘逻辑地址找到磁盘设备ID。
具体的我们在宿主机上面执行如下libvirt命令:
#virshqemu-monitor-commandi-xxxxxxxx--hmp″infopci″
其中i-xxxxxxxx为虚拟机的名称,当然也可以用虚拟机ID代替。
这里我们得到的结果如下(只列出部分):
BUS0,device31,function1:
SCSIcontroller:PCIdevice1af4:1001
IRQ10.
BAR0:I/Oat0xff40[0xff7f].
BAR1:32bitmemoryatoxfebfd000[0xfebfdfff].
id″disk1″
如上,我们得到0号域0号总线31号设备上的1号功能对应的设备ID为“disk1”。
最后根据所述磁盘设备ID:“disk”,在宿主机上利用虚拟化工具找到磁盘对应的磁盘文件,执行如下命令:
#virshqemu-monitor-commandi-xxxxxxxx--hmp″infoblock″
得到的结果如下(部分列出):
disk1:removable=0io-status=okfile=/work/add1.qcow2ro=0drv=qcow2encrypted=0
如上,我们很容易的得出设备ID为disk1的磁盘对应的磁盘文件是宿主机上面的/work/add1.qcow2。
机译: 伺服记录旋转磁盘的方法和设备以及利用该伺服设备记录磁盘文件的磁盘驱动器在磁盘致动器中对配置进行编程的方法用于在磁道的解调位置信号中建立并保持所需的磁道间距的方法磁盘文件和用于在更改后的介质上保存设置的方法
机译: 用于在磁盘驱动器中的旋转磁盘上进行伺服记录的方法和设备,用于在磁盘驱动器中传播图案的方法,用于建立和维持期望的磁道间隔的方法,用于消除调制信号的调制位置信号的偏差的方法磁盘文件,在磁盘上记录数据的方法,在磁盘上记录数据的方法,在磁盘上记录数据的方法,
机译: 存储系统存储对应于多个虚拟磁盘的多个磁盘文件及其访问控制方法