项目五 OpenStack镜像管理与制作

任务一 理解OpenStack镜像服务

1.1 •什么是镜像

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

1.2 •什么是镜像服务

镜像服务用来管理镜像 ,让 用户能够发现、获取和保存镜像
镜像服务主要功能
Ø 查询 和获取镜像的元数据和镜像本身。
Ø 注册 和上传虚拟机镜像,包括镜像的创建、下载和管理。
Ø 维护 镜像信息,包括镜像的元数据和镜像本身。
Ø 支持 多种方式存储 镜像。
Ø 虚拟机实例执行创建 快照命令创建 新的镜像, 或备份 虚拟机实例的状态。
Glance 是关于镜像的 中心。

1.3 •Glance架构

1.4 •查看Glance配置文件

Glance API服务器配置文件名一般是glance-api.conf,其配置对应Glance的glance-api服务,其中镜像存储后端的相关配置在[glance_store]节中定义,默认设置如下。

stores=file,http,swift

default_store=file

glance- cache.conf 定义镜像缓存 配置。
glance- scrubber.conf 定义镜像删除相关 配置。

policy.json是镜像服务的策略配置文件

1.5 •验证Glance服务

查看 当前运行的 Glance 服务。

[root@node-a etc]# systemctl status *glance*.service

glance-registry 系统后台运行的 Glance 注册服务进程,负责处理与镜像元数据相关的 RESTful 请求
OpenStack Queens 版本 开始将 glance-registry 服务集成到了 glance- api ,如果 glance- api 接收到与镜像元数据有关的请求,会直接操作 数据库。

1.6 •试用镜像服务的API

(1)请求一个admin项目作用域的令牌。

[root@node-a ~]# curl -i   -H "Content-Type: application/json"   -d '   \

{ "auth": {    

    "identity": {

        …

    },

    "scope": {

        …

    }

  }

}'   "http://localhost:5000/v3/auth/tokens"

(2)导出环境变量OS_TOKEN,并将其值设置为上述操作获取的令牌ID

(3)通过Images API v1获取当前镜像列表。

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

{"versions": [{"status": "CURRENT", "id": "v2.9", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}, {"status": "SUPPORTED", "id": "v2.7", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]},  … "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}, {"status": "SUPPORTED", "id": "v2.0", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}]}

任务二  管理OpenStack镜像

2.1 虚拟机镜像的磁盘格式

2.2 •虚拟机镜像的容器格式

2.3 •镜像的状态

2.4 •镜像的访问权限

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

2.5 •镜像的元数据

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

2.6 •命令行的镜像管理方法

建议 使用 openstack 命令替代传统的 glance 命令

1)查看镜像

Ø 查看 已有的镜像列表,查询结果包括镜像的 ID 和名称,以及状态。

openstack image list

Ø 查看 镜像详细 信息。

openstack image show 镜像名称或ID

2)创建镜像

openstack image create [选项] 镜像名称

3)更改镜像

Ø 更改镜像。

openstack image set  [选项镜像名称

Ø 取消 镜像 更改。

                             openstack image unset  [选项镜像名称

4)删除镜像

openstack image delete  <镜像名称或ID>

5)镜像与项目关联。

Ø 将镜像与项目 关联。

openstack image add project  [--project-domain 项目所属域镜像名或ID  项目名或ID

Ø 将镜像与项目解除 关联。

openstack image remove project  [--project-domain 项目所属域镜像名或ID  项目名或ID

2.7 ••查看镜像

使用命令行工具查看镜像。
加载用户的环境变量。

[root@node-a ~]# source keystonerc_demo

显示镜像列表。

[root@node-a ~(keystone_demo)]# openstack image list

+------------------------------------+-------+-----+

| ID                                           | Name   | Status |

+------------------------------------+-------+-----+

| 369d0e73-abb8-4a90-b835-6c627a0f47d1  | cirros    | active  |

| 37116975-33c9-4d3e-8551-0c83e4efe7ef   | fedora   | active  |

查看镜像的详细信息。

[root@node-a ~(keystone_demo)]# openstack image show fedora

 2.8 •创建镜像

加载 云管理员 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.qcow2 centos7

2.9 •管理镜像

使用 命令行工具为镜像设置元数据
创建镜像的 openstack image create 命令或修改镜像的 openstack image set 命令中,通过 --property 选项以键值对的形式定义 元数据。
示例

 [root@node-a ~(keystone_admin)]# openstack image set --property architecture= x86_64 --property hypervisor_type=qemu fedora

2.10•转换镜像格式

使用 qemu-img 工具的 convert 命令将 镜像从一种格式转换为另一种格式
基本 语法格式如下。

qemu-img  convert  [-f 源格式] [-O 目标格式]  [-o 选项] 源文件路径 目标文件路径

示例

[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镜像

3.1 •什么是cloud-init

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

3.2 •什么是实例快照

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

3.3•对实例进行定制

1)登录实例。

[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem centos@192.168.199.50

2)切换到root用户。

[root@cenos7-vm ~]$ sudo su -

3)执行passwd命令设置root用户的密码。

[root@cenos7-vm ~]# passwd

Changing password for user root.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

4)使用vi工具编辑/etc/ssh/sshd_config配置文件,将其中的PasswordAuthentication参数值设置为yes,然后保存该文件并退出编辑,重SSH服务。

