部署KVM虚拟化平台(持续更新中~~~)
Posted 可乐卷儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部署KVM虚拟化平台(持续更新中~~~)相关的知识,希望对你有一定的参考价值。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、虚拟化背景
1、背景
美国环境保护EPA报告中曾经统计过一组统计数据::EPA研究服务器和数据中心得能源效率时发现,实际上服务器只有5%得时间时在工作的,其他时间一直处于休眠状态;
那么通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率
那么虚拟化的具体位置在哪呢?一张图带你了解
2、虚拟化技术实现方式
- 在一个操作系统中(win10) 模拟多个操作系统(centos、win10、suse),同时每个操作系统可以跑不同的服务(nginx+tomcat) ,从而实现一台宿主机搭建一个集群(从整体)
- 通过软件/应用程序的方式,来实现物理硬件的功能
比如ensp软件的形式模拟出硬件设备(二、三层交换机、三层路由器、PC机、防火墙等等)
3、虚拟化类型
- 全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
使用的方法:使用hypervisor (VMM) 软件,其原理是在底层硬件和服务器之间建立一个抽象层,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。 - 半虚拟化:需要修改操作系统
- 直通:直接使用物理硬件资源(需要支持,还不完善)
Xen支持的虚拟化技术:全虚拟化,半虚拟化
KVM:支持的虚拟化技术:全虚拟化
VMM功能:
- 对物理资源进行逻辑分割(转化为虚拟资源)
- 调用虚拟资源供与应用程序(虚拟机)
二、KVM概述
1、KVM的实际应用
- KVM (Kernel-based Vritual Machine) --基于内核的虚拟机
- KVM是基于虚拟化扩展的X8 6硬件的开源Linux原生的全虚拟化方案( 要求cpu支持Intel-VT-x或AMD-V)
- KVM(组件)内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行
- 虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度
- 虚拟机的每个虚拟CPU被实现为一个常规的Linux 进程。这使得KMV能够使用Linux 内核的已有功能,但KVM本身不执行任何模拟。需要客户空间程序(虚拟机)通过/dev/kvm(此虚拟设备需要开起硬件辅助虚拟化才能看到)
- 接口设置一个客户机虚拟服务器的地址空间,并且由Qemu模拟I/O (ioctl) 进行调度资源和维护管理
- Libvirt: KVM的管理工具,除了可以管理KVM这类VMM,还可以管理Xen,VirtualBox, 甚至openStack底层
- Libvirt包含3个组件:后台daemon程序libvirtd、API库、命令行工具virsh
2、KVM架构及原理
KVM虚拟化架构(三种模式)
- 客户模式(guestOs) :VM中的OS为Guestos
客户机在操作系统中运行的模式,客户机分为内核模式和用户模式,作用如下: - 用户模式:
为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu工作在此模式下(Qemu的主要功能) - linux内核模式
模拟CPU、 内存,实现客户模式切换,处理从客户模式的推出,KVM即运行在此模式下
3、KVM的核心组件
- 在内核层:将物理资源逻辑分割为虚拟化资源
- 在抽象层:Qemn组件,会和内核层的KVM进行对接,调用所需的资源
4、KVM工作流程
- 用户模式的Qemu利用接口libkvm通过ioctl系统调用进入内核模式。KVM驱动为虚拟机创建虚拟CPU和虚拟内存,
- 然后执行VMLAU :NCH指令进入客户模式,装载Guest OS并运行。Guest OS运行过程中如果发生异常,则暂停Guest OS的运行并保存当前状态同时退出到内核模式来处理这些异常。
- 内核模式处理这些异常时如果不需要I/o则处理完成后重新进入客户模式。如果需要I/o则进入到用户模式,则由Qemu 来处理I/O, 处理完成后进入内核模式,再进入客户模式
以上是关于部署KVM虚拟化平台(持续更新中~~~)的主要内容,如果未能解决你的问题,请参考以下文章