当前位置:首页 > 虚拟化 > 正文

kvm虚拟化组成部分


一、虚拟化技术—QEMU-KVM基于内核的虚拟机

探究虚拟化本质:QEMU-KVM的基石与有效运行


QEMU-KVM作为与Linux内核集成的高效虚拟化解决方案,其核心TYPE1Hypervisor,采用硬件辅助虚拟化技术与Linux内核紧密配合,以其优异的性能和资源管理而脱颖而出。要了解KVM,首先要知道它是如何利用内核模块等硬件资源来控制和优化虚拟环境,以保证兼容性和效率。


2007年,KVM正式加入Linux家族,支持多核架构(SMP)和NUMA。它的LiveMigration和KernelSame-pageMerging(KSM)功能得到了动态显着改进。虚拟机。启动时,以RootMode初始化内核模块,通过UserApplicationQEMU,虚拟硬件模拟虚拟机并提供虚拟机服务。


QEMU,由天才FabriceBellard于2001年开发,称为TYPE2Hypervisor,基于动态二进制传输技术,可以兼容多种CPU架构和模拟技术,虽然性能稍差比KVM低,但灵活性允许QEMU连接到KVM,催生了强大的QEMU-KVM分支。


KVM软件包括:核心模块、开源虚拟机管理器QEMU、AWS、阿里云等云服务提供商上的QEMU-KVM以及构建坚实基础的电源驱动程序用于技术虚拟化。虽然QEMU-KVM分支是QEMUKVM环境的一部分,但我们更喜欢称其为QEMU而不是KVM实现。KVM工作得非常出色。QEMU通过open、close、jokes等系统调用访问KVM接口,实现CPU、内存和I/O的虚拟化,而VM管理和模拟I/O由QEMU独立处理。


创建虚拟机的过程和技巧一样精妙:首先打开/dev/kvm,通过ioctl命令创建VM,以及相应的硬件抽象层(HVA)和物理地址(HPA)和设备PCI仿真。接下来,下载QEMU映像、构建vCPU并启动主机。在此过程中,主线程不断监听VM输出事件,以响应虚拟环境中的中断和访问。


当页面错误中断访问并且事件机退出时,KVM接管CPU,Linux服务器通过ioctl与QEMU接口来配置虚拟机及其vCPU。KVM支持三种操作模式:User、Kernel(root模式)和Guest(非root模式)。QEMU虚拟化支持通过/dev/kvm和全局页面映射(GPA)映射内存设备,以确保GuestOS隔离。对于I/O虚拟化,QEMU负责创建设备和捕获I/O请求,构建QEMU-KVM架构,该架构由vCPU、虚拟内存、虚拟I/O和GuestOS构建而成,形成单个用户进程结构。


QEMU-KVM的架构设计巧妙。VCPU在HostOS调度下由GuestOS和HostOS共同处理,形成两个调度层:GuestOS是高层控制器。调度,而HostOS(LinuxScheduler)负责底层调度。KVM支持SMP和NUMA,允许用户自定义虚拟机的vCPU布局,以确保安全的CPU迁移模型。


通过-qemu-kvm命令,开发人员可以自定义VM的CPU配置并记录自定义模式和所选格式。默认使用-host模式,磁盘设备选项丰富多样,包括文件路径、接口类型、索引、格式等。像-boot这样的引导选项用于指定引导设备并根据体系结构支持不同的字符标识符。QEMU是强大的网卡模拟功能,支持多种网卡类型、MAC地址和VLAN,还可以通过Tap接口连接到物理网络,并支持用户模式网络堆栈设计。


虚拟化技术的卓越之路,QEMU-KVM以卓越的性能和灵活性引领我们探索更高层次的计算世界。无论是基本配置还是高级功能,QEMU-KVM以其优秀的工程设计为云计算和虚拟化环境提供了强有力的支持。


二、kvm安装linux系统kvm安装linux

KVM可以安装在Windows系统上吗?

由于KVM兼容性广泛,支持Windows、Linux、Sun等常见操作系统,兼容联想、曙光、浪潮、华为、Boyd、HP、IBM、Dell等常见服务器和思科。

