kvm(一)基本理论

KVM虚拟化技术详解

虚拟化模型:
type1: Hosted
hypervisor —-> virtual machine

type2: bare-metal
host —-> virtual machine manager

Xen:
hypevisor,Dom0

hypervisor === cpu memory 完成了cpu内存的虚拟化
Dom0 —–> IO等 io靠Dom0来实现
虚拟化技术:
full:完全虚拟化
para:半虚拟化
hybrid:pv on hvm硬件虚拟化
KVM:依赖于完全虚拟化(HVM),利用linux系统本身的就已经提供的内存管理、进程调度、IO栈、设备驱动、安全子系统、网络子系统。进程管理器依然被拿来当kvm主机的进程管理器。虚拟cpu的线程是有kvm 模块辅助在内核中完成。

kvm模块载入后的系统的运行模式:
内核模式: GuestOS执行的I/O类操作,或其它特殊指令的操作;
用户模式: 代表guest请求I/O类操作
来宾模式:GuestOS的非IO操作;事实上,它被称作虚拟机用户模式更贴切。
虚拟化要求cpu架构一致,用户空间的程序就在虚拟机的用户空间就完成了执行。80%虚拟机用户空间运行,那么这80%实际上就是虚拟机的用户空间就完成了执行。
而系统调用是虚拟机发起系统调用,虚拟机的kernel没有权限执行特权指令,从而转换到kvm Driver 来处理。伪装返回,比如shutdown。
KVM主要两类组件组成:
◇ /dev/kvm:管理虚拟机的设备文件,用户空间的程序可通过其ioctl()系统调用集来完成虚拟机的创建启动等管理工作;它是一个字符设备;其主要完成的操作包括:
 创建虚拟机;
 为虚拟机分配内存;
 读、写VCPU的寄存器;
 向VCPU注入中断;
 运行VCPU;
◇ qemu进程:工作于用户空间的组件,用于仿真PC机的I/O类硬件设备;

KVM内存管理

KVM继承了Linux系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间(swap)、能够使用大内存页(huge page)以实现更好的性能,以及对NUMA的支持能够让虚拟机高效访问更大的内存空间等。

KVM基于Intel的EPT(Extended Page Table)或AMD的RVI(Rapid Virtualization Indexing)技术可以支持更新的内存虚拟功能,这可以降低CPU的占用率,并提供较好的吞吐量。完成内存地址映射,从虚拟机的虚拟地址空间直接到物理的物理地址空间,避免使用影子列表

支持tagged TLB

此外,KVM还借助于KSM(Kernel Same-page Merging)这个内核特性实现了内存页面共享。KSM通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时,KSM会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同GuestOS的虚拟机之间出现相同内存页面的概率是很高的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此,KSM技术可以降低内存占用进而提高整体性能。

硬件支持:取决于linux内核

存储:
本地存储
网络附加存储:samba nass
存储区域网络:
分布式存储:GlusterFS
实时迁移:
底层hypervisor硬件故障
被攻击时可以考虑迁移
支持的GuestOS:
Linux,Windows,OpenBSD,FreeBSD,OpenSolaris;
设备驱动:
IO设备能够以模拟方式进行完全虚拟化:模拟硬件
IO设备能够在GuestOS中安装驱动实现半虚拟化:virtio
virtio-blk,virtio-net,virtio-pci,virtio-console(控制台的虚拟化),virtio-ballon(内存的动态扩大缩减)
KVM局限性:
一般局限性:
CPU overcommit:比如物理cpu4 个虚拟机可以创建8个。但性能反而会降低。
任何虚拟机时钟都不会太精确:计时虚拟cpu频率跟真实cpu频率不一致。需要时间同步机制。
MAC地址:
VM量特别大时,存在冲突的可能性;
实时迁移:
拥有相同的共享存储
kvm版本号要兼容
挂载在同一路径位置
cpu相同类型特性 inter、amd
使用本地的物理设备当它的磁盘就无法迁移了
两台物理机时间同步
两台物理机有一致的网络配置
性能局限性:
cpu mmu:完全虚拟化的情况下性能有7%损耗
HVM (VT-x或者AMD-V, inter的EPT或者 AMD的RVI):97%的性能运行
网络IO:
完全虚拟化情况只相当于物理性能的60%
半虚拟化模式下:75%
透传:95%
磁盘IO:
完全虚拟化:40%
半虚拟化:85%
透传:95%
显卡不支持半虚拟化,模拟(完全)虚拟化50%
kvm管理工具:
virt:还是会调用Qemu,支持远程管理。
GUI:virt-manager,virt-manager
CLI: virt-install,virsh
Qemu
qemu-kvm
qemu-img

QEMU主要用到的以下几个部分:
处理器模拟器
仿真IO设备
关联模拟的设备至真实的设备
调试器
与模拟器交互的用户接口

管理kvm虚拟机的方案
qemu:/usr/libexec
libvirt:
安装工具:
virt-install
virt-manager
管理工具:
vrish
virt-manager
virt-viewer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值