一、Image的概念与重要性
在传统IT环境下,系统安装和备份恢复存在效率低、时间长、工作量大以及需要手工配置等问题。云环境下,为了更高效地解决这些问题,引入了Image的概念。Image是一个模板,里面包含了基本的操作系统和其他的软件。使用Image,可以快速地创建和部署虚拟机,提高系统安装和恢复的效率。
二、Image的使用场景
以一家公司为例,如果需要为每位员工配置一套包含Windows7系统和MS office软件的办公环境,可以先手工安装好这样一个虚拟机,然后对其执行snapshot操作,得到一个image。当有新员工入职需要办公环境时,只需要启动一个或多个该image的instance(虚拟机)即可。这个过程非常快速,全自动化,一般都是秒级别。而且,如果公司新上了一套OA系统,每个员工的PC上都需要安装客户端软件,那么可以在某个员工的虚拟机中手工安装好OA客户端,然后执行snapshot,得到新的image,以后直接使用新image创建虚拟机就可以了。此外,snapshot还有备份的作用,能够非常方便地恢复系统。
三、Glance的功能与架构
在OpenStack中,提供Image Service的是Glance。Glance的功能是管理Image,让用户能够发现、获取和保存Image。
[root@controller ~]# openstack image list
+--------------------------------------+-----------------------+--------+
| ID | Name | Status |
+--------------------------------------+-----------------------+--------+
| 78520b64-349b-4cbd-859f-fd1d02a4d76c | bionic-server_image01 | active |
| 9817181c-2dd3-4682-9405-48d54e8bfac6 | cirros_image01 | active |
+--------------------------------------+-----------------------+--------+
其具体功能包括:提供REST API,让用户能够查询和获取image的元数据和image本身;支持多种方式存储image,包括普通的文件系统、Swift、Amazon S3等;对Instance执行Snapshot创建新的image。Glance的架构包括glance-api、glance-registry和store backend。
glance-api是系统后台运行的服务进程,对外提供REST API,响应image查询、获取和存储的调用。如果是与image metadata(元数据)相关的操作,glance-api会把请求转发给glance-registry;如果是与image自身存取相关的操作,glance-api会把请求转发给该image的store backend。
glance-registry是系统后台运行的服务进程,负责处理和存取image的metadata,例如image的大小和类型。
Store backend是真正存储image的地方,Glance支持多种backend。
四、Glance支持的Image格式与Backend
Glance支持多种格式的image,包括Raw、vhd、vmdk、VDI、ISO、QCOW2、aki、ari和ami等。这些格式分别对应不同的使用场景和虚拟机监控器。
Glance自己并不存储image,真正的image是存放在backend中的。Glance支持多种backend,包括本地文件系统(默认配置)、GridFS、Ceph RBD、Amazon S3、Sheepdog、OpenStack Block Storage(Cinder)、OpenStack Object Storage(Swift)和VMware ESX等。具体使用哪种backend,是在/etc/glance/glance-api.conf中配置的。
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
图例中使用的是的本地的文件系统
五、总结
通过理解Image的概念、使用场景以及Glance的功能与架构,我们可以更好地利用OpenStack中的Image Service来管理虚拟机镜像,提高系统部署和恢复的效率。在实际应用中,我们可以根据需求选择合适的Image格式和Backend来存储和管理镜像。