所以Windows系统可以安装KVM。

KVM(虚拟机)可以直接安装在裸机(服务器)上吗?如何安装?

最流行的两种裸机开源虚拟化技术是内核虚拟机(KVM)和Xen,因此KVM可以直接在裸机上运行,​​无需任何操作系统。KVM支持几乎所有操作系统:Linux、MacOS、Unix、Windows以及您选择的任何其他操作系统。

如何连接KVM?

安装VNC1服务器(1)在Linux系统上安装VNCyum-yinstallvnc-serveryum-yinstalltigervnc服务器(2)输入远程登录所需的密码输入密码注意:此密码是远程登录时必须设置(3)通过vi/etc/sysconfig/vncservers配置vncserver,设置如下配置值VNCSERVRES=10000:root(10000为桌面,number和root为用户名)VNCSERVERARGS=geometry800x600_nolistentcp_localhost(4)执行配置防火墙,允许远程连接VNC服务器vi/etc/sysconfig/iptables_AINPUT_mstate_stateNEW_mtcp_ptcp_jACCreservice并重启服务iptablesrestart2安装VNC客户端在Linux上安装vncviewer在Windows上安装TigerVNC软件2创建KVM虚拟机1、创建Linux虚拟机(1)创建7G镜像通过qemu-img文件qemu-imgcreate_7G(2)创建Linux虚拟机qemu-kvm_m1024_cdromubuntu-82。iso_drivefile=;boot=on_bootd_ngraphic_vnc:

2注意:-vnc和:2之间有一个空格在另一台计算机上启动TigerVNC,然后输入192.168.0.123:5902连接以执行安装。操作并观察安装进度。注:192.168.0.123是基础机器IP,5902是对应的端口号(5900+2)2、创建Windows虚拟机(1)创建包含virtio驱动程序的镜像。UltraISO软件。下载、、将解压到文件夹中。使用UltraISO打开复制virtio-win-0.1-30到相应路径添加新的win7withvirtio驱动文件夹。iso文件保存为新的ios文件win7_u-imgcreate_frawwin7_30Gqemu-kvm_m1024_cdromfile_drive。=virtio,boot=on__bootd_ngraphic_vnc:

3注意:-vnc和:3之间有一个空格在另一台机器上启动TigerVNC,输入192.168.0.123:5903进行连接。执行安装操作并观察安装进度。注:192.168.0.123是本地IP地址,5903是对应的端口号(5900+3)三个远程桌面虚拟化连接。在另一台机器上启动TigerVNC,输入192.168.0.123:593登录win7虚拟机

KVM、QEMU、KQemu有什么区别?

KVM只是基于内核虚拟化Qemu本身就是虚拟化的一种,硬件模拟器是针对KVM优化的Qemu和KVM的组合。。。我们现在所说的KVM其实就是qemu-kvm,在Linux中它作为/dev/kvm的块设备和一个包含qemu-kvm的进程而存在

Kvm三个组件和应用程序。

KVM虚拟化架构及三种模式

1Guest模式(guestOS):VM中的操作系统为GuestOS

Guest运行在操作系统模式下。,客户端分为内核模块和用户态

2用户态:

为用户提供用户空间工具进行虚拟机管理,并代表用户进行I/O。Qemu工作在该模式下(Qemu的主要功能)

3Linux内核模式

模拟CPU和内存,实现客户端模式切换并处理从运行在该模式下的客户端模式启动

KVM原理

1guest系统,包括CPU(vCPU)、内存、驱动(控制台、网卡、I/O设备驱动等。)

设置KVM以受限CPU模式运行。

2KVM核心模块模拟处理器和内存,支持虚拟机运行

3.Qemu主要处理I/O,为客户端提供一个用户空间/dev/kvmlibvirt来管理虚拟机

ioctl(定义)是一个专门用于设备输入输出操作的系统调用

libvirt:KVM管理工具

上面构成了一个完整的虚拟机虚拟化平台

简单理解:

