虚拟化基础
722
2022-05-28
KVM虚拟化技术(上)
虚拟化技术概述
虚拟化技术即是对资源的抽象
从资源提供角度分类
2.1平台虚拟化
如果把X86平台的CPU,内存和外设作为资源,那对应的虚拟化技术就是平台虚拟化,在同一个X86平台上面,可以虚拟多个X86平台,每个平台可以运行自己独立完整的操作系统。
例如:QEMU、KVM、XEN Server、EXSi、Hyper-V等所管理的虚拟机
2.2操作系统虚拟化
如果把操作系统及其提供的系统调用作为资源,那虚拟化就表现为操作系统虚拟化,例如Linux容器虚拟化技术就是在同一个Linux操作系统之上,虚拟出多个同样的操作系统,每个应用程序认为自己运行在一个独立的OS。
例如:LXC或Docker等所管理的容器。
总结:
虚拟化的分类
从谁提供了资源的角度分类
硬件平台虚拟化(把CPU、内存当作资源,提供给虚拟机使用)
操作系统的虚拟化(把操作系统及系统调用功能,提供给虚拟机使用)
从虚拟化实现方式分类
3.1什么是虚拟化管理程序Hypervisors(VMM)
一种运行在物理机和虚拟机操作系统之间的中间软件层,可以允许多个操作系统和应用共享硬件,即虚拟机监视器,也可称之为VMM。
Hypervisors是一种在虚拟环境中的“元”操作系统,他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,而且在各个虚拟机之间施加防护。当服务器启动并执行Hypervisors时,它会家在所有的虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。
Hypervisors作用
Hypervisors是所有虚拟化技术的核心,非中断地支持多工作负载迁移的能力是Hypervisors的基本功能。
Hypervisors分类
目前市场上各种X86管理程序(Hypervisors)的架构存在差异,三个最主要的架构类别包括。
I型:直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”型。
II型:运行在操作系统上,构建一整套虚拟硬件平台,虚拟机操作系统与主机操作系统无关,但性能是三种虚拟化技术中最差的。
III型:虚拟机运行在操作系统上,创建一个独立的虚拟化实例(容器),性能好,耗费资源最少,但缺点是底层和上层必须使用同一种操作系统。
总结:
Type 1:半虚拟化
Type 2:硬件辅助全虚拟化
Type 3:操作系统虚拟化
3.2虚拟机与容器的对比
3.3 Hypervisor管理工具对比
3.4 QEMU
软件模拟虚拟化、可以模拟多种硬件,包括X86架构处理器、AMD64架构处理器、AIX架构等(银行),效率低,一般用于研究测试场景。
3.5 KVM
KVM Kernel-based virtual machine基于内核的虚拟机
是X86加购下硬件辅助的全虚拟化的首先解决方案。
KVM需要经过修改的QEMU软件(qemu-kvm)来实现虚拟机的管理
KVM就是内核的一个模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的Linux进程,虚拟机中的VCPU就是该进程中的线程。
注意:KVM通过调用Linux本身内核功能,实现对CPU的底层虚拟化和内存的虚拟化,使Linux内核成为虚拟化层,需要X86架构支持虚拟化功能的硬件支持(比如Inter-VT、AMD-V)是一种全虚拟化架构。
Kvm在2007年2月被导入Linux2.6.19内核中
总结:
是基于内核的虚拟机
是内核模块
为虚拟机提供CPU和内存
通过/dev/kvm接口使用kvm模块
3.6 QEMU-KVM
从前面对KVM内核模块的介绍知道。它只负责CPU和内存的虚拟化,加载了它以后,用户就可以进一步通过工具创建虚拟机(KVM提供接口),但仅有KVM是不够的,用户无法直接控制内核去做事儿,还必须有个运行在用户空间的工具才行,KVM开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,并对其进行了修改,最后形成了QEMU-KVM。
在QUME-KVM中,KVM运行在内核空间,QUME运行在用户空间,QEMU加上KVM就是完整的服务器虚拟化。当然,由于qumu模拟IO设备效率不高,现在常常采用班虚拟化virtio方式来虚拟化IO设备。
总结:
用户空间的虚拟机管理工具
QEMU提供IO类设备的虚拟化及管理
KVM提供CPU和内存的虚拟化
3.7 libvirt
Libvirt是一套免费的、开源的支持Linux下主流虚拟化管理程序的C函数库,其旨在为包括KVM在内的各种虚拟化管理程序提供一套方便、可靠的编程接口。
当前主流Linux平台上默认的虚拟化管理工具virt-manager,virsh等都是基于libvirt开发。
注:
一个针对各种虚拟化平台的虚拟机管理的API库,一些常用的虚拟机管理工具如virsh(类似vim编辑器),virt-install、virt-manager等和云计算框架平台(如Openstack,OpenNebula,Eucalyptus等)都在底层使用libvirt提供的应用程序接口。
Libvirt主要由三部分组成:API库,一个守护进程libvirtd和一个默认命令行管理工具virsh。
总结:
为用户管理虚拟机提供了访问hypervisor(如kvm、qumu之类)的接口。
包含三部分:库、libvirtd、virsh命令
Virt-manager,libvirt,qumu-kvm三者关系:virt-manager是管理端工具,通过libvirt调用qume-kvm应用程序接口来实现管理kvm虚拟机。
KVM虚拟机管理工具部署
KVM系统需求
1核心
2G内存
6G硬盘
KVM虚拟机管理工具环境检查
支持硬件辅助全虚拟化:lscpu 查看虚拟化位置
CPU有无相关特性
SVM
VMX
有无KVM模块
键入命令:lsmod kvm
虚拟化主机部署
列出查看安装分组的情况:yum grouplist
安装虚拟化组:yum -y groupinstall “虚拟化*”
虚拟化主机验证
启动libvirtd:systemctl start libvirtd
查看libvirtd状态:systemctl status libvirtd
检查是否加载kvm模块:lsmod | grep “kvm”
如果没有加载kvm模块,请使用:modprobe kvm
虚拟机网络连接状态
防火墙
网络
KVM虚拟机安装
virt-manager
通过virt-install安装
案例一
键入命令:virt-install \
--name=centos7.6-2 \
--vcpu=1 \
--ram=2048 \
--arch=x86_64 \
--os-type=linux \
--os-variant=rhel7 \
--graphics vnc,listen=0.0.0.0,port=5901,keymap=en-us \
--disk path=/var/lib/libvirt/image/centos7u6-2.qcow2.size=10,forsmat=qcow2 \
--cdrom=/home/soft/iso/centos-7-x86_64-DVD-1810.iso
--bridge=virbr0
KVM虚拟机组成文件
KVM虚拟机查看方法
查看正在运行的虚拟机:virtsh list
查看所有虚拟机:virtsh list --all
虚拟机配置文件XML
设定vm自动运行
键入命令:virsh autostart smtargo_01
文件路径:ls /etc/libvirt/qemu/autostart/
文件路径:ll /etc/libvirt/qemu/networks/autostart
网络配置文件XML
文件路径:ls /etc/libvirt/qemu/networks/
文件路径:ls /etc/libvirt/qemu/networks/autostart/
存储池配置文件XML
文件路径:ls /etc/libvirt/storage
文件路径:ls /etc/libvirt/storage/autostart
镜像文件(磁盘文件)
文件路径:ls /var/lib/libvirt/images
KVM虚拟机CPU热添加
能够通过virsh命令为虚拟机添加CPU
键入命令:virsh setvcpus smartgo_01 4 --live
设置CPU 主机名 核数
KVM虚拟机内存气球应用
Kvm内存气球技术可以对虚拟机使用的内存按需调节,从而提高内存的利用率。
Linux默认支持内存气球
宿主机内存气球配置
检查是否有内存气球功能:virsh dumpxml centos7.6 |grep memballoon -c2
虚拟机内存气球配置
查看内存气球命令:virsh qemu-monitor-command centos7.6 --hmp --cmd info balloon
添加内存气球命令:virsh qemu-monitor-command centos7.6 --hmp --cmd balloon 2048
附件: 虚拟化.docx 1.09MB 下载次数:0次
KVM 虚拟化
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。