【镜像制作】OS云主机镜像的制作——以H3C为例

一、云主机镜像简介

1.云主机镜像

云主机镜像不同于容器镜像,是一个含有引导分区、操作系统以及必要应用的单一文件,可以理解成是对整个系统安装光盘所有数据的克隆文件。云用户在创建和申请云主机时可通过选择不同的镜像来快速获取相应操作系统的云主机。
在传统的IT环境中,对于每一台主机安装系统都需要系统的镜像文件从头开始安装。但这些方式都存在以下的一些问题:当需要安装的系统数较多时,需要的时间久且效率低下;安装完成后需要对每台主机此意进行配置,如配置IP等操作;备份与恢复系统不够灵活。云环境下提供了更加高效的解决方案,就是使用镜像(Image)。Image是一个模板,里面包含了基本的操作系统和其他的软件及配置信息等。

2.镜像格式

Cloud OS 兼容CAS、VMware等虚拟化平台,其中在适配CAS 虚拟化平台时支持使用QCOW2(QEMUcopy-on-write version 2)和RAW两种格式的镜像文件。raw格式是原始镜像,会直接当作一个块设备给虚拟机来使用,至于文件里面的空洞,则是由宿主机的文件系统来管理的。qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像,也可以用一个文件的形式来表示一块固定大小的块设备磁盘。
通常一个QCOW2格式的镜像文件具有头文件、L1表、refcount表、一个或者多个refcount块、快照头、L2表和数据簇。其中L1表、refcount表和快照偷偷的第一个头为簇对齐。对于QCOW2镜像格式,磁盘设备的内容保存在簇中。每一个簇包含多个512字节的扇区。为了将给定的地址定位到簇的地址,必须要遍历L1表和L2表。L1表中存储了一组到L2表的偏移值,而L2表中存储了一组到簇的偏移值。QCOW2相对于上一代QCOW有以下不同之处:QCOW2支持快照概念,QCOW1仅支持copy-on-write镜像的概念;QCOW2中引用了引用计数的概念,并引用计数用来支持快照的概念;QCOW2中L2表总是可以占据一个单独的簇,而之前簇的大小在头l2_bits中被指定;QCOW2压缩簇的大小以扇区为单位,而非字节为单位。
QCOW2和RAW两种格式可以互相转化。与普通的 raw 格式的镜像相比,QCOW2格式的镜像有以下特性:QCOW2更小的空间占用,但RAW相比QCOW2 格式的镜像具有I/O 效率高的特点;QCOW2支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;QCOW2支持快照(snapshot),镜像文件能够包含多个快照的历史;QCOW2可选择基于 zlib 的压缩方式;QCOW2可以选择 AES 加密。

二、 glance简介

1.OpenStack简介

云管理平台基于业界标准的OpenStack, OpenStack架构具体如图2.1所示。
在这里插入图片描述

图2.1 OpenStack基础架构图
OpenStack架构中有Nova、Neutron、Horizon、Ceilometer、Keystone、Swift。其中Nova为VM提供计算资源;Glance为VM提供镜像;Cinder为VM提供块存储资源;Neutron为VM提供网络资源及网络连接;Horizon(Dashboard)与其他主要模块的关联(包括Nova,Cinder,Glance,Swift,Neutron,Keystone);通过Ceilometer(监控功能)可以监控的模块(包括Nova,Glance,Cinder,Neutron);Keystone(身份验证功能)模块可以对其他模块进行相应操作进行身份及权限验证(包括Nova,Glance,Cinder,Swift,Neutron,Ceilometer); Swift对象存储保存Cinder连接VM后所产生的备份数据及Glance提供的镜像文件。

2.glance简介

在OpenStack架构中由Glance提供镜像服务(Image Service)。
Glance架构如图2.2所示。
在这里插入图片描述

图2.2 glance结构图
glance组件中主要有glance-api、glance-registry、glance的数据库和image store。
glance-api接收REST API的请求,在功能上与nova-api十分类似,都是接收REST API请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口为9292。
glance-registry用于与MySQL数据库交互,用于提供镜像元数据相关的REST接口,通过glance-registry可以向数据库中写入或获取镜像的各种数据,glance-registry监听端口为9191。
glance的数据库中有两张表,一张是image表,另一张是image property表。Image表保存了镜像格式、大小等信息;image property表则主要保存镜像的定制化信息。
image store是一个存储的接口层,是镜像保存与获取的接口,它仅仅是一个接口层,具体的实现需要外部的存储支持,目前,支持的接口有Amazon S3、GlusterFS、Swift,sheepdog,ceph分布式存储等。

