前言
假如你已经有了一个OpenStack集群,而且创建了一个虚拟机,那么这个虚拟机到底有多少秘密呢?让我们一起来探索一下。
虚拟机存放在哪里?
假如我们没有使用Cinder的块存储,那么这台虚拟机在物理硬盘上是存放在哪里呢?这个虚拟机的相关描述和配置存放在哪里, 默认情况下,nova.conf配置里面虚拟机的存放路径为/var/lib/nova/instances。
虚拟机磁盘
接下来我们再来看看虚拟机的硬盘,首先我们查看一下大小。
虚拟机硬盘竟然只有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命令获取更详细的内容。
支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;也就是说现在我们看到的disk这个磁盘镜像,是
/var/lib/nova/instances/_base/564787f2316e4f0baa128b88222464ced基础上变化的内容。
下面我们来查看这个后端真正镜像的详细信息。
可以发现,这是一个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)”公众号,每天利用空闲时间阅读一篇技术原创干货,满满的小幸福。
长按图片,选择“识别图中二维码”,关注我们。
原创声明:本文为赵班长原创,请必须全文转载,包括本行。
本文链接:http://www.yunweipai.com/9307.html