OpenStack镜像管理与制作

一、OpenStack镜像服务

1、什么是镜像

  • 镜像通常是指一系列文件或一个磁盘驱动器的精确副本
  • 虚拟机所使用的虚拟磁盘,实际上是一种特殊格式的镜像文件。
  • 云环境下尤其需要镜像。
  • 镜像就是一个模板,类似于VMware的虚拟机模板,其预先安装基本的操作系统和其他应用软件。
  • OpenStack中的镜像就是虚拟机镜像,是包含有可启动的操作系统的虚拟机实例磁盘的单个文件。

2、什么是镜像服务

  • 镜像服务就是用来管理镜像的,用途就是让用户能够发现、获取和保存镜像。
  • OpenStack中提供镜像服务的是Glance项目,其功能有:
  • 查询和获取镜像的元数据和镜像本身
  • 注册和上传虚拟机镜像,包括镜像的创建、下载和管理。
  • 维护镜像信息,包括镜像的元数据和镜像本身。
  • 支持多种方式存储镜像
  • 对虚拟机实例执行创建快照命令来创建新的镜像,或备份虚拟机实例的状态
  • Glance是关于镜像的中心,可以被终端用户或Nova计算服务访问,接受磁盘或镜像的API请求,定义镜像元数据的操作

3、Glance架构

Glance不负责实际存储,只实现镜像管理功能,功能单一,包含组件较少。

  1. 客户端:Glance服务的使用者
  2. glance-api:系统后台运行的服务进程,是Glance服务的入口,对外提供REST API,负责接受来自客户端的RESTful请求,响应镜像查询、获取和存储的调用
    1. 与镜像本身存取相关操作,glance-api会将请求转发给该镜像的存储后端,由后端提供相应操作。
    2. 与镜像的元数据相关操作,glance-api会直接操作数据库,存取镜像的元数据(大小、类型等信息)
  3. 数据库:Glance的数据库模块用于存储镜像的元数据,可以选用MySQL、MariaDB等
  4. 存储后端:Glance服务本身不存储镜像文件,而是将文件存放在后端存储系统中。例如:
    • 本地文件存储(或任何挂载到glance-api控制节点的文件系统):默认配置
    • 对象存储:Swift
    • RADOS块设备(RBD)
    • Sheepdog:一个分布式存储系统,为QEMU提供块存储服务,为支持互联网SCSI协议的客户端提供存储服务,同时支持RESTful接口的对象存储服务。
    • 块存储:Cinder
    • VMware数据存储

4、验证OpenStack的Glance服务

4.1、查看Glance配置文件

 [root@node-a ~]# cd /etc/glance[root@node-a glance]# lsglance-api.conf         # Glance API服务器配置文件          glance-registry.conf     metadefs       rootwrap.dglance-cache.conf       # 定义镜像缓存配置        glance-scrubber.conf    # 定义镜像删除相关配置policy.json             # 镜像服务的策略配置文件schema-image.jsonglance-image-import.conf  glance-swift.conf     rootwrap.conf

4.2、验证Glance服务

 # 查看当前运行的Glance服务[root@node-a glance]# systemctl status *glance*.service● openstack-glance-api.service - OpenStack Image Service (code-named Glance) API serverLoaded: loaded (/usr/lib/systemd/system/openstack-glance-api.service; enabled; vendor preset: disabled)Active: active (running) since Tue 2024-04-09 14:23:29 CST; 6 days ago...​● openstack-glance-registry.service - OpenStack Image Service (code-named Glance) Registry serverLoaded: loaded (/usr/lib/systemd/system/openstack-glance-registry.service; enabled; vendor preset: disabled)Active: active (running) since Tue 2024-04-09 14:23:29 CST; 6 days ago...

Glance有两个子服务。glance-registry是系统后台 运行的Glance注册服务进程,负责处理与镜像源数据相关的RESTful请求。从Queens版本开始弃用,这里为了兼容早期版本。

4.3、使用镜像服务的API

请求一个admin项目作用域的令牌

[root@node-a ~]# curl -i   -H "Content-Type: application/json"   -d '{ "auth": {"identity": {          "methods": ["password"],"password": {      "user": {"name": "admin","domain": { "id": "default" },"password": "admin账号的密码"}}},"scope": {                     "project": {                  "name": "admin","domain": { "id": "default" }}}}}'   "http://localhost:5000/v3/auth/tokens" ;

