HCIP-linux和kvm(ks配置文件自动化安装及console连虚拟机有问题)

1、linux

linux安装教程参考,https://blog.51cto.com/cloudcs/5245337
yum源配置

本地yum源配置:
8版本配置:将光盘iso挂载到某个目录,/dev/cdrom是/dev/sr0软链接,# mount /dev/cdrom /mnt,# ls /mnt
AppStream  BaseOS  EFI  images  isolinux  media.repo  TRANS.TBL
# cd /etc/yum.repos.d/  全部备份后清空再新建 # vim test.repo
[os]
name = os
baseurl = file:///mnt/BaseOS
gpgcheck = 0

[app]
name = app
baseurl = file:///mnt/AppStream
gpgcheck = 0

清缓存 yum clean all,yum makecache 重新建立缓存,yum repolist all 列出所有repo

7版本配置,# vim test.repo
[os]
name = os
baseurl = file:///mnt
gpgcheck = 0

7版本在挂载点/mnt就有repodata和Packages目录(repodata引用Packages里面软件包)
8版本要进去挂载点/mnt的AppStream和BaseOS目录里面才有相应的repodata和Packages目录

在这里插入图片描述

在线yum源配置(要能连外网,找到vault过期源)
8版本,# cat abc.repo 
[BaseOS]
name = BaseOS
baseurl = https://repo.huaweicloud.com/centos-vault/8.2.2004/BaseOS/x86_64/os/
gpgcheck = 0

[AppStream]
name = AppStream
baseurl = https://mirrors.aliyun.com/centos-vault/8.2.2004/AppStream/x86_64/os/
gpgcheck = 0

7版本,# cat abc.repo 
[os]
name = os
baseurl = http://mirrors.aliyun.com/centos-vault/7.6.1810/os/x86_64
gpgcheck = 0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、kvm

KVM(Kernel-based Virtual Machine)是基于内核的虚拟机,因为KVM本身是一个Linux内核模块,当安装有Linux系统的物理机安装了这个模块后,就变成了Hypervisor,而且还不会影响原先在该Linux上运行的其它应用程序。通过KVM模块的加载将Linux内核转变成Hypervisor,Linux本身运行于内核模式,主机进程运行于用户模式,虚拟机则运行于客户模式,使得转变后的Linux内核可以将主机进程和虚拟机进行统一的管理和调度。KVM本质是Linux内核中的虚拟化功能模块kvm.ko,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。
在KVM虚拟化方案中,KVM主要用于管理CPU和内存的虚拟化,IO设备的虚拟化则由QEMU来完成。
QEMU是一个纯软件实现的开源(模拟)软件,它能够模拟整套虚拟机的实现,包括CPU、内存、IO设备、USB、网卡等。
KVM用来模拟CPU的运行,但缺少了对Network和I/O的支持。QEMU-KVM是一个完整的模拟器,它基于KVM上,提供了完整的I/O模拟支持。其中OpenStack为了跨VM性,所以不会直接控制QEMU-KVM,而是通过Libvirt的库去间接控制QEMU-KVM。
在这里插入图片描述
如上图所示KVM已经是内核模块,被看作是一个标准Linux字符集设备(/dev/kvm)。QEMU通过Libkvm应用程序接口,用fd(文件描述符)通过ioctl向设备驱动来发送创建、运行虚拟机命令。设备驱动KVM会解析命令。
KVM模块让Linux主机成为了一个虚拟机监视器(VMM),在原有执行模式基础上,增加了客户模式。在虚拟机运行时,三种模式的工作为:
客户模式:执行非I/O的客户代码,虚拟机运行在这个模式下。
用户模式:代表用户执行I/O指令,QEMU运行在这个模式下,它用来为虚拟机模拟执行I/O类的操作请求。
内核模式:实现客户模式切换,处理因I/O或者其他指令引起的从客户模式退出动作(VM-Exit)。KVM模块工作在这个模式下。此模式下可以真正操作硬件,当Guest OS执行I/O类操作或特权指令操作时,需要向用户模式提交请求,然后由用户模式再次发起硬件操作请求给内核模式,从而真正操作硬件。
在这里插入图片描述
用户模式的QEMU利用Libkvm通过ioctl进入内核模式,KVM模块为虚拟机创建虚拟内存、虚拟CPU后,执行VMLAUCH指令进入客户模式,加载Guest OS并执行。
如果Guest OS发生外部中断或影子页表缺失等情况,会暂停Guest OS(客户模式)的执行,退出客户模式到内核模式执行异常处理,之后重新进入客户模式,执行客户代码。
如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式(QEMU)进行处理,执行模拟。
在这里插入图片描述
Libvirt是为了更方便地管理平台虚拟化技术而设计的开放源代码的应用程序接口、守护进程和管理工具,它不仅提供了对虚拟化客户机的管理,也提供了对虚拟化网络和存储的管理。
Libvirt对多种不同的Hypervisor的支持是通过一种基于驱动程序的架构来实现的。Libvirt对不同的Hypervisor提供了不同的驱动:对Xen有Xen的驱动,对QEMU/KVM有QEMU驱动。