5)查看CentOS的详细版本。

[root@cenos7-vm ~]# cat /etc/redhat-release

6)安装图形界面。

yum groupinstall "Server with GUI"

7)将时区修改为上海。

[root@cenos7-vm ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

cp: overwrite '/etc/localtime'? y

8)将系统语言修改为中文。

[root@cenos7-vm ~]# localectl  set-locale LANG=zh_CN.UTF8

9)设置系统默认启动图形界面。

[root@cenos7-vm ~]# systemctl set-default graphical.target

Removed symlink /etc/systemd/system/default.target.

Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.

3.4 •定制cloud-init初始化行为

编辑 实例 CentOS 7 / etc /cloud/ cloud.cfg 配置文件。
Ø disable_root 参数的值设为 0 ,让 root 账户能够直接登录实例(默认不允许登录)
Ø ssh_pwauth 参数的值设为 1 ,以启用 SSH 密码登录(默认只能通过私钥 SSH 登录)
启系统。

[root@cenos7-vm ~]# reboot

3.5•将实例快照转换成镜像

获取 实例快照的文件路径,可通过查看其“ ID” 值确定 具体的文件路径。

[root@node-a ~(keystone_demo)]# openstack image list

+----------------------------------+---------------+--------+

| ID                                         | Name             | Status    |

+----------------------------------+---------------+--------+

| 885aeabf-3753-43c0-865f-85d08083a1f1 | centos7            | active    |

| c9e65002-07fc-4ed8-92f5-8c0ced750332 | centos7-gui-snap  | active    |

| 369d0e73-abb8-4a90-b835-6c627a0f47d1 | cirros              | active   |

| 37116975-33c9-4d3e-8551-0c83e4efe7ef | fedora              | active   |

执行 openstack image create 命令创建新的镜像。

[root@node-a ~(keystone_demo)]# openstack image create centos7-gui --file /var/lib/ glance/images/c9e65002-07fc-4ed8-92f5-8c0ced750332 --disk-format qcow2 --container- format bare

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

4.1 •Diskimage-builder工具

Diskimage -builder 简称 DIB ,是 OpenStack 的官方 项目。
DIB 主要 用于构建适用于 OpenStack 平台的操作系统 镜像。
Diskimage -builder 的镜像生成 原理

1)将最初启动虚拟机实例时安装操作系统完成后的镜像保存为基础镜像。

2)将该基础镜像挂载到本地。

3chroot到根分区。

4)根据不同的定制需要增加不同的模块。

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

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

4.2 •其他自动化镜像生成工具

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

4.3 •安装Diskimage-builder

1)安装epel扩展源。

yum -y install epel-release

2)安装pip工具。

yum -y install python-pip

3)安装支持环境。

yum -y install qemu-img kpartx

4)升级pip工具。

pip install --upgrade "pip < 20.0”

5)安装Diskimage-builder

pip install  "diskimage-builder==2.2.0"

4.4 •熟悉Diskimage-builder的用法

disk-image-create  [选项]…[元素]…

元素 Element )是指用来组织制作镜像的元素。元素决定镜像中包含的内容,例如创建用户、安装软件包、进行某种 配置。元素 还可以为 disk-image-create 命令的运行提供环境变量 。有许多 针对具体元素的环境变量
简单的示例
生成 一个通用的、可启动的最新发行版 Ubuntu 操作系统镜像。

disk-image-create ubuntu vm

进一步 定制可通过执行以下命令设置环境变量来实现。

export ELEMENTS_PATH=~/source/tripleo-image-elements/elements

disk-image-create -a amd64 -o fedora-amd64-heat-cfntools vm fedora heat-cfntools

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

设置 相关的环境变量。

[root@localhost ~]# export DIB_DEV_USER_USERNAME=ubuntu      #初始用户名

[root@localhost ~]# export DIB_DEV_USER_PASSWORD=ubuntu      #初始用户密码

[root@localhost ~]# export DIB_DEV_USER_PWDLESS_SUDO=YES   #为用户启用无密码sudo

[root@localhost ~]# export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack                                         

   #cloud-init的源是ConfigDriveOpenStack

构建 镜像。