导出环境变量OS_TOKEN,并将其设置为上述操作获取的令牌ID,尝试通过Images API v1获取当前镜像列表 

[root@node-a ~]# export OS_TOKEN="上述获取到的TOKEN"[root@node-a ~]# curl -s -H "X-Auth-Token: $OS_TOKEN"   http://localhost:9292/v1/images

v1无法使用,要求使用Image API v2

[root@node-a ~]# curl -s -H "X-Auth-Token: $OS_TOKEN"   http://localhost:9292/v2/images

通过认证令牌向本地运行的服务(端口9292)发起请求,获取关于镜像的信息,然后通过管道将这些信息传递给Python的json.tool模块,格式化输出JSON数据。 

[root@node-a ~]# curl -s -H "X-Auth-Token: $OS_TOKEN"   http://localhost:9292/v2/images | python -mjson.tool

二、管理OpenStack镜像

1、虚拟机镜像的磁盘格式和容器格式

1.1、虚拟机镜像的磁盘格式

磁盘格式说明
.raw无结构的磁盘格式
.vhdVHD磁盘格式。该格式通用于VMware、Xen、Microsoft、VirtualBox以及其他虚拟机实例管理程序
.vhdxVHDX磁盘格式。VHD格式的增强版本,支持更大的磁盘尺寸
.vmdk另一种比较通用的虚拟机实例磁盘格式
.vdi由VirtualBox虚拟机实例监控程序和QEMU仿真器支持的磁盘格式
.iso用于光盘(如CD-ROM)数据内容的档案格式
.ploop由Virtuozzo支持,用于运行OS容器的磁盘格式
.qcow2由QEMU仿真器支持,可动态扩展,支持写时复制(Copy on Write)的磁盘格式
.aki在Glance中存储的Amazon内核格式
.ari在Glance中存储的Amazon虚拟内存盘(Ramdisk)格式
.ami在Glance中存储的Amazon虚拟机实例格式

1.2、虚拟机镜像的容器格式

容器格式说明
.bare没有容器或元数据封头的镜像
.ovf开放虚拟化格式(Open Virtualization Format)
.ova开放虚拟化设备格式(Open Virtualization Appliance Format)
.aki在Glance中存储的Amazon内核格式
.ari在Glance中存储的Amazon虚拟内存盘(Ramdisk)格式
.ami在Glance中存储的Amazon机器格式
.docker在Glance中存储的容器文件系统的Docker的tar档案
.compressed未指定压缩文件的精确格式。特定的OpenStack服务可能支持特定的格式。可以假定任何使用这种压缩容器格式镜像创建的OpenStack服务能够使用这种镜像

2、镜像的状态

3、镜像的访问权限

  • Public(公共的):可以被所有的项目使用。
  • Private(私有的):只能被镜像所有者所在的项目使用。
  • Shared(共享的):一个非共有的镜像可以共享给其他项目。
  • Protected(受保护的):镜像不能被删除。

4、镜像的元数据

  • 镜像的元数据即镜像属性,提供关于由镜像服务所存储的虚拟磁盘的信息
  • 元数据作为与镜像数据关联的镜像记录的一部分由镜像服务存储。
  • 相关的OpenStack组件和驱动通过镜像元数据与镜像服务交互。
  • 元数据定义服务提供了一个通用的API来自定义可用的键值对元数据。

5、命令行的镜像管理方法

5.1、查看镜像(语法)

 # 查看已有的镜像列表,查询结果包括镜像的ID和名称,以及状态openstack image list# 查看镜像详细信息openstack image show 镜像名称或ID# 创建镜像openstack image create [选项] 镜像名称# 更改镜像openstack image set  [选项]  镜像名称# 取消镜像更改openstack image unset  [选项]  镜像名称# 删除镜像openstack image delete  <镜像名称或ID># 将镜像与项目关联openstack image add project  [--project-domain 项目所属域]  镜像名或ID  项目名或ID# 将镜像与项目解除关联openstack image remove project  [--project-domain 项目所属域]  镜像名或ID  项目名或ID

6、实操

6.1、获取镜像

FDO官网: Image resources — RDO (rdoproject.org)

