目录
一: kvm简介
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
因为对进程管理比较麻烦,RedHat发布了一个开源项目libvirt。libvirt有命令行工具也有API,可以通过图形化界面,完成对虚拟机的管理。大多数管理平台通过libvirt来完成对KVM虚拟机的管理;比如Openstack、Cloudstack、OpenNebula等。
1.1:虚拟化概念
-
软件模拟 优点:能够模拟任何硬件,包括不存在的 缺点:功能非常低效,一般用于研究,生产环境不同。 代表:QEMU
-
虚拟化层翻译 软件全虚拟化
VMware 半虚拟化----改动虚拟机的内核(linux)xen(被淘汰)
硬件支持的全虚拟化----KVM -
容器虚拟化 docker
-
虚拟化分类
1.硬件虚拟化 硬件虚拟化代表:KVM
2.软件虚拟化 软件虚拟化代表:Qemu
提示:硬件虚拟化是需要CPU支持,如果CPU不支持将无法创建KVM虚拟机。Qemu和KVM的最大区别就是,如果一台物理机内存直接4G,创建一个vm虚拟机分配内存分4G,在创建一个还可以分4G。支持超配,但是qemu不支持
1.2:KVM、QEMU、libvirt以及virt-manager等组件的关系
1.2.1:QEMU
QUME提供了一个开源的全虚拟化的解决方案,实际就是一台硬件模拟器,可以模拟许多硬件,包括X86架构处理器、AMD64架构处理器等。QEMU的优点是因为是纯软件模拟,所以可以在支持的平台模拟支持的设备。缺点是因为纯软件模拟,所以非常慢。
KVM只是一个内核模块,只能提供CPU和内存;所以还需要QEMU模拟IO设备;如磁盘、网卡等。
1.2.2:KVM
KVM是Linux内核中的可加载的木块,是一个基于内核的虚拟机。在硬件支持虚拟化(intel VT,AMD-V)的X86平台上实现了全虚拟化功能,由于用户不能直接操作内核,因此需要一个用户空间工具进行操作,通过与QEMU的结合,就可以通过QEMU去操作KVM虚拟机。
1.2.3:libvirt重点
libvirt是为了更方便地管理平台虚拟化技术而设计的开放源代码的应用程序接口、守护进程和管理工具,它不仅提供了对虚拟化客户机的管理,也提供了对虚拟化网络和存储的管理。尽管libvirt项目最初是为Xen设计的一套API,但是目前对KVM等其他Hypervisor的支持也非常的好。libvirt支持多种虚拟化方案,既支持包括KVM、QEMU、Xen、VMware、VirtualBox等在内的平台虚拟化方案,又支持OpenVZ、LXC等Linux容器虚拟化系统,还支持用户态Linux(UML)的虚拟化。
libvirt其实质就是对针对不同的hypervisor的命令进行了一个封装,libvirt针对不同的开发语言提供了api接口,如python、c等;libvirtd是linux的一个守护进程,使用libvirt必须先启动这个守护进程。
Libvirt是一套开源的虚拟化管理工具,主要由3部分组成。
一套API的lib库,支持主流的编程语言,包括C、Python、Ruby等
Libvirt服务
命令行工具virsh
Libvirt可以实现对虚拟机的管理,比如虚拟机的创建、启动、关闭、暂停、恢复、迁移、销毁,以及对虚拟网卡、硬盘、CPU、内存等多种设备的热添加。
因为libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口(API),而且一些常用的虚拟机管理工具(如virsh、virt-install、virt-manager等)和云计算框架平台(如OpenStack、OpenNebula、Eucalyptus等)都在底层使用libvirt的应用程序接口。
libvirt作为中间适配层,让底层Hypervisor对上层用户空间的管理工具是可以做到完全透明的,因为libvirt屏蔽了底层各种Hypervisor的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)。
总结:
KVM是内核的模块;QEMU是提供虚拟化的组件,用户操作KVM模块;libvirt提供一整套的API,用于管理KVM虚拟机,其他图形化界面(virt-manager等)可以通过libvirt管理kvm虚拟机。
二:kvm安装
2.1:环境介绍
vmware workstation