KVM虚拟化介绍
- 虚拟化分类
- 1型虚拟化
Hupervisor直接运行在物理机上,多个虚拟化运行在Hypervisor上Hypervisor的实现一般是一个特殊定制的linux系统。比如Xen和VMare的ESXI都属于这种模型
2型虚拟化
物理机上首先安装常规的操系统,如Redha,Ubuntu,windows等,Hypervisor作为OS上的应用一个应用程序运行,并对虚拟机进行管理,KVM Virtaulbox VMWare workstation搜属于这种类型
两种虚拟化对比
1型虚拟化一般对硬虚拟化进行了优化,性能上比2型虚拟化要高
2型虚拟化基于操作系统实现,会比较灵活,支持虚拟化嵌套。即KVM虚拟机里可以再安装kvm
- KVM介绍
- KVM定义
KVM全程基于内核的虚拟机(kernel-based virtual machine).KVM是基于内核的虚拟化技术,实际上是嵌入系统的一个虚拟化模块,通过优化内核实现虚拟化。该模块使Liunx变成一个Hypervisor,虚拟机使用linux自带的调度器进行管理
KVM是基于虚拟化扩展(intel TV或AMD-V)的linux原生全虚拟化解决方案。KVM中,虚拟机别当做linux的进程,有linux自带的调度器进行管理。虚拟机的每个CPU都呗看做一个linux的进行,这使得kvm能够应用linux内核已有的功能,。但是KVM本身不执行任何硬件模拟的模拟工作,而是有用户空间的程序通过/dev/kvm下的接口设置一个虚拟服务器的地址空间,并向其提供模拟的IO,并将虚拟机的视频显示映射回宿主机上显示,目前使用的这个程序是Qemu
- KVM术语
宿主机(Host):物理服务器
客户机(Guest):虚拟机,物理机上KVM创建的虚拟机。包括CPU (Vcpu)、内存、驱动,被kvm置于受限制的CPU下运行
KVM:运行在内核空间。提供cup和内存的虚拟化以及I/O拦截,虚拟机(Guest)的I/O被KVM拦截后,交给Qemu处理
Qemu:修改过的为KVM虚拟机使用的QEMU代码,提供I/O虚拟化,通过IOCTL、/dev/kvm设备与KVM进行家交互
KVM ko:KVM的一个内核模块,用来管理虚拟CPU和内存
Libvirt:KVM的管理工具(还可以管理xen/virtualBox,OpenStack的底层也是Libvirt).包括三个组件:
1,libvirtd:后台服务器程序,负责接受和处理API请求
2,API库:提供基于libvirt开发高级工具的接口,如virt-manager KVM的图形化管理工具
3,virsh命令行工具(KVM和OpenStack应用必须掌握的工具)
- KVM环境支持检查
- 确定处理器有 VT
grep vmx /proc/cpuinfo (INTEL 芯片 )
grep svm /proc/cpuinfo (AMD 芯片 )
cat /proc/cpuinfo | grep -e vmx -e nx -e svm
2,不知道芯片的生产厂商则输入:
egrep '(vmx|svm)' /proc/cpuinfo
如果 flags: 里有 vmx 或者 svm 就说明支持 VT ;如果没有任何的输出,
说明你的 cpu 不支持,将无法成功安装 KVM 虚拟机。
- 当你硬件本身支持虚拟化,但查询相应参数无果时,请检查 BIOS 设定,确认你的 BIOS 中开启了硬件支持虚拟化的功能! (Inteld的将如下选项设为Enabled Intel(R) Virtualization Tech [Enabled])
- KVM安装
- 安装组件包
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 磁盘管理
- 加载模块
modprobe kvm #加载 kvm 模块
lsmod | grep kvm #查看加载成功
systemctl status libvirtd
systemctl start libvirtd
systemctl enable libvirtd
- 检查是否安装成功
virsh list --all
出现: Id Name State则安装成功