KVM 虚拟化技术(理论详解+实战)

article/2025/10/14 15:04:14

文章目录

  • 前言
    • 什么是虚拟化
    • 为什么要用虚拟化
    • 虚拟化技术的优势
    • KVM简介
    • 关于KVM
    • 关于Virtual Machine Manager
    • 其他虚拟化软件
  • KVM虚拟化平台部署

前言

什么是虚拟化

在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。
在这里插入图片描述
由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。

一般所指的虚拟化资源包括计算能力和数据存储。

由于目前信息技术领域的很多企业都曾在宣传中将该企业的某种技术称为虚拟化技术,这些技术涵盖的范围可以从Java虚拟机技术到系统管理软件,这就使得准确的界定虚拟技术变得困难。因此各种相关学术论文在谈到虚拟技术时常常提到的便是如前面所提到的那个不严格的定义。

为什么要用虚拟化

  • 同一台物理机运行多个不同版本应用软件

  • 硬件依赖性较低和便于数据迁移
    在这里插入图片描述

虚拟化技术的优势

1.降低运营成本

服务器虚拟化降低了IT基础设施的运营成本,令系统管理员摆脱了繁重的物理服务器、OS、中间件及兼容性的管理工作,减少人工干预频率,使管理更加强大、便捷。

2.提高应用兼容性

服务器虚拟化提供的封装性和隔离性使大量应用独立运行于各种环境中,管理人员不需频繁根据底层环境调整应用,只需构建一个应用版本并将其发布到虚拟化后的不同类型平台上即可。

3.加速应用部署

采用服务器虚拟化技术只需输入激活配置参数、拷贝虚拟机、启动虚拟机、激活虚拟机即可完成部署,大大缩短了部署时间,免除人工干预,降低了部署成本。

4.提高服务可用性

用户可以方便地备份虚拟机,在进行虚拟机动态迁移后,可以方便的恢复备份,或者在其他物理机上运行备份,大大提高了服务的可用性。

5.提升资源利用率

通过服务器虚拟化的整合,提高了CPU、内存、存储、网络等设备的利用率,同时保证原有服务的可用性,使其安全性及性能不受影响。

6.动态调度资源

在服务器虚拟化技术中,数据中心从传统的单一服务器变成了统一的资源池,用户可以即时地调整虚拟机资源,同时数据中心管理程序和数据中心管理员可以灵活根据虚拟机内部资源使用情况灵活分配调整给虚拟机的资源。

7.降低能源消耗

通过减少运行的物理服务器数量,减少CPU以外各单元的耗电量,达到节能减排的目的。

KVM简介

在这里插入图片描述
KVM,基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为 KVM),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。

KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。

KVM目前由Red Hat等厂商开发,对CentOS/Fedora/RHEL等Red Hat系发行版支持极佳。

关于KVM

1、KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
2、是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。
3、它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
4、KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
5、KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。
6、在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。

关于Virtual Machine Manager

在电脑运算中,红帽公司的Virtual Machine Manager是一个虚拟机管理员,可以让用户管理多个虚拟机。基于内核的虚拟机libvirt与Virtual Machine Manager。

Virtual Machine Manager可以让用户:

  • 创建、编辑、引导或停止虚拟机。

  • 查看并控制每个虚拟机的控制台。

  • 查看每部虚拟机的性能以及使用率。

  • 查看每部正在运行中的虚拟机以及主控端的即时性能及使用率信息。

  • 不论是在本机或远程,皆可使用KVM、Xen、QEMU。

在这里插入图片描述

其他虚拟化软件

🍪 Xen

Xen是一个开放源代码虚拟机监视器,由XenProject开发。它打算在单个计算机上运行多达128个有完全功能的操作系统。

在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。

🍪 QEMU

QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由KVM(早期为kqemu加速器,现在kqemu已被KVM取代)这个开源的加速器,QEMU能模拟至接近真实电脑的速度。QEMU有两种主要运作模式:

User mode模拟模式,亦即是用户模式。

QEMU能引导那些为不同中央处理器编译的Linux程序。而Wine及Dosemu是其主要目标。

System mode模拟模式,亦即是系统模式。

QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上模拟数部不同虚拟电脑。

KVM虚拟化平台部署

一、虚拟机资源

CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:单网卡
作系统:Centos7.6(1810)
在这里插入图片描述

二、实验环境

1、环境优化

#是否反解DNS,设置为NO可以让客户端连接服务器更快

[root@kvm ~]# vim /etc/ssh/sshd_config

#按/UseDNS 可以快速找到UseDNS 那一行

#取消DNS注释,改为NO

UseDNS no

然后:wq 保存退出
在这里插入图片描述

2、制作本地yum仓库

