【云小课】基础服务第47课 谈谈镜像的前世今生

网友投稿 932 2022-05-28

首先,我们通过一个有趣的栗子来认识什么是镜像。

假如我来到一片空地,想要建一座房子,那么我需要砍木头、搬石头、画图纸等等,一顿忙活后,房子终于盖好了。这时,我发现地址选的不好,想迁到另外一处。按照之前的方法,我必须重新砍木头、搬石头、画图纸,想想都头大。我幻想拥有一种超能力,将盖好的房子复制一份,做成“镜像”,装在口袋里,等到了另一片空地,用这个“镜像”复制一座房子,拎包入住。

在云计算界,镜像就是这么神奇的存在。让我们从镜像的前世开始谈起,慢慢揭开它的神秘面纱~

温馨提示:本文干货较多,阅读可能需要二十分钟。

镜像的前世

说到镜像,不得不提起云计算业界大佬OpenStack。OpenStack是一个开源的云计算管理平台项目,旨在为公共及私有云的建设与管理提供软件,这个项目由几个主要的组件组合起来完成一些具体的工作。Glance组件负责虚拟机镜像的上传、注册、查找、编辑、删除等功能,它提供了一个REST API,允许用户查询虚拟机镜像元数据来获取实际的镜像文件。您可以将Glance提供的镜像存储在各种位置,从简单的文件系统到对象存储系统。OpenStack各组件关系及Glance所扮演的角色见下图。

在OpenStack整个云环境中,如果没有虚拟机镜像,就无法在计算节点上生成虚拟机,OpenStack也就失去了它的意义,所以说镜像服务是OpenStack的一个核心服务。

1、Glance组成

Glance包括以下服务:

Glance API

Glance API是系统后台运行的服务进程,对外提供REST API,接受最终用户或Nova Compute对镜像的请求,诸如镜像创建、检索、存储。

Glance API不会真正处理请求。如果是与镜像元数据相关的操作,Glance API会把请求转发给Glance Registry;如果是与镜像自身存取相关的操作,Glance API会把请求转发给该镜像的Store Backend。

Glance Registry

Glance Registry是系统后台运行的服务进程,负责处理和存取镜像的元数据,例如镜像的大小、格式和名称。Glance支持多种格式的镜像,包括AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD和VMDK,下次课程将着重介绍镜像格式的相关知识,敬请期待。

Database

镜像的元数据会保存到Database中,使用比较广泛的是MySQL和SQLite。

Store Backend

Glance自己并不存储镜像,真正的镜像是存放在Backend中的。Glance支持多种Backend,包括普通的文件存储、Swift、Amazon S3等。

2、Glance的操作方式

可以通过OpenStack Web UI、命令行和OpenStack CLI三种方式操作Glance,例如镜像的增删改查。对于Glance的镜像管理命令举例如下:

glance image-create

glance image-delete

glance image-update

【云小课】基础服务第47课 谈谈镜像的前世今生

glance image-show

镜像的今生

云计算从初创时的牛刀小试,到现如今成长为一个庞大的行业和生态,各云厂商不断为其注入能量。为了提升用户的云上体验,华为云在镜像服务产品能力和生态能力方面也做了很多工作,下面将从两个方面介绍镜像服务 IMS:

镜像产品能力:镜像有哪些类型?IMS提供了哪些产品能力?

镜像生态能力:围绕镜像衍生出了哪些产品?这些产品对用户有什么价值?

1、镜像产品

镜像分类

镜像是云服务器运行环境的模板,在购买云服务器时,镜像是必填项,有四个分类,分别是公共镜像、私有镜像、共享镜像和市场镜像。

他们有什么区别?实际该如何选择呢?下面我们将这四种类型做个对比:

在实际选择时,有一个简单的判断原则:

如果需要一个纯净版OS,则选择公共镜像

如果需要一个完整的软件环境,比如Magento电子商务系统,则选择市场镜像

如果希望基于当前云服务器实例复制新实例,则选择私有镜像

如果想使用别人共享的镜像,则选择共享镜像

镜像产品能力

1、创建镜像

流程

为了满足用户多种业务场景的需求,华为云将私有镜像再次分类为:系统盘镜像、数据盘镜像和整机镜像,从字面即可理解这几种镜像的含义,整机镜像也叫全镜像,可以包含系统盘和数据盘。整机镜像基于差量备份制作,相比同样磁盘容量的系统盘镜像和数据盘镜像,创建效率更高。