OpenStack官网: CentOS Cloud images

6.2、查看镜像

普通云用户一般通过Web图形界面来使用镜像

  • 镜像列表-demo:

  • 镜像详细信息:

测试时使用命令行工具查看镜像:                                                

6.3、创建镜像

将下载的镜像通过xftp工具上传到虚拟机中的Downloads文件夹下:

本例下载的文件是CentOS-7-x86_64-GenericCloud-2003.qcow2.xz,这是一个.xz格式的压缩包,需要先解压缩才能使用。

 [root@node-a ~]# yum install xz     # 解压缩工具​# 执行命令将下载的镜像压缩包解压缩[root@node-a ~]# xz -d /root/Downloads/CentOS-7-x86_64-GenericCloud-2003.qcow2.xz​# 加载云管理员admin的环境脚本,以admin用户身份进行操作[root@node-a ~]# source keystonerc_admin​# 向OpenStack云上传一个.qcow2格式的CentOS 7镜像并进行注册。[root@node-a ~(keystone_admin)]# openstack image create --disk-format qcow2 --container-format bare   --public --file ~/Downloads/CentOS-7-x86_64-GenericCloud-2003.qcow2 centos7​# 查看镜像列表(可以看到新建成功[root@node-a ~(keystone_admin)]# openstack image list+--------------------------------------+---------+--------+| ID                                   | Name    | Status |+--------------------------------------+---------+--------+| c6cb27d8-4d93-427d-b67a-af6349dab979 | centos7 | active || 3669a079-518f-4cb5-b1c1-677dad16096e | cirros  | active || 190b8365-19bc-43a1-8314-e8139d5d8be6 | fedora  | active |+--------------------------------------+---------+--------+​# 查看刚刚新建的centos7镜像的详细信息[root@node-a ~(keystone_admin)]# openstack image show centos7

6.4、管理镜像

Web图形界面管理镜像

  • 镜像管理操作界面:

  • 编辑镜像界面:

  • 编辑镜像的元数据界面:

命令行工具为镜像设置元数据

  • 创建镜像的openstack image create命令修改镜像的openstack image set命令中,通过--property选项以键值对的形式定义元数据。

 # 通过元数据设置将“fedora”镜像的架构(architecture)设置为x86_64、Hypervisor_type类型设置为qemu。[root@node-a ~(keystone_admin)]# openstack image set --property architecture=x86_64 --property hypervisor_type=qemu fedora
  • #OpenStack镜像通用的镜像元数据在/etc/glance/schema-image.json 配置文件中定义。

6.5、转换镜像格式

使用qemu-img工具的convert子命令将镜像从一种格式转换为另一种格式。

 # 格式qemu-img  convert  [-f 源格式] [-O 目标格式]  [-o 选项] 源文件路径 目标文件路径
# 将.raw格式的cirros镜像转换为.qcow2格式的镜像
[root@node-a ~]# qemu-img convert -f raw -O qcow2 ~/Downloads/cirros-0.5.1-x86_64-disk.img ~/Downloads/cirros-0.5.1-x86_64-disk.qcow2

三、基于预制镜像定制OpenStack镜像

1、cloud-init

  • cloud-init是一组Python脚本的集合,是一个能够定制云镜像的实用工具。
  • 通过修改/etc/cloud/cloud.cfg配置文件来实现
  • cloud-init一般会被包含在用于启动虚拟机实例的镜像文件中。
  • 基于镜像部署虚拟机实例,cloud-init会随虚拟机实例的启动自动启动,对虚拟机实例进行自定义的初始配置。
  • cloud-init目前支持Ubuntu、Fedora、Debian、RHEL、CentOS等主流的Linux操作系统发行版。

2、实例快照

  • 快照(Snapshots)是一种基于时间点的数据备份技术,能够记录某一个时刻的数据信息并将其保存,以便在需要时将数据恢复到之前时间点的状态
  • OpenStack中为虚拟机实例生成的快照抓取实例正在运行的磁盘的状态,其实是一个完整的镜像,由Glance镜像服务管理。

3、基于预制镜像定制镜像的方法

四、使用自动化工具制作OpenStack镜像

