KVM虚拟化技术(上)

举报
当她睡着时 发表于 2021/07/09 20:52:18 2021/07/09
【摘要】 KVM虚拟化技术(上)虚拟化技术概述虚拟化技术即是对资源的抽象从资源提供角度分类2.1平台虚拟化如果把X86平台的CPU,内存和外设作为资源,那对应的虚拟化技术就是平台虚拟化,在同一个X86平台上面,可以虚拟多个X86平台,每个平台可以运行自己独立完整的操作系统。例如:QEMU、KVM、XEN Server、EXSi、Hyper-V等所管理的虚拟机2.2操作系统虚拟化如果把操作系统及其提供的...

KVM虚拟化技术(上)

  • 虚拟化技术概述
  1. 虚拟化技术即是对资源的抽象
  2. 从资源提供角度分类

2.1平台虚拟化

如果把X86平台的CPU,内存和外设作为资源,那对应的虚拟化技术就是平台虚拟化,在同一个X86平台上面,可以虚拟多个X86平台,每个平台可以运行自己独立完整的操作系统。

例如:QEMU、KVM、XEN Server、EXSi、Hyper-V等所管理的虚拟机

2.2操作系统虚拟化

如果把操作系统及其提供的系统调用作为资源,那虚拟化就表现为操作系统虚拟化,例如Linux容器虚拟化技术就是在同一个Linux操作系统之上,虚拟出多个同样的操作系统,每个应用程序认为自己运行在一个独立的OS。

例如:LXC或Docker等所管理的容器。

 

总结:

  • 虚拟化的分类
  • 从谁提供了资源的角度分类
  • 硬件平台虚拟化(把CPU、内存当作资源,提供给虚拟机使用)
  • 操作系统的虚拟化(把操作系统及系统调用功能,提供给虚拟机使用)
  1. 从虚拟化实现方式分类

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虚拟机管理工具部署
  1. KVM系统需求
  • 1核心
  • 2G内存
  • 6G硬盘

KVM虚拟机管理工具环境检查

  • 支持硬件辅助全虚拟化:lscpu 查看虚拟化位置
  • CPU有无相关特性

SVM

VMX

  • 有无KVM模块

键入命令:lsmod kvm

 

 

  1. 虚拟化主机部署
  2. 列出查看安装分组的情况:yum grouplist

 

  1. 安装虚拟化组:yum -y groupinstall “虚拟化*”

 

  1. 虚拟化主机验证
  2. 启动libvirtd:systemctl start libvirtd
  3. 查看libvirtd状态:systemctl status libvirtd
  4. 检查是否加载kvm模块:lsmod | grep “kvm”
  5. 如果没有加载kvm模块,请使用:modprobe kvm

 

 

  1. 虚拟机网络连接状态
  • 防火墙

 

  • 网络

 

 

 

 

 

 

  • KVM虚拟机安装
  1. virt-manager

 

 

 

  1. 通过virt-install安装
  2. 案例一

键入命令: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虚拟机组成文件
  1. KVM虚拟机查看方法

查看正在运行的虚拟机:virtsh list

查看所有虚拟机:virtsh list --all

  1. 虚拟机配置文件XML

 

  1. 设定vm自动运行

键入命令:virsh autostart smtargo_01

文件路径:ls /etc/libvirt/qemu/autostart/

文件路径:ll /etc/libvirt/qemu/networks/autostart

 

  1. 网络配置文件XML

文件路径:ls /etc/libvirt/qemu/networks/

文件路径:ls /etc/libvirt/qemu/networks/autostart/

  1. 存储池配置文件XML

文件路径:ls /etc/libvirt/storage

文件路径:ls /etc/libvirt/storage/autostart

  1. 镜像文件(磁盘文件)

文件路径:ls /var/lib/libvirt/images

 

 

 

 

  • KVM虚拟机CPU热添加

能够通过virsh命令为虚拟机添加CPU

键入命令:virsh setvcpus smartgo_01 4 --live

                设置CPU   主机名  核数

 

  • KVM虚拟机内存气球应用

Kvm内存气球技术可以对虚拟机使用的内存按需调节,从而提高内存的利用率。

Linux默认支持内存气球

  1. 宿主机内存气球配置

检查是否有内存气球功能:virsh dumpxml centos7.6 |grep memballoon -c2

  1. 虚拟机内存气球配置

查看内存气球命令:virsh qemu-monitor-command centos7.6 --hmp --cmd info balloon

添加内存气球命令:virsh qemu-monitor-command centos7.6 --hmp --cmd balloon 2048

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。