首页 运维干货深入了解OpenStack虚拟机【上】

深入了解OpenStack虚拟机【上】

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

前言

假如你已经有了一个OpenStack集群,而且创建了一个虚拟机,那么这个虚拟机到底有多少秘密呢?让我们一起来探索一下。

虚拟机存放在哪里?

假如我们没有使用Cinder的块存储,那么这台虚拟机在物理硬盘上是存放在哪里呢?这个虚拟机的相关描述和配置存放在哪里, 默认情况下,nova.conf配置里面虚拟机的存放路径为/var/lib/nova/instances。

OpenStack虚拟机

虚拟机磁盘

接下来我们再来看看虚拟机的硬盘,首先我们查看一下大小。

OpenStack虚拟机

虚拟机硬盘竟然只有2.4M,这不可能吧,一个Linux内核都比这个大。到底是为什么呢?我们使用file命令来一探究竟。

[root@linux-node2 7f94df9a-e547-4f56-9887-bbc52c4e0fff]#file disk

disk: QEMU QCOW Image (v3), has backing file (path/var/lib/nova/instances/_base/564787f2316e4f0baa128b88222464ced), 1073741824bytes

使用的是QCOW的镜像格式V3版本,QCOW格式的特点之一就是:支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化。

Copy-on-Write镜像文件

qcow 镜像可以用来保存另一个镜像文件的变化,它并不去修改原始镜像文件,只记录与原始镜像文件的不同即可,这种镜像文件就叫做 copy-on-write 镜像。虽然是一个单独的文件,但它的大部分的数据都来自原始镜像,只有跟原始镜像文件相比有变化的才会被记录下来。

可以通过qemu-img命令获取更详细的内容。

OpenStack虚拟机

支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;也就是说现在我们看到的disk这个磁盘镜像,是

/var/lib/nova/instances/_base/564787f2316e4f0baa128b88222464ced基础上变化的内容。

下面我们来查看这个后端真正镜像的详细信息。

OpenStack虚拟机

可以发现,这是一个raw格式的镜像,虚拟大小是39M,实际使用是18M。

 Libvirt.xml

我们知道OpenStack是使用Nova-compute来创建虚拟机,那么nova-compute是使用的libvirt来创建KVM虚拟机,既然是使用libvirt那么在我们/etc/libvirt/qemu下面就应该能看到相应的xml。

[root@linux-node2 ~]# ls /etc/libvirt/qemu/

instance-00000001.xml  networks

我们查看这个xml的前六行。

[root@linux-node2 ~]# head -6/etc/libvirt/qemu/instance-00000001.xml

<!–

WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TOIT ARE LIKELY TO BE

OVERWRITTEN AND LOST. Changes to this xmlconfiguration should be made using:

virsh editinstance-00000001

or other application using the libvirt API.

–>

和之前我们创建KVM虚拟机一样,这个xml是自动生成的,提示你不要修改本xml,如果想修改可以使用  virsh edit instance-00000001。好吧,千万不要使用virsh来试图修改OpenStack创建的虚拟机的xml,因为你修改了没有用,为什么呢?我们继续回到instense目录下。你可以看到以实例ID命名的目录下有一个libvirt.xml。

由于篇幅有限,大家自行查看该文件,从CPU、内存、磁盘、PCI设备等都很完善。

虽然OpenStack帮我们想的很周全,但是就算没有你要的选项也不要试图修改本xml。就像不要使用virsh修改一样。他们的原因只有一个,OpenStack会在虚拟机软重启或者硬重启的时候重新动态的生成libvirt.xml。到时候你所有的修改,就会是曾花一现。

小提示: 如果你想添加自定义的选项,可以看看/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py。

明日文章预告

《深入了解OpenStack虚拟机之-Metadata》

分享嘉宾


赵舜东

江湖人称赵班长,曾在武警某部负责指挥自动化的架构和运维工作,2008年退役后一直从事互联网运维工作。曾带团队负责国内某电商的运维工作,SaltStack中国用户组发起人、《saltstack入门与实践》作者,《运维知识体系》作者。

趁现在,关注我们


牛人并不可怕,可怕的是牛人比我们还努力!关注“运维社区(微信ID:cloud-oaas)”公众号,每天利用空闲时间阅读一篇技术原创干货,满满的小幸福。

运维社区

长按图片,选择“识别图中二维码”,关注我们。

原创声明:本文为赵班长原创,请必须全文转载,包括本行。

本文链接:https://www.yunweipai.com/9307.html

网友评论comments

发表回复

您的电子邮箱地址不会被公开。

暂无评论

Copyright © 2012-2022 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部