项目五 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 功能。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【漏洞复现】契约锁电子签章平台 add 远程命令执行漏洞(XVE-2023-23720)

0x01 产品简介 契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通…

公开整理-中国海关进出口增减数据(2008-2024年)

数据来源&#xff1a;东方财富网 时间跨度&#xff1a;2008年至今 数据范围&#xff1a;全国范围 数据指标&#xff1a; 年月 当月出口额-金额 当月出口额-同比增长 当月出口额-环比增长 当月进口额-金额 当月进口额-同比增长 当月进口额-环比增长 累计…

虚拟现实环境下的远程教育和智能评估系统(十)

VR部署测试&#xff0c;采集眼动数据&#xff1b; 经VR内置Camera采集眼睛注视位置后&#xff0c;输出.txt形式的眼动结果&#xff1a; 经处理后&#xff0c;将射线方向和位置投影到视频屏幕二维坐标的位置&#xff1a; 在视频中可视化如下&#xff1a;

matlab线性多部法求常微分方程数值解

用Adamas内差二步方法&#xff0c;内差三步方法&#xff0c;外差二步方法&#xff0c;外差三步方法这四种方法计算。 中k为1和2. k为2和3 代码 function chap1_adams_methodu0 1; T 2; h 0.1; N T/h; t 0:h:T; solu exact1(t);f f1; u_inter_2s adams_inter_2steps(…

【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)

【尚庭公寓SpringBoot Vue 项目实战】登录管理&#xff08;十八&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】登录管理&#xff08;十八&#xff09;1、登录业务介绍2、接口开发2.1、获取图形验证码2.2、登录接口2.3、获取登录用户个人信息 1、登录业务介绍 登…

卷积神经网络(CNN)理解

1、引言&#xff08;卷积概念&#xff09; 在介绍CNN中卷积概念之前&#xff0c;先介绍一个数字图像中“边缘检测edge detection”案例&#xff0c;以加深对卷积的认识。图中为大小8X8的灰度图片&#xff0c;图片中数值表示该像素的灰度值。像素值越大&#xff0c;颜色越亮&…

IO流2.

字符流-->字符流的底层其实就是字节流 public class Stream {public static void main(String[] args) throws IOException {//1.创建对象并关联本地文件FileReader frnew FileReader("abc\\a.txt");//2.读取资源read()int ch;while((chfr.read())!-1){System.out…

集合面试题

目录 ①HashMap的理解&#xff1f;以及为什么要把链表转换为红黑树&#xff1f;②HashMap的put&#xff1f;③HashMap的扩容&#xff1f;④加载因子为什么是0.75&#xff1f;⑤modcount的作用&#xff1f;⑥HashMap与HashTable的区别&#xff1f;⑥HashMap中1.7和1.8的区别&am…

通过sql语句直接导出excel文件

SELECT column1 as 名字 FROM your_table INTO OUTFILE /path/to/your_file.csv FIELDS TERMINATED BY , ENCLOSED BY " LINES TERMINATED BY \n 这里的注意事项是&#xff0c;INTO OUTFILE 这后面的路径需要通过下面的SQL查出来 show variables like %secure%; 操作步骤…

SpringCloud Netflix和SpringCloud Alibaba核心组件

1.SpringCloud Netflix组件 1.1 Netflix Eureka-服务注册发现 Eureka 是一种用于服务发现 的组件&#xff0c;它是一个基于 REST 的服务&#xff0c;用于定位运行在 AWS 弹性计算云&#xff08;EC2&#xff09;中的中间层服务&#xff0c;以便它们可以相互通讯。 注册&#xf…

AMBA-CHI协议详解(三)

《AMBA 5 CHI Architecture Specification》 AMBA-CHI协议详解&#xff08;一&#xff09; AMBA-CHI协议详解&#xff08;二&#xff09; AMBA-CHI协议详解&#xff08;三&#xff09; AMBA-CHI协议详解&#xff08;四&#xff09; 文章目录 2.3.2 Write transactions2.3.2.1 …

【计算机网络体系结构】计算机网络体系结构实验-DNS模拟器实验

一、DNS模拟器实验 拓扑图 1. 服务器ip 2. 服务器填写记录 3. 客户端ip以及连接到DNS服务器 4. ping测试

《Fundamentals of Power Electronics》——绕组导体中的涡流

绕组导体中的涡流也会导致功率损耗。这可能导致铜耗大大超过上述公式预测的值。特殊的导体涡流机制被称为集肤效应和紧邻效应。这些机制在多层绕组的大电流导体中最为明显&#xff0c;特别是在高频变换器中。 下图说明了一个简单变压器绕组中的邻近效应。

Sqlite3数据库基本使用

一、基本概念 数据&#xff1a;能够输入计算机并能被计算机程序识别和处理的信息集合 数据库&#xff1a;长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS&#xff1a;位于用户与操作系统之间的一层数据管理软件&#xff0c;用于操纵和管理数据库 二、安装 在线…

Java 17的新特性

Java 17引入了多项新特性&#xff0c;以下是一些重要的更新&#xff1a; 增强的伪随机数生成器&#xff08;JEP 356&#xff09; Java 17为伪随机数生成器&#xff08;PRNG&#xff09;提供了新的接口类型和实现&#xff0c;包括可跳转的PRNG和另一类可拆分的PRNG算法&#xf…

06-操作元素

在前面的文章中重点介绍了一些元素的定位方法&#xff0c;定位到元素后&#xff0c;就需要操作元素了。本篇通过简单案例来介绍app应用中的一些常用操作。 一、案例介绍 下面列表中有四个字典&#xff0c;每个字典中的num1代表第一个操作数&#xff0c;num2代表第二个操作数&a…

LabVIEW电池管理系统测试平台

随着混合动力汽车技术的快速发展&#xff0c;对电池管理系统&#xff08;BMS&#xff09;的测试需求显著增加。利用LabVIEW软件开发了一款电池管理系统测试平台&#xff0c;通过模拟电池行为验证BMS的控制策略&#xff0c;从而降低成本、缩短开发周期&#xff0c;并提高整车的能…

js文件导出功能

效果图&#xff1a; 代码示例&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>html 表格导出道</title><script src"js/jquery-3.6.3.js"></script><st…

Qt打包成单独一个.exe文件运行

程序发布 1、首先找到你所运行的Qt编译器 2、然后去项目位置找到对应的release目录下的exe文件 3、将这个exe文件复制到一个单独的文件夹下&#xff0c;这里我放在E盘的demo下面 4、右键选择在终端打开PowerShell进入步骤1新建的demo目录内 5、windeployqt 项目名.exe windepl…

音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…