Linux虚拟化技术KVM

虚拟化基础

现在大行其道的云服务器,云计算等都是虚拟化技术。阿里云、腾讯云…他们提供出来的云服务器都是虚拟机,这些虚拟机底层都依赖于KVM。虚拟化是云的基础。

什么是虚拟化

虚拟化(Virtualization)是一种资源分配和管理技术,是将计算机的各种硬件资源,比如CPU、内存、磁盘空间、网络适配器等,进行抽象转换后虚拟出来的设备,可以实现灵活地分割、并组合为一个或多个计算机配置环境,并还支持重新分割、重新组合,以达到最大化合理利用物理资源的目的。

参考资料:https://www.vmware.com/solutions/virtualization.html

在这里插入图片描述

虚拟化优势

虚拟化优势包括
  1.资源超分,如实际的物理内存只有128G,可以给虚拟机分配200G内存
  2.降低资金成本和运维成本
  3.最大限度减少或消除停机
  4.提高IT部门的工作效率和响应能力
  5.加快应用和资源的调配速度
  6.提高业务连续性和灾难恢复能力
  7.简化数据中心管理
  8.减少资源,比如IP和端口的冲突

在这里插入图片描述

虚拟机

虚拟计算机称为“虚拟机"(VM,Virtual Machine),它是一种严密隔离且内含操作系统和应用的软件容器。

每个虚拟机都是完全独立的。

通过将多台虚拟机放置在一台物理计算机上,可仅在一台物理服务器或"主机"上运行多个操作系统和应用,名为"hypervisor"的精简软件层可将虚拟机与主机分离开来,并根据需要为每个虚拟机动态分配计算资源。

虚拟机的主要特征

在这里插入图片描述

Hypervisor类型

Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,其可以允许多个操作系统和应用共享底层的内存、CPU、磁盘等物理硬件,也可叫做VMM ( virtual machine monitor),即虚拟机监视器。

Hypervisor是所有虚拟化技术的核心,非中断地支持多工作负载迁移的能力是Hypervisor的基本功能,当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。

Hypervisor允许多种操作系统在相同的物理系统中运行。

Hypervisor控制硬件并向来宾操作系统提供访问底层硬件的途径.。

Hypervisor向来宾操作系统提供虚拟化的硬件

类型1:裸金属型

直接运行在物理机的Hypervisor上,这种架构搭建的虚拟化环境称为裸机虚拟化环境(Bare-Metal Hardware)。

类型2:宿主型

即需要运行在具有虚拟化功能的操作系统上的Hypervisor,构建的是主机虚拟化环境(Hosted Virtualization)。

KVM概述

官网:https://linux-kvm.org/page/Main_Page

KVM 全称是 Kernel-based Virtual Machine(基于Linux内核的虚拟机)是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko 提供和虚拟化核心架构和处理器规范模块。

在这里插入图片描述
红帽KVM介绍:https://docs.redhat.com/zh_hans/documentation

RedHat创建虚拟机数量限制:https://access.redhat.com/articles/rhel-kvm-limits
在这里插入图片描述

KVM体系结构

在这里插入图片描述
KVM: 初始化CPU硬件,打开虚拟机模式,负责CPU,内存,中断控制器,时钟.由内核模块kvm_xxx.ko实现,工作于hypervisor,设备/dev/kvm,是一个字符设备,在用户空间可通过ioctI()系统调用来完成VM创建、启动,为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、时钟等管理功能

QEMU进程:工作于用户空间,主要用于实现模拟IO设备,如显卡,网卡,硬盘等, qemu-kvm进程:工作于用户空间,用于实现一个虚拟机实例

Libvirt:提供统一API,守护进程libvirtd和相关工具,如:virsh,virt-manager等

KVM模块载入后的系统运行模式

在这里插入图片描述

内核模式: HostOS执行IO类操作,或其它的特殊指令的操作;称作内核模式
用户模式: GuestOS的I/O类操作
来宾模式: GuestOS非I/O类操作,称作虚拟机的用户模式更贴切

KVM集中管理和控制

KVM是运行在单机的系统,需要其它软件实现跨主机的统一的管理。常见的虚拟化管理平台如下:

https://www.linux-kvm.org/page/Management_Tools