1、Diskimage-builder工具

  • Diskimage-builder简称DIB,是OpenStack的官方项目。
  • DIB主要用于构建适用于OpenStack平台的操作系统镜像。
  • Diskimage-builder的镜像生成原理
    • 将最初启动虚拟机实例时安装操作系统完成后的镜像保存为基础镜像。
    • 将该基础镜像挂载到本地。
    • chroot到根分区。
    • 根据不同的定制需要增加不同的模块。

    • 安装完成后保存为特定格式的镜像文件。

  • 使用Diskimage-builder首次制作某操作系统镜像时需要从网上下载该操作系统的基础镜像文件,后面再制作同一版本的镜像时,可直接使用镜像缓存文件。

2、其他自动化镜像生成工具

  • Oz:自动化生成虚拟机镜像文件的命令行工具。
  • Packer:从单个源配置构建多种平台的虚拟机镜像的工具。
  • image-bootstrap:生成可启动的虚拟机镜像的命令行工具。
  • imagefactory:可以自动构建、转换和上传镜像到不同的云提供商的新型工具。
  • KIWI:操作系统镜像构建器,支持多种Linux硬件平台、虚拟化和云系统的操作系统镜像构建。
  • virt-builder:快速构建虚拟机镜像的工具。

3、实操

3.1、安装Diskimage-builder

[root@node-a ~]# python							# 1、检查python环境
Python 2.7.5 (default, Nov 14 2023, 16:14:06) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
[root@node-a ~]# pip -y install epel-release	# 2、安装epel扩展源
[root@node-a ~]# yum -y install python-pip		# 3、安装pip工具
[root@node-a ~]# yum -y install qemu-img kpartx	# 4、安装支持环境
[root@node-a ~]# pip install --upgrade "pip < 20.0"	# 5、升级pip工具
[root@node-a ~]# pip install  "diskimage-builder==2.2.0"	# 6、安装Diskimage-builder
[root@node-a ~]# disk-image-create --version	# 检查是否安装完成,输出版本
2.2.0