[root@localhost ~]# disk-image-create -a amd64 -t qcow2 -o ubuntu.qcow2 ubuntu vm  cloud-init-datasources devuser

任务五  手动制作OpenStack镜像

5.1 •手动制作镜像

可以 使用 KVM ,或者使用 GUI 桌面虚拟化 工具。
创建新的虚拟机镜像时,应连接 Hypervisor 的图形界面控制台,用作虚拟机实例的显示 界面。
KVM 提供的图形界面控制台可以通过虚拟网络计算 VNC )协议或更新的独立计算环境简单协议 SPICE )访问
使用 KVM 平台制作 OpenStack 镜像实际上是一种系统镜像文件格式的转换,将制作好的系统镜像文件转换为原始格式的文件。

5.2 •KVM虚拟化工具

KVM 的基本架构

Libvirt 是一个软件集合,是一套为方便管理平台虚拟化技术而设计的开源代码的应用程序接口、守护进程和管理工具
Libvirt 不仅 提供了对虚拟机的管理,也提供了对虚拟网络和存储的管理
Libvirt 是目前使用非常广的虚拟机管理程序 接口。

5.3 •KVM虚拟磁盘(镜像)文件格式

. raw :原始的格式 ,直接 将文件系统的存储单元分配给虚拟机使用,采取直读直写的策略
. qcow2 QEMU 引入的镜像文件格式,也是目前 KVM 默认的格式
. qed .qcow2 的一种改型,存储定位查询方式和数据块大小和 .qcow2 一样

★★如果要使用虚拟机快照,则选择.qcow2格式

5.4 •VirtIO驱动程序与Cloudbase-init

VirtIO 其实就是一个运行于 Hypervisor 之上的 API ,虚拟化环境中的 I/O 操作通过 VirtIO Hypervisor 通信,可以具有更好的性能
Cloudbase-init Windows 操作系统和其他系统的云初始化 程序。 其作用与 Linux 操作系统中的 cloud- init 一样,也是一个开源的 Python 项目
Cloudbase-init 主要包括两个部分
Ø 服务 Service
Ø 插件 Plugin

5.5 •部署KVM

检查是否支持 CPU 虚拟化。

grep -E 'svm|vmx' /proc/cpuinfo

安装 KVM 软件包。

yum install qemu-kvm libvirt virt-install virt-manager virt-viewer

便于实验,应关闭该 KVM 主机的防火墙和 SELinux 功能。

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

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

相关文章

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论&#xff0c;编译64位报错&#xff0c;查了一圈没找到解决方案&#xff0c;最后换了32位的。 使用qt访问web接口&#xff0c;因为是https&#xff0c;没有openssl库会报错 QNetworkReply* reply qobject_cast<QNetworkReply*>(sender());if (reply){…

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一&#xff0c;指针的回忆杀1&#xff0c;指针的概念2&#xff0c;指针的声明和赋值3&#xff0c;指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二&#xff0c;二级指针详解1&#xff0c;定义2&#xff0c;示例说明3&#xff…

Python爬虫-贝壳新房

前言 本文是该专栏的第32篇,后面会持续分享python爬虫干货知识,记得关注。 本文以某房网为例,如下图所示,采集对应城市的新房房源数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地…

北京智慧养老平台app打造,智慧养老,安心享老

目前&#xff0c;我国60岁以上老年人占人口比重已超过21%&#xff0c;我国老年人口数量快速增长&#xff0c;人口老龄化程度不断加深。与此同时&#xff0c;老年人的养老需求也在逐步上升。除了日常吃穿等生活需求外&#xff0c;他们在健康、精神方面也提出来新的要求。为了满足…

高职人工智能专业实训课之“自然语言处理”

一、前言 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术日益成为研究和应用的热点。为了满足高职院校对NLP专业实训课程的需求&#xff0c;唯众人工智能教学实训凭借其前沿的教育技术平台&#xff0c;特别是GPU虚拟化技术&#xff0c;为学生提供了高…

【R语言】对一个Plot绘制多个图,并且每个图单元也包含多个图

以一个Plot绘制五行六列共30个图&#xff0c;然后每30个图单元包含两个图为例&#xff1a; 如下图所示&#xff1a; 代码如下&#xff1a; for (i in 1:(5*6)) {create_subplots <- function() {library(ggplot2)library(dplyr)library(tidyr)# 创建一个随机的数据框simula…

linux系统指令查漏补缺

目录 一.磁盘操作 二.lvm 三.top 4.nohup 一.磁盘操作 1. lsblk -f 显示磁盘和它的相关内容 2.tuen2fs -c -1 /dev/sdx 关闭某个磁盘的自检 3.修改配置&#xff0c;使文件系统不要开机自检 cat /etc/fstab 全0表示开机不自检 全1表示开机自检 同时在这个文件中可添加…