3、安装KVM

VMware Workstation开启虚拟机嵌套虚拟机
在这里插入图片描述

配置yum源后安装以这个Virtualization开头的包组
8版本本地yum源# cat abc.repo 
[os]
name = os
baseurl = file:///mnt/BaseOS
gpgcheck = 0

[app]
name = app
baseurl = file:///mnt/AppStream
gpgcheck = 0
7版本本地yum源# cat test.repo
[os]
name = os
baseurl = file:///mnt
gpgcheck = 0

# yum grouplist  查看包组  # yum grouplist |grep Virtualization
# yum groupinstall Virtualization*  安装以这个Virtualization开头的包组

调出kvm虚拟化管理界面,# virt-manager
查看当前正在运行的虚拟机 # virsh list
最小化安装用 # ip a 查看ip信息
在这里插入图片描述
1、KVM图形化创建虚拟机(先把要安装的iso镜像传进来)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、在指定虚拟机存储空间用KVM图形化创建虚拟机
KVM图形化创建的虚拟机默认磁盘是存放在该目录下[root@centos8 ~]# ls /var/lib/libvirt/images/
centos7.qcow2
手工指定虚拟机存储路径,创建虚拟机所用的磁盘(磁盘空间不够进行扩容再安装)
[root@centos8 ~]# mkdir /data
[root@centos8 ~]# qemu-img create -f qcow2 /data/centos701.qcow2 20g
Formatting ‘/data/centos701.qcow2’, fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16
[root@centos8 ~]# ls /data
centos701.qcow2
之后通过图形化创建虚拟机的时候可以选择刚才手工创建的存储磁盘centos701.qcow2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、KVM命令行创建虚拟机
其实就是把前面图形化点击的步骤转换成了命令行操作。
[root@centos8 ~]# qemu-img create -f qcow2 /data/centos702.qcow2 20g
Formatting ‘/data/centos702.qcow2’, fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16

virt-install \
--name centos702 \
--memory 1024 \
--vcpus 1 \
--disk path=/data/centos702.qcow2 \
--location /ios/CentOS-7.6-x86_64-DVD-1810.iso \
--network network=default \
--noautoconsole

但后面的系统安装还是要手工进行的,只是将KVM创建虚拟机过程命令行化了。
在这里插入图片描述
4、KVM命令行创建虚拟机-kickstart全自动安装 注意:不能多台在运行的虚拟机使用同一个镜像文件
注意:CentOS 8 版本是没有 kickstart 工具的,可以使用 CentOS 7 版本生成配置文件给 8 版本使用。
先用7版本生成配置文件,yum install -y system-config-kickstart.noarch 安装工具
system-config-kickstart 启动工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将工具生成好的配置文件ks.cfg保存好,后上传到8版本安装。scp ks.cfg root@10.1.1.30:/root/
8版本根据配置文件ks.cfg自动安装,yum install -y httpd 安装apache
systemctl start httpd 启动apache服务
systemctl stop firewalld 关闭防火墙
qemu-img create -f qcow2 /data/centos703.qcow2 20g 创建虚拟机所用的磁盘
安装并启动httpd服务后就有/var/www/html目录即默认访问路径了,把ks.cfg传到/var/www/html目录
在这里插入图片描述
在这里插入图片描述
注意检查导出的配置文件
在这里插入图片描述
在这里插入图片描述
虽然是通过命令行可以进行全自动安装,但是因为有图形化界面,所以便于观察虚拟机的具体信息。
如果没有图形化界面呢?安装过程及安装完成后根本不知道虚拟机的ip地址,也不知道进行到哪一步了,这时候怎么办?在kickstart的配置文件ks.cfg中添加 console=ttyS0
bootloader --append=“net.ifnames=0 biosdevname=0 console=ttyS0” --location=mbr
并通过 virsh console xxx 方式连接到虚拟机里面,相当于插上了一根console线。
[root@cen82 ks]# virsh console centos703
Connected to domain centos703
Escape character is ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-957.el7.x86_64 on an x86_64

