openstack创建instance时,如何生成对应instance的镜像

一、raw、qcow2格式详解:

1、KVM存储虚拟化是通过Storage Pool和volume来管理的

2、Storage Pool是宿主机上的实际的存储空间,可以有多种类型(文件目录是最常用的Storage Pool类型),volume就是该文件目录下的文件。一个KVM虚拟机添加一块xG大小的磁盘后,在该目录下会生成一个xG大小的文件(文件名为***.img)

3、KVM支持多种volume格式,包括:

(1)raw是默认格式,即原始磁盘镜像格式,移植性好,性能好,但大小固定,不能节省磁盘空间。

(2)qcow2是推荐使用的格式,cow表示 copy on write,能够节省磁盘空间,支持AES 加密,支持zlib 压缩,支持多快照,功能很多。

(3)vmdk是 VMWare的虚拟磁盘格式,也就是说 VMWare虚机可以直接在 KVM上 运行。

二、openstack启动instance过程中,glance是如何创建instance的镜像文件的

(1)大致流程如下:

1、openstack启动instance时,会选择一个image,该image由glance服务管理

2、首先将该image下载到计算节点

3、然后将该下载到计算节点的image作为backing file,创建instance的镜像文件

PS:英文中对image这个单词解释为“镜像”,为作区分:1)单词“image”指保存在glance的镜像,作为instance的模板;2)“镜像文件”指instance启动盘对应的文件;3)image是镜像文件 的 backing file。image不会变,而镜像文件会发生变化。比如安装新的软件后,镜像文件会变大。

(2)详细流程说明(包括image的格式变化过程)如下:

1、计算节点上nova-compute组件会检查该计算节点上是否已经下载image(比如之前在该计算节点上已经创建过基于相同image的instance),如果没有,则下载到本地。

2、存储在glance上的image是qcow2格式的,nova-compute将其下载到本地,通过qemu-img将该image转换为raw格式,因为之后要将该image作为instance的镜像文件的backing file,而backing file要求是raw格式。下载到本地的image存放目录是/var/lib/nova/instances/_base

查看该目录下的image的格式命令如下:

3、有了image之后,instance的镜像文件可以直接通过qemu-img命令创建,命令中“-o”选项指定的backing file就是下载后并转化为raw格式的image,而创建好的instance镜像文件是qcow2格式的。

创建命令:qemu-img create -f qcow2 -o backing_file=/var/lib/nova/instances/_base/[image] /var/lib/nova/instances/[instance的uuid]/disk(指定镜像文件的存放目录)

PS:instance对应的镜像文件位于/var/lib/nova/instances/[instance的uuid]/disk,查看该disk文件的格式是qcow2格式,如下:

经验分享 程序员 微信小程序 职场和发展