Learning Openstack part 6 Galnce 镜像服务(2)

Glance 架构

glance架构.png

如上图所示,Glance架构相对比较简单

Glance-api

  • glance-api 对外提供RSET Api接口,响应image查询、获取和存储的调用。
  • glance-api将metadata请求交给glance-register处理,将image请求交给store backend处理

Glance-registry

glance-register服务进程负责处理和存储image的元数据(metadata)信息,比如image的大小和类型等。

glance-registry.png

glance支持多种image格式,之前我们已经详细介绍,这里不再赘述。
image的metadata储存在数据库里,我们来查看一下:

[root@openstack-controller tools]# mysql -uglance -p$GLANCE_DBPASS -s glance
MariaDB [glance]> show tables;
Tables_in_glance
artifact_blob_locations
artifact_blobs
artifact_dependencies
artifact_properties
artifact_tags
artifacts
image_locations
image_members
image_properties
image_tags
images
metadef_namespace_resource_types
metadef_namespaces
metadef_objects
metadef_properties
metadef_resource_types
metadef_tags
migrate_version
task_info
tasks
MariaDB [glance]> select * from images limit 1\G
*************************** 1. row ***************************
              id: 4d890feb-3c24-4425-8311-61c41a582a56
            name: cirros
            size: 13287936
          status: active
       is_public: 1
      created_at: 2017-06-22 07:21:46
      updated_at: 2017-06-22 07:21:48
      deleted_at: NULL
         deleted: 0
     disk_format: qcow2
container_format: bare
        checksum: ee1eca47dc88f4879d8a229cc70a07c6
           owner: 471592a4281e4223b2ad578b5c9b8442
        min_disk: 0
         min_ram: 0
       protected: 0
    virtual_size: NULL
MariaDB [glance]> select * from metadef_resource_types;
id  name    protected   created_at  updated_at
1   OS::Glance::Image   1   2017-06-22 07:21:42 2017-06-22 07:21:42
2   OS::Cinder::Volume  1   2017-06-22 07:21:42 2017-06-22 07:21:42
3   OS::Nova::Flavor    1   2017-06-22 07:21:42 2017-06-22 07:21:42
4   OS::Nova::Aggregate 1   2017-06-22 07:21:42 2017-06-22 07:21:42
5   OS::Nova::Instance  1   2017-06-22 07:21:42 2017-06-22 07:21:42

Store backend

glance自身并不支持存储服务,它通过backend来调用其他存储服务来存储image,常见的backend有:

  1. A directory on a local file system(这是默认配置)
  2. GridFS
  3. Ceph RBD
  4. Amazon S3
  5. Sheepdog
  6. OpenStack Block Storage (Cinder)
  7. OpenStack Object Storage (Swift)
  8. VMware ESX

具体使用哪种 backend,是在 /etc/glance/glance-api.conf 中配置的,其他 backend 的配置可参考backend配置参考:

image.png

这样我们就可以很轻易的找到image的存储位置:

# 列出image的id信息
[root@openstack-controller tools]# glance image-list
+--------------------------------------+--------+
| ID                                   | Name   |
+--------------------------------------+--------+
| 4d890feb-3c24-4425-8311-61c41a582a56 | cirros |
+--------------------------------------+--------+
# 找到image存储的位置
[root@openstack-controller tools]# ls /var/lib/glance/images/4d890feb-3c24-4425-8311-61c41a582a56 
/var/lib/glance/images/4d890feb-3c24-4425-8311-61c41a582a56
[root@openstack-controller tools]# du -sh  /var/lib/glance/images/4d890feb-3c24-4425-8311-61c41a582a56 
13M /var/lib/glance/images/4d890feb-3c24-4425-8311-61c41a582a56
# 检查一下image的文件类型
[root@openstack-controller tools]# file /var/lib/glance/images/4d890feb-3c24-4425-8311-61c41a582a56 
/var/lib/glance/images/4d890feb-3c24-4425-8311-61c41a582a56: QEMU QCOW Image (v2), 41126400 bytes

glance镜像操作实例

1. 命令行创建image

通过Dashboard创建image的流程十分简单,但是当要创建的image体积过大时,页面操作会卡住很长的一段时间,所以我们一般建议通过命令行来创建image。

# 加--progress参数显示上传进度
[root@openstack-controller tools]# glance image-create --name ubuntu-16.04 --file ubuntu-16.04-server-cloudimg-amd64-disk1.img \
--disk-format qcow2 --container-format bare --progress
[=============================>] 100%
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | b27130a877734d9ec938a63ca63c4ee7     |
| container_format | bare                                 |
| created_at       | 2017-06-30T03:03:58Z                 |
| disk_format      | qcow2                                |
| id               | cafc3188-54a0-4f51-8286-0fb2b44d81f5 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | ubuntu-16.04                         |
| owner            | 471592a4281e4223b2ad578b5c9b8442     |
| protected        | False                                |
| size             | 303235072                            |
| status           | active                               |
| tags             | []                                   |
| updated_at       | 2017-06-30T03:04:03Z                 |
| virtual_size     | None                                 |
| visibility       | private                              |
+------------------+--------------------------------------+
# 通过上面的id找到image的上传路径
[root@openstack-controller tools]# ls /var/lib/glance/images/cafc3188-54a0-4f51-8286-0fb2b44d81f5 
/var/lib/glance/images/cafc3188-54a0-4f51-8286-0fb2b44d81f5

2. 使用guestfish定制修改镜像文件

# 安装guestfish命令工具
[root@openstack-controller tools]# yum install -y libguestfs-tools
[root@openstack-compute tmp]# guestfish --rw -a ubuntu-16.04-server-cloudimg-amd64-disk1.img 

Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell
# 必须先输入run去启动虚拟机,may take a while
><fs> run

 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
# 列出image的文件系统
><fs> list-filesystems
/dev/sda1: ext4
# 无法直接操作问价系统,需要将文件系统挂载后才能操作
><fs> cat /etc/hosts
libguestfs: error: download: download_stub: you must call 'mount' first to mount the root filesystem
><fs> mount /dev/sda1 /
# 现在可以像平常一样修改文件了^_^
><fs> cat /etc/hosts
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
# 输入exit退出完成修改
><fs> exit

3. 使用guestmount挂载并修改镜像

guestmount工具同样是libguestfs-tools提供,可以将镜像挂载到本地后进行文件修改

[root@openstack-compute tmp]# guestmount -a ubuntu-16.04-server-cloudimg-amd64-disk1.img  -i --rw /mnt
[root@openstack-compute tmp]# cd /mnt/
[root@openstack-compute mnt]# ls
bin  boot  dev  etc  home  initrd.img  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var  vmlinuz         
[root@openstack-compute mnt]# cat etc/hosts
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
[root@openstack-compute mnt]# cd /
[root@openstack-compute /]# umount /mnt/
[root@openstack-compute /]# 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,654评论 18 139
  • 第一章 OpenStack基础 OpenStack管理的资源及提供的服务OpenStack做为一个操作系统,...
    sgt_tiger阅读 12,918评论 4 72
  • Openstack Mitaka安装部署教程 一、实验环境: 系统:centos7.2-minimal 网络:管理...
    指间_流年阅读 2,196评论 0 0
  • OpenStack简介 OpenStack版本发展 OpenStack版本系列字母以A~Z命名,从2010年发布的...
    糯米藕阅读 5,029评论 0 17
  • 想赚钱,先让自己值钱,让自己变成钱。 作者:逆境老王 时间:2017年2月19日
    逆境老王阅读 183评论 0 1