localhost login: root
Password:
注:按ctrl + 】退出virsh console,而不是按ctrl + c 结束
要是已经安装好了可修改这个文件# vi /etc/default/grub,在里面加上console=ttyS0,再# grub2-mkconfig -o /boot/grub2/grub.cfg写入引导程序中后reboot重启就能virsh console 连虚拟机了。

virt-install \
--name centos703 \
--memory 2048 \
--vcpus 1 \
--disk path=/data/centos703.qcow2 \
--location /ios/CentOS-7.6-x86_64-DVD-1810.iso \
--network network=default \
--noautoconsole \
-x ks=http://10.1.1.30/ks.cfg

注意:不能多台在运行的虚拟机使用同一个镜像文件
在这里插入图片描述
在这里插入图片描述
KVM基本命令:
virsh --help 查看帮助
virsh list --all 列出所有虚拟机(包括正在运行的和关闭的)
virsh list 列出所有虚拟机(仅运行中的)
virsh start centos703 启动虚拟机
virsh shutdown centos703 关闭虚拟机
virsh reboot centos703 重启虚拟机
如果虚拟机关不了,强制关闭,非正常关闭,virsh destroy centos705
清除配置,virsh undefine centos705

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

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

相关文章

.NET6使用SqlSugar操作数据库

1.//首先引入SqlSugarCore包 2.//新建SqlsugarSetup类 public static class SqlsugarSetup{public static void AddSqlsugarSetup(this IServiceCollection services, IConfiguration configuration,string dbName "ConnectString"){SqlSugarScope sqlSugar new Sq…

手动创建一个DOCKER镜像

1. 我们先使用C语言写一个hello-world程序 vim hello.c # include <stdio.h>int main() {print("hello docker\n"); } 2. 将hello.c文件编译成二进制文件, 需要安装工具 yum install gcc yum install glibc-static 开始编译 gcc -static hello.c -o hello 编译…

Mybatis Plus条件构造器LambdaQueryWrapper

官网地址 Mybatis Plus条件构造器LambdaQueryWrapper 目前数据库数据情况&#xff0c;User表 iduser_namebirthdaysexaddress1张12023-08-10男123163.com2李12023-08-10女222163.com3张22023-08-10女999163.com4张32023-08-10男9994qq.com ## 简单介绍 如何使用各种场景 方法…

基于Promise.resolve实现Koa请求队列中间件

本文作者为360奇舞团前端工程师 前言 最近在做一个 AIGC 项目&#xff0c;后端基于 Koa2 实现。其中有一个需求就是调用兄弟业务线服务端 AIGC 能力生成图片。但由于目前兄弟业务线的 AIGC 项目也是处于测试阶段&#xff0c;能够提供的服务器资源有限&#xff0c;当并发请求资源…

Java算法_ LRU 缓存(LeetCode_Hot100)

题目描述&#xff1a;请你设计并实现一个满足 LRU &#xff08;最近最少使用&#xff09; 缓存 约束的数据结构。 获得更多&#xff1f;算法思路:代码文档&#xff0c;算法解析的私得。 运行效果 完整代码 import java.util.HashMap; import java.util.Map;/*** 2 * Author: L…

微信小程序备案流程

微信小程序备案流程 &#x1f4d4; 千寻简笔记介绍 千寻简笔记已开源&#xff0c;Gitee与GitHub搜索chihiro-notes&#xff0c;包含笔记源文件.md&#xff0c;以及PDF版本方便阅读&#xff0c;且是用了精美主题&#xff0c;阅读体验更佳&#xff0c;如果文章对你有帮助请帮我…

Oracle database Linux自建环境备份至远端服务器自定义保留天数

环境准备 linux下安装oracle 请看 oracle12c单节点部署 系统版本: CentOS 7 软件版本&#xff1a; Oracle12c 备份策略与实现方法 此次备份依赖Oracle自带命令exp与linux下crontab命令&#xff08;定时任务&#xff09; exp Oracle中exp命令是一个用于导出数据库数据和对象的…

算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言

