1、KVM 介绍html
1.为何须要cpu虚拟化python
X86 操做系统是设计在直接运行在裸硬件设备上的,所以它们自动认为它们彻底占有计算机硬件。x86 架构提供四个特权级别给操做系统和应用程序来访问硬件。 Ring 是指 CPU 的运行级别,Ring 0是高级别,Ring1次之,Ring2更次之…… 就 Linux+x86 来讲, 操做系统(内核)须要直接访问硬件和内存,所以它的代码须要运行在高运行级别 Ring0上,这样它可使用特权指令,控制中断、修改页表、访问设备等等。 应用程序的代码运行在低运行级别上ring3上,不能作受控操做。若是要作,好比要访问磁盘,写文件,那就要经过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成以后再从ring0返回ring3。这个过程也称做用户态和内核态的切换。linux
那么,虚拟化在这里就遇到了一个难题,由于宿主操做系统是工做在 ring0 的,客户 操做系统就不能也在 ring0了,可是它不知道这一点,之前执行什么指令,如今仍是执行什 么指令,可是没有执行权限是会出错的。因此这时候虚拟机管理程序(VMM)须要避免这件 事情发生。 虚机怎么经过VMM实现 Guest CPU 对硬件的访问,api
根据其原理不一样有三种实现 技术:安全
1. 全虚拟化 bash
2. 半虚拟化 服务器
3. 硬件辅助的虚拟化网络
2、架构
KVM的总体结构:函数
1) virt-manager 一个用来管理VM的GUI/CUI用户接口;它使用libvirt api 调用VM的各类功能。
2) libvirt 一个工具及接口,做为较通用的服务器虚拟化软件,它支持Xen,VMware ESXi/GSX,固然, 还有QEMU/KVM。
3) QEMU 一个和KVM内核模块交互的模拟器,处理多种客户机系统请求如I/O;一个QEMU进程对应一个 客户机系统。
4) KVM内核模块 从狭义上来讲,KVM是一个Linux内核模块,处理客户机系统的VM Exits和执行VM Entry指 令。
5) Linux内核 既然QEMU做为一个普通的用户进程运行,相应客户机系统的调度就由Linux内核本身来处 理。 全部的组件都是开放源码软件(OSS)。
3、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,非一致存储访问结构 )
4、KVM 工具集合
libvirt:操做和管理KVM虚机的虚拟化API,使用 C 语言编写,能够由 Python,Ruby, Perl, PHP, Java 等语言调用。能够操做包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
Virsh:基于libvirt 的命令行工具(CLI)
Virt-Manager:基于libvirt的GUI工具 virt-v2v:虚机格式迁移工具 virt-* 工具:包括Virt-install (建立KVM虚机的命令行工具),Virt-viewer (链接 到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等
sVirt:安全工具和selinux相关
5、安装部署虚拟化环境
1、)图形化安装
1.虚拟机安装
①若是是物理服务器,须要在BIOS中打开虚拟化功能(Virtualization Technology),一 般的服务器默认是打开这个功能的。
②、若是是用VMware Workstation作实验,创建的虚拟机的CPU要勾选虚拟化功能,这样虚拟 机才会支持KVM虚拟化
2.最简单的安装方法就是在安装系统的时候,安装上虚拟化功能,这里以CentOS7.3为例, 选择安装包的时候,以下图选择便可,选择“带GUI的服务器”,并勾选“虚拟化客户 端”,“虚拟化Hypervisor”,“虚拟化工具”。
3.安装完成后查看CPU是否能支持虚拟化
grep -e "vmx | svm" /proc/cpuinfo
4.启动程序
systemctl enable libvirtd && systemctl start libvirtd
2、)若是你的系统是最小化安装的,那你应该安装如下所需软件:
1.安装软件
1
2
3
4
5
6
7
8
|
yum groupinstall
"GNOME 桌面"
-y
#//安装GNOME桌面环境
yum
install
qemu-kvm -y
#/KVM核心模块
yum
install
qemu-kvm-tools -y
#//KVM调试工具,能够选择性安装
yum
install
qemu-img -y
#//建立、转换和修改镜像,能处理被qemu支持的全部镜像格式
yum
install
libvirt -y
#//管理虚拟机的工具包
yum
install
virt-
install
-y
#//virt-install是一个使用 libvirt库构建新虚拟机的命令行工具
yum
install
virt-manager -y
#//图形界面管理虚拟机
yum
install
bridge-utils -y
#//配置linux以太网桥
|
2.验证
lsmod | grep kvm
3.启动程序
若是libvirtd服务中止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager 等工具来管理虚拟机
systemctl status libvirtd
3、)图形界面没有虚拟化软件
1.安装虚拟化软件
1
|
yum
install
qemu qemu-img qemu-kvm libvirt libvirt-python libguestfs-tools virt-
install
|
2.安装图形化工具:
1
|
yum
install
virt-manager virt-viewer
|
3.开启图形化界面
1
|
systemctl
enable
libvirtd && systemctl start libvirtd
|
6、部署kvm虚拟化
1.上传光盘镜像
2.建立文件夹
1
2
|
mkdir
/kvm-vm
#放置虚拟机使用
mkdir
/iso
#放置镜像
|
3.命令启动程序
virt-manager
5.建立存储池
6.建立镜像池
7.建立虚拟机
建立储存虚拟机卷(能够提早建立也能够在建立虚拟机选择储存位置时建立)
接下来正常安装系统就能够了
7、、使用virt-manager管理虚拟机
virt-manager应用程序是一个桌面用户接口,用于经过libvirt管理虚拟机。它的主要 目标是管理KVM,不过也能够管理Xen和LXC(Linux容器)。它提供了运行域的汇总视图,当 前性能和资源利用统计。向导能够容许建立新域,以及配置、调整域的资源分配和虚拟硬 件。内嵌的VNC和SPICE的客户端提供了一个全图形控制台。
virt-manager主要功能:
Ø 定义和建立虚拟机
Ø 硬件管理
Ø 性能监视
Ø 虚拟机的保存和恢复、暂停和继续、关闭和启动
Ø 控制台
Ø 在线和离线迁移
启用virt-manager
应用程序----系统工具----虚拟系统管理器
或者 输入 virt-manager命令
2.配置虚拟机启动选项:
在1的位置若是勾选,能够设置虚拟机随物理主机启动而启动
在2的位置若是勾选,那么虚拟机启动的时候就会出现启动菜单,而后能够选择从哪里 启动
在3的位置若是勾选,那么可让虚拟机启动时候使用宿主机中的内核文件启动
3.调整监视参数,默认只监视CPU。
先调整首选项,而后在“查看”--“图形”中勾选监控参数便可