KVM虚拟化技术

article/2025/10/14 16:17:17

KVM虚拟化技术
Qemu-kvm kvm virt-manager VNC
Qemu-kvm创建和管理虚拟机
一.KVM简介
KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于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:

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镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
6).在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。

KVM 与 vbox的区别:
vbox 是由 qemu 改写而成,包含大量qemu 代码。

1).可以使用于"不支持"虚拟化技术的cpu。
2).值得说的一点:vbox 在图形方面比较好,能进行2D 3D加速;但cpu控制不理想(估计是因为图形支持的缘故);操作上有独立的图形界面,易于上手。

kvm 是linux内核包含的东西,使用qemu作为上层管理(命令行)。

1).要求cpu 必须支持虚拟化。
2).性能:作为服务器很好,可是图形能力十分的差。即使放电影,图像也是像刷油漆一样,一层一层的。
3).cpu使用率控制很好。
4).控制上比较简洁,功能比较丰富:比如使用“无敌功能”所有更改指向内存,你的镜像永远保持干净。“母镜像”功能让你拥有n个独立快照点。还有很多参数。另外,kvm作为内核级的虚拟机,刚开始发展关注的公司比较多——但是还没有达到商业应用的水平。

总体而言:在支持虚拟化的情况下,vbox 和 kvm 的性能差不多,主要是面向对象不同:kvm适用于服务器,vbox适用于桌面应用。

qemu 全称Quick Emulator。是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。所以,大家不要把概念弄错了,盲目的安装qemu和kqemu。qemu使用模拟器

KVM内存管理
KVM继承了Linux系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对NUMA的支持能够让虚拟机高效访问更大的内存空间等。
KVM基于Intel的EPT(ExtendedPage Table)或AMD的RVI(Rapid Virtualization Indexing)技术可以支持更新的内存虚拟功能,这可以降低CPU的占用率,并提供较好的吞吐量。
此外,KVM还借助于KSM(Kernel Same-pageMerging)这个内核特性实现了内存页面共享。KSM通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时,KSM会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同GuestOS的虚拟机之间出现相同内存页面的概率是很的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此,KSM技术可以降低内存占用进而提高整体性能。

相关连接:
KVM的官方地址:http://www.linux-kvm.org/page/Main_Page
KVM的Howto文档:http://www.linux-kvm.org/page/HOWTO
Kqemu源码地址:http://sourceforge.net/projects/kqemu/
Qemu下载地址:http://wiki.qemu.org/Main_Page

二.KVM虚拟化平台构建
1.安装准备
查看你的硬件是否支持虚拟化。命令:
#egrep ‘(vmx|svm)’ /proc/cpuinfo
注意:要有 vmx 或 svm 的标识才行。总的说来,AMD在虚拟化方面作得更好一些。
在这里插入图片描述
2.安装KVM
由于Linux内核已经将KVM收录了,在安装系统时已经加入了KVM,我们只需要在命令行模式下启用KVM即可:
启用KVM模块
modprobe kvm
功能区分intel/amd的启用
在这里插入图片描述
3.KVM虚拟机创建和管理所依赖的组件介绍
KVM虚拟机的创建依赖qemu-kvm:
虽然kvm的技术已经相当成熟而且可以对很多东西进行隔离,但是在某些方面还是无法虚拟出真实的机器。比如对网卡的虚拟,那这个时候就需要另外的技术来做补充,而qemu-kvm则是这样一种技术。它补充了kvm技术的不足,而且在性能上对kvm进行了优化。

我们还可以使用virt-manager,virt-viewer来管理虚拟机;

我们在创建和管理KVM虚拟机时还需要libvirt这个重要的组件:

它是一系列提供出来的库函数,用以其他技术调用,来管理机器上的虚拟机。包括各种虚拟机技术,kvm、xen与lxc等,都可以调用libvirt提供的api对虚拟机进行管理。有这么多的虚拟机技术,它为何能提供这么多的管理功能那。是因为它的设计理念,它是面向驱动的架构设计。对任何一种虚拟机技术都开发设计相对于该技术的驱动。这样不同虚拟机技术就可以使用不同驱动,而且相互直接不会影响,方便扩展。而且libvirt提供了多种语言的编程接口,可以直接通过编程,调用libvirt提供的对外接口实现对虚拟机的操作。如今流行的云计算中的IaaS是与该库联系相当密切的。通过下图可以看出它的架构设计思想。
在这里插入图片描述
在这里插入图片描述
4.安装KVM所需组件
yum源提供了,直接安装
在这里插入图片描述
既然有个报错。百度下发现需要升级下组件
在这里插入图片描述
然后重新启动libvirtd发现已经正常
在这里插入图片描述
使用网桥管理命令查看:
在这里插入图片描述
像VMware Workstation中我们需要创建物理桥接设备,可以使用virsh创建桥设备关联网卡到桥接设备上:
需要将NetworkManager服务关闭,开机启动也关闭
在这里插入图片描述
然后在创建桥接设备及关联网卡到桥接设备上:
在这里插入图片描述
在这里插入图片描述
查看桥接设备:
在这里插入图片描述
至此,我们的虚拟化平台就构建完毕,下面就开始在KVM虚拟化平台上创建和管理虚拟机,我们先使用qemu-kvm来创建和管理虚拟机。