KVM驱动提供了处理器和内存虚拟化,以及guestI/O拦截GuestI/O捕获后交给Qemu处理

Qemu使用libkvm接口调用(ioctl)虚拟机设备接口/dev/kvm来分配资源、管理和维护虚拟机

KVM工作流程

用户模式Qemu使用libkvm接口通过ioctl系统调用进入内核模式。KVM驱动程序为虚拟机创建虚拟CPU和虚拟内存,然后执行VMLAU-NCH指令进入Guest模式,加载GuestOS并运行。如果GuestOS执行过程中发生异常,GuestOS的运行将会暂停,当前状态将被保存,系统将退出到内核模式来处理这些异常。

内核态处理这些异常时,如果不需要V/O,处理完成后会重新进入客户端态。如果需要V/O,则进入用户模式,Qemu将处理I/O。处理完成后,进入内核模式,进入客户端模式。


三、企业级虚拟化Kvm实战

常用的虚拟化产品有哪些
1.企业级的Kvm(redhat)

--桌面级的Vmware-workstation(Windows和Linux)
--Vmware-fusion(mac)
--Vmware-esxi(企业层)是一个独立的操作系统。
-v(微软)
(Oracle公司--Windowslinux)virtulbox
(rhel6之前所有版本的默认虚拟化产品)
虚拟化技术的分类:

我们通常所说的虚拟化主要是指平台的虚拟化技术,通过使用控制程序(ControlProgram,也称为VirtualMachineMonitor(虚拟监视器VMM)来隐藏平台的虚拟化技术。)或Hypervisor根据特定计算平台的物理特性为用户提供一个抽象的、统一的、模拟的计算环境(称为虚拟机)
平台虚拟化的类型

全虚拟化:

>

半虚拟化:

硬件辅助虚拟化

部分虚拟化
企业级虚拟化与桌面级虚拟化的区别

开始从rhel6开始,kvm模块直接集成到内核的一部分

rhel6之前的企业版默认内核不支持xen,必须重新安装xen内核功能

KVM旨在用于在x86硬件上运行的内核驻留虚拟化基础设施KVM是第一个成为本机Linux内核(2.6.20)一部分的虚拟机管理程序,由AviKivity开发并由AviKivity开发和维护,现在该虚拟机管理程序由RedHat拥有,可实现这一点。x86虚拟化,可访问PowerPC®和IA64此外,最近还添加了KVM,以支持对称多处理(SMP)主机(和来宾),并支持主动迁移(允许来宾操作系统在物理主机之间迁移)等企业级功能。服务器)

KVM是作为内核模块实现的,因此Linux只需要加载这个模块。成为虚拟机管理程序KVM为支持虚拟机管理程序指令(例如英特尔®产品虚拟化技术[IntelVT]或AMD虚拟化[AMD-V])的硬件平台提供完全虚拟化。KVM还支持半虚拟化客户操作系统,包括Linux和Windows®。

该技术由两个组件实现,一个是可加载的KVM模块。当安装在Linux内核中时,它可以通过/proc管理虚拟化硬件。第二个组件用于模拟PC平台,由QEMU的修改版本提供,作为用户空间中的进程运行,并根据来宾操作系统的请求与内核进行协调。

当一个新的操作系统在KVM上启动时(通过一个名为kvm的实用程序),它就成为主机操作系统的一个进程,因此可以像其他进程一样进行调度。但与传统的Linux进程不同,来宾操作系统被虚拟机管理程序识别为处于“来宾”模式(独立于内核和用户模式)。

每个客户操作系统都通过/dev/kvm设备进行映射,并拥有自己的虚拟地址空间,该虚拟地址空间射到主机内核的物理地址空间。如上所述,KVM使用底层硬件虚拟化支持来提供全(本机)虚拟化。I/O请求通过主机内核映射到主机(管理程序)上运行的QEMU进程。

KVM在Linux环境中作为主机运行,但只要底层硬件虚拟化支持,就可以支持大量的客户操作系统。

上一篇:kvm虚拟化安装

下一篇:kvm虚拟化平台