占坑
libvirt?
libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
1 什么是KVM
KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor。
是Linux内核模块,在2.6.20版本以上都有(待验证)
KVM需要支持虚拟化扩展的 CPU
KVM是一种完全虚拟化的方式
1.1 QEMU
QEMU为kvm提供I/O虚拟化。其实 QEMU 原本不是 KVM 的一部分,它自己就是一个纯软件实现的虚拟化系统,所以其性能低下。QEMU 代码中包含整套的虚拟机实现,包括处理器虚拟化,内存虚拟化,以及 KVM需要使用到的虚拟设备模拟。
为了简化代码,KVM 在 QEMU 的基础上做了修改。VM 运行期间,QEMU 会通过 KVM 模块提供的系统调用进入内核,由 KVM 负责将虚拟机置于处理的特殊模式运行。遇到虚机进行 I/O 操作,KVM 会从上次的系统调用出口处返回 QEMU,由 QEMU 来负责解析和模拟这些设备。
从 QEMU 的角度看,也可以说是 QEMU 使用了 KVM 模块的虚拟化功能,为自己的虚机提供了硬件虚拟化加速。除此以外,虚机的配置和创建、虚机运行说依赖的虚拟设备、虚机运行时的用户环境和交互,以及一些虚机的特定技术比如动态迁移,都是 QEMU 自己实现的。
早期的qemu使用kqemu加速,后来使用qemu-kvm模块加速
# 2 CentOS、Debian、Ubuntu 看了这篇文章写的不错:[CentOS、Ubuntu、Debian三个linux比较异同](https://www.cnblogs.com/cnsong/p/6719635.html) 打算下个CentOS和Debian玩一玩。之前只用过Ubuntu,装虚拟机的话新手友好(有图形界面),买vps可能还是用前两种更好吧,毕竟便宜,以后搭工具可能用得着。。。(溜