KVM的前世今生

1.虚拟化技术的演变过程:软件模拟、虚拟化层翻译、容器虚拟化三个阶段

(1)软件模拟的技术方式

软件模拟是通过软件完全模拟CPU、网卡、芯片组、磁盘等计算机硬件,因为是软件模拟,所以理论上可以模拟任何硬件,甚至不存在的硬件。但是由于是软件模拟硬件,效率低,典型产品有Bochs、QEMU。

(2)虚拟化层翻译

X86平台指令集划分为4个特权模式:Ring 0、Ring 1、Ring 2、Ring 3。操作系统一般使用Ring 0级别,应用程序使用Ring 3级别,驱动程序使用Ring 1和Ring 2级   别。X86在虚拟化方面的一个难点就是如何将虚拟机越级的指令使用进行隔离。

软件全虚拟化方案:通过虚拟化引擎(VMM),捕获虚拟机的指令,并进行处理,实现在虚拟机上使用物理机一样的指令,但是虚拟机不能对硬件进行操作,比如重启虚   拟机不会造成宿主机的重启。

半虚拟化方案:全虚拟化方案需要在虚拟化层做大量的工作,Xen提出了对虚拟机的操作系统内核进行改造,使虚拟机自己对特殊的指令进行更改,然后和虚拟化层一起   配合工作,这也是Xen早期一直使用一个特殊内核的原因,并且不支持Windows系统虚拟化。

硬件全虚拟化方案:对CPU指令进行改造,增加了两种操作模式:VMX root operation和VMX non-root operation,VMM运行在VMX root operation模式,虚拟机   运行在VMX non-root operation模式,这两种模式都支持Ring 0~Ring 3特权级

(3)容器虚拟化

容器虚拟化的原理是基于CGroup、NameSpace等技术将进程隔离,每个进程就像一台单独的虚拟一样,有自己被隔离出来的资源,也有自己的根目录、独立的进程编号,被隔离的内存空间。基于容器的虚拟化可以实现在单一内核上运行多个实例,因此是一个更高效率的虚拟化方式。目前最热的容器虚拟化技术就是Docker。Docker的优势就是将一个开发环境进行打包,很方便地在另外一个系统上运行,并且有版本的概念。但是Docker在生产环境的使用还需要一个过程,主要是磁盘、网络性能上还受到限制。

2.KVM的架构

KVM就是内核的一个模块,用户控件通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的Linux进程,通过对这个进程的管理,就可以完成对虚拟机的管。因为对进程的管理非常麻烦,RedHat发布了一个开源项目Libvirt,Libvirt有API,也有一套命令行工具,可以完成对虚拟机的管理,如OpenStack、CloudStack、OpenNebula等管理平台都是通过Libvirt来完成对KVM虚拟机的管理。

QEMU是一个开源项目,时间上就是一台硬件模拟器,可以模拟许多硬件;QEMU可以在其他平台上运行Linux陈旭,可以存储及还原虚拟机运行状态,虚拟多种设备,包括网卡、显卡、软驱、IDE设备、声卡、多种并口设备、多种串口设备、多种USB设备、蓝牙设备等,QEMU还内建DHCP、DNS、SMB、TFTP服务器。

Libvirt是一套开源的虚拟化的管理工具,主要由3部分构成:一套API的lib库;Libvirt服务;命令行工具virsh。Libvirt设计目标是通过相同的方式管理不同的虚拟化引擎,比如Xen、KVM、HyperV、VMware ESX等,但是大多情况下Xen、HyperV、VMware ESX都由各自的管理工具。,Libvirt可以实现对虚拟机的管理,比如创建、启动、关闭、暂停虚拟机,以及虚拟机网卡、硬盘、CPU、内存等多种设备的热添加。Libvirt还支持远程宿主机的管理,只要在宿主机上启动Libvirtd服务并做好配置,就可以通过Libvirt进行虚拟机的配置。通道可以是一下方式:SSH,TCP,基于TCP的TLS。Libvirt将虚拟机的管理分为一下两个方面:存储池资源管理,网络资源管理。

时间: 2024-10-13 02:34:19

KVM的前世今生的相关文章

深度实践KVM(1-8章)

