KVM介绍
KVM原理简介
- 广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部
分就是经过简化和修改的 Qemu。 - KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提
供一个用户空间工具来进行虚拟机的管理。 两者相互结合, 相辅相成, 构成了一个完整的虚
拟化平台。 - 请注意: Qemu 本身并不是 KVM 的一部分, Qemu 是一套完整的虚拟化解决方案, 是纯软
件实现虚拟化, 包括处理器虚拟化、 内存虚拟化以及各种虚拟设备的模拟, 但因为是纯软件
模拟出来的, 所以 Qemu 的性能比较低。
KVM 运行时的三种模式
- 客户模式: 可以简单理解成客户机在操作系统运行中的模式, 客户模式又分为内核模式
和用户模式。 - 用户模式: 为用户提供虚拟机管理的用户空间工具以及代表用户执行 I/O, Qemu 运行在
这个模式之下。 - 内核模式: 模拟 CPU 以及内存, 实现客户模式的切换, 处理从客户模式的退出。 KVM 内
核模块运行在这个模式下。
KVM工作原理
- 用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVMDriver 为虚
拟机创建虚拟 CPU 和虚拟内存, 然后执行 VMLAU·NCH 指令进入客户模式, 装载 Guest OS 并运
行。 Guest OS 运行过程中如果发生中断或者影子缺页等异常, 将暂停 Guest OS 的运行并保
存当前上下文退出到内核模式来处理这些异常。 内核模式处理这些异常时如果不需要 I/O
则处理完成后重新进入客户模式。 如果需要 I/O 则进入到用户模式, 由 Qemu 来处理 I/O,
处理完成后进入内核模式, 再进入客户模式。
KVM组成
- KVM Driver
- 虚拟机创建
- 虚拟机内存分配
- 虚拟CPU寄存器读写
- 虚拟CPU运行
- QEMU(经过简化与修改)
- 模拟PC硬件的用户控制组件
- 提供I/O设备模型及访问外设的途径
KVM部署
实验环境
主机:bdqn kvm1
操作系统:centos7 centos7
ip地址:192.168.100.100 192.168.100.101
实验步骤
- 安装CentOS7系统
- 创建一个虚拟机 处理器数量2 每个处理器内核数2 处理器内核总数4 虚拟化Intel VT-X 选项√下,
内存大小为8G 网络桥接到VM1 声卡和打印机移除 挂Centos 7.6 光盘
- 安装KVM
yum groupinstall -y "GNOME Desktop" ####安装 GNOME 桌面环境(安装过可以不装)
yum -y install qemu-kvm ####KVM 模块
yum -y install qemu-kvm-tools ####KVM 调试工具,可不安装
yum -y install virt-install ####构建虚拟机的命令行工具
yum -y install qemu-img ####qemu 组件,创建磁盘、 启动虚拟机等
yum -y install bridge-utils ####网络支持工具
yum -y install libvirt ####虚拟机管理工具
yum -y install virt-manager ####图形界面管理虚拟机
init 6 #安装完之后重启
lsmod | grep kvm ####查看KVM模块是否安装
- 设置KVM网络
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/sysconfig/network-scripts/ifcfg-br0
- KVM管理
mkdir -p /data_kvm/iso ####上传镜像centos 7.6的镜像
mkdir -p /data_kvm/store ####虚拟机存储
- 安装KVM虚拟机
virt-manager ###启动图形界面配置
下面安装步骤可参考
1、存储池
2、存储卷
3、创建虚拟机
4、安装虚拟机
安装步骤自己定义,安装完成如图所示:
KVM基本管理
ls /etc/libvirt/qemu ####查看KVM的配置文件存放目录
virsh shutdown kvm1 #####关闭centos7.6虚拟机
virsh start kvm1 #####开启centos7.6虚拟机
virsh destroy kvm1 ######强制关闭centos7.6虚拟机的电源
virsh suspend kvm1 #####挂起centos7.6虚拟机
virsh resume kvm1 #####从挂起中恢复centos7.0虚拟机
virsh create /etc/libvirt/qemu/kvm1.xml ####通过配置文件启动虚拟机系统实列
virsh list --all ####查看所有虚拟机状态