[root@kvm ~]# mkdir /abc[root@kvm ~]# cd /etc/yum.repos.d/[root@kvm yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo[root@kvm yum.repos.d]# mkdir bak
[root@kvm yum.repos.d]# mv CentOS-* bak
[root@kvm yum.repos.d]# ls
bak[root@kvm yum.repos.d]# vim local.repo[local]
name=kvm
baseurl=file:///abc
gpgcheck=0
enabled=1
[root@kvm yum.repos.d]# yum clean all 
[root@kvm yum.repos.d]# yum repolist[root@kvm ~]# vim /etc/fstab
/dev/cdrom /abc iso9660 defaults 0 0
[root@kvm ~]# mount -a 

在这里插入图片描述

3、关闭防火墙、核心防护

[root@kvm yum.repos.d]# systemctl stop firewalld[root@kvm yum.repos.d]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@kvm yum.repos.d]# setenforce 0

在这里插入图片描述
三、安装KVM

安装KVM基本组件

#安装 GNOME 桌面环境  如果装了图形界面可以不需要装
yum groupinstall -y "GNOME Desktop"#KVM 模块
yum -y install qemu-kvm#安装KVM 调试工具,可不安装
yum -y install qemu-kvm-tools#构建虚拟机的命令行工具
yum -y install virt-install#qemu 组件,创建磁盘、启动虚拟机等
yum -y install qemu-img#网络支持工具
yum -y install bridge-utils#虚拟机管理工具
yum -y install libvirt#图形界面管理虚拟机	
yum -y install virt-manager#以下是安装的内容
yum groupinstall -y "GNOME Desktop"
yum -y install qemu-kvm
yum -y install qemu-kvm-tools
yum -y install virt-install
yum -y install qemu-img
yum -y install bridge-utils
yum -y install libvirt
yum -y install virt-manager

#检测CPU是否支持虚拟化

cat /proc/cpuinfo | grep vmx

在这里插入图片描述

#查看KVM模块是否已安装

Lsmod:显示已载入的系统模块
[root@kvm ~]# lsmod | grep kvm
kvm_intel             183621  0 
kvm                   586948  1 kvm_intel
irqbypass              13503  1 kvm

在这里插入图片描述
#设置开启启动界面的显示模式

ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

在这里插入图片描述

三、设置KVM网络

  • NAT: 默认设置,数据包由 NAT 方式通过主机的接口进行
    传送,可以访问外网,但是无法从外部访问虚拟机网络
  • 网桥:这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持(一般有线网卡都支持)

使用Bridge网桥模式进行部署

vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

vim /etc/sysconfig/network-scripts/ifcfg-br0

在这里插入图片描述

然后把网卡重启一下

systemctl restart network 

四、KVM部署与管理

#创建KVM存储和镜像数据的目录、上传centos7镜像

[root@kvm network-scripts]# mkdir -p /data_kvm/iso
[root@kvm network-scripts]# mkdir -p /data/_kvm/store
[root@kvm network-scripts]# mkdir /abc
[root@kvm network-scripts]# mount.cifs //192.168.226.1/share /mnt

在这里插入图片描述
#查看镜像

ll /data_kvm/iso/

在这里插入图片描述
#使用虚拟系统管理器管理虚拟机

创建思路:
① 创建存储池(ISO、STORE)
② 添加存储卷
③ 创建虚拟机

[root@kvm kvmdata]# virt-manager

在这里插入图片描述
① 第一步:创建存储池
在这里插入图片描述
在这里插入图片描述

然后步骤1忘记截图了,就是输入一个存放目录的名字就行了 随便输一个

步骤2:
在这里插入图片描述
② 创建存储卷
在这里插入图片描述
③ 创建虚拟机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

然后就好了

在这里插入图片描述


http://chatgpt.dhexx.cn/article/HaKLpONP.shtml

相关文章

虚拟化技术之KVM,搭建KVM(详细)

首先说一下,KVM是基于硬件辅助的开源全虚拟化解决方案 一、KVM(基于内核的虚拟机)【刚开始是一家以色列的公司开发的,后来红帽觉得KVM很有前景,就把KVM收购了】。 二、KVM包含了一个内核加载模块,是一个.…

KVM虚拟化

文章目录 虚拟化介绍kvm简介Qemu-KVM虚拟化部署kvmKVM管理界面安装 虚拟化介绍 虚拟化:在一台计算机上虚拟出多个逻辑的计算机,而且每个逻辑计算机 它可以是不同操作系统 虚拟化技术:可以扩大硬件容量,单个cpu模拟出多个cpu并行…

虚拟化技术KVM入门学习

目录 一、虚拟化技术概述二、主流虚拟化介绍1、虚拟化技术主要分类2、平台虚拟化技术分类 三、KVM虚拟化技术简介1、KVM架构及解析 四、KVM软件安装1、环境准备2、查看CPU是否支持VT技术3、清理环境,卸载原有KVM4、安装软件5、启动服务6、查看kvm模块加载 五、Guest…

KVM虚拟化技术

KVM虚拟化技术 Qemu-kvm kvm virt-manager VNC Qemu-kvm创建和管理虚拟机 一.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可…

KVM虚拟化(一)

一、KVM虚拟化架构 1、主流虚拟机架构 图中对比了几种主流虚拟化技术架构:ESXi、Xen与KVM,其主要差别在与各组件(CPU、内存、磁盘与网络IO)的虚拟化与调度管理实现组件有所不同。在ESXi中,所有虚拟化功能都在内核实现…

