HCIP-linux和kvm

news2024/12/24 8:36:57

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

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

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

相关文章

项目知识点记录

1.使用druid连接池 使用properties配置文件: driverClassName com.mysql.cj.jdbc.Driver url jdbc:mysql://localhost:3306/book?useSSLtrue&setUnicodetrue&charsetEncodingUTF-8&serverTimezoneGMT%2B8 username root password 123456 #初始化链接数…

Python-OpenCV中的图像处理-霍夫变换

Python-OpenCV中的图像处理-霍夫变换 霍夫变换霍夫直线变换霍夫圆环变换 霍夫变换 霍夫(Hough)变换在检测各种形状的技术中非常流行,如果要检测的形状可以用数学表达式描述,就可以是使用霍夫变换检测它。即使要检测的形状存在一点破坏或者扭曲也是可以使…

《人月神话》:我所遇见的“焦油坑”

最近在读《人月神话》这本书。 发现大部分task延期和研发关系不是很大,技术为业务服务,但是偿还不了业务债。 焦油坑的概念源自于挖掘坑井时的一种不幸状况。当挖掘坑井时,首先会进入表土层,进展颇快。但接下来遇到了沥青或泥浆…

Highcharts引入

Highcharts是和jQuery一起使用的,所以需要下载好jQuery jQuery下载方式:访问:http://cdn.staticfile.org/jquery/2.1.4/jquery.min.js,然后全选复制到自己新建的txt文档中,最后把扩展名改为js。 Highcharts下载方式&…

红帽8.5 ansible 安装和部署 |(简单版)

安装 配置yum仓库: vim /etc/yun.repo.d/aliyun.repo [AppStream] nameApp baseurlhttps://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os gpgcheck0[BaseOS] namebase baseurlhttps://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os gpgcheck…

安装PaddleOCR-2.7.0版本-笔记

安装PaddleOCR-2.7.0版本-笔记 先安装conda和python版本 本机安装的conda 22.9.0 python2.9.12 paddle2.4.2 paddlepaddle-gpu2.4.2 cuda10.2 安装完后,测试生成的结果如下所示: 一、第一步先激活环境 conda activate base conda activate base二、第…

线程介绍,线程与进程区别,如何使用多线程,Thread类,Runnable接口,补充知识(方法重载,方法重写)

引言:搞进程是为了什么呢? 满足并发编程,这样的需求,cpu多个核心,应用程序做出对应调整,让代码可以把多个核心充分利用起来~,当需要支持多个任务的时候——进程就十分关键了&#x…

8月9日上课内容 nginx反向代理与负载均衡

负载均衡工作当中用的很多的,也是面试会问的很重要的一个点 负载均衡:通过反向代理来实现(nginx只有反向代理才能做负载均衡) 正向代理的配置方法(用的较少) 反向代理的方式:四层代理与七层代…

Golang 函数定义及使用

文章目录 一、函数定义格式二、函数定义及使用 一、函数定义格式 //func: 函数定义关键字 //function_name:函数名称 //parameter_List: 函数参数列表,多个时使用逗号拆分 //return_types:函数返回类型,返回多个值时使用逗号拆分…

2023河南萌新联赛第(五)场:郑州轻工业大学-F 布鲁特佛斯

2023河南萌新联赛第(五)场:郑州轻工业大学-F 布鲁特佛斯 https://ac.nowcoder.com/acm/contest/62977/F 文章目录 2023河南萌新联赛第(五)场:郑州轻工业大学-F 布鲁特佛斯题意解题思路代码 题意 给定一个…

前后端分离------后端创建笔记(02)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

《甲午》观后感——GPT-3.5所写

《甲午》是一部令人深思的纪录片,通过生动的画面和真实的故事,向观众展示了中国历史上的一段重要时期。观看这部纪录片,我深受触动,对历史的认识也得到了深化。 首先,这部纪录片通过精心搜集的历史资料和珍贵的影像资料…

SLF4J日志绑定原理分析

前言 最近做项目,实际上也知道日志冲突的事,不过涉及MDC NDC数据传递,当日志框架冲突后,MDC和NDC就失效了,这里就涉及slf4j-api的MDC的绑定的过程,顺便分析了日志冲突实际生效的原因,理解SLF4J…

JavaScript类

JavaScript 类(class) 类是用于创建对象的模板。 我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。 每个类中包含了一个特殊的方法 constructor(),它是类…

395. 至少有 K 个重复字符的最长子串

395. 至少有 K 个重复字符的最长子串 C代码:滑动窗口 ---- 不是吧,阿sir,这也能滑? // 返回滑动窗口的长度 // 满足条件的种类数量的可能为 [1, 26], 所以需要遍历26中情况的窗口长度 // 当 区间内所有种类数量 满足要求的种类数…

【Anaconda】安装及使用

知识目录 前言一、 Anaconda是什么二、为什么使用Anaconda三、安装步骤3.1 下载安装3.2 配置conda源 结语 前言 大家好!我是向阳花花花花,本期给大家带来的是 Anaconda 安装及使用。 每日金句分享:故事不长,也不难讲。』—— 「…

深度学习(37)—— 图神经网络GNN(2)

深度学习(37)—— 图神经网络GNN(2) 这一期主要是一些简单示例,针对不同的情况,使用的数据都是torch_geometric的内置数据集 文章目录 深度学习(37)—— 图神经网络GNN&#xff08…

SpringCloudGateway配置跨域设置以及如何本地测试跨域

问题背景 有个服务A ,自身对外提供服务,几个系统的前端页面也在调用,使用springboot 2.6.8开发的,自身因为有前端直接调用已经配置了跨域。 现在有网关服务,一部分前端通过网关访问服务A(因为之前没有网关…

Android系统-ServiceManager2

目录 引言: 获取ServiceManager 流程图 注册系统服务 获取系统服务 引言: 注册或使用服务之前,需要通过ServiceManager这个DNS来找到对应的服务。那怎么找到ServiceManager呢? 怎么注册系统服务? 怎么获取系统…

分享一组天气组件

先看效果&#xff1a; CSS部分代码&#xff08;查看更多&#xff09;&#xff1a; <style>:root {--bg-color: #E9F5FA;--day-text-color: #4DB0D3;/* 多云 */--cloudy-background: #4DB0D3;--cloudy-temperature: #E6DF95;--cloudy-content: #D3EBF4;/* 晴 */--sunny-b…