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

news2025/1/12 4:00:09

一、云主机镜像简介

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.coloradmin.cn/o/1388136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux/OpenAdmin

Enumeration nmap 用nmap扫描发现目标对外开放了22和80,端口详细信息如下 从nmap的结果看到,是apache的default page,使用工具跑一下目录,看了官 网文档的结果然后写个小字典节约时间,扫描结果如下 On the page at /…

【分布式技术】监控技术zabbix实操

目录 一、脚本监控nginx的连接状态 步骤一:做好nginx的配置 步骤二:完成监控数据脚本编写,并使用zabbix_get测试 步骤三:在zabbix agent配置目录中,编写以conf结尾的用户参数文件 步骤四:在zabbix web…

uniapp + node.js 开发问卷调查小程序

前后端效果图 后端&#xff1a;nodejs 12.8 ; mongoDB 4.0 前端&#xff1a;uniapp 开发工具&#xff1a;HBuilderX 3.99 前端首页代码 index.vue <!-- 源码下载地址 https://pan.baidu.com/s/1AVB71AjEX06wpc4wbcV_tQ?pwdl9zp --><template><view class&q…

探索设计模式的魅力:工厂方法模式

工厂方法模式是一种创建型设计模式&#xff0c;它提供了一种创建对象的接口&#xff0c;但将具体实例化对象的工作推迟到子类中完成。这样做的目的是创建对象时不用依赖于具体的类&#xff0c;而是依赖于抽象&#xff0c;这提高了系统的灵活性和可扩展性。 以下是工厂方法模式的…

在 Linux 本地部署 stable diffusion

由于工作站安装的是 ubuntu&#xff0c;卡也在上面&#xff0c;就只能在 ubuntu 上部署安装 stable diffusion 了。另外&#xff0c;Linux 上使用 stable diffusion 也会方便很多。 1 准备工作 NVIDIA 官网下载驱动&#xff0c;主要是为了规避多卡驱动不同的问题。由于本机是…

Linux下安装jdk、tomcat

linux下安装jdk、tomcat 一、linux下安装jdk1.1.下载Linux版本的JDK1.2.Linux安装JDk1.3.设置环境变量1.4.卸载JDK 二、linux下安装tomcat2.1.下载Linux版本的Tomcat2.2.在usr目录下新建tomcat目录2.3.进入到tomcat目录中解压下载的tomcat安装包2.4.配置环境变量-前提是已经安装…

C++ 设计模式之外观模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【简介】什么是外观模式 外观模式Facade Pattern , 也被称为“⻔⾯模式”&#xff0c;是⼀种结构型设计模式&#…

每日一练:LeeCode-102、二又树的层序遍历【二叉树】

本文是力扣LeeCode-102、二又树的层序遍历 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&…

visual studio的安装及scanf报错的解决

visual studio是一款很不错的c语言编译器 下载地址&#xff1a;官网 点击后跳转到以下界面 下滑后点击下载Vasual Sutdio&#xff0c;选择社区版即可 选择位置存放下载文件后&#xff0c;即可开始安装 安装时会稍微等一小会儿。然后会弹出这个窗口&#xff0c;我们选择安装位…

C++面试宝典第20题:计算岛屿数量

题目 在二维网格地图上,1 表示陆地,0 表示水域。如果相邻的陆地可以水平或垂直连接,则它们属于同一块岛屿。请进行编码,统计地图上的岛屿数量。比如:下面的二维网格地图,其岛屿数量为3。 解析 这道题主要考察应聘者对深度优先搜索、广度优先搜索、二维数组和矩阵操作、边…

Java代码审计FastJson反序列化利用链跟踪动态调试autoType绕过

目录 0x00 前言 0x01 基础参考 JNDI注入实例 使用type加入User类解析 FastJson历史漏洞简介 0x02 FastJson 1.2.24 利用链分析 调试过程 构造Poc思路 CC链关键流程 0x03 FastJson 1.2.25-1.2.47 利用链分析 1、开启autoTypeSupport&#xff1a;1.2.25-1.2.41 调试过…

#RAG##AIGC#检索增强生成 (RAG) 基本介绍和入门实操示例

本文包括RAG基本介绍和入门实操示例 RAG 基本介绍 通用语言模型可以进行微调以实现一些常见任务&#xff0c;例如情感分析和命名实体识别。这些任务通常不需要额外的背景知识。 对于更复杂和知识密集型的任务&#xff0c;可以构建基于语言模型的系统来访问外部知识源来完成任…

pl/sql程序块的使用

-- Created on 2024-01-15 by ADMINISTRATOR declare -- Local variables hererecord_tablename varchar2(100);---test_record表名record_StartNo integer(19);---test_record开始编号temp_No integer(19);maxnbbh integer(19);nCnt integer : 20;fi…

通用外设-W25Q64

前言 一、SPI通信 二、W25Q64基初时序 1.各种命令代码 2.代码 1.写使能指令 2.读取芯片是否忙碌状态并等待 3.写入数据 4.擦除函数操作 5.读取代码 三.验证 四.擦除说明 总结 前言 在单片机中一般32K FLASH就够用了&#xff0c;但是当我们使用图片或其他大量数据时…

K8s(二)Pod资源——node调度策略、node亲和性、污点与容忍度

目录 node调度策略nodeName和nodeSelector 指定nodeName 指定nodeSelector node亲和性 node节点亲和性 硬亲和性 软亲和性 污点与容忍度 本文主要介绍了在pod中&#xff0c;与node相关的调度策略&#xff0c;亲和性&#xff0c;污点与容忍度等的内容 node调度策略node…

深度学习中指定特定的GPU使用

目录 前言1. 问题所示2. 解决方法 前言 老生常谈&#xff0c;同样的问题&#xff0c;主要来源于&#xff1a;RuntimeError: CUDA error: out of memory 当使用完之后&#xff0c;想从其他方式调试&#xff0c;具体可看我这篇文章的&#xff1a;出现 CUDA out of memory 的解决…

Ps:认识路径

在 Photoshop 中&#xff0c;路径 Path广泛地应用于创建精确的图像边界&#xff08;包括精准抠图&#xff09;以及复杂的图形设计之中。 路径又称为“矢量路径”&#xff0c;或者“贝塞尔曲线” Bezier Curves路径。 路径本身只是一种基于数学方程的“轮廓指示”&#xff0c;并…

Python数据分析案例31——中国A股的月份效应研究(方差分析,虚拟变量回归)

案例背景 本次案例是博主本科在行为金融学课程上做的一个小项目&#xff0c;最近看很多经管类的学生作业都很需要&#xff0c;我就用python来重新做了一遍。不弄那些复杂的机器学习模型了&#xff0c;经管类同学就用简单的统计学方法来做模型就好。 研究目的 有效市场假说是现…

论文复现|tightly focused circularly polarized ring Airy beam

请尊重原创的劳动成果 如需要转载&#xff0c;请后台联系 前言 采用MATLAB复现一篇论文里面的插图&#xff0c;涡旋光束的聚焦的仿真方式有很多种&#xff0c;这里采用MATLAB进行仿真&#xff0c;当然也有其他的很多方式&#xff0c;不同的方式各有千秋。 论文摘要 本文证明…

Sqoop安全性:确保安全的数据传输

确保数据传输的安全性在大数据处理中至关重要。Sqoop作为一个用于数据传输的工具&#xff0c;也提供了多种安全性措施&#xff0c;以确保数据在传输过程中的机密性和完整性。本文将深入探讨Sqoop的安全性特性&#xff0c;提供详细的示例代码和全面的内容&#xff0c;以帮助大家…