算法竞赛入门【码蹄集新手村600题】(MT1140-1160&#xff09;C语言 目录MT1141 数字3MT1142 整除的总数MT1143 沙哈德数MT1144 整除MT1145 全部整除MT1146 孙子歌诀MT1147 古人的剩余定理MT1148 隐晦余8MT1149 余数MT1150 战死四五百MT1151 韩信生气MT1152 韩信又生气了MT1153 …

UML类图

UML类图 类与类之间的关系 类与类之间的关系 依赖 一个类的对象,作为另一个类的局部变量, 虚线加箭头表示继承 实线三角实现 虚线三角关联 一个类的对象,作为一个类的字段 实线箭头 a. 组合 实心菱形实线箭头 b. 聚合 空心菱形实线箭头

甄品焕新|燕千云服务请求预警功能上线,燕小千AIGC能力再升级

​ 燕千云数智化业务服务平台发布了1.23.0版本&#xff0c;此次版本上线了服务请求预警功能&#xff0c;增加呼叫中心服务场景中的通话质检功能&#xff0c;提高了企业IT服务效率。此次还升级了燕小千AIGC能力&#xff0c;不仅可以实时预估文档学习时间&#xff0c;还可以一键分…

MySQL 存储过程、函数、触发器、事件

​ 目录 存储过程 创建存储过程 调用存储过程 查看存储过程 删除存储过程 进阶 变量 if条件判断 传递参数 case结构 while循环 repeat结构 loop语句 leave语句 游标/光标 存储函数 触发器 创建触发器 删除触发器 查看触发器 事件 查看事件调度器是否开启…

Nginx负载均衡(重点)

正向代理 部署正向代理 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://20.0.0.60:80…

新手如何快速学习单片机?

初步确定学习目标&#xff1a;是学习简单便宜的51呢&#xff0c;还是学习简单但是性价比已经不算太高的&#xff0c;但是功能强大稳定可靠的avr&#xff0c;还是物美价廉的stm32&#xff0c;或者ARM9&#xff08;可以跑系统了&#xff09;&#xff0c;再往上x86什么的如果是学8…

【Linux】UDP协议——传输层

目录 传输层 再谈端口号 端口号范围划分 认识知名端口号 两个问题 netstat与iostat pidof UDP协议 UDP协议格式 UDP协议的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 传输层 在学习HTTP等应用层协议时&#xff0c;为了便于理解&#xff…

Word转PDF在线转换如何操作?分享转换技巧

现如今&#xff0c;pdf转换器已成为大家日常办公学习必不可少的工具&#xff0c;市场上的pdf转换器主要有两种类型&#xff0c;一种是需要下载安装的&#xff0c;另一种是网页版&#xff0c;打开就可以使用的&#xff0c;今天小编给大家推荐一个非常好用的网页版pdf转换器&…

json-server的入门

由于前端开发的时候&#xff0c;需要向后端请求数据&#xff0c;有的时候后端还没有准备好&#xff0c;所以需要使用一些简单的静态数据&#xff0c;但是我们更加希望能够模拟请求以及请求回来的过程&#xff0c;这个时候就需要使用json-server Json-Server的介绍 json-server…

bye 我的博客网站

Bye&#x1f64b;&#x1f64b;&#x1f64b;&#xff0c;我的博客网站。在我的服务器上运行了9个月之久的博客网站要和大家Bye了。 背景 可能很多人不知道我的这个博客网站的存在&#xff0c;好吧&#xff0c;最后一次展示它了&#xff0c;博客网站地址在这里&#xff0c;它…

【unity】ShaderGraph实现等高线和高程渐变设色

【unity】ShaderGraph实现等高线和高程渐变设色 等高线的实现思路 方法一&#xff1a; 通过Position节点得到顶点的高度&#xff08;y&#xff09;值&#xff0c;将高度值除去等高距离取余&#xff0c;设定余数的输出边界&#xff08;step&#xff09; 方法二&#xff1a; 将…

ElasticSearch详细操作

ElasticSearch搜索引擎详细操作以及概念 文章目录 ElasticSearch搜索引擎详细操作以及概念 1、_cat节点操作1.1、GET/_cat/nodes&#xff1a;查看所有节点1.2、GET/_cat/health&#xff1a;查看es健康状况1.3_、_GET/_cat/master&#xff1a;查看主节点1.4、GET/_cat/indices&a…

STM32F105RCT6 -- ST-Link ITM Trace printf 打印日志

1. STM32 可以配置UASRT&#xff0c;使用串口来打印日志&#xff0c;还有另外一种方式&#xff0c;使用ITM 调试功能来打印日志&#xff0c; 主要使用到的三个函数 core_cm3.h 1.1 发送函数 static __INLINE uint32_t ITM_SendChar(uint32_t ch)&#xff0c;相当于串口的发送函…