Openstack 镜像

半兽人 发表于: 2024-12-24   最后更新时间: 2024-12-25 11:10:25  
{{totalSubscript}} 订阅, 68 游览

如果没有虚拟机镜像(有些人称之为 “虚拟设备”),OpenStack 就不会非常有用。本指南介绍如何获取、创建和修改与 OpenStack 兼容的虚拟机镜像。

为了简明扼要,我们有时会使用image(镜像)一词来代替虚拟机镜像。

什么是虚拟机镜像?

虚拟机镜像是一个单一文件,其中包含一个安装了可启动操作系统的虚拟磁盘。

镜像的磁盘和容器格式

虚拟机镜像有不同的格式。格式描述了组成文件的位在存储介质上的排列方式。使用者需要了解格式才能正确解释文件的内容(而不是简单地将其视为一堆位)。

在考虑存储虚拟机镜像时,有两种格式可以发挥作用。

容器格式

存储文件可以是包含虚拟磁盘的容器。例如,虚拟磁盘可能包含在一个 tar 文件中,必须先打开该文件才能检索磁盘。但也有可能虚拟磁盘不包含在文件中,而只是由镜像服务按原样存储。

磁盘格式

虚拟磁盘本身的位以某种格式排列。使用者必须知道这种格式是什么,才能有效地使用虚拟磁盘。

镜像元数据

镜像元数据(也称为 “镜像属性”)提供有关镜像服务所存储虚拟磁盘的信息。元数据存储为镜像服务与镜像数据关联的镜像记录的一部分。镜像元数据可帮助最终用户确定镜像的性质,并被与镜像服务接口的相关 OpenStack 组件和驱动程序使用。

为了让镜像消费者能轻松识别镜像的容器和磁盘格式,镜像服务为其预留了特定的元数据密钥。容器格式(container_format)和磁盘格式(disk_format)的名称不足为奇。每个键的法定值都在镜像服务的镜像模式中指定,您可以在任何 OpenStack 安装中通过调用以下 API 来获取:

GET /v2/schemas/image

不同 OpenStack 云支持的格式可能有所不同。特定云接受的格式将在该云对镜像 API 的 get-schema 响应中指定。

注意
镜像模式列出了容器和磁盘格式的合法标识符。要了解这些标识符的含义,请查阅《Glance 用户指南》中的 “磁盘和容器格式”部分。

镜像元数据还能决定主机的调度。如果在镜像上设置了特定的元数据(可能的元数据有体系结构、hypervisor的类型和虚拟机模式),并且 Compute 已配置为启用 ImagePropertiesFilter 调度器过滤器(默认),那么调度器只会考虑满足指定属性的计算主机。

注意
Compute 的 ImagePropertiesFilter 值在 /etc/nova/nova.conf 文件 [filter_scheduler] 部分的 enabled_filters 值中指定。

其他 Compute 调度器过滤器也可能受到镜像元数据的影响。有关有效属性键和值的完整列表,请参阅《Glance 管理指南》中的 “有用的镜像属性”部分。

为镜像添加元数据

通过在 openstack image createopenstack image set 命令中使用 --property key=value 参数,可以为 Image 服务镜像添加元数据。可以指定多个属性。例如

openstack image set --property architecture=arm \
  --property hypervisor_type=qemu image_name_or_id

常用镜像属性也在 /etc/glance/schema-image.json 文件中指定。其他有用的属性键和值列在《Glance 管理指南》的 “有用的镜像属性”部分。

可以使用 openstack image show 命令显示镜像的所有相关属性。例如:

$ openstack image show cirros
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | ee1eca47dc88f4879d8a229cc70a07c6                     |
| container_format | bare                                                 |
| created_at       | 2016-04-15T13:57:38Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/55f0907f-70a5-4376-a346-432e4ec509ed/file |
| id               | 55f0907f-70a5-4376-a346-432e4ec509ed                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | cirros                                               |
| owner            | f9574e69042645d6b5539035cb8c00bf                     |
| properties       | architecture='arm', hypervisor_type='qemu'           |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 13287936                                             |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2016-04-15T13:57:57Z                                 |
| virtual_size     | None                                                 |
| visibility       | public                                               |
+------------------+------------------------------------------------------+

注意
Volume-from-Image 属性
当从镜像创建块存储卷时,还要考虑你配置的镜像属性。如果更改核心镜像属性,还应更新块存储配置。修改所有控制器节点上 /etc/cinder/cinder.conf 文件中的 glance_core_properties,以匹配你在镜像服务中设置的核心属性。

元数据定义 (metadefs) 服务

镜像并不是唯一可以关联元数据的 OpenStack 资源。许多其他资源(例如卷)都支持在资源上设置元数据。与镜像一样,元数据可能会被人们使用,以了解有关资源的信息,也可能会被其他 OpenStack 服务使用,以便有效地使用资源(例如,nova 过滤器调度程序使用镜像架构属性来确定合适的主机,在该主机上根据镜像构建实例)。因此,人们和服务必须有一种可发现的方式来确定整个 OpenStack 云中有哪些元数据属性和值可用。

为了实现这一点,Glance(OpenStack 镜像服务)托管元数据定义服务,也称为 OpenStack 元定义目录。

使用此服务,你可以定义:

Namespace

  • 包含元数据定义。
  • 为命名空间中定义的所有内容指定访问控制。这些访问控制决定了谁可以定义和使用名称空间中的定义。
  • 将定义与不同类型的资源关联起来。

Property

单个属性及其基本约束。每个属性只能是基本类型。例如,字符串、整数、数字、布尔值或数组。

Object

描述一组一对多属性及其基本约束。组中的每个属性只能是基本类型。例如,字符串、整数、数字、布尔值或数组。

对象可以选择在语义理解下定义必需属性,即如果您使用该对象,则应提供所有必需属性。

资源类型关联

指定资源类型与适用于它们的命名空间之间的关系。此信息可用于 驱动UICLI视图。例如,对象、属性和标签的相同命名空间可用于镜像、快照、卷和类型。或者命名空间可能仅适用于镜像。

镜像服务已为元数据定义目录预定义命名空间。要将此目录中的文件加载到数据库中:

$ glance-manage db_load_metadefs

要从数据库卸载文件:

$ glance-manage db_unload_metadefs

要以 JSON 格式导出定义:

$ glance-manage db_export_metadefs

注意
默认情况下,文件从 Image 服务的 /etc/glance/metadefs 目录加载并导出。

Image 服务与 Metadefs 服务之间没有特殊关系。如果要将 Metadefs 服务中定义的键和值应用到镜像,必须使用镜像服务 API 或客户端工具,就像使用其他 OpenStack 服务一样。

有关 OpenStack Metadefs 目录的更多信息,请参阅:

Ref

https://docs.openstack.org/image-guide/introduction.html

更新于 2024-12-25
在线,1小时前登录

查看OpenStack更多相关的文章或提一个关于OpenStack的问题,也可以与我们一起分享文章