虚拟化技术-KVM详解

一、 KVM概述 1.1 KVM 即 Kernel-based Virtual Machine 基于内核的虚拟机。 KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各个主要发行版本中。它使用 Linux 自身的调度器进行管理,所以相对于Xen,其核心…

盘点腾讯后台开发各级工程师(T1-T9)需要具备哪些能力

作为一个程序员,不管是初入职场的菜鸟还是做开发多年的老鸟,都希望有机会能进大厂,最近有不少小伙伴问腾讯好不好进?需要的技术栈是怎么样的?本文就给大家普及一下腾讯后台开发各级工程师(T1-T9&#xff09…

大华热成像摄像头整合web 后台开发

大华热成像摄像头整合web 后台开发 项目背景:需要web后台主动抓拍/自动监控上报到web后台,通过百度智能云人脸识别。并推送到微信公众号 涉及平台:web后台,大华ndk,百度人脸识别 1、大华热成像ndk 包及 demo解析说明本…

微信公众号后台开发总结

微信公众号后台开发总结 一、项目简介 当前需要做一个公众号后台,前期需要实现的功能有: (1) 在用户关注公众号时便获取用户的信息同时还要将用户信息存入数据库。 (2) 在用户给公众号发送消…

c/c++后台开发前景到底如何?该如何提升?

最近听到很多人都在讲:在这个Java热火朝天,人工智能高能吹捧的市场,c/c开发人员还有人要? 小编想说的是:有,而且很多企业都是有在招c/c开发人才。 只是IT这个行业:普遍高端稀缺,中端…

程序员告诉你:C/C++后台开发需要学习哪些技能书

前言:后台开发工程师主流使用的编程语言有C、Java、PHP以及目前慢慢流行的Golang等。小编就将以C的角度,讲讲如何学习和准备后台开发的岗位。 一、语言基础 无论是C开发还是Java开发,对于一个码农而言,最重要的就是对于编程语言的…

c++后台开发适合入坑吗?就业前景如何?

一、什么是c后台开发? c后台开发也可以叫c后端开发,其实从技术上来说并无不同。 c后台开发就是基于linux环境和C语言的服务器程序开发,像qq服务器、微信服务器、王者荣耀服务器等等。虽然现在各种高级语言大火,但是在高性能这一…

后台开发之常用工具

最近windows电脑系统又莫名地崩了,重装了系统,其他磁盘文件还保留着,发现大部分软件之前装载D盘,还是可以继续用的,只需要将路径配置到环境变量即可。 趁着每个软件重新配置的机会,再来梳理一下平时开发过…

微信公众号后台开发

最近公司要做微信工作号开发,觉得有趣,便接了这单活。 1.首先已经申请了微信工作号,打开微信公众号平台 https://mp.weixin.qq.com/ AppId是这个公众号的唯一识别码,相当于登录名 AppSecret 是公众号的开发者密码,就相…

C++后台开发技术栈

目录 岗位要求 Linux C开发(vivio) C后台开发技术栈 岗位要求 Linux C开发(vivio) 熟悉掌握多线程/多进程 网络编程 常见RPC框架 设计模式 gdb调试等技术 计算框架mpi、tensorflow的研究与优化,不断提升性能…

C++后台开发学习路线

1.路线 一. 基础阶段 c/c编程语言 linux基础 数据结构与算法 设计模式 脚本语言(可选) 二. 入门阶段 linux系统编程 linux网络编程 三. 进阶阶段 数据库mysql 分布式缓存redis 网络库 四. 项目实践阶段 编写简单FTP服务器 C入门到精通Linux学习链接&#xff1a…

后台开发技术(1)--概述

说到后台开发,首选就有一个问题:什么是后台开发。就我理解,就是做服务器端开发。在服务器端运行着不同功能的服务,有直接与客户端连接的,有实现某一特定业务的比如用户注册登录,有数据存储的如基于mysql,memcached,redis等做的存储系统,除此之外还有一些满足运维监控系统…

腾讯T9职级后台开发要具备哪些专业的能力及知识点?

前言 首先说明这里的后台开发指的就是Linux上的C 编程。因为很多人对后台开发有误解,通常人们说前端后台,后台就马上联想到web后台, java、php和各种web框架横飞的既视感。 web后台属于后台,但后台却不只有web后台。两者是包含关系。 从网络协议的角度分析, web后台聚焦的是HT…

带你了解网络的魅力——tcping和ping区别

一、指代不同 1、ping:是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。通过ICMP协议发送报文到对方主机上任意一个60000以上的端口,然后获取对方主机的回复 2、tcping:是一种面向连百接…

ping TCP端口的实用小工具tcping

ping 大家都很熟悉的ping 命令,属于网络层的ICMP协议,只能检查 IP 的连通性或网络连接速度, 无法检测IP的端口状态。 telnet telnet命令,属于应用层的协议,用于远程登录,也可用于检测IP的端口状态。但是…