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

article/2025/10/14 16:13:28

首先说一下,KVM是基于硬件辅助的开源全虚拟化解决方案
一、KVM(基于内核的虚拟机)【刚开始是一家以色列的公司开发的,后来红帽觉得KVM很有前景,就把KVM收购了】。
二、KVM包含了一个内核加载模块,是一个.ko文件,这个KVM模块只负责的是:1、虚拟机的虚拟CPU也就是vCPU 2、对虚拟内存进行管理和调度。还有一个就是下面说的QEMU-KVM,这个QEMU-KVM就是通过修改QEMU代码而得出的专门用来创建和管理虚拟机的管理工具,是为了KVM能更好的和内核打交道。VM 运行期间,QEMU 会通过 KVM 模块提供的系统调用进入内核,由 KVM 负责将虚拟机置于处理的特殊模式运行。
三、但是我们知道虚拟机只有cpu和内存是完全不够的,他还要有外设,那么如何管理所需要的这些外设呢:
首先这些外设分为真实存在的外设和虚拟的外设,真实的外设需要利用linux系统内核来管理。一般来说我们使用的还是虚拟的外设,而虚拟机要与虚拟的外设交互的话,就需要依靠虚拟化技术的另外一个项目QEMU,很多设备都采用了QEMU的虚拟外设。

从而我们就会有一个结论:1、KVM本身只关注虚拟机调度和内存管理这两个方面
2、外设的任务交给我们上面说的linux 内核或者是QEMU。 所以KVM就是一个轻量级的Hypervisor。
二、安装KVM
KVM需要硬件虚拟化的特性的支持,因此要注意的是在安装KVM之前,首先要在BIOS中将CPU虚拟化开启,然后就可以使用命令安装KVM
Kvm架构:
Kvm架构主要由两个模块来组成:kvm模块和QEMU-KVM 由下图可以看到:kvm模块集成在了linux的内核里面,它为一个虚拟机提供的是cpu和mem而QEMU-KVM在linux的用户空间层,它为一个虚拟机提供的是io等设备。



QEMU-KVM通过/dev/kvm接口来调用kvm:


就通过这样的四大部,虚拟机就可以启动起来了。
在这里我们就从安装开始:

准备工作:首先说一下我在vmware下的centos7上安装KVM,并且我的centos7已经安装好了vnc_server,我可以在我的windows下远程访问;还有就是我在我的centos7的/opt/ubuntu/下放了一个准备后面创建KVM虚拟机的iso文件(ubuntu12.04系统的镜像文件)
一、首先得一步就是确定我的centos7是否支持KVM虚拟化:
[root@localhost ~]# egrep -o ‘(vmx|svm)’ /proc/cpuinfo
vmx
如果上面命令执行后什么都没有输出,那么就在虚拟机设置对话框下修改成下图这样

注意:是在关机的情况下设置的,然后开机后再执行上面的命令,就会ok了。

二、使用命令安装QEMU,libvirt等
yum install -y qemu-kvm qemu-img virt-manager virt-install virt-viewer libguest* libvirt*
yum groupinstall -y virtualization-client virtualization-platform virtualization-tools
就这两个命令,把这些都装上
三、看看安装好了没:
[root@localhost ~]# virsh
欢迎使用 virsh,虚拟化的交互式终端。
输入:’help’ 来获得命令的帮助信息
‘quit’ 退出
virsh # list

Id 名称 状态

virsh # quit
[root@localhost ~]#
使用virsh命令看一下,都ok
Ps:virsh(虚拟 shell),基于命令行的管理工具,可以实现简单的资源管理。它构建于libvirt之上,允许以交互方式使用多个libvirt功能。【如果对libvirt不太了解的话,可以看看我的关于libvirt的文章】

当到这里的时候:我们就可以创建KVM虚拟机了,我们可以使用命令或者然后我们就在centos7的图形界面下打开虚拟系统管理器

然后点击新建,再选择使用iso镜像创建【就是一开始说的我放在/opt/ubuntu/下的ubuntu12.04的iso镜像】



然后就是后面的自定义设置了,这里我就将我做了修改的地方发一下截图:


然后点开始安装,就会进去我通常装ubuntu的安装界面
我们也可以在终端下看一下:
[root@localhost ubuntu]# virsh
欢迎使用 virsh,虚拟化的交互式终端。

输入:’help’ 来获得命令的帮助信息
‘quit’ 退出

virsh # list

Id 名称 状态

2 KVM_ubuntu12.04 running

virsh #

安装成功后可以进入这个KVM虚拟机看看:

然后使用命令或者使用图形按钮都可以将这个KVM虚拟机给关闭
我使用命令关闭这个虚拟机:
virsh # list

Id 名称 状态

2 KVM_ubuntu12.04 running
virsh # shutdown
错误:命令 ‘shutdown’ 需要 选项
virsh # shutdown KVM_ubuntu12.04
域 KVM_ubuntu12.04 被关闭
virsh #

三、另外,我们也是可以用命令来安装KVM虚拟机:
[root@localhost ~]# virt-install \

–name vm_2 \
–ram=1024 \
–vcpus=1 \
–disk path=/opt/ubuntu/vm_2.qcow2,size=6 \
–cdrom /opt/ubuntu/ubuntu-12.04.5-desktop-amd64.iso
WARNING 需要图形,但未设置 DISPLAY。未运行 virt-viewer。
WARNING 没有为该虚拟机启动控制台,默认为 –wait -1

开始安装……
正在分配 ‘vm_2.qcow2’ | 6.0 GB 00:00:00
创建域……
域安装正在进行。请等待 以便安装完成。 | 0 B 00:00:00

然后我们打开centos7的图形界面就可以像平常一样安装上面的这个ubuntu12.04系统了。
四、Ps:创建的这个kvm虚拟机就可以完全使用在openstack上,openstack支持的就是qcow2格式的镜像。


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

相关文章

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

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 数…