美文网首页
kvm虚拟化

kvm虚拟化

作者: 倔强swj | 来源:发表于2018-05-25 00:41 被阅读11次

KVM 虚拟化技术

  • CPU虚拟化技术
  • 内存虚拟化技术
  • IO虚拟化技术
  • 网络IO虚拟化技术
  • 磁盘IO虚拟化技术

虚拟化技术分类

  • 全虚拟化
    • Full virtualization/ Software-based virtualization
    • Hypervisor/VMM完全通过软件模拟硬件接口功能,Guest OS无需改动就能直接访问虚拟硬件。
    • 举例:VMware
  • 半虚拟化
    • Paravirtualization/OS-assistant virtualization
    • Hypervisor/VMM提供便利的接口,Guest OS调用接口访问虚拟硬件,GUEST OS需要修改
    • 举例:Xen(2004)
  • 硬件辅助虚拟化
    • Native virtualization/Hardware-assistant virtualization
    • Hypervisor/VMM利用宿主机硬件的支持提供虚拟硬件接口,Guest OS无需修改
    • 举例:KVM(2007)

QEMU/KVM虚拟化软件

KVM是基于linux内核的虚拟化基础架构, 通过KVM模块将linux系统内核转化为VMM (virtual machine monitor) , 并在linux操作系统的用户模式和内核模式外, 添加了第三种运行模式即客户模式 (guest mode) , VMM即运行在该运行模式下, 其被视为一个常规的linux进程, 接收linux本身调度程序的统一调度, 从而KVM拥有linux内核所拥有的所所有功能。因此, KVM模块负责虚拟机的创建、虚拟内存的分配, v CPU寄存器的读写和运行等, 这只是虚拟化解决方案的第一步。第二步是利用QEMU模拟虚拟机的用户空间组件, 提供I/O设备模型以及访问外设的软件。
KVM作为linux内核的一个模块, 能够实现CPU和内存的虚拟化, 而QEMU则实现了用户空间组件和IO设备的虚拟化, 因此qemu-kvm也能创建和管理虚拟机, 但由于QEMU工具系统复杂, 使用效率低下, 因此, Red Hat使用libvirt来创建和管理虚拟机。
libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口 (API) 。它是一套开源的支持linux下虚拟化工具的函数库, 由三个部分组成:应用程序接口 (API) , 用于为其他虚拟机管理工具提供程序库支持;一个守护进程libvirtd, 用于管理所有域, 在使用工具对虚拟机进行管理时, 该守护进程需要打开;一个默认的命令行管理工具virsh, 它是libvirt项目中项目中默认的命令行管理工具, 具有定义、启动、停止等管理功能。

  • 内核模块
    • kvm.ko
    • Kvm.intel.ko or kvm_amd.ko
  • 应用程序
    • CentOS/Fedora: yum install qemu-kvm
    • Ubuntu/Debian: apt-get install qemu-kvm
  • 获取OS镜像
  • 运行

    Qemu-system-x86_64 -m 1024 -hdc root_disk.img -vnc 0.0.0.0:0

CPU虚拟化技术

  • Binary translation
    • 将虚拟机内核指令在运行时替换为一系列指令,模拟虚拟机内核态指令的执行
    • VMWare,Microsoft Virtual PC
  • Intel VT-X
  • 确认宿主机支持CPU硬件虚拟化
    • Intel: cat /proc/cpuinfo | grep vmx
    • Amd: cat /proc/cpuinfo | grep svm
  • 启用kvm内核模块
    • Kvm.ko & kvm_intel.ko
  • Qemu/kvm启动参数
    • Qemu-system-x86_64 -enable-kvm

内存虚拟化

  • 如何高效实现虚拟机的虚拟地址到宿主机的物理地址的映射转换?

  • 内存虚拟化的软件方案:

    • 影子页表(Shadow Page Table): VMM(KVM)在宿主机内核中为虚拟机进程维护了一个虚拟机的虚拟地址到宿主机物理机制的页表,这个页表和虚拟机内核的页表同步更新。
  • 基于SPT的虚拟机缺页中断

  • 内存硬件辅助虚拟化方案

  • Second Level Address Translation

    • Extended Page Tables(Intel)
    • Nested Page Tables(AMD)
  • 确认宿主机支持内存硬件虚拟化

    • Intel: cat /proc/cpuinfo | grep ept
    • Amd: cat /proc/cpuinfo | grep npt
  • 启用kvm内核模块

    • Kvm.ko & kvm_intel.ko
  • Qemu/kvm启动参数

    • Qemu-system-x86_64 -enable-kvm

本文为https://www.imooc.com/learn/708里的一些笔记,如有侵权立删。

相关文章

  • 20171207 虚拟化

    虚拟化技术概览KVM简介KVM的管理操作 一、虚拟化技术概览 (一)虚拟化技术类型: 主机虚拟化:xen, kvm...

  • 36-虚拟化

    本章内容 ◆ 虚拟化基础◆ 虚拟化技术之KVM◆ kvm实战案例 一:虚拟化基础 https://www.vmwa...

  • 2019-05-20 kvm虚拟化

    1:什么是虚拟化? 2:为什么要用虚拟化? 3:kvm虚拟化管理软件的安装 4:安装一台kvm虚拟机 5:kvm虚...

  • docker(一)

    1.什么是容器? 2.容器和虚拟化的区别 linux容器技术,容器虚拟化和kvm虚拟化的区别 kvm虚拟化: 需要...

  • 虚拟化

    目录 一、了解虚拟化二、常见虚拟化软件三、虚拟化架构四、KVM介绍五、Centos7上安装KVM六、配置网卡七、创...

  • kvm虚拟化存储管理(4)

    一、KVM 存储虚拟化介绍 KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理...

  • kvm虚拟化

    KVM 虚拟化技术 CPU虚拟化技术 内存虚拟化技术 IO虚拟化技术 网络IO虚拟化技术 磁盘IO虚拟化技术 虚拟...

  • KVM常用知识点

    KVM常用知识点 如何查看支持虚拟化 如果有输出信息说明cpu支持虚拟化 KVM是那几部分组成的? KVM:内核虚...

  • KVM虚拟化

    kvm实验 环境准备,我这里使用虚拟机进行模拟,先设定好虚拟化 进入系统查看是否支持虚拟化 KVM:Kernel-...

  • 【01】KVM中小企业实践-概述

    KVM与QEMUQEMU做上层虚拟化:1、设备驱动 2、针对模拟PC硬件的用户空间组件KVM需要CPU中虚拟化功能...

网友评论

      本文标题:kvm虚拟化

      本文链接:https://www.haomeiwen.com/subject/ztoejftx.html