KVM部署安装
kvm部署安装
一、KVM 介绍
1.为什么需要cpu虚拟化
X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件。x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。 Ring 是指 CPU 的运行级别,Ring 0是高级别,Ring1次之,Ring2更次之…… 就 Linux+x86 来说, 操作系统(内核)需要直接访问硬件和内存,因此它的代码需要运行在高运行级别 Ring0上,这样它可以使用特权指令,控制中断、修改页表、访问设备等等。 应用程序的代码运行在低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。
那么,虚拟化在这里就遇到了一个难题,因为宿主操作系统是工作在 ring0 的,客户 操作系统就不能也在 ring0了,但是它不知道这一点,以前执行什么指令,现在还是执行什 么指令,但是没有执行权限是会出错的。所以这时候虚拟机管理程序(VMM)需要避免这件 事情发生。 虚机怎么通过VMM实现 Guest CPU 对硬件的访问,
根据其原理不同有三种实现 技术:
1. 全虚拟化
2. 半虚拟化
3. 硬件辅助的虚拟化
二、
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)。
三、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,非一致存储访问结构 )
四、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相关
五、安装部署虚拟化环境
一、)图形化安装
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
二、)如果你的系统是最小化安装的,那你应该安装以下所需软件:
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
三、)图形界面没有虚拟化软件
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 |
六、部署kvm虚拟化
1.上传光盘镜像
2.创建文件夹
1
2
|
mkdir /kvm-vm #放置虚拟机使用 mkdir /iso #放置镜像 |
3.命令启动程序
virt-manager
5.创建存储池
6.创建镜像池
7.创建虚拟机
创建储存虚拟机卷(可以提前创建也可以在创建虚拟机选择储存位置时创建)
接下来正常安装系统就可以了
七、、使用virt-manager管理虚拟机
virt-manager应用程序是一个桌面用户接口,用于通过libvirt管理虚拟机。它的主要 目标是管理KVM,不过也可以管理Xen和LXC(Linux容器)。它提供了运行域的汇总视图,当 前性能和资源利用统计。向导可以允许创建新域,以及配置、调整域的资源分配和虚拟硬 件。内嵌的VNC和SPICE的客户端提供了一个全图形控制台。
virt-manager主要功能:
Ø 定义和创建虚拟机
Ø 硬件管理
Ø 性能监视
Ø 虚拟机的保存和恢复、暂停和继续、关闭和启动
Ø 控制台
Ø 在线和离线迁移
启用virt-manager
应用程序----系统工具----虚拟系统管理器
或者 输入 virt-manager命令
2.配置虚拟机启动选项:
在1的位置如果勾选,可以设置虚拟机随物理主机启动而启动
在2的位置如果勾选,那么虚拟机启动的时候就会出现启动菜单,然后可以选择从哪里 启动
在3的位置如果勾选,那么可以让虚拟机启动时候使用宿主机中的内核文件启动
3.调整监视参数,默认只监视CPU。
先调整首选项,然后在“查看”--“图形”中勾选监控参数即可