hypervisor
虚拟化已经成为互联网时代的主角,从云计算,容器技术,无不彰显着虚拟化技术的广阔前景,我们常见的虚拟化技术的有vmware,kvm,xen,qemu等,就目前而言vmware在虚拟化技术中份额应该是最大的,但相对的价格也是最贵的,而就开源的实现来说kvm和xen应该为我们提供了最佳的技术实践。
虚拟化的技术分类:
- 主机虚拟化:
- 完全虚拟化:vware,kvm,xen(hvm)
- 半虚拟化:xen,umi
- 模拟:qemu
- 用户空间虚拟化(容器):
docker,lxc,openvz - 库虚拟化:
wine,cywin - 应用程序虚拟化:
jvm,pvm
虚拟化技术有两种类型:
- Type-I:hypervisor–>vm
- Type-II:host–>vmm–>vm
kvm
KVM是基于内核的虚拟机,是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核装换为一个hypervisor:
关于kvm:
- kvm是开源软件,全称kernel-based virtual machine,基于内核的虚拟机。
- 是x86架构且硬件支持全虚拟化的Linux全虚拟化解决方案。
- 它包含一个为处理器提供底层虚拟化,可加载内核模块kvm.ko(kvm-intel.ko或kvm-amd.ko)。
- kvm还必须一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
- kvm能在不修改操作系统镜像的情况下同时运行多个虚拟机。
- 在主流的linux内核中,大都奖kvm编译进内核模块。
kvm组件:
- /dev/kvm:工作于hypervisor,在用户空间可通过ioctl()系统调用来完成vm的管理工作;是一个字符设备
功能:创建vm,为vm分配内存、读写vcpu的寄存器、向vcpu注入中断、运行vcpu等 - qemu进程:工作于用户空间,主要用于实现模拟vm的IO设备
kvm的工具栈:
- qemu:
qemu-kvm
qemu-img - libvirt:
kvm hypervisor:libvirtd
管理接口:
- GUI:virt-manager,virt-viewer
- CLI:virt-install,virtsh
QEMU主要提供了以下几个组件:
- 处理器模拟器
- 仿真io设备
- 关联模拟的设备至真实设备
- 调试器
- 与模拟器交互的用户接口
GUI KVM安装配置
前提:
(1)确保CPU支持HVM
grep -r -E “(vmx|svm)” /proc/cpuinfo
(2)内核编译提供kvm模块
modprode kvm
modprode kvm-intel
modinfo kvm
(3)验证
ll /dev/kvm
1 | ~]# yum install -y libvirt virt-manager virt-viewer virt-install qemu-kvm |
2 | ~]# systemctl start libvirtd |
1 | ~]# virt-manager |