一、Glance介绍
Image service (glance)允许用户发现、注册和检索虚拟机映像。它提供了一个REST API,它允许你查询虚拟机镜像元数据来获取实际的镜像文件。你可以将Glance提供的虚拟机镜像像存储在各种位置,从简单的文件系统到对象存储系统。
在OpenStack整个云环境中,如果没有虚拟机镜像,就无法再计算节点上生成虚拟机,OpenStack基本上也是没有意义的,所以说镜像服务是OpenStack的一个核心服务。
生成虚拟机时,从Glance获取镜像也是比较简单的。当调度程序决定了在某个计算节点上启动第一台虚拟机的时候,首先会把镜像文件复制到这个计算节点的虚拟机存放目录,计算节点便用镜像文件生成虚拟机。在这个计算节点生成第二台同样配置的该镜像的虚拟机时,就不需要再从Glance复制到这个计算节点了。
二、Glance主要组件
1、glance-api
glance-api是系统后台运行的服务进程,对外提供REST API,响应image查询、获取和存储的调用。
glance-api不会真正处理请求。如果是与image metadata(元数据)相关的操作,glance-api会把请求转发给 glance-registry。如果是与image自身存取相关的操作,glance-api会把请求转发给该image的store backend。
2、glance-registry
glance-registry是系统后台运行的服务进程,负责处理和存取image的metadata,例如image的大小和类型,registry是一个内部服务接口,不暴露给普通用户。
3、Database
Image的metadata会保持到database中,主要使用MySQL和SQLite。
4、Storage repository for image files
Glance自己并不存储image。真正的image是存放在repository中的,Glance支持多种repository。如下:
A directory on a local file system(这是默认配置)
RADOS block devices
VMware datastore
Amazon S3
HTTP
OpenStack Block Storage (Cinder)
OpenStack Object Storage (Swift)
5、Metadata definition service
对于厂商、管理员、服务常见的API来说,用户有意地定义自己元数据。此元数据可用于不同类型的资源,如镜像、卷、单个主机和集合。本服务可以定义新属性的键、描述、约束以及与之相关联的资源类型。
三、镜像的格式
刚刚接触虚拟化技术的用户可能对镜像格式这个概念有些陌生。简单来说,不同的厂商有自己的虚拟化技术,譬如VMware、Critix、Hyper-V,他们都使用不同的虚拟化技术,因此,在对虚拟机磁盘格式的定义上,有自己遵循的标准。通常来说,一个已安装了操作系统的虚拟机磁盘可能仅仅是单个文件,但是这个单个文件的格式因不同厂商的不同虚拟化软件而各有不同。
OpenStack中可以支持多种虚拟化的技术,入KVM、XenServer、Hyper-V和VMware等。用户在上传镜像时,必须指定上传镜像文件的格式(Disk Format)。此外在Glance中海油容器的格式(Container Format)。容器格式用来表示虚拟机镜像文件是否为一个包含了元数据的镜像文件,例如OVF格式。目前在Glance中,并没有真正使用到容器格式,上传镜像文件时只需要把Container Format设置为bare(空)即可。下面列出了在OpenStack中镜像文件常用的几种格式:
1、RAW
RAW即常说的裸格式,它其实就是没有格式,最大的特点就是简单,数据写入什么就是什么,不做任何修饰,所以再性能方面很不错,甚至不需要启动这个镜像的虚拟机,只需要文件挂载即可直接读写内部数据。并且由于RAW格式简单,因此RAW和其他格式之间的转换也更容易。在KVM的虚拟化环境下,有很多使用RAW格式的虚拟机。
2、QCOW2
qcow2是qcow的升级版本,它是QEMU的CopyOn Write特性的磁盘格式,主要特性是磁盘文件大小可以随着数据的增长而增长。譬如创建一个10GB的虚拟机,实际虚拟机内部只用了5GB,那么初始的qcow2磁盘文件大小就是5GB。与RAW相比,使用这种格式可以节省一部分空间资源。
3、VHD
VHD也是一种通用的磁盘格式。微软公司的Virtual PC和Hyper-V使用的就是VHD格式。VirtualBox也提供了对VHD的支持。如果要在OpenStack上使用Hyper-V的虚拟化,就应该上传VHD格式的镜像文件。
4、VMDK
VMware创建的一个虚拟机磁盘格式,目前也是一个开放的通用格式,除了VMware自家的产品外,QEMU和VirtualBox也提供了对VMDK格式的支持。
5、VDI
Oracle公司的VirtualBox虚拟软件所使用的格式。
6、ISO
ISO是指一种存档数据文件在光盘上的格式。
7、AKI、ARI、AMI
Amazon公司的AWS所使用的镜像格式。
四、发行版镜像获取
目前很多的操作系统发行版都制作了OpenStack使用的镜像文件,大部分镜像禁止账号密码认证登陆,这些镜像在启动的时候可以注入密钥对(cloud-init),所以你需要使用你的私钥进行登陆。
1、CentOS 6
http://cloud.centos.org/centos/6/images/
2、CentOS 7
http://cloud.centos.org/centos/7/images/
CentOS云镜像的默认登陆账户为centos
3、CirrOS (test)
http://download.cirros-cloud.net/
4、Debian
http://cdimage.debian.org/cdimage/openstack/
Debian云镜像的默认登陆账户为debian
5、Fedora
https://alt.fedoraproject.org/cloud/
Fedora云镜像的默认登陆账户为fedora
6、Microsoft Windows
https://cloudbase.it/windows-cloud-images/
7、Ubuntu
http://cloud-images.ubuntu.com/
Ubuntu云镜像的默认登陆账户为ubuntu
8、openSUSE
http://download.opensuse.org/repositories/Cloud:/Images:/
9、Red Hat Enterprise Linux 6
https://access.redhat.com/downloads/content/69/ver=/rhel---6/x86_64/product-downloads
10、Red Hat Enterprise Linux 7
https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads
RHEL云镜像的默认登陆账户为cloud-user
关于镜像的制作请参见:https://docs.openstack.org/image-guide/create-images-manually.html
参考地址:https://docs.openstack.org/glance/pike/user/formats.html
https://docs.openstack.org/image-guide/introduction.html
https://docs.openstack.org/image-guide/obtain-images.html