第一章 企业虚拟化选型与KVM介绍 1.1 KVM的前世今生 1.虚拟化技术的演进过程 软件模拟——>虚拟化层翻译——>容器虚拟化 虚拟化层翻译可以分为: (1)软件捕捉翻译,即软件全虚拟化 (2)改造虚拟机系统内核加虚拟化层翻译,即半虚拟化 (3)硬件支持的虚拟化层翻译,即硬件支持的全虚拟化 软件模拟技术:通过软件完全模拟CPU.芯片组.磁盘.网卡等计算机硬件,如下图所示: 软件模拟的特点:可以模拟任何硬件,但非常低效,一般只用于研究测试的场景. 虚拟化层翻译技术: (1)软件全虚拟化方案:

KVM 初探

KVM 是业界最为流行的 Hypervisor,全称是 Kernel-based Virtual Machine.它是作为 Linux kernel 中的一个内核模块而存在,模块名为 kvm.ko,也可以看作是一个进程,被内核调度并管理,从 Linux 2.6.20 版本开始被完全正式加入到内核的主干开发和正式发布代码中. KVM 主要用于管理 CPU 和内存的虚拟化,IO 设备的虚拟化则是由 Qemu 来完成.为什么会有这样的分工,请继续往下看. KVM 与 Qemu 的前世今生 Qemu 是

Linux 部署KVM虚拟化平台

简单介绍 KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案.KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度:虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程.这使得 KMV 能够使用 Linux 内核的已有功能. 但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示

KVM的基础功能(网络、内存、cpu、存储的配置)

KVM的基础功能(网络.内存.cpu.存储的配置) cpu的配置 1)查看cpu插槽数量 [[email protected] ~]# cat /proc/cpuinfo |grep "physical id" |wc -l 24 2)查看cpu核心数量 [[email protected] ~]# cat /proc/cpuinfo |grep "core id"| wc -l 24 3)查看cpu的模型 [[email protected] ~]# cat /p

kvm一键shell自动生成 windows 虚拟机,无人值守操作方案(step1)

kvm一键shell自动生成 windows 虚拟机,无人值守操作方案分为四个步骤来联合完成: 第一步:开机启动脚本编写,使机器在一启动的时候能够执行该脚本,完成所有需要完成的基本操作(诸如设置密码,绑定Ip,加域,激活),这一步在单独一台机器上反复测试反复编写: 第二步:制定自动应答文件,使其能够无人自动安装,不需要人为干预:也就是消除机器第一次启动时候,需要人工选择<安装语言>,<接受许可协议>等等这些步骤: 第三步:完成以上几步,剩下就需要linux 通过virt-copy-

KVM虚拟化技术(二)KVM介绍

KVM:Kernel Virtual Machine KVM是基于虚拟化扩展的x86硬件,是Linux完全原生的全虚拟化解决方案.部分半虚拟化支持,主要是通过半虚拟网络驱动程序的形式用于Linux和Windows客户机系统的. KVM被设计为是一个内核模块,支持广泛的客户机操作系统:在KVM架构中,虚拟机实现为常规的Linux进程.这使KVM能够享受Linux内核的所有功能. KVM模块是KVM虚拟机的核心部分.其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟机客户机运行在虚拟机模式下,

CloudStack扁平化安装+KVM

一.环境 1.软件信息 名称 版本 备注 CloudStack 4.3.1 Centos 6.5 Mysql 5.x 系统自带 Tomcat 6.x/7.x 系统自带 二.配置Cloudstack计算节点 1.配置YUM源安装cloudstack-agent [[email protected] ~]#  mkdir /opt/cloudstack     #创建Cloudstack文件夹,将安装包安装上传至此 [[email protected] cloudstack]# ls cloudst

kvm虚拟化技术应用实战

本文根据上课笔记整理,大家都知道云计算的基础就是虚拟化,而开源的虚拟化基本以kvm技术为主导,因此kvm技术已成为运维工程师必备的技术,也是云时代必不可少的技术 在介绍kvm之前 我们先来了解一下vnc这个软件,后面安装kvm需要vnc来支持 1.vnc的安装及使用 # yum -y install tigervnc-server 首次启动 # vncserver :1 会提示输入两次密码 然后编辑/root/.vnc/xstartup,将最后一行twm替换为gnome-session或者sta

KVM虚拟化笔记(十四)------kvm虚拟机动态迁移

相比kvm虚拟机静态迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机动态迁移无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目录结构虚拟机磁盘文件,本文这部分内容通过nfs来实现,当然也可以采用GFS2集群文件系统来实现,本文以共享存储进行动态迁移 KVM动态迁移目前有两种,一种是基于共享存储的动态迁移,一种是基于基于数据块的动态迁移,需要qemu-kvm-0.12.2以上版本支持,OEL6.3版本是qemu-kvm-0.12.1.2,其它发行版可能有支持 由于资源有限,现在还没有实