在这里插入图片描述
oVirt
功能强大,是Redhat虚拟化管理平台RHEV的开源版本。
https://www.ovirt.org/

WebVirtMgr
http://www.webvirtmgr.net/
virt-manager的Web模式的替代品

OpenStack
最主流的开源虚拟化管理平台

Proxmox virtualization environment
简称PVE,是一个开源免费的基于Linux的企业级虚拟化方案,功能不输专业收费的VMware。是一个完整的企业虚拟化开源平台。借助内置的Web界面,您可以轻松管理VM和容器,软件定义的存储和网络,高可用性集群以及单个解决方案上的多个开箱即用工具。

宿主机环境准备

KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能。

安装KVM工具包

KVM相关工具包介绍

1.qemu-kvm: 为kvm提供底层仿真支持。

2.libvirt-daemon: libvirtd守护进程,管理虚拟机。

3.libvirt-client:用户端软件,提供客户端管理命令。

4.libvirt-daemon-driver-qemu: libvirtd连接qemu的驱动。

5.libvirt: 使用最多的KVM虚拟化管理工具和应用程序接口,即通过libvirt调用KVM创建虚拟机,
  libvirt是KVM通用的访问API,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化方案。
  
6.virt-manager:图形界面管理工具.其底层也是调用libvirt API来完成对虚拟机的操作,包括虚拟机的创建、删除、启动、停止以及一些简单的监控功能等。

7.virt-install:虚拟机命令行安装工具。

8.virsh:命令行工具是基于libvirt API创建的命令行工具,它可以作为图形化的virt-manager应用的备选工具。virsh 命令可以被用来创建虚拟化任务管理脚本,如安装、启动和停止虚拟机。

9.virt-viewer:通过VNC和SPICE协议显示虚拟机器图形控制台的最小工具。该工具在其同名软件包中: virtviewer。

10.cockpit: CentOS8专门提供的基于Web的虚拟机管理界面。

libvirt包功能

在这里插入图片描述

官网:https://www.libvirt.org/

libvirt程序包是一个与虚拟机监控程序相独立的虚拟化应用程序接口,它可以与操作系统的一系列虚拟化性能进行交互。

libvirt程序包提供:
一个稳定的通用层来安全地管理主机上的虚拟机。
一个管理本地系统和连网主机的通用接口。

在虚拟机监控程序支持的情况下,部署、创建、修改、监测、控制、迁移以及停止虚拟机操作都需要这些API。尽管libvirt 可同时访问多个主机,但API只限于单节点操作

libvirt程序包被设计为用来构建高级管理工具和应用程序,例如virt-manager与virsh命令行管理工具。libvirt主要的功能是管理单节点主机,并提供API来列举、监测和使用管理节点上的可用资源,其中包括CPU、内存、储存、网络和非一致性内存访问(NUMA)分区。管理工具可以位于独立于主机的物理机上,并通过安全协议和主机进行交流。

libvirt结构图

在这里插入图片描述

安装KVM相关包

CentOS安装KVM

使用虚拟化,需要至少qemu-kvm和qemu-img(安装qemu-kvm会自动安装)软件包
建议安装: yum install qemu-kvm libvirt virt-manager virt-install
范例: Centos 8安装KVM相关工具

[root@centos8 ~]#yum -y install qemu-kvm libvirt virt-manager virt-install virt-viewer
[root@centos8 ~]#systemctl start --now libvirtd

范例: CentOS8还提供基于Web的虚拟机管理方式

[root@centos8 ~]#yum -y insta1l cockpit cockpit-machines
[root@centos8 ~]#systemctl enable --now cockpit.socket

#打开浏览器,访问以下地址:
https://centos8主机ip:9090

Ubuntu安装KVM

官方文档:https://ubuntu.com/server/docs/libvirt

# apt insta11 qemu-kvm virt-manager libvirt-daemon-system
# kvm-ok #验证是否支持kvm,只有ubuntu支持,centos不支持
INFO: /dev/kvm exists
KVM acceleration can be used
[root@ubuntu1804 ~]#apt -y install qemu-kvm virt-manager libvirt-daemon-system
#如果没有开启CPU虚拟化功能会提示以下信息
[root@ubuntu1804~]#kvm-ok
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used

#添加CPU的虚拟化支持再执行
[root@ubuntu1804~]#kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值