51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1365|回复: 0
打印 上一主题 下一主题

一文读懂OpenStack Glance是什么

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-9-16 21:21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    作者 牛牛

    OpenStack Glance是一种提供发现,注册,和下载的镜像服务。OpenStack Glance是一个提供虚拟机镜像的集中式仓库。通过Glance的RESTful API,可以查询镜像元数据下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(如OpenStack Swift项目)。
    在Glane里镜像被当做模板来存储,用于启动新实例。 Glance是一个可以组织和管理大量虚拟磁盘镜像的独立服务。Glance为云磁盘镜像提供了一个端到端的解决方案。它还可以从正在运行的实例建立快照用于备份虚拟机的状态。Glance 组件


    Glance有以下几个组件:

      glance-api, 接收镜像发现,查询,和存储镜像的api调用。
      glance-registry, 存储,处理和查询镜像的元数据信息。
      database, 存储镜像元数据
      repository, 集成了各种openstack组件,比如文件系统,S3, 以及其它的http镜像存储。


    Glance接收来自终端用户或Nova组件的镜像的API请求,镜像文件可以存储在对象存储服务swift上或者其它存储仓库。
    镜像服务支持以下几种后端存储:

      文件系统 Openstack的镜像默认存储在文件系统后端。在本地的文件系统里进行保存镜像。
      对象存储 swift
      Block Storage cinder.
      VMware ESX/ESXi or vCenter.
      S3 亚马逊的s3等等.
      HTTP 可以使用英特网上的http服务获取镜像。这种方式只能只读。
      RADOS Block Device (RBD) 使用Ceph的RBD接口存储到Ceph集群中
      Sheepdog 专为QEMU/KVM提供的一个分布式存储系统.
      GridFS 使用MongoDB存储镜像.
    Glance 架构


    Glance具有客户端 - 服务器体系结构,并提供Rest API,通过Rest API来请求服务。通过客户端发送Rest API的请求,并等待Keystone认证。 Glance域控制器管理所有内部操作,这些分为很多层,每层实现自己的任务。
    Glance store是glacne和外部存储后端或者本地文件系统提供通信的一个层,并提供统一的访问接口。数据库为每一个组件提供一个集中的数据访问。
    Glance架构由以下几个组件组成:

      Client - 任何应用都可以通过Client来使用glance服务。
      REST API – 通过REST方式暴露Glance功能。
      Database Abstraction Layer (DAL) –统一Glance和数据库交互的一个应用层接口。
      Glance Domain Controller –完成glance主要的功能的中件间:
      authorization,notifications, policies, database connections.
      Glance Store – 集成glance和各种后端存储服务.
      Registry Layer –可选层,通过使用单独的服务来组织domain和DAL之间的安全通信。
    Glance 格式


    当我们上传镜像时,我们需要指定虚拟机镜像的格式。 Glance支持各种格式,如磁盘格式和容器格式。虚拟磁盘类似于物理服务器的引导驱动程序,只会压缩到文件中。不同的虚拟化支持不同的磁盘格式。
    磁盘格式
    虚拟机镜像的磁盘格式是底层磁盘镜像的格式。以下是OpenStack支持的磁盘格式。
    容器格式
    正如OpenStack glance也支持容器格式的概念,它描述了文件格式,并包含关于实际虚拟机的额外元数据。
    以下是OpenStack Glance支持的Container格式.
    这里注意下,Glance或其他OpenStack组件目前并不支持使用容器格式。如果不确定,最好使用'bare'作为容器格式,比如我们上传镜像到glance,bare就是没有容器.
    使用如下命令上传镜像到glance
    root@CONTROLLER:~#glance image-create --name "cirros-0.3.4-x86_64" --file/tmp/images/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-formatbare --visibility public --progress
    这里使用image-create来上传镜像,其--name表示上传镜像后镜像的名称,--file表示要上传镜像的路径,磁盘格式--disk-format以qcow2和--container-format为bare。可见性--visibility public表示镜像可以公开访问,进度--pogress表示显示上传进度条。Glance状态流


    上传镜像时Glance会显示镜像的各种状态。当我们第一步上传镜像时,第一步就是入队列,经过短时间的验证,镜像进入queued状态,保存镜像并开始上传。之后镜像会进入saving的状态,表示还没有完全上传完毕。镜像完全上传后,状态会变成Active。如果上传失败,将会变成killed或deleted状态。另外我们还可以使用命令停用或者重新激活完全上传成功的镜像。
    下图为glance镜像的状态流转图。
    queued
    在Glance registry里已经通过验证可以开始存储. 暂时没有镜像数据被上传到glance,镜像大小在上传时设置为0。
    saving
    表示正在上传镜像到Glance。通过POST /images接口注册镜像,如果有x-image-meta-location http头,这个镜像将不会处于saving状态(因为镜像数据在其他位置已经可用)。
    active
    表示在glance里是一个完全可用的镜像。当镜像上传成功后,会切换到这个状态。.
    deactivated
    表示不允许任何非管理的用户访问。禁止下载镜像,同时也禁止所以可能获取镜像数据的操作,比如镜像导出和镜像克隆等操作。
    killed
    表示上传镜像时发生错误,这个镜像不可用。
    deleted
    Glance仍然保留了镜像的相关信息,但不能在被使用。这个状态下的镜像将会被自动删除。
    Deactivatingand Reactivating an image
    可以停用镜像。也可以重新激活,或者删除。当管理员对镜像进行更新时,可以先把镜像停用,这样镜像对非管理员用户就不可见了,当更新完成后,可以重新激活镜像,以便用户可以用更新后镜像启动虚拟机。
    我们需要token 和镜像id来停用镜像,以下是停用和重新激活镜像的步骤。
    替换镜像id和token可以执行以下的curl命令
    root@CONTROLLER:~#curl -X POST -H 'X-Auth-Token: fbdab45ff753408c9e042aa6892e055b' http://192.168.1.110:9292/v2/images/17449a2e-8711-4700-af8f-439927159b7c/actions/deactivate
    这个镜像被停用后,我们使用glance image-list来列出镜像


    因为被停用,我们将会得到这样的输出。.
    我们同样可以用curl命令去重新激活镜像,只要修改token,用以下步骤就可以重新激活被停用的镜像。


    root@CONTROLLER:~#curl -X POST -H 'X-Auth-Token: 88878e52d01f43c29a915b2220295641'http://192.168.1.110:9292/v2/images/17449a2e-8711-4700-af8f-439927159b7c/actions/reactivate
    下一步执行glance image-list 检查

    Glance 配置文件


    Glance-api.conf : Glance api 服务配置文件.
    Glance-registry.conf : Glanceregistry服务配置文件,用户存储镜像有关的元数据。
    glance-scrubber.conf : 用于清理已删除的镜像的服务。
    policy.json : 镜像服务的访问控制。在这里,我们可以定义角色和策略,是OpenStack Glance中的安全特性。
    镜像和实例
    如前所述,磁盘镜像作为模板存储。镜像服务存储和管理镜像。实例是在计算节点上运行的单个虚拟机,计算节点管理这些实例。用户可以从用同一个镜像启动任意数量的实例。每个启动的实例都是基于镜像的一个副本,所以实例上的任何修改都不会影响到镜像。我们可以对正在运行实例做快照,并可以用快照于启动另一个新的实例。
    当我们启动一个实例时,我们需要指定Flavor。Flavor定义了实例可以有多少个虚拟CPU,多大的RAM以及临时磁盘的大小。 OpenStack提供了预定义的flavor,我们也可以新创建和编辑Flavor。
    下图显示了启动实例的系统状态。glance store包含一定数量的镜像,计算节点包含可用的vcpu,内存和本地磁盘资源,cinder-volume包含一定数量的volume。
    启动实例之前,需要选择一个镜像,flavor和任何可选属性。选定的 flavor提供一个系统盘,标记为vda,另外一个临时盘被标记为vdb,cinder-volume提供的volume被映射到第三个虚拟磁盘并将其称为vdc。


    在该图中,基础镜像从image store复制到本地磁盘。 vda是实例的第一个磁盘,如果镜像文件越小,则通过网络复制的数据越少,实例启动就会更快。实例创建时会创建一块空的临时数据盘vdb,当实例终止时,它将被删除。
    vdc使用iSCSI连接到cinder-volume。随后计算节点提供vCPU和内存资源之后,该实例将从vda.启动。该实例运行并更改磁盘上的数据。如果volume store位于单独的网络上,需要在计算节点nova.conf里指定的my_block_storage_ip,将会通过存储网络直接通信。
    实例被删除后, 除volume之外的其它资源都会被回收。临时盘将会被清空,内存和vCPU资源被会被释放。在这个过程中镜像不会发生任何改变。
    本文翻译自以下链接:
    http://www.sparkmycloud.com/blog/openstack-glance/
    译者介绍:牛牛,哗啦啦资深运维。云技术社区介绍:


    云技术社区成立于2014年,国内最大的云技术交流平台,分享在云计算/虚拟化项目实施中的资讯、经验和技术,坚持干货。

    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 14:58 , Processed in 0.110092 second(s), 32 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表