sql资料库

1、distinct(关键词distinct用于返回唯一不同的值)&#xff1a;查询结果中去除重复行的关键字 select distinct(university) from user_profile select distinct university from user_profile distinct是紧跟在select后面的&#xff0c;不能在其他位置&#xff0c;不然就…

4、SpringMVC 实战小项目【加法计算器、用户登录、留言板、图书管理系统】

SpringMVC 实战小项目 3.1 加法计算器3.1.1 准备⼯作前端 3.1.2 约定前后端交互接⼝需求分析接⼝定义请求参数:响应数据: 3.1.3 服务器代码 3.2 ⽤⼾登录3.2.1 准备⼯作3.2.2 约定前后端交互接⼝3.2.3 实现服务器端代码 3.3 留⾔板实现服务器端代码 3.4 图书管理系统准备后端 3…

轻量级日志系统——Loki

目录 一、loki简介 二、Loki 快速上手 第一步安装 Loki 第二步安装 Promtail 第三步安装granafa 三、LogQL 语法 四、Loki收集nginx日志 1、修改nginx配置 2、nginx服务器上安装promtail 3、添加doshbarod 一、loki简介 Loki是 Grafana Labs 团队最新的开源项目&am…

RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施

1、通过事务码 SE24对Feeder Class实施 1&#xff09;接口页签的简单说明&#xff1a; ① IF_FPM_GUIBB&#xff1a;通用UI构建块&#xff0c;整个UIBB模块的基础接口&#xff1b; ② IF_FPM_GUIBB_SEARCH&#xff1a;通用搜索UI构建块&#xff0c;搜索组件UIBB的基础接口&…

中东文明史

转自&#xff1a;想要了解完整的中东文明史&#xff1f;这篇文章成全你 - 知乎 (zhihu.com) 写在前面 中东文明是人类历史上最古老的文明。人类祖先从东非大裂谷走出之后&#xff0c;首先选择定居在中东地区的新月沃土上&#xff0c;并建立了人类历史上有文字记载的第一个文明…

Mybatis-映射文件中select标签resultType属性的使用

数据库的最最基本操作“增删改查”&#xff0c;“查”是最复杂的&#xff0c;有各种各样的查询&#xff0c;所以对应到Mybatis中的select标签也是这四个操作中最复杂的 resultType属性的使用 1.返回的结果是List集合的类型 select标签里的resultType类型设置为List集合里的元…

关于正点原子stm32f103精英板v1的stlink通信失败问题解决方案

由于最新的固件不适配&#xff0c;我们要想其工作要下载007的固件。 https://www.st.com/en/development-tools/stsw-link007.html?dlredirect 版本选择最低的。然后选择windows文件夹&#xff0c;更新程序 然后进keil就能正常识别到了

mediasoup源码分析(三)channel创建及信令交互

mediasoup源码分析--channel创建及信令交互 概述跨职能图业务流程图代码剖析tips 概述 在golang实现mediasoup的tcp服务及channel通道一文中&#xff0c;已经介绍过信令服务中tcp和channel的创建&#xff0c;本文主要讲解c中mediasoup的channel创建&#xff0c;以及信令服务和…

【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;STL-> map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀AVL树 &#x1f4d2;1. AVL树…

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载&#xff1a; 进入官网MySQLhttps://www.mysql.com/ 找到download 滑动到最下方&#xff1a;有一个开源社区版的链接地址&#xff1a; 然后就下载完成了 安装&#xff1a; 双击&#xff1a; 一直next 一直next这一步&…

Spire.PDF for .NET【文档操作】演示:设置 PDF 文档的 XMP 元数据

XMP 是一种文件标签技术&#xff0c;可让您在内容创建过程中将元数据嵌入文件本身。借助支持 XMP 的应用程序&#xff0c;您的工作组可以以团队以及软件应用程序、硬件设备甚至文件格式易于理解的格式捕获有关项目的有意义的信息&#xff08;例如标题和说明、可搜索的关键字以及…

java基于ssm+jsp 美食推荐管理系统

1前台首页功能模块 美食推荐管理系统&#xff0c;在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容&#xff0c;如图1所示。 图1前台首页功能界面图 用户注册&#xff0c;在注册页面可以填写用户名、密码、姓名、联系电话等…

仓库管理系统01--数据库介绍

1、表结构 1&#xff09;UserInfo 用户表 2&#xff09;Supplier供应商表 3&#xff09;Store 仓库表 4&#xff09;其他表 Customer 客户表&#xff0c;Spec 规格表&#xff0c;GoodsType 货物类别表&#xff0c;Goods 货物表&#xff0c;InStore 入库表&#xff0c;OutSto…