KVM详解

本文详细介绍了虚拟化技术,特别是KVM(基于内核的虚拟机)的工作原理和配置。KVM是一种Linux内核模块,实现了Hypervisor,允许在单一服务器上运行多个虚拟机。KVM结合QEMU模拟硬件,而Libvirt作为管理工具,提供了管理和控制虚拟机的接口。文章还涵盖了虚拟化的分类,包括全虚拟化、半虚拟化和硬件辅助虚拟化,以及如何配置KVM,如安装软件、创建虚拟机和网络配置。
摘要由CSDN通过智能技术生成

虚拟化与KVM

    下载排好版的word文档,点这里


1、虚拟化简介

1)     系统虚拟化是将底层物理设备与上层操作系统、软件分离的一 种去耦合技术,在一台物理机器上逻辑的划分出多台机器。

2)     虚拟化的目标是实现IT资源利用效率和灵活性的最大化。在一台物理主机上虚拟出多个虚拟计算机(虚拟机,Virtual Machine,VM),其上能同时运行多个独立的操作系统,这些客户操作系统(Guest OS)通过虚拟机管理器(Virtual Machine Monitor,VMM,也称作Hypervisor)访问实际的物理资源

3)     KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux 的一个内核模块,该内核模块使得 Linux 变成了一个Hypervisor

2、使用虚拟化的原因

当公司的服务器越来越多,我们需要充分利用资源,也需要统一运维管理,这时虚拟化能帮助我们做很多事。总结如下:

1)       打破“一台服务器对应一套应用”的模 式,将物理服务器进行整合,提升利用 率

2)       服务器和相关IT硬件更少,节省了机房空间,也减少了散热和电力需求

3)       具备灵活数据备份和应用迁移机制,保障服务永不中断

4)       资源动态调配和模板化部署,应用系统快速上线,及时响应业务变化。

image.png

3、虚拟化的分类

1)       全虚拟化(使用二进制翻译的虚拟化,hypervisor将操作系统的指令翻译并将结果缓存,供之后使用。而用户级指令无需修改就运行,具有和物理机一样的执行速度。客户系统不知道自己在虚拟环境中

2)       半虚拟化(半虚拟化指的是虚拟机系统和hypervisor通过交互来改善性能和效率,但需要修改客户机操作系统。客户系统知道自己在虚拟环境中。如Xen)

3)       硬件辅助的虚拟化(Intel虚拟化技术(VT-x)和AMD的AMD-V,通过硬件的辅助实现全虚拟化)

4、三种虚拟化的区别

4.1、cpu的ring

在介绍三种虚拟化的区别前,首先要明白cpu的ring级别。

Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3。

RING0级别最高,级别依次往下降。

操作系统(内核)的代码运行在最高运行级别ring0上,可以使用特权指令,控制中断、修改页表、访问设备等等。

应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数)。

执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。

那么,虚拟化在这里就遇到了一个难题,因为宿主操作系统是工作在ring0的,客户操作系统就不能也在ring0了,但是它不知道这一点,以前执行什么指令,现在还是执行什么指令,那肯定不行啊,没权限啊,玩不转啊。所以这时候虚拟机管理程序(VMM)就要避免这件事情发生。

(VMM在ring0上,一般以驱动程序的形式体现,驱动程序都是工作在ring0上,否则驱动不了设备)

image.png

4.2、全虚拟化

1)       客户操作系统执行特权指令时,会触发异常(CPU机制,没权限的指令,触发异常)

2)       然后VMM捕获这个异常,在异常里面做翻译,模拟。并且会缓存翻译结果

3)       最后返回到客户操作系统内,客户操作系统认为自己的特权指令工作正常,继续运行。

全虚拟化中,虽然用户级指令具有和物理机一样的执行速度。但系统级指令整个过程下来,性能损耗非常的大。因为一条简单的指令在宿主机上直接执行就行了,现在在gues os上却要通过复杂的异常处理过程。

4.3、半虚拟化

半虚拟化的思想是:让客户操作系统知道自己是在虚拟机上跑的,工作在非ring0状态,那么它原先在物理机上执行的一些特权指令,就会修改成其他方式,这种方式是可以和VMM约定好的

这就相当于,我通过修改代码把操作系统移植到一种新的架构上来,就是定制化。所以像XEN这种半虚拟化技术,客户机操作系统都是有一个专门的定制内核版本,和x86、mips、arm这些内核版本等价。这样以来,就不会有捕获异常、翻译、模拟的过程了,性能损耗非常低。这就是XEN这种半虚拟化架构的优势。这也是为什么XEN只支持虚拟化Linux,无法虚拟化windows原因,因为微软不改代码。

4.4、硬件辅助的虚拟化

由于CPU厂商开始支持虚拟化了,所以出现了硬件辅助的虚拟化。拿X86 CPU来说,引入了Intel-VT 技术,支持Intel-VT 的CPU,有VMX root operation 和 VMX non-root operation两种模式,两种模式都支持Ring 0 ~ Ring 3 这 4 个运行级别。这下好了,VMM可以运行在VMX root operation模式下,客户OS运行在VMX non-root operation模式下。即是宿主机和虚机是运行在同样硬件上的不同模式,也就说,在硬件这层做了些区分,这样全虚拟化下,有些靠“捕获异常-翻译-模拟”的实现就不需要了。

4.5、参考文档

全虚拟化和半虚拟化的区别 cpuring0 ring1又是什么概念?  (http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html)

cpuring0ring1ring2ring3 (https://blog.csdn.net/jeason29/article/details/47338441)

 

5、宿主机和虚机对虚拟化的理解

1)       开启了硬件辅助虚拟化后,虚拟化是通过在Guest机器和Host机器中间加一层Hypervisor实现的。

2)      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值