参考于https://yq.aliyun.com/articles/693512python
- 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。
- 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.ko,只用于管理虚拟 CPU 和内存。IO 的虚拟化,就交给 Linux 内核和qemu来实现。linux
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 是必定要会用的。
第一步:安装前准备工做(确保支持虚拟化)网络
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 ------------------------------------------------------- 则安装成功