【虚拟化】KVM

目录

KVM是什么呢

kvm的组件:

kvm功能特性:

内存管理:

硬件支持:

存储:

实时迁移:

支持的GuestOS:

kvm局限性:

kvm管理工具:


本文是梳理之前的KVM学习笔记,如果有说的不合适的地方,欢迎评论区提出~

KVM是什么呢

KVM是内核级别虚拟化,支持广泛的操作系统。

在KVM架构中,每个虚拟机都是一个linux进程,每个虚拟的CPU都显示为一个常规的linux进程。但是KVM本身不执行任何模拟,需要用户空间程序通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间,向他提供模拟的IO,并将它的视频显示映射到宿主的显示屏上,这一部分由qemu负责。

kernal based virtual machine 基于内核的虚拟机,是linux内核的一个模块,当kvm被装载至内核时,整个内核升级为hypervisior,因此linux内核的功能kvm几乎都可以使用。为了给每个虚拟机虚拟出多个CPU,KVM会虚拟出多个进程(2个CPU有两个进程)来实现虚拟的CPU,这一过程是受KVM的辅在内核中完成的

kvm的组件:

两类:

/dev/kvm:工作于hypervisior,在用户(guest)空间可通过ioctl()请求来实现系统调用,来完成vm的创建,启动等功能,他是一个字符设备;/dev/kvm的功能:创建vm,为vm分配内存,读写vcpu的寄存器,向vcpu注入中断,运行vcpu等;vcpu是由host的线程模拟实现的

qemu进程:工作于用户空间,主要用于实现模拟PC机的IO设备。

kvm功能特性:

内存管理:

  • 支持使用huge page

大页表作用:

每个进程拿到的内存空间,进程的线性地址空间由内核离散映射到物理内存上,某个进程需要在CPU运行时,进程告诉CPU的是线性地址,(CPU将内核分配给进程的taskstruct装载映射表,然后找到线性地址对应的物理内存,)MMU来计算并完成线性地址到物理地址的转换。MMU中存放的是页表,对应关系

如果频繁访问某一个数据,需要在MMU之前加一个缓存,在MMU转换之前先看缓存是否可以命中,当数据量很大的时候,缓存可能失效,因此系统调优有这样一个策略,调大页框大小,一个页框1M,这样相比之前的4K来说,这样存放的条目就变少了,MMU转换时,找的比较容易。

  • 支持使用因特尔扩展页表inter ept或amd rvi(快速虚拟化索引)技术来完成内存地址映射,直接从虚拟机的线性地址空间映射为物理机内核中地址空间,无需中间经过虚拟的内存地址空间转换,CPU利用率低,吞吐量高。
  • 支持KSM(kernal same-page merge),来降低内存占用
    • KSM:内核同页合并;KSM会扫描每个虚机的内存,如果虚机拥有相同的内存页面,KSM会将这些页面合并到一个共享的内面,所有虚机都可以访问,仅仅存储一个副本,如果要更改这个共享页面,你会得到自己的专用副本。

硬件支持:

取决于linux内核,因为kvm是基于内核的虚拟化

存储:

支持本地存储、网络附加存储(比如映像文件放在NAS上)、存储区域网络、分布式存储、

实时迁移:

当A机的硬件设备遭入侵或其他影响时,运行在hypervisior A 上的虚拟机能够实时迁移到hypervisior B上面。此过程依赖于共享存储

支持的GuestOS:

linux,windows,openssd,freebsd等很多操作系统;

kvm局限性:

  • 过载使用:一般不建议所有虚拟机核心数加起来超过物理机核心数,假如物理机核心32个,一个虚拟机2核,那么不要超过16个虚拟机
  • 时间记录难以同步:因此装好虚拟机后最好手动同步一下时间

linux有两套时钟,一个是硬件时钟,一个是根据CPU使用频率来做精确计时,比如1s内震荡2G次,就认为这是1S过去了。由于做了虚拟化,一个CPU可能给多个虚拟机使用,因此1S内走过的时间可能并不是CPU真正走过的时间,所以虚拟机的时钟可能于宿主机不同

比如安装vmware时有vmware tools来同步虚拟机时间和硬件时间

  • 实时迁移:有一定要求,目标KVM要兼容源KVM;两台主机共享存储必须挂在同一个位置,否则配置文件无法共享;CPU有相同类型的特性,比如同intel,同amd;两台物理主机时间同步,且有一致的网络配置。
  • 性能局限性:

性能占原来的多少

完全虚拟化(模拟)

半虚拟化

透传

CPU

93%

97%

不支持透传

磁盘IO

40%

85%

95%

网络IO

60%

75%

95%

显卡

50%

不支持,centos7可以了

不支持透传

时间计时

5%偏差

精确(有一个特殊模块支持时间同步)

不支持透传

kvm属于完全虚拟化

kvm管理工具:

qemu:

        qemu-kvm qemu-img

libvirt:支持远程管理操作

libvirt

安装工具

管理工具

GUI

virt-manager

virt-viewer

CLI

virt-install

virsh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值