TH小破站

  • 首页
  • 容器
    • 认识Docker
    • DockerFile详解
  • k8s
    • 认识Kubernetes
    • Kubernetes部署--(kubeadm方式)
    • kubeasz部署k8s集群
    • Ansible-binary部署k8s集群-1.31.2
  • Ceph
    • 认识分布式存储
    • CPEH部署
  • CI/CD
    • DevOps认识
    • 部署--Gitlab
  • ELK
    • ELK简介
    • Elasticsearch
    • Kibana部署
    • Logstash
    • ELK--收集 tomcat 日志(实战)
  • HD
    • 认识--大数据
    • Hadoop-单机部署
    • Hadoop-伪分布部署
    • Hadoop-完全分布部署
    • Hadoop-(HA)完全分布部署
    • Ambari自动部署--Hadoop
  • Nginx
    • Nginx功能介绍
    • Nginx安全选项
    • Nginx配置文件简单介绍
    • 网站服务器部署
  • 监控
    • ZABBIX-部署(yum)
    • ZABBIX-编译安装
  • 云计算
    • KVM 概述
    • OpenStack企业级部署(T版)
    • OpenStack之dashboard部署
    • OpenStack-controller的高可用
    • openstack(Caracal版_ubuntu版本)部署
  • 数据库
    • mariadb与mysql
    • mysql主从
    • MySQL--冷备(实战)
    • MySQL--热备(dump表)
    • MySQL--热备(dump库)
    • 数据恢复实战案例
    • Xtrabackup实现MySql8.x全量备份
    • MyCat实现数据库读写分离
    • MHA实现数据库高可用
    • Percona XtraDB(PXC)实现数据库集群高可用
    • 数据库压力测试
    • PostgreSQL 基操
    • PostgreSQL备份恢复
    • PostgreSQL高可用
    • MongDB安装配置基础使用
    • MongoDB实现复制集
    • MongoDB备份还原
  • 自动化
    • ssh远程服务原理及配置
    • Ansible剧本文件应用
    • Ansible管理服务介绍
    • Ansible自动化部署node_exporter(包含升级,回滚)
    • Saltstack-部署安装
  • 脚本
    • 一键查看服务器资源利用率
    • 一键生成SSL证书
    • 保存指定数量的文件/目录
    • 初始化服务器
    • 扫描可用IP
    • 批量分发SSH密钥
    • 监控多主机磁盘脚本
    • 一键安装MySQL8.x脚本
    • Python脚本监控ES集群
    • 资源巡检脚本
    • 查看各用户使用的cpu占比
热衷于分享
架构师成长之路 !!!
  1. 首页
  2. 云计算
  3. 正文

KVM 概述

2023年11月29日 1133点热度 0人点赞 0条评论

KVM 介绍

KVM( Kernel-based Virtual Machine)是一个完整的虚拟化解决方案,适用于包含虚拟化扩展(IntelVT或AMD-V)的x86硬件上的Linux。目前也支持ARM等其它硬件平台. 它由可加载的内核模块kvm.ko组成,它提供核心虚拟化基础架构和处理器特定模块,kvm-intel.ko或kvm-amd.ko,KVM的用户空间组件包含在QEMU1.3后续版本中,KVM目前已成为学术界的主流 VMM (virtual machine monitor,虚拟机监视器,也称为 hypervisor)之一

KVM是开源软件,可运行多个运行未修改的Linux或Windows映像的虚拟机

依赖于HVM;Intel VT-x, AMD AMD-V

官网: https://www.linux-kvm.org

红帽 kvm 介绍

https://www.redhat.com/zh/topics/virtualization/what-is-KVM

RedHat虚拟化指南

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index

RedHat创建虚拟机数量限制:

https://access.redhat.com/articles/rhel-kvm-limits

KVM架构

KVM 体系结构

  • KVM: 初始化CPU硬件,打开虚拟机模式,负责CPU,内存,中断控制器,时钟. 由内核模块kvm_xxx.ko实现,工作于hypervisor,设备/dev/kvm,是一个字符设备,在用户空间可通过ioctl()系统调用来完成VM创建、启动,为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、时钟等管理功能

  • QEMU进程:工作于用户空间,主要用于实现模拟IO设备,如显卡,网卡,硬盘等, qemu-kvm进程:工作于用户空间,用于实现一个虚拟机实例

  • Libvirt:提供统一API,守护进程libvirtd和相关工具,如:virsh,virt-manager等

