虚拟化基础概念原创
# 概念
KVM:Kernel-Based Virtual Machine 基于内核的虚拟机;只负责CPU和内存的虚拟化
qemu-kvm:kvm用户空间管理工具;
libvirt:管理kvm虚拟机的软件;
QEMU: QEMU是一个独立的虚拟化解决方案,并不依赖KVM(它本身自己可以做CPU和内存的模拟,只不过效率较低),而KVM是另一套虚拟化解决方案,对CPU进行虚拟效率较高(采用了硬件辅助虚拟化),但本身不提供其他设备的虚拟化,借用了QEMU的代码进行了定制,所以KVM方案一定要依赖QEMU
QEMU-KVM:
1.提供对cpu,内存(KVM负责),IO设备(QEMU负责)的虚拟
2.对各种虚拟设备的创建,调用进行管理(QEMU负责)
libvirt: 只能简单的认为是个虚拟机管理工具,仍然需要通过用户空间QEMU来与KVM进行交互。 一些常用的虚拟机管理工具如virsh(类似vim编辑器),virt-install,virt-manager等和云计算框架平台(如OpenStack,OpenNebula,Eucalyptus等)都在底层使用libvirt提供的应用程序接口。
Hyper-V:
xen:
VSOCK:软件包vsock提供了对Linux VM套接字( AF_VSOCK )的访问,以在虚拟机管理程序与其虚拟机之间进行通信。
Hypervisor: 借助虚拟化技术,用户能以单个物理硬件系统为基础创建多个模拟环境或专用资源。称为"Hypervisor" (虚拟机监控程序)
大页内存:增加内存一页的大小,默认是开启的,提高虚拟机内存的io性能 cat /sys/kernel/mm/transparent_hugepage/enabled
KSM KSM内存合并,相同的页合并:ps -aux | grep ksm | grep -v grep
noop: 系统内核io的调度算法,如果是ssd硬盘需要使用的是noop内核调度; cat /sys/block/sda/queue/scheduler
# 虚拟化有两种不同类型的虚拟机监控程序:
(1). 运行与物理机之上;物理机 --> hypervisor 例如:kvm、Microsoft Hyper-V 和 VMware vSphere (2). 运行与操作系统之上;物理机 --> OS --> Hypervisor 例如:VMware Workstation 和 Oracle VirtualBox