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 虚拟化(简介和安装, 网桥)
来源: http://www.bubuko.com/infodetail-3131454.html