kvm的安装
云计算和虚拟化分类
云计算的架构
云计算的模型
云计算的模型是以服务为导向的,根据服务层次的不同,分为IaaS(Infrastructure as a Service),PaaS,SaaS。
虚拟化概述
最理想的虚拟化目标:
- 客户机完全不知道自己在虚拟环境中,以为自己在原生环境里
- 完全不需要VMM介入客户机的运行过程
半虚拟化和全虚拟化
- 半虚拟化:纯软件的方式可以做到第一个目标,但是性能不是很好,而且软件设计的复杂度太大。所以放弃第一个目标,让系统知道是在虚拟环境中,例如VMware WorkStation,依赖于宿主操作系统,在其上构建出多个隔离的操作系统环境。
- 全虚拟化:坚持第一个目标。直接凌驾于硬件之上,构建出多个隔离的操作系统环境。
KVM原理
KVM是属于全虚拟化的。
主流虚拟化架构
对比了几种主流虚拟化技术架构:ESXi、Xen与KVM,其主要差别在与各组件(CPU、内存、磁盘与网络IO)的虚拟化与调度管理实现组件有所不同。在ESXi中,所有虚拟化功能都在内核实现。Xen内核仅实现CPU与内存虚拟化, IO虚拟化与调度管理由Domain0(主机上启动的第一个管理VM)实现。KVM内核实现CPU与内存虚拟化,QEMU实现IO虚拟化,通过Linux进程调度器实现VM管理。
KVM虚拟化架构
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安装
首先检查以下cpu是否支持虚拟化,不支持就休息了,下面不用看了。
1 | # 查看CPU是否支持虚拟化 |
有红色的vmx就说明支持

安装KVM基本组件
安装 GNOME 桌面环境 如果 Centos 装了图形界面可以不需要装
1 | yum groupinstall -y "GNOME Desktop" |
KVM 模块
1 | yum -y install qemu-kvm |
安装KVM 调试工具,可不安装
1 | yum -y install qemu-kvm-tools |
构建虚拟机的命令行工具
1 | yum -y install virt-install |
qemu 组件,创建磁盘、启动虚拟机等
1 | yum -y install qemu-img |
网络支持工具
1 | yum -y install bridge-utils |
虚拟机管理工具
1 | yum -y install libvirt |
图形界面管理虚拟机
1 | yum -y install virt-manager |
1 | #以下是上面安装的内容的汇总 |
作用汇总
qemu-kvm:即qemu+kvm,kvm负责cpu和内存的虚拟化,而qemu负责IO设备,如网卡和磁盘等的虚拟化,才能真正实现服务器虚拟化。
libvirt:KVM管理工具,主要是收集虚拟机的监控数据,如cpu,内存等信息,为不同的虚拟机监视器提供了统一的接口。
libvirt-python:可通过python方式调用libvirt API来获取虚拟机的监控数据
libguestfs-tools:虚拟机镜像管理工具,用来访问和修改虚拟机磁盘镜像
virt-install:命令行工具,为KVM创建虚拟机并完成GuestOS安装
virt-clone:用于克隆KVM虚拟机
virt-manager:使用图形界面管理KVM虚拟环境的主要工具
virt-viewer:用于显示虚拟机的图形控制台
bridge-utils:配置网桥
查看是否安装kvm
1 | lsmod | grep kvm |
没有的话,手动加载模块
1
2 modprobe kvm
modprobe kvm-intel
设置开启启动界面的显示模式
1 | ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target |
KVM网络
KVM网络的三种模式:
① NAT: 默认设置,数据包由 NAT 方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络。广泛用于个人虚拟化桌面。

② 桥接模式:这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持(一般有线网卡都支持)。一般用户服务器端虚拟化。

③仅主机:一般用于超级大的服务厂商。
KVM创建虚拟机
查看虚拟机:virsh list --all

若是无法使用,找不到此命令,重新安装
1 yum -y install libvirt
网卡配置
网卡配置,也就是添加1个桥接网卡,主要是为了后续创建的虚拟机可以使用配置的网卡实现网络通信。
- 进入文件
1 | # 进入网卡配置文件夹下 |
- 修改
1 | # 修改以下信息 |
- 重启网络
1 | systemctl restart network |
查看是否存在br0网卡:
1 | # ifconfig方式查看或者brctl show方式查看 |
启动虚拟化
启动libvirt
1 | systemctl enable libvirtd |
启动后查看是否启动成功
1 | systemctl status libvirtd |

创建虚拟机
通过使用KVM工具virt-manager创建虚拟机,指定每台机器所需的资源(例如RAM、磁盘空间、CPU)。
打开virt-manager图形界面
1 | virt-manager |

创建虚拟机

点击本地浏览,这里iso镜像文件记得选择我们前面创建的/mnt/iso文件夹下的镜像,也请将镜像文件放置mnt/iso文件夹下方便选取



为每个虚拟机安装操作系统,就像为物理计算机安装操作系统一样。

接下来就是镜像的安装过程,也就是操作系统centos的安装过程,就不赘述。

上面的方式
创建虚拟磁盘
1
2
3 # qemu-img create -f raw/qcow2
# 创建row格式的,后缀和格式相对应,nat-test是磁盘名称,5G是大小
qemu-img create -f raw /kvm/vdisks/nat-test.raw 5Graw相当于物理磁盘ssd,大小是完全指定,支持的虚拟化操作比较少;qcow2相当于机械磁盘,大小是弹性的,支持的虚拟化操作比较多(扩容,快照)
部分图片来自:知乎,一文搞定KVM安装部署 - 知乎 (zhihu.com)
kvm原理
kvm安装
详细教程:CentOS 7 : KVM : Create a Virtual Machine#1 : Server World (server-world.info)