三、使用qemu-kvm管理KVM虚拟机
1.Qemu-kvm介绍
Qemu是一个广泛使用的开源计算机仿真器和虚拟机。当作为仿真器时,可以在一种架构(如PC机)下运行另一种架构(如ARM)下的操作系统和程序。而通过动态转化,其可以获得很高的运行效率。当作为一个虚拟机时,qemu可以通过直接使用真机的系统资源,让虚拟系统能够获得接近于物理机的性能表现。qemu支持xen或者kvm模式下的虚拟化。当用kvm时,qemu可以虚拟x86、服务器和嵌入式powerpc,以及s390的系统。

QEMU 当运行与主机架构相同的目标架构时可以使用KVM。例如,当在一个x86兼容处理器上运行 qemu-system-x86 时,可以利用 KVM 加速——为宿主机和客户机提供更好的性能。

Qemu有如下几个部分组成:

处理器模拟器(x86、PowerPC和Sparc);
仿真设备(显卡、网卡、硬盘、鼠标等);
用于将仿真设备连接至主机设备(真实设备)的通用设备;
模拟机的描述信息;
调试器;
与模拟器交互的用户接口;

基于libvirt的工具如virt-manager和virt-install提供了非常便捷的虚拟机管理接口,但它们事实上上经二次开发后又封装了qemu-kvm的工具。因此,直接使用qemu-kvm命令也能够完成此前的任务。

2.Qemu-kvm的使用帮助

在RHEL6/CentOS6上,qemu-kvm位于/usr/libexec目录中。由于此目录不属于PATH环境变量,故无法直接使用,这样也阻止了可以直接使用qemu作为创建并管理虚拟机。如若想使用qemu虚拟机,可以通过将/usr/libexec/qemu-kvm链接为/usr/bin/qemu实现。
在这里插入图片描述
qemu-kvm命令使用格式为“qemu-kvm [options] [disk_image]”,其选项非常多,不过,大致可分为如下几类。

标准选项;
USB选项;
显示选项;
i386平台专用选项;
网络选项;
字符设备选项;
蓝牙相关选项;
Linux系统引导专用选项;
调试/专家模式选项;
PowerPC专用选项;
Sparc32专用选项;

qemu-kvm的标准选项
qemu-kvm的标准选项主要涉及指定主机类型、CPU模式、NUMA、软驱设备、光驱设备及硬件设备等。

在这里插入图片描述
qemu-kvm的显示选项
显示选项用于定义虚拟机启动后的显示接口相关类型及属性等。

在这里插入图片描述
网络属性相关选项
网络属性相关选项用于定义网络设备接口类型及其相关的各属性等信息。这里只介绍nic、tap和user三种类型网络接口的属性,其它类型请参照qemu-kvm手册。
在这里插入图片描述
3.使用qemu-kvm安装虚拟机Guest OS

测试安装windows 2003
1)下载系统镜像文件,我这里有个windows 2003系统,我们来试着安装。
创建虚拟机的磁盘文件存放目录:
在这里插入图片描述
创建虚拟磁盘文件:
在这里插入图片描述
2)在kvm平台安装vnc-server和tigervnc这个vncviewer
centos6.X搭建vnc
标签: vnc 分类: 技术文档
在这里插入图片描述
我们到图形界面上进行连接:
#vncviewer :5900
在这里插入图片描述
后续直至安装完成即可。
也可以使用virt-manager创建和管理虚拟机。


http://chatgpt.dhexx.cn/article/8g8qYEaD.shtml

相关文章

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的端口状态。但是…

tcping检测端口

1.下载 tcping.exe - ping over a tcp connection (elifulkerson.com) 2.放置路径 C:\Windows\System32 3.使用 -4,优先使用IPv4 -6,优先使用IPv6 -h,使用http模式 -t,让命令持续运行,直到使用ctrl c指令退出 -n 数…

使用TCPing或PSPing工具检测TCP延迟

测试网络的延迟可以使用ping,mtr,tracert等命令,但是测试TCP端口的访问延迟无法使用以上软件完成,此时可以使用TCPPing或者PSPing来测试TCP端口的延迟情况。 TCPPing 到网上搜索tcping,下载该工具后。放到C:\Wi…

(迁移)windows cmd的tcping和telnet命令

使用“tcping”命令提示不是内部或外部命令该怎么办? 我们在使用香港服务器或者香港vps的过程中,当我们遇到远程连接不上或者是相应业务无法打开时,最基本的操作就是联系服务器商处理,但其实当我们遇到这些时都是可以自己先简单排查下的。最…

用Ping、Tcping测试网络的连通性

1、概述 通常情况下,测试一个地址能不能访问,通常使用Ping来判断,如果测试端口的连通性,可以使用Tcping来判断。 2、使用 a.用ping命令查看地址能否访问,若可以访问,如下图: b.用tcping命令查…