三、制作云主机镜像

本文主要介绍适用于CAS虚拟化平台的H3Cloud OS3.0制作云主机镜像的方法,下文中的例子是镜像文件是安装Windows操作系统。

1.新建虚拟机

首先在CAS管理平台新建虚拟机,若安装Windows操作系统,则在新建虚拟机页面选择对应的Windows操作系统版本;若安装Linux操作系统,则在新建虚拟机页面选择对应的Linux操作系统版本。
在这里插入图片描述

图3.1 CAS虚拟化平台新建虚拟机

2.安装操作系统

上传操作系统镜像文件至主机本地存储或共享存储,修改虚拟机,选择光驱,选择连接要安装的操作系统镜像文件。启动虚拟机并进入虚拟机控制台安装操作系统。
在这里插入图片描述

图3.2 上传操作系统文件
在这里插入图片描述

图3.3 虚拟机挂载操作系统镜像文件
注意:安装完操作系统设置账号密码时不要设有特殊字符,当密码中有特殊字符时可能导致Cloud OS系统平台无法成功新建镜像。
修改虚拟机,选择光驱,断开与操作系统镜像文件的连接。选择文件类型为CASTools,连接CASTools安装文件,进入虚拟机控制台安装CASTools。
在这里插入图片描述

图3.4 虚拟机断开操作系统镜像文件的连接
在这里插入图片描述

图3.5 虚拟机连接CASTools安装文件
安装完CASTools后,在修改虚拟机界面断开与CASTools安装文件的连接。在下载虚拟机镜像或上传虚拟机镜像前要先关闭虚拟机,避免虚拟机镜像文件的md5值发生变化。

3.下载镜像文件

在虚拟机所在的主机的default存储池中下载对应的虚拟机镜像文件,虚拟机镜像文件的使用者为对应的虚拟机,并可以看到具体镜像文件的大小,文件类型。
在这里插入图片描述

图3.6 下载制作好的虚拟机镜像文件

4.上传云主机镜像

上传云主机镜像有两种方式:本地上传和服务器上传。对于超过5G的镜像,一般通过FTP进行服务器上传。

4.1本地上传镜像文件

 进入云服务中的镜像界面,选择新建镜像,填写镜像名,选择镜像的镜像格式和虚拟化类型,选择对应的操作系统类型和版本,填写的最小磁盘的值不可以小于镜像文件的大小。上传方式选择本地上传,并从本地选择镜像,界面会提示大于5G的文件需要通过服务器来上传。

4.2服务器上传镜像文件

使用root账号登录CAS主机后台,根据在CAS页面查看到的VIP02镜像文件的目录为/vms/images,进入到该目录下并通过ll命令检验镜像文件在这个目录下。
在这里插入图片描述

图3.8 查看虚拟机镜像文件目录
在这里插入图片描述

图3.9ssh远程登录到cvk主机后台进入镜像文件所在目录下
在/vms/images目录下ftp到Cloud OS的IP,并输入pass再回车,提示“Passive mode on.”进入被动模式,再通过put vip02将虚拟机镜像文件上传至Cloud OS后台。且ftp登录用户应该为admin用户,而不是后台(root用户),否则前台可能识别不到该文件。等待1-2min至镜像上传完毕。
在这里插入图片描述

图3.10 在镜像文件目录下ftp上传镜像文件至cloudos

5.Md5值计算

Cloud OS新建镜像选择服务器上传镜像为了避免文件上传不完整需要填写md5值进行校验。对镜像文件进行md5值的计算有两种种方式:在CAS本地目录下进行镜像文件的md5值校验;下载md5值计算工具,在本地对镜像文件进行md5值的计算。将计算得到的md5值填写到新建镜像页面。

5.1 CAS后台计算md5值

在CAS本地目录下进行镜像文件的md5值校验:先进入镜像文件所在的目录,“md5sum 文件名”命令计算镜像文件的md5值。注意,需要关闭虚拟机再计算md5值,开启状态的虚拟机的镜像文件的md5值会发生变化。
在这里插入图片描述

图3.12在cvk后台对镜像文件进行md5值计算

5.2 md5计算工具计算md5值

下载md5值计算工具,在本地对镜像文件进行md5值的计算。首先在新建镜像。服务器上传下图中下载md5值计算工具,在添加本地下载的镜像文件,计算出md5值。
在这里插入图片描述

图3.14通过md5值计算工具计算镜像文件的md5值

6.Cloud OS新建云主机镜像失败原因分析

