KVM
虚拟化架构分类
- 寄居虚拟化架构:指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。
- 裸金属虚拟化架构:指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。
- 操作系统虚拟化架构:在操作系统层面增加虚拟服务器功能。操作系统虚拟化架构把单个的操作系统划分为多个容器,使用容器管理器来进行管理。
宿主操作系统负责在多个虚拟服务器(即容器)之间分配硬件资源,并且让这些服务器彼此独立。 - 混合虚拟化架构:将一个内核级驱动器插入到宿主操作系统内核。这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问。
参考于https://yq.aliyun.com/articles/693512
按虚拟对象分类
- 服务器虚拟化:通过虚拟化软件,在一个服务器上虚拟出多个服务器,每
个服务器都有自己的操作系统,每个系统相互独立,互不影响。充分利用
硬件资源,安全(应用之间互不影响)。 - 存储虚拟化:硬件上的存储设备整合为一个大的存储设备,而后根据需要
进行分配。 - 网络虚拟化:通过软件实现网络设备形成网络虚拟化,虚拟机之间进行数
据传输使用虚拟交换机。 - 桌面虚拟化:早期为远程桌面,将用户的操作环境和系统的运行环境进行
分离,现在为将用户,应用,操作系统,调用时调用不同的内容拼凑成一
个虚拟桌面。 - 应用虚拟化:运行环境与应用程序进行封装,使应用程序脱离框架库和操
作系统。
KVM简介
- KVM --- 全称是基于内核的虚拟机(Kernel-based Virtual Machine)
- KVM是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术,该内核模块使得 Linux 变成了一个Hypervisor,虚拟机使用 Linux 自身的调度器进行管理。
- KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。
Linux 上的用户空间、内核空间、虚拟机
- Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被 KVM 置于一种受限制的 CPU 模式下运行。
- KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截。Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理。
- QEMU:修改过的为 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过IOCTL /dev/kvm 设备和 KVM 交互。
KVM模块和管理工具
KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。IO 的虚拟化,就交给 Linux 内核和qemu来实现。
Libvirt:是 KVM 的管理工具。Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。OpenStack 底层也使用 Libvirt。
Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh
- libvirtd是服务程序,接收和处理 API 请求;
- API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;
- virsh 是我们运维工程师经常要用的 KVM 命令行工具。作为 KVM 和 OpenStack 的实施人员,virsh 和 virt-manager 是一定要会用的。
KVM安装
第一步:安装前准备工作(确保支持虚拟化)
1. 确定处理器有 VT
grep vmx /proc/cpuinfo (INTEL 芯片 )
grep svm /proc/cpuinfo (AMD 芯片 )
cat /proc/cpuinfo | grep -e vmx -e nx -e svm
不知道芯片的生产厂商则输入:egrep '(vmx|svm)' /proc/cpuinfo
如果 flags: 里有 vmx 或者 svm 就说明支持 VT ;如果没有任何的输出,说明你的 cpu 不支持,将无法成功安装 KVM 虚拟机。
2. 当你硬件本身支持虚拟化,但查询相应参数无果时,请检查 BIOS 设定,确认你的 BIOS 中开启了硬件支持虚拟化的功能!
将如下选项设为Enabled
Intel(R) Virtualization Tech [Enabled]
第二步:yum下载 可用本地镜像源
yum install kvm virt-manager libvirt libvirt-python python-virtinst libvirt-client qemu-kvm qemu-img -y
##其中:
kvm #核心套件
virt-manager #图形化 KVM 管理软件
libvirt #提供虚拟机与宿主相互通信的机制
libvirt-python #允许使用 libvirt API
python-virtinst #CLI 下创建 KVM 的工具
libvirt-client #提供client访问kvm服务器的机制,并包含virsh命令进行;管理和控制 VMs
qemu-kvm #提供用户级 KVM 环境
qemu-img #VMs 磁盘管理
第三步:启动KVM
modprobe kvm #加载 kvm 模块
lsmod | grep kvm #查看加载成功
systemctl status libvirtd
systemctl start libvirtd
systemctl enable libvirtd
第四步:检测
virsh list --all
#如出现:
Id Name State
-------------------------------------------------------
则安装成功