虚拟化以及KVM架构

什么是虚拟化以及KVM架构

一、虚拟化

简述虚拟化

虚拟化是指计算原件在虚拟的础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术也与VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
简单地说,虚拟机(Virtual Machine)就是允许我们在当前操作系统中运行其他操作系统的软件,本质上和 VS、QQ 这些应用程序一样

虚拟化的类型

服务器虚拟化:

​ 服务器虚拟化支持将多个操作系统作为高效的虚拟机在单个物理服务器上运行。主要优势包括:

​ 1.提升 IT 效率

​ 2.降低运维成本

​ 3.更快地部署工作负载

​ 4.提高应用性能

​ 5.提高服务器可用性

​ 6.消除服务器数量剧增情况和复杂性

网络虚拟化:

通过复制物理网络,网络虚拟化支持应用在虚拟网络上运行就像在物理网络上运行一样但它具有更大的运维优势并可实现虚拟化的所有硬件独立性。(网络虚拟化为连接的工作负载提供逻辑网络连接设备和服务,包括逻辑端口、交换机、路由器、防火墙、负载均衡器、VPN 等。)

桌面虚拟化:

将桌面部署为代管服务使 IT 组织能够更快地响应不断变化的工作场所需求和新出现的机会。还可以将虚拟化桌面和应用快速、轻松地交付给分支机构、外包和离岸员工

二、KVM架构

KVM结构是基于Linux内核进行实现的,KVM的内核模块叫做kvm.ko,CPU和内存虚拟化,是Linux的一个进程,负责VCPU和内存的分配,其他设备的虚拟就交给了qemu。qemu运行在用户空间,KVM运行在内核,两者通过/dev/kvm进行交互,KVM仅支持全局虚拟化。
KVM(Kernel Virtual Machine)基于内核的虚拟机。
虚拟机的基本架构和种类
1、可以视为特别为虚拟机优化裁剪的操作系统内核。虚拟机监控程序运行在底层软件层,实现系统的初始化、物理资源的管理等操作系统的职能。这一类型的虚拟机监控程序一般会提供一个具有一定特定权限的特殊虚拟机,这个特殊虚拟机运行用户日常操作系统和管理使用的操作系统环境。如:Xen、VMware ESXI和Hyper-V。
2、虚拟机监控程序依赖操作系统来实现管理和调度,也会受到宿主操作系统的一些限制。无法为了虚拟机的优化而改变操作系统。如:VMware Workstation、VirtualBox

KVM的模块和qemu的讲解使用。

KVM的模块
KVM模块是KVM虚拟机的核心部分。KVM仅支持硬件虚拟化。其主要功能是初始化cpu硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
KVM在Cpu上运行的时候在被加载内核的那时候,KVM模块会先初始化内部数据结构,然后检测当前系统的CPU,然后打开CPU控制寄存器CR4中的虚拟化模式开关,并通过执行VMXON指令将宿主操作系统置于虚拟化模式的根模式;最后KVM模块创建特殊设备文件/dev/kvm并等待来自用户空间的命令。接下来虚拟机的创建和运行是一个用户空间程序(qemu)和KVM模块互相配合的过程。
qemu
QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作。通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交互。但由于所有指令都需要经过QEMU来翻译,因而性能会比较差。
KVM负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm并不能模拟其他设备,还必须有个运行在用户空间的工具才行。KVM的开发者选择了比较成熟的开源虚拟化软件qemu来作为这个工具,qemu模拟IO设备(网卡,磁盘等),对其进行了修改,最后形成了qemu-kvm
在qemu-kvm中,KVM运行在内核空间,qemu运行在用户空间,实际模拟创建、管理各种虚拟硬件,qemu将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但KVM不能虚拟其他硬件设备,因此qemu还有模拟IO设备(磁盘,网卡,显卡等)的作用,KVM加上qemu后就是完整意义上的服务器虚拟化。

综上所述,qemu-KVM具有两大作用:

​ 1、提供对CPU、内存(KVM负责)、IO设备(qemu负责)的虚拟

​ 2、对各种虚拟设备的创建,调用管理(qemu负责)

qemu的常用命令以及语法

安装qemu,KVM
yum -y install kvm python-virtinst libvirt  bridge-utils virt-manager qemu-kvm-tools  virt-viewer  virt-v2v
创建镜像,默认是raw 也可以改为qcow2格式
qemu-img create liuyong.raw 2G
qemu-img create liuyong.qcow2 -f qcow2 2G    ##-f指定格式
查看镜像信息
qemu-img info liuyong.raw
qemu-img info liuyong.qcow2
镜像格式转换
qemu-img convert -p -f raw -O qcow2liuyong.raw liuyong.qcow2
	##-f 后面的raw是当前的格式  后面是当前格式的镜像 最后是你要转换的格式镜像
    ##-p  是显示转换的进度
镜像的快照(raw不支持,qcow2支持)
qemu-img snapshot liuyong.qcow2 -c s1
查看快照
qemu-img snapshot test1.qcow2 -l  ##-l查看
删除快照
qemu-img snapshot test1.qcow2 -d s1  ##-d删除
还原快照
qemu-img snapshot test1.qcow2 -a s1  ##-a参数
快照单独提取镜像,可以使用convert参数
qemu-img convert -f qcow2 -O qcow2 -s s1 test1.qcow2 test-s1.qcow2

-f 制定快照格式,-O 输出快照格式,-s 快照名字 输入文件,输出文件
镜像一致性检查
qemu-img check test1.qcow2
镜像大小修改
qemu-img resize test1.raw  +2G  ##增加
qemu-img resize test1.raw  3G  ##指定
qemu-img resize test2.qcow2 +2G
raw格式镜像大小都可以调整,qcow2格式镜像只能增大,不能缩小

你可能感兴趣的:(虚拟化KVM,linux)