在Cloud OS新建镜像文件有时会出现任务台新建镜像已执行,但是前台页面并没有新增镜像文件的情况的出现。出现这样问题的原因是新增云主机镜像失败,任务台只会显示动作是否执行,但是并不代表任务成功。失败的原因可能有md5值不正确,glance空间不足或者用户的登录密码含有特殊字符。
当新建云主机镜像失败后,可先检查操作系统的密码是否含有特殊字符,若有,则对密码进行修改;若没有在CloudOS后台查看文件的md5值,与本地镜像通过md5值计算工具和cvk后台计算得到的md5值进行对比,若不一致,则重新进行上传;若一致,则有可能是glance空间不足。

7.Cloud OS后台文件的md5值计算

可以通过在Cloud OS的目录下找到ftp上传的文件存储路径,进入到该路径下进行md5值校验:在Cloud OS的目录下先通过“find / -name vip02 ”找到ftp上传的文件存储路径为/var/lib/ftp_server/admin,进入到该路径下进行md5值计算。若镜像上传完整,计算得到的md5值应该与前面两种方式计算得到的md5值一致。另,若是给集群模式的Cloud OS环境,在通过ftp传镜像文件到Cloud OS后台时,文件会存放在运行glance服务的节点的文件路径/var/lib/ftp_server/admin下,并不一定会存放在master节点下。
先运行source /opt/bin/common/tool.sh命令,再通过命令pod | grep glance 查看glance容器所在节点的IP。
在这里插入图片描述

图3.15 查找glance容器运行所在的节点IP
在这里插入图片描述

图3.16CloudOS后台查找ftp上传的文件并计算md5值

8.查看镜像文件的存放

完成新建镜像之后,可以在Cloud OS后台查看到在/var/lib/glance/images/目录下有了新的镜像文件,文件名即为该镜像的ID。
在这里插入图片描述

图3.17 在CloudOS后台查看新建云主机镜像信息

四、总结

本文主要介绍了云主机镜像是一个含有引导分区、操作系统以及必要应用的单一文件,是为了解决传统IT环境中需要给每台虚拟机安装操作系统,耗费时间久、效率低的背景下提出的,也介绍了镜像文件常用的格式为QCOW2,其具有占用磁盘空间小的特点。介绍了OpenStack和为虚拟机提供镜像文件的组件glance基础架构及各组件的作用。主要详细介绍了云主机镜像的制作过程及过程中的注意事项,例如在给虚拟机安装完操作系统和CASTools后,在确定CASTools运行的前提下关闭虚拟机,防止出现镜像文件的md5值发生变化而造成新增云主机镜像失败的情况;将镜像文件通过ftp上传至Cloud OS时,需要先用root账户ssh登录cvk主机,用CloudOS的前台账号(admin)进行ftp连接登录,否则前台页面可能识别不到上传上去的文件,不要混淆。

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

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

相关文章

一文读懂「Prompt Engineering」提示词工程

在了解提示过程之前,先了解一下什么是提示prompt,见最后附录部分 一、什么是Prompt Engingering? 提示工程(Prompt Engingering),也被称为上下文提示(In-Context Prompting)&#x…

Android的setContentView流程