KVM 模块载入后的系统的运行模式

内核模式:GuestOS执行I/O类操作,或其它的特殊指令的操作;称作“来宾-内核”模式 用户模式:代表GuestOS请求I/O类操作 来宾模式:GuestOS的非I/O类操作;它被称作“来宾-用户”模式,称作虚拟机的用户模式更贴切.

KVM 的组件

KVM:运行在内核空间,提供 CPU 和内存的虚级化,以及客户机的 I/O拦截,Guest的部分I/O被KVM拦截后,交给QEMU处理。

两类组件:

  • (kvm.ko)/dev/kvm:工作为hypervisor,在用户空间可通过系统调用ioctl()与内核中的kvm模块交互,从而完成虚拟机的创建、启动、停止、删除等各种管理功能,可虚拟CPU和内存

  • qemu-kvm进程:工作于用户空间,用于实现IO设备模拟;也用于实现一个虚拟机实例

KVM 功能

KVM 所支持的功能包括:

  • 支持CPU 和 memory 超分(Overcommit)

  • 支持半虚拟化I/O (virtio)

  • 支持热插拔 (cpu,块设备、网络设备等)

  • 支持对称多处理(Symmetric Multi-Processing,缩写为 SMP )

  • 支持实时迁移(Live Migration)

  • 支持 PCI 设备直接分配和 单根I/O 虚拟化 (SR-IOV)

  • 支持内核同页合并 (KSM )

  • 支持NUMA (Non-Uniform Memory Access,非一致存储访问结构 )

QEMU

QEMU是一个广泛使用的开源计算机仿真器和虚拟机。当作为仿真器时,可在一种架构(如PC机)下运行另一种架构(如ARM)下的操作系统和程序。而通过动态转化,其可以获得很高的运行效率。当作为一个虚拟机时,qemu可以通过直接使用物理机的系统资源,让虚拟系统能够获得接近于物理机的性能表现。qemu支持xen或者kvm模式下的虚拟化。当用kvm时,qemu可以虚拟x86、服务器和嵌入式powerpc,以及s390的系统

QEMU 当运行与主机架构相同的目标架构时可以使用 KVM。例如,当在一个x86兼容处理器上运行qemu-system-x86 时,可以利用 KVM 加速——为宿主机和客户机提供更好的性能

Qemu是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件,正因为 Qemu 是纯软件实现的,所有的指令都要经Qemu,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成虚拟化工作,KVM完成复杂及要求比较高的设备虚拟化,而Qemu完成像鼠标、键盘等设备的虚拟化。

QEMU有如下几个部分组成:

  • 处理器模拟器(x86、PowerPC和Sparc)

  • 仿真设备(显卡、网卡、硬盘、鼠标等)

  • 用于将仿真设备连接至主机设备(真实设备)的通用设备,实现透传

  • 模拟机的描述信息

  • 调试器

  • 与模拟器交互的用户接口

KVM 局限性

  • CPU overcommit:过载使用,性能下降

  • 时间记录难以精确,依赖于时间同步机制,如NTP

  • VM量特别大时,MAC地址存在冲突的可能性

  • 实时迁移:共享存储,CPU架构,版本等

  • 性能局限性

比较 KVM 和 XEN

KVM与XEN对比

XEN KVM
问世时间 2003年 2007年
支持企业 Citrix、Novell、Oracle、Sun、Ret Hat(RHEL5)和 Virtual Iron Redhat、Ubuntu等
支持的虚拟化技术 全虚拟化、半虚拟化 全虚拟化
支持架构 x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及 x86/64 CPU商家和Intel嵌入式的支持 支持虚拟化的CPU
支持操作系统 UNIX、Linux和Microsoft Windows UNIX、Linux和 Microsoft Windows
动态迁移 支持 支持(以前不支持)
内核支持 需要对内核打补丁 内置在内核中

IBM文档

http://www.ibm.com/developerworks/cn/linux/l-using-kvm/

 

标签: KVM,云计算,虚拟化
最后更新:2023年11月29日

tanghao946

这个人很懒,什么都没留下

点赞
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • KVM 介绍
  • KVM架构
  • 比较 KVM 和 XEN

COPYRIGHT © 2025 TH小破站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2023013789号

渝公网安备50011702500926号