以系统盘镜像为例,下图展示了从ECS实例创建镜像的过程:从现有镜像开始,创建一个实例,自定义该实例,从该实例创建新的镜像,并最终创建新的实例。

用途

创建镜像可用于将ECS实例环境信息打包,快速复制新的ECS实例,常见于应用扩容场景。也可用于混合云部署场景,为了实现云上及线下资源同步,可以借助镜像导入导出功能。以将公有云资源同步到私有云为例,实现过程如下:

a. 基于ECS制作私有镜像,可以为系统盘镜像或数据盘镜像(不建议制作整机镜像,因其不支持导出)

b. 将私有镜像导出到OBS桶

c. 下载OBS桶中的镜像文件,上传到私有云使用

更多指导,请参阅“通过云服务器创建系统盘镜像”。

2、导入镜像

流程

支持将本地或者其他云平台的镜像文件导入到华为云使用,依据镜像文件类型可用来创建ECS实例或EVS数据盘。包括四个步骤,详细流程如下:

用途

上云,将计算资源从线下迁移到云上。

更多指导,请参阅“通过外部镜像文件创建系统盘镜像”。

3、导出镜像

流程

用途

将云上的ECS系统及软件环境复制到线下集群或私有云环境使用。

更多指导,请参阅“导出镜像”。

4、共享镜像

假设Jack要将自己的镜像共享给Rose,流程如下:

同样的镜像,又需要共享给Alice,可以通过为镜像添加共享租户实现:

Rose已经使用Jack共享的镜像完成业务部署,不再需要该镜像,可以拒绝已经接受的共享镜像:

Jack也可以单方向取消共享给其他人的镜像:

更多指导,请参阅“共享指定镜像”。

5、复制镜像

流程

区域内复制:实现加密镜像与非加密镜像的转换

跨区域复制:实现镜像在不同区域间迁移

用途

典型场景为系统环境多区域部署,以应对系统高可用及国际化的趋势,部署方式通常需要多区域+海外节点部署,快速实现跨区域复制ECS实例的方法之一便是通过复制镜像将一个镜像复制到多个区域,然后使用私有镜像快速创建实例。

更多指导,请参阅“跨区域复制镜像”。

2、镜像生态

除了上文介绍的镜像产品能力,华为云也建立了比较完善的镜像生态体系,比如Cloud-Init开源组件、用户数据、镜像的商品管理能力。

Cloud-Init是开源的云初始化工具,本质上是一系列Python脚本及组件,用来在云服务器启动时配置自定义信息。华为云公共镜像默认都已安装Cloud-Init,建议您在创建私有镜像时也进行安装。

用户数据注入,是华为云提供的一种自定义实例启动行为及传入数据的功能。当您有如下需求时,可以考虑使用用户数据注入:

通过脚本简化实例配置

通过脚本初始化系统

已有脚本,在创建实例时一并上传

其他可以使用脚本完成的功能

举个栗子,通过以下脚本为Linux ECS实例更新系统软件包,并且开启httpd相关服务。用户数据将会在ECS启动时由Cloud-Init进行调度配置。注入成功后,您的ECS就可以使用httpd服务了。

#!/bin/bash

yum update -y

service httpd start

chkconfig httpd on

迁移服务,即华为云主机迁移服务SMS,是一种P2V/V2V迁移服务,可以帮您把x86物理服务器或者私有云、公有云平台上的虚拟机迁移到ECS上,轻松实现服务器上的应用和数据迁移到华为云。更多信息,请参阅“主机迁移服务”。

镜像商品管理能力

华为云支持第三方ISV上架市场镜像,市场镜像通常由具有丰富云服务器维护和配置经验的服务商提供,并且市场镜像经过服务商和华为云的严格测试,可保证镜像内容的安全性。

今天小课就为大家分享到这里,希望对您认识镜像有所帮助。后续课程会展开介绍镜像前世今生中的某些知识点,比如Cloud-Init和用户数据注入技术,敬请期待。

镜像服务 IMS 镜像服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:成功解决Git Bash运行脚本命令下载文件到默认C盘路径的问题
下一篇:华为云大咖说—大数据应用开发指导
相关文章