KVM 虚拟化技术
一、虚拟化技术
1、什么是虚拟化?
-
计算机技术中,虚拟化或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。
-
虚拟化打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。
-
一般所指的虚拟化资源包括计算能力和数据存储。
-
目前信息技术领域的很多企业都曾在宣传中将该企业的某种技术称为虚拟化技术,这些技术涵盖的范围可以从Java虚拟机技术到系统管理软件,这就使得准确的界定虚拟技术变得困难。因此各种相关学术论文在谈到虚拟技术时常常提到的便是如前面所提到的那个不严格的定义。
2、为什么要用虚拟化
-
同一台物理机运行多个不同版本应用软件
-
硬件依赖性较低和便于数据迁移
3、虚拟化技术的优势
1、降低运营成本
- 服务器虚拟化降低了IT基础设施的运营成本,令系统管理员摆脱了繁重的物理服务器、OS、中间件及兼容性的管理工作,减少人工干预频率,使管理更加强大、便捷。
2、提高应用兼容性
- 服务器虚拟化提供的封装性和隔离性使大量应用独立运行于各种环境中,管理人员不需频繁根据底层环境调整应用,只需构建一个应用版本并将其发布到虚拟化后的不同类型平台上即可。
3、加速应用部署
- 采用服务器虚拟化技术只需输入激活配置参数、拷贝虚拟机、启动虚拟机、激活虚拟机即可完成部署,大大缩短了部署时间,免除人工干预,降低了部署成本。
4、提高服务可用性
- 用户可以方便地备份虚拟机,在进行虚拟机动态迁移后,可以方便的恢复备份,或者在其他物理机上运行备份,大大提高了服务的可用性。
5、提升资源利用率
- 通过服务器虚拟化的整合,提高了CPU、内存、存储、网络等设备的利用率,同时保证原有服务的可用性,使其安全性及性能不受影响。
6、动态调度资源
- 在服务器虚拟化技术中,数据中心从传统的单一服务器变成了统一的资源池,用户可以即时地调整虚拟机资源,同时数据中心管理程序和数据中心管理员可以灵活根据虚拟机内部资源使用情况灵活分配调整给虚拟机的资源。
7、降低能源消耗
- 通过减少运行的物理服务器数量,减少CPU以外各单元的耗电量,达到节能减排的目的。
4、虚拟机管理器 Virtual Machine Manager
-
在电脑运算中,红帽公司的 Virtual Machine Manager 是一个虚拟机管理员,可以让用户管理多个虚拟机。
-
基于内核的虚拟机 libvirt 与 Virtual Machine Manager。
-
Virtual Machine Manager可以让用户:
- 🎃 创建、编辑、引导或停止虚拟机。
- 🎃 查看并控制每个虚拟机的控制台。
- 🎃 查看每部虚拟机的性能以及使用率。
- 🎃 查看每部正在运行中的虚拟机以及主控端的即时性能及使用率信息。
- 🎃 不论是在本机或远程,皆可使用 KVM、Xen、QEMU。
5、KVM 简介
-
KVM,基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为 KVM),是一种用于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 目前由 Red Hat 等厂商开发,对 CentOS/Fedora/RHEL 等 Red Hat 系发行版支持极佳。
-
KVM 包含一个为处理器提供底层虚拟化 可加载的核心模块 kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
-
KVM 还需要一个经过修改的 QEMU 软件(qemu-kvm),作为虚拟机上层控制和界面。
-
KVM 能在不改变 linux 或 windows 镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用 ksm 技术帮助宿主服务器节约内存。
6、KVM 工作介绍
- KVM 是个"怪胎",原本是类型2 的主机虚拟化;但一旦在OS 上加载了kvm.ko 模块,就会"感染"OS,使其变为hypervisor(kvm),原本的软件空间作为控制台,转化成类型1 模式的主机虚拟化
1、KVM的组件
-
① kvm.ko:模块
- API 应用程序编程接口
-
② qemu-kvm:用户空间的工具程序;
- qemu-KVM 是一种开源虚拟器,它为KVM管理程序提供硬件仿真。
- 运行中的一个 kvm 虚拟机就是一个 qemu-kvm 进程,运行 qemu-kvm 程序并传递给它合适的选项及参数即能完成虚拟机启动,终止此进程即能关闭虚拟机;
-
③ libvirt 虚拟化库:Libvirt是C工具包,
- libvirt可以与最近版本的Linux(以及其他操作系统)的虚拟化功能进行交互。主包包含了导出虚拟化支持的libvirtd服务器。
- libvirt 包含 C/S:
- Client:
- libvirt-client
- virt-manager
- Daemon:
- libvirt-daemon
- Client:
2、KVM模块load进内存之后,系统的运行模式:
-
内核模式:GuestOS 执行 IO 类的操作时,或其它的特殊指令操作时的模式;它也被称为"Guest-Kernel"模式;
-
用户模式:Host OS的用户空间,用于代为GuestOS发出IO请求;
-
来宾模式:GuestOS 的用户模式;所有的非IO类请求
7、其他虚拟化软件
1、🍪 Xen
-
Xen是一个开放源代码虚拟机监视器,由 XenProject 开发。它打算在单个计算机上运行多达128个有完全功能的操作系统。
-
在旧(无虚拟硬件)的处理器上执行 Xen,操作系统必须进行显式地修改后(“移植”)在Xen上运行(提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。
2、🍪 QEMU
- QEMU是一套由 Fabrice Bellard(法布里斯·贝拉) 所编写的模拟处理器的自由软件。它与Bochs,PearPC(模拟器)近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由KVM(早期为 kqemu 加速器,现在 kqemu 已被 KVM 取代)这个开源的加速器,QEMU能模拟至接近真实电脑的速度。QEMU有两种主要运作模式:
- User mode模拟模式,亦即是用户模式。
- QEMU 能引导那些为不同中央处理器编译的 Linux 程序。而 Wine 及 Dosemu 是其主要目标。
- System mode模拟模式,亦即是系统模式。
- QEMU 能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上模拟数部不同虚拟电脑。
- User mode模拟模式,亦即是用户模式。