KVM介绍及试用

服务器虚拟化是云计算最核心的技术,而KVM是当前最主流的开源的服务器虚拟化技术。从Linux2.6.20起,KVM作为内核的一个模块 集成到Linux主要发行版本中。从技术架构(代码量、功能特性、调度管理、性能等)、社区活跃度,以及应用广泛度来看,KVM显现出明显优势,已逐渐替换另一开源虚拟化技术Xen。在公有云领域,2017年之后AWS、阿里云、华为云等厂商都逐渐从Xen转向KVM,而Google、腾讯云、百度云等也使用KVM。在私有云领域,目前VMware ESXi是领导者,微软Hyper-V不少应用,随着公有云厂商不断推进专有云/私有云方案,未来KVM应用也会逐渐增加,华为、华三、深信服均基于KVM做私有云的开发。KVM目前已支持x86、PowerPC、S/390、ARM等平台。

目录

1、主流虚拟化架构

2 KVM虚拟化架构

3 KVM试用


1、主流虚拟化架构

图1对比了几种主流虚拟化技术架构:ESXi、Xen与KVM,其主要差别在与各组件(CPU、内存、磁盘与网络IO)的虚拟化与调度管理实现组件有所不同。在ESXi中,所有虚拟化功能都在内核实现。Xen内核仅实现CPU与内存虚拟化, IO虚拟化与调度管理由Domain0(主机上启动的第一个管理VM)实现。KVM内核实现CPU与内存虚拟化,QEMU实现IO虚拟化,通过Linux进程调度器实现VM管理。

kvm 显卡虚拟化 虚拟化 kvm xen_linux

图1 主流虚拟化技术架构

2 KVM虚拟化架构

如图2,KVM虚拟化有两个核心模块:

1)KVM内核模块:主要包括KVM虚拟化核心模块KVM.ko,以及硬件相关的KVM_intel或KVM_AMD模块;负责CPU与内存虚拟化,包括VM创建,内存分配与管理、vCPU执行模式切换等。

2)QEMU设备模拟:实现IO虚拟化与各设备模拟(磁盘、网卡、显卡、声卡等),通过IOCTL系统调用与KVM内核交互。KVM仅支持基于硬件辅助的虚拟化(如Intel-VT与AMD-V),在内核加载时,KVM先初始化内部数据结构,打开CPU控制寄存器CR4里面的虚拟化模式开关,执行VMXON指令将Host OS设置为root模式,并创建的特殊设备文件/dev/kvm等待来自用户空间的命令,然后由KVM内核与QEMU相互配合实现VM的管理。KVM会复用部分Linux内核的能力,如进程管理调度、设备驱动,内存管理等。

kvm 显卡虚拟化 虚拟化 kvm xen_centos_02

图2 KVM虚拟化架构

3 KVM试用

安装虚拟机VMware Workstation

创建基于CentOS 7.x的虚拟机CNS

在CNS里安装、测试KVM

emu-kvm ----模拟计算机的工具,为KVM虚拟机提供IO设备

libvirt ----用于管理 KVM 的Hypervisor

virt-install ----命令行的虚拟机创建安装工具

bridge-utils ----网桥工具

virt-manager 是 KVM 图形化管理工具

步骤1:通过YUM方式安装上述工具包

【root@localhost~】yum install qemu-kvm libvirt virt-install virt-manager bridge-utils

注意:一定要先连接外网

步骤2:启动libvirtd

【root@localhost~】systemctl start libvirtd

步骤3:关闭虚拟机CNS,修改虚拟机配置

kvm 显卡虚拟化 虚拟化 kvm xen_centos_03

步骤4:通过SSH上传CentOS7的镜像文件,并将镜像文件复制到/var/lib/libvirt/images

可以下载ssh secure shell client用ssh ftp上传。

步骤5:开机,打开虚拟系统管理器

kvm 显卡虚拟化 虚拟化 kvm xen_运维_04

步骤6:在虚拟系统管理器创建虚拟机

kvm 显卡虚拟化 虚拟化 kvm xen_centos_05

步骤7:使用CentOS虚拟机镜像文件,给新创建的虚拟机安装系统

kvm 显卡虚拟化 虚拟化 kvm xen_linux_06

步骤8:测试KVM对虚拟机的操作命令

A 查看虚拟机命令

[root@centos01 ~]# virsh list --all

B 启动虚拟机命令

[root@centos01 ~]# virsh start centos-7

C 关闭虚拟机命令

[root@centos01 ~]# virsh shutdown centos-7

D 克隆虚拟机命令

[root@centos01~]# virt-clone -o centos-7 -n cns7 -f /var/lib/libvirt/images /cns7.img

注意:克隆前需要关闭虚拟机