KVM
1.1 在认识虚拟化之前,聊聊在业务中,我们想要实现什么?
1. 满足性能前提下,保证业务稳定可靠,其次是安全性
2. 最大程度的平衡调度资源,提高资源的利用率,节省成本
3. 灵活快速,可以针对并发数量对架构实现动态伸缩
4. 扩展灵活的机柜,集群
5. 管理方便,平台化,自动化(puppet;ansible;saltstack;shell;python;)
6. 磁盘IO:硬件是高性能的---HBA,RAID,SAN(光纤,以太网),软件上高性能的---缓冲;缓存
7. 网络吞吐(带宽大小)和发包---tcpdump
第2章 虚拟化的概念
在计算机技术中,虚拟化或者虚拟技术是一种资源管理技术,是将计算机的各种实体资源如CPU;内存;磁盘空间;网卡等予以抽象,转换后呈现出来并可供分区,组合成多个×××配置环境
简单一句话计算存储网络都变成软件就是虚拟化
1.1 为什么要使用虚拟化?
1. 是同一台物理机运行多个不同版本的应用软件
2. 硬件依赖性较低和便于数据迁移
3. 提高资源利用率
1.1 虚拟化技术有哪些优势?
Ø 降低运行成本
服务器虚拟化降低了IT基础设施的运营成本,令系统管理员摆脱了繁重的物理服务器,OS.中间件及兼容性的管理工作,减少人工干预频率,使管理更加强大,便捷
Ø 提高应用兼容性
服务器虚拟化提供的封装性和隔离性使大量应用独立运行与各种环境中,管理人员不需要根据底层环境调整应用,只需构建一个应用版本并将其发布到虚拟化后的不同类型平台上即可
Ø 加速应用部署
采用服务器虚拟技术只需输入激活配置参数,拷贝虚拟机,启动虚拟机,激活虚拟机即可完成部署,大大缩短了部署时间,免除人工干预,降低了部署成本
Ø 提高服务可用性
用户可以方便的备份虚拟机,在进行虚拟机动态迁移后,可以方便的恢复备份,或者在其他物理机上运行备份,大大提高了服务的可用性
Ø 提升资源利用率:
通过服务器虚拟化的整合,提高了CPU;内存;存储;网络等设备的利用率,同时保证原有服务的可用性,使其安全性及性能不受影响
Ø 动态调度资源(动态伸缩)
在服务器虚拟化技术中,数据中心从传统的单一服务器变成了统一的资源池,用户可以即时的调整虚拟机资源,同时数据中心管理程序和数据中心管理员可以灵活根据虚拟机内部资源使用情况灵活分配调整给虚拟机的资源;例如公司业务中每天有流量访问的高低峰,在高峰的时候可以加大服务器的性能及资源,而在低峰时有可以收缩服务器的性能
Ø 降低能源消耗
通过减少运行的物理服务器数量,减少cpu以外各单元的耗电量,达到节能减排的目的
1.2 虚拟化的分类
Ø 全虚: HD + OS + hypervisor
又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(vm)和硬件之间加了一个软件层-Hypervisor,或者叫做虚拟管理程序(VMM),
1.2.1 hypervisor可以划分为两大类 :
Ø 类型1
这种hypervisor是直接运行在物理机上,是基于你内核的虚拟机(KVM本身也是基于操作系统的hypervisor)
Ø 类型2
这种hypervisor运行在另一个操作系统(运行在物理硬件之上),hypervisor包括qemu和wine,因为运行在虚拟机上的操作系统是通过hypervisor来最终分享硬件,所以虚拟机发出的指令需要经过hypervisor捕获并处理,为此每个客户操作系统所发出的指令都要被翻译成CPU能识别的指令格式,这里的客户操作系统即是运行的虚拟机,所以hypervisor的工作负荷会很大,因此会占用一定的资源,所以在性能上肯定不如裸机,但是运行速度要快于硬件模拟,全虚拟化最大的优点就是运行在虚拟机上的操作系统没有经过任何修改,唯一的限制就是操作系统必须能够支持底层的硬件,不过目前的操作系统一般会支持底层硬件,所以这个限制就变得微不足道了
Ø 半虚: HD + hypervisor
半虚拟化技术是后来才出现的技术,半虚技术英文: paravirtualization,也叫作准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行优化,即不需要hypervisor耗费一定的资源进行翻译操作,因此hypervisor的工作负担变得非常的小,因此整体的性能也有很大的提高,不过缺点就是要修改包含该API的操作系统,但是对于某些不含该API的操作系统,像windows来说,就不能用这种方法,Xen就是一个典型的半虚技术
1.1 硬件虚拟化包含哪些硬件?
cpu 内存 逻辑内存 物理内存 磁盘
1.2 实现虚拟化的方式:
Ø 单机虚拟化
Ø 集群虚拟化
Ø 分布式虚拟化***不支持数据库
1.3 虚拟化的引擎有哪些?
Ø Vmware esxi:x86
Ø hyper-v
微软公司的虚拟化技术,可以实现桌面虚拟化
Ø xen
使用较少
xen与kvm的主要区别:
kvm内置于linux的内核,xen是linux的一个应用,所以kvm可以直接利用linux来做一些xen中需要利用hypervisor来做的事情,比如任务调度,内存管理等,所以相比较之下,kvm更加轻量级,易于管理,并且版本的更新也随着内核更新
Ø kvm
第2章 KVM简介:
KVM基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为 KVM),是一种用于linux内核中的虚拟化基础设备,可以将linux内核转化为一个hypervisor,KVM在2007年被导入linux内核中,以可加载核心模块的方式被移植到系统中
KVM在具备inter VT或AMD-V功能的x86平台上运行,它也被移植到s/390,powerPC与IA-64平台上,在linux内核3.9版本中,加入ARM架构支持
KVM目前有RedHat等厂商开发,对Centos支持性极佳
1.1 关于KVM
Ø KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
Ø 是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。
Ø 它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
Ø KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
Ø KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。
Ø 在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。
1.2 Qemu与KVM
qemu是一个开源项目,实际就是一台硬件模拟器,可以模拟许多硬件如 : 磁盘,网卡等设备
也包括x86架构处理器,AMD架构处理器
qemu的好处是纯软件模拟,可以在支持的平台模拟设备,也正是因为这一点,所以很慢
KVM虚拟机 = KVM内核模块 + qemu模拟器
1.3 libvirt与KVM
livirt是开源的虚拟化管理工具,主要有三部分组成:
一套API的lib库,支持主流的编程语言包括C;python;ruby
一个守护进程libvirtd
一个命令行实用程序virsh
1.3.1 关于Virtual Machine Manager
在×××运算中,红帽公司的Virtual Machine Manager是一个虚拟机管理员,可以让用户管理多个虚拟机。
基于内核的虚拟机libvirt与Virtual Machine Manager。
1.3.2 Virtual Machine Manager : 可以让用户:
1. 创建;编辑;引导或停止虚拟机
2. 查看并控制每个虚拟机的控制台
3. 查看每部虚拟机的性能及使用率
4. 查看每部正在运行中的虚拟机以及主控端的即时性及使用率信息
5. 不论实在本机或远程,皆可使用KVM;Xen;Qemu