前言
KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet开发。2007年2月被导入Linux 2.6.20核心中,成为内核源代码的一部分。2008年9月4日,Redhat收购了Qumranet,至此Redhat拥有了自己的虚拟化解决方案,之后便舍弃Xen开始全面扶持KVM,从RHEL6开始KVM便被默认内置于内核中。本文介绍KVM虚拟化平台部署及管理。
KVM特点
KVM必须在具备Intel VT或AMD-V功能的x86平台上运行。KVM包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。使用一个经过修改的QEMU(qemu-kvm),作为虚拟机上层控制和界面。
由于KVM仅是一个简单的虚拟化模块,所以它的内存管理没有自我实现,需借助于Linux内核实现内存管理。KVM能够使用Linux所支持的任何存储,在驱动程序的实现上,直接借助于Linux内核来驱动任何硬件。在性能上KVM继承了Linux很好的性能和伸缩性,在虚拟化性能方面,已经达到非虚拟化原生环境95%左右的性能(官方数据)。KVM拓展性也非常好,客户机和宿主机都可以支持非常多的CPU数量和非常大的内存,可以过载使用CPU和内存,还可借助KSM技术实现对内存的过量使用,且保证性能依旧非常不错。
xen的工作方式:首先在操作系统上安装xen;(rpm包);装好之后重启宿主机的操作系统,起来之后xen就成为了操作系统,直接运行在物理硬件之上了,将原来宿主机的操作系统,挤下去成为第一个虚拟机(dom0)。将刚挤下去的成为第一个虚拟机(dom0)的当为它的管理接口(管理接口:创建,删除,新建虚拟机)后面创建的虚拟机为dom1;dom2……
KVM的工作方式:KVM是内核模块,一旦装上KVM的内核模块,原来的内核,就变为虚拟化管理平台:Hypervisor ,不用重启就直接可以在虚拟化管理平台上创建虚拟机了。
KVM架构
KVM的架构非常简单,就是内核的一个模块,用户空间通过qemu模拟硬件提供给虚拟机使用,一个虚拟机就是一个普通的Linux进程,通过对这个进程的管理,就可以完成对虚拟机的管理。
qemu-kvm 主要的KVM程序包
python-virtinst 创建虚拟机所需要的命令行工具和程序库
virt-manager GUI虚拟机管理工具
virt-top 虚拟机统计命令
virt-viewer GUI连接程序,连接到已配置好的虚拟机
libvirt C语言工具包,提供libvirt服务
libvirt-client 为虚拟客户机提供的C语言工具包
virt-install 基于libvirt服务的虚拟机创建命令
bridge-utils 创建和管理桥接设备的工具
QUME的主要功能:
处理器模拟器
仿真IO设备
关联模拟的设备至真实设备;
调试器
与模拟器交互的用户接口
qemu:kmv的文本管理工具,包括qemu-kvm、qemu-imgQUME的主要功能:
处理器模拟器
仿真IO设备
关联模拟的设备至真实设备;
调试器
与模拟器交互的用户接口
运行第一个虚拟镜像
使用 find / -name bios-256k.bin 我发现,bios-256k.bin是一个软连接文件,链接的是上层目录中,seabiso目录下的bios-256k.bin,但是seabios目录下并没有bios-256k.bin这个文件,这可能是redhat搞的鬼,就像qemu-kvm本身并不在PATH环境变量中一样,所以,我复制了seabios目录下的bios.bin 为bios-256k.bin,这样下来,qemu-kvm就可以启动了,我们可以再加上–nographic选项不使用图形化启动!太黑了!
也可以使用-cpu选项,指定模拟的cpu类型
再次执行,通过
使用vncviewer连接
关闭虚拟机,发送关机信号
使用复杂一些的启动设置如下
指定了虚拟磁盘接口类型、介质类型、cache为回写、磁盘文件格式为qcow2
ls /sys/bus 看总线类型,出现了virtio
从头创建一个虚拟机
建立一个磁盘映像文件,winxp和centos各一个
开始创建虚拟机,并安装系统
可以在当前的界面中运行虚拟机 -nographic
网络选项:
-net nic 定义net frontend
-net user
-net tap 定义net backend
script=:启动脚本
downscript=:停止脚本;
桥设备
bridge-utils.x86.64
modinfo bridge
创建桥设备
激活br0
查看本机支持的网卡类别
添加两块网卡启动虚拟机,必须要有启动脚本(/etc/qemu-ifup),通过脚本网卡挂接到桥上
因为没有启动脚本,报错:
qemu-ifup脚本 vif0.0会传递为$1
qemu-ifdown脚本
加上脚本运行,放在默认位置,不用只script也是可以的
运行虚拟机后,给虚拟机配置ip
启动多个虚拟机默认MAC地址相同,因此需要指定mac=52:54:00:12:34:57;52:54:00固定,默认值是52:54:00:12:34:56
pxe启动虚拟机安装
启动已经建好的虚拟机
openstack、kvm、qemu-kvm、libvirt、xen的关系
KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直接用它的。QEMU-KVM就是一个完整的模拟器,它是建基于KVM上面的,它提供了完整的网络和I/O支持. Openstack不会直接控制qemu-kvm,它会用一个叫libvit的库去间接控制qemu-lvm, libvirt提供了夸VM平台的功能,它可以控制除了QEMU的模拟器,包括vmware, virtualbox xen等等。所以为了openstack的夸VM性,所以openstack只会用libvirt而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。
到此这篇kvm虚拟化是哪个厂商(什么是kvm虚拟化技术)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-docker-k8s/46777.html