3.2、使用Diskimage-builder自动构建Ubuntu操作系统镜像

  • 设置相关的环境变量

    [root@node-a ~]# export DIB_DEV_USER_USERNAME=ubuntu      #初始用户名
    [root@node-a ~]# export DIB_DEV_USER_PASSWORD=ubuntu      #初始用户密码
    [root@node-a ~]# export DIB_DEV_USER_PWDLESS_SUDO=YES   #为用户启用无密码sudo
    [root@node-a ~]# export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack"     #cloud-init的源是ConfigDrive和OpenStack
  • 构建镜像

    [root@node-a ~]# disk-image-create -a amd64 -t qcow2 -o ubuntu.qcow2 ubuntu vm  cloud-init-datasources devuser
    ...
    2024-04-16 17:12:19.949 INFO diskimage_builder.block_device.blockdevice [-] Removing temporary dir [/tmp
    Converting image using qemu-img convert
    Image file ubuntu.qcow2 created...	# 创建完成
    ...
  • 检查所生成的镜像文件

    [root@node-a ~]# ls ubuntu.qcow2 -l
    -rw-r--r-- 1 root root 537329664 Apr 16 17:13 ubuntu.qcow2
  • 开始测试,将该镜像上传到OpenStack云中并查看

    [root@node-a ~]# source keystonerc_demo
    [root@node-a ~(keystone_demo)]# openstack image create --disk-format qcow2 --file ubuntu.qcow2 ubuntu
    ...
    # 查看,可以发现上传镜像成功
    [root@node-a ~(keystone_demo)]# openstack image list
    +--------------------------------------+---------+--------+
    | ID                                   | Name    | Status |
    +--------------------------------------+---------+--------+
    | c6cb27d8-4d93-427d-b67a-af6349dab979 | centos7 | active |
    | 3669a079-518f-4cb5-b1c1-677dad16096e | cirros  | active |
    | 190b8365-19bc-43a1-8314-e8139d5d8be6 | fedora  | active |
    | bfe8eb08-3da7-4af7-a7ed-b13fa2978e90 | ubuntu  | active |
    +--------------------------------------+---------+--------+

五、手动创建OpenStack镜像

手动制作镜像是最符合实际使用需求的,需要定制什么样的镜像都可以由自己来决定,只是过程比较烦琐。这种方式仅适合开发人员,或小规模的应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625028.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch(GPU版本)简介、安装与测试运行

目录 Pytorch简介Pytorch安装查看CUDA版本Pytorch命令安装Pytorch测试运行Pytorch简介 PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。 2…

Ctex+texmaker

最近要准备幻灯片&#xff0c;发现我喜欢的模板是用的Ctex&#xff0c;在Texlive下没有办法运行。 于是进行了很多尝试。最后找到一个快捷的办法&#xff0c;删掉自己笔记本中的texlive&#xff0c;在Ctex官网中下载Ctex套件(下载中心 – CTEX)&#xff0c;下载的版本是过时版…

初识数据库与数据库管理系统

实体的概念与数据库 实体(对象): 客观存在的事物都是实体实体数据的存储要求: 必须按照一定的分类和规律存储数据库: 专门用于存储这些实体的信息的数据集合数据库的特点: 海量存储数据&#xff0f;数据检索非常方便保持数据信息的一致&#xff0f;完整&#xff0f;并实现数据…

ubuntu22安装宝塔面板

方法一&#xff1a;运行安装宝塔命令 wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec 安装成功后&#xff0c;需到服务器管理后台的安全组中配置新规则&#xff0c;放行宝塔面板的端口&#xff08;以阿…

Spark-机器学习(2)特征工程之特征提取

在之前的文章中&#xff0c;我们了解我们的机器学习&#xff0c;了解我们spark机器学习中的MLIib算法库&#xff0c;知道它大概的模型&#xff0c;熟悉并认识它。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&a…

大学生前端学习第一天:了解前端

引言&#xff1a; 哈喽&#xff0c;各位大学生们&#xff0c;大家好呀&#xff0c;在本篇博客&#xff0c;我们将引入一个新的板块学习&#xff0c;那就是前端&#xff0c;关于前端&#xff0c;GPT是这样描述的&#xff1a;前端通常指的是Web开发中用户界面的部分&#xff0c;…

C++ 使用共享内存的进程通信方式模拟生产者消费者模型

编码环境如下 系统环境&#xff1a;linux 信号量&#xff1a;使用Linux操作系统的SystemV信号量 生产者代码如下 #include <iostream> #include <sys/sem.h> #include <sys/shm.h> #include <string.h>#define SEM_KEY 0x5678 #define SHM_KEY 0xAB…

适用于 Windows 的 10 个顶级 PDF 编辑器 [免费和付费]

曾经打开PDF文件&#xff0c;感觉自己被困在数字迷宫中吗&#xff1f;无法编辑的文本、无法调整大小的图像以及签署感觉像是一件苦差事的文档&#xff1f;好吧&#xff0c;不用再担心了&#xff01;本指南解开了在 Windows 上掌握 PDF 的秘密&#xff0c;其中包含 10 款适用于 …

图数据库Neo4J入门——Neo4J下载安装+Cypher基本操作+《西游记》人物关系图实例

这里写目录标题 一、效果图二、环境准备三、数据库设计3.1 人物节点设计3.2 关系设计 四、操作步骤4.1 下载、安装、启动Neo4J服务4.1.1 配置Neo4J环境变量4.1.2 启动Neo4J服务器4.1.3 启动Ne04J客户端 4.2 创建节点4.3 创建关系&#xff08;从已有节点创建关系&#xff09;4.4…

即插即用模块详解SCConv:用于特征冗余的空间和通道重构卷积

目录 一、摘要 二、创新点说明 2.1 Methodology 2.2SRU for Spatial Redundancy​编辑 2.3CRU for Channel Redundancy 三、实验 3.1基于CIFAR的图像分类 3.2基于ImageNet的图像分类 3.3对象检测 四、代码详解 五、总结 论文&#xff1a;https://openaccess.thecvf.c…

全网短剧搜索源码+短剧API接口 短剧下载 热门短剧 全开源可二开

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 pc端h5手机端全网短剧搜索前端源码分享 内含7000短剧资源(不支持在线播放&#xff09; 搜索API接口&#xff1a;文件内查看 全部短剧API接口&#xff1a;文件内查看 每日更新API接…

【【相机运动】_Camera_shake镜头晃动动画】

【相机运动】:Camera shake镜头晃动动画 2022-07-20 20:28 评论(0)