一.Activity里面的mWindow是啥 在ActivityThread的performLaunchActivity方法里面: private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {ActivityInfo aInfo r.activityInfo;if (r.packageInfo null) {r.packageInfo getP…

常见面试题之CSS

CSS3的新特性 新增选择器::nth-child()、:first-of-type、:last-of-type等 弹性盒子:display: flex 媒体查询:media根据设备的特性和屏幕大小应用不同的样式规则 多列布局:column-count和column-with等属性可以实现将内容分为多…

SpringBoot读取配置文件中的内容

文章目录 1. 读取配置文件application.yml中内容的方法1.1 Environment1.2 Value注解1.3 ConfigurationProperties 注解1.4 PropertySources 注解,获取自定义配置文件中的内容,yml文件需要自行实现适配器1.5 YamlPropertiesFactoryBean 加载 YAML 文件1.…

缓存和数据库一致性

前言: 项目的难点是如何保证缓存和数据库的一致性。无论我们是先更新数据库,后更新缓存还是先更新数据库,然后删除缓存,在并发场景之下,仍然会存在数据不一致的情况(也存在删除失败的情况,删除…

软件测试|解决Github port 443 : Timed out连接超时的问题

前言 GitHub是全球最大的开源代码托管平台之一,许多开发者和团队使用它来管理和协作开源项目。但在当下,我们在clone或者提交代码时会经常遇到"GitHub Port 443: Timed Out"错误,这意味着我们的电脑无法建立与GitHub服务器的安全连…

鸿蒙Harmony--AppStorage--应用全局的UI状态存储详解

无所求必满载而归,当你降低期待,降低欲望,往往会得到比较好的结果,把行动交给现在,用心甘情愿的态度,过随遇而安的生活,无论结果如何,都是一场惊喜的获得! 目录 一,定义 …

MySQL单表查询练习题

一、创建表的素材 表名:worker——表中字段均为中文,比如:部门号、工资、职工号、参加工作等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 …

MySQL进阶45讲【1】基础架构:一条SQL查询语句是如何执行的?

1 前言 我们经常说,看一个事儿千万不要直接陷入细节里,应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于MySQL的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,有个最简单的…

uniapp 字母索引列表插件(组件版) Ba-SortList

简介(下载地址) Ba-SortList 是一款字母索引列表组件版插件,可自定义样式,支持首字母字母检索、首字检索、搜索等等;支持点击事件。 支持首字母字母检索支持首字检索支持搜索支持点击事件支持长按事件支持在uniapp界…

八:分布式锁

1、为什么要使用分布式锁 锁是多线程代码中的概念,只有多任务访问同一个互斥的共享资源时才需要锁。单机应用开发时一般使用synchronized或lock。多线程的运行都是在同一个JVM之下。应用是分布式集群,属于多JVM的工作环境,JVM之间已经无法通过…

STM32 定时器输入捕获2——捕获高电平时长

由上图我们可以知道,高电平时间t2-t1。在代码中,可以记录此时t1的时间然后再记录t2的时间,t2-t1,就是我们所想要的答案。 但是,还有更简单一点点的,当到达t1的时候,我们把定时器清零&#xff0c…

MIT_线性代数笔记:第 26 讲 复矩阵;快速傅里叶变换

目录 复向量 Complex vectors复矩阵 Complex matrices傅里叶变换 Fourier transform快速傅里叶变换 Fast Fourier transform 实矩阵也可能有复特征值,因此无法避免在矩阵运算中碰到复数,本讲学习处理复数矩阵和复向量。 最重要的复矩阵是傅里叶矩阵&…

Linux CentOS 7.6安装JDK详细保姆级教程

一、检查系统是否自带jdk java --version 如果有的话,找到对应的文件删除 第一步:先查看Linux自带的JDK有几个,用命令: rpm -qa | grep -i java第二步:删除JDK,执行命令: rpm -qa | grep -i java | xarg…

【Nuxt3】Nuxt3脚手架nuxi安装项目和项目目录介绍

简言 最近学了Nuxt3,并使用它创建了自己的小网站。记录下学习到的nuxt3内容。 Nuxt3官网 Nuxt 是一个免费的开源框架,可通过直观、可扩展的方式使用 Vue.js 创建类型安全、高性能、生产级的全栈 Web 应用程序和网站。 支持SSR、SPA、建立静态网站,也可以…

【大数据】Flink 详解(九):SQL 篇 Ⅱ

《Flink 详解》系列(已完结),共包含以下 10 10 10 篇文章: 【大数据】Flink 详解(一):基础篇【大数据】Flink 详解(二):核心篇 Ⅰ【大数据】Flink 详解&…

若依在表格中如何将字典的键值转为中文

文章目录 一、需求:二、问题解决步骤1、给需要转换的列绑定formatter属性2、获取字典项3、编写formatter属性绑定的方法 一、需求: 后端有时候返回的是字典的键值,在前端展示时需要转成中文值 后端返回的是dictValue,现在要转换…

QT -狗狗管理工具

QT -狗狗管理工具 一、演示效果二、UML三、关键代码四、程序链接 一、演示效果 二、UML 三、关键代码 #include <QFrame> #include <QHBoxLayout> #include <QVBoxLayout> #include <QLabel> #include <QSizePolicy> #include <QDialog> …

谷歌aab包在Android 14闪退而apk没问题(targetsdk 34)

问题原因 Unity应用(target SDK 34)上线到GooglePlay&#xff0c;有用户反馈fold5设备上&#xff08;Android14系统&#xff09;疯狂闪退&#xff0c;经测试&#xff0c;在小米手机Android14系统的版本复现成功了&#xff0c;奇怪的是apk直接安装没问题&#xff0c;而打包成aa…

为什么使用双token实现无感刷新用户认证?

单token机制 认证机制&#xff1a;对与单token的认证机制在我们项目中仅使用一个Access Token的访问令牌进行用户身份认证和授权的方案处理。 不足之处&#xff1a; 安全性较低(因为只有一个token在客户端和服务器端之间进行传递&#xff0c;一目Acess Token被截获或者被泄露…