自学内容网 自学内容网

KVM虚拟化技术介绍

文章目录


前言

虚拟化技术是云计算的基础,什么是虚拟化?虚拟化技术的本质是什么?主流的虚拟化技术有哪些?本章将为您揭晓


 一.虚拟化概述

虚拟化是一种将计算机资源(例如cpu、内存、存储等)进行抽象和隔离的技术。它可以将一台物理计算机划分为多个虚拟计算机,每个虚拟计算机可以运行独立的操作系统和应用程序。

虚拟化特点 

特点概述
分区虚拟化层为每个虚拟机划分服务器资源,每个虚拟机可以运行单独的操作系统且每个操作系统只能看到虚拟化层为其提供的“虚拟硬件(虚拟网卡,cpu,内存等)”,使得操作系统认为运行在自己的专用服务器上。
隔离

每台虚拟机互相隔离,单台虚拟机中毒或崩溃不会影响其它虚拟机;

虚拟化环境通常涉及共享物理资源,如CPU、内存和存储。可以为每台虚拟机指定最大或最小资源,防止一个虚拟机消耗过多资源导致其他虚拟机性能下降。

封装虚拟化技术将虚拟单元的所有环境存放在一个单独的文件中,这种封装性使得整个磁盘分区被存储为一个文件,从而易于备份、转移和拷贝
相对于硬件独立虚拟机只能看见虚拟层为其提供的虚拟硬件,而虚拟硬件与物理硬件相互独立

 虚拟化优势

利用虚拟化技术可以防止资源浪费,同时虚拟机的隔离性可以防止多个服务安装在同一个操作系统中时,操作系统出问题,所有服务都会出问题,此外虚拟化的克隆,快照功能使得备份更加容易。

内存虚拟化

内存虚拟化将物理内存抽象成虚拟地址空间,使得每个虚拟机(VM)拥有独立的、连续的内存地址空间。

Hypervisor维护了一个地址映射表(页表),用于记录虚拟地址(HPA)到物理地址(GPA)的映射关系。当虚拟机中的程序需要执行时,它首先会被加载到虚拟机的虚拟内存中,然后被映射到物理内存中。

CPU 虚拟化 

CPU虚拟化允许单个物理CPU模拟出多个虚拟CPU(vCPU),同时在物理CPU和虚拟机之间引入一个虚拟机管理程序(Hypervisor),每个虚拟机被分配至少一个vCPU,这些vCPU由Hypervisor映射到物理CPU上。

在理想情况下,每个物理线程可以被映射为一个vCPU。因此,对于一颗8核双线程CPU,其理论上可以映射出16个vCPU(8个核心 x 2个线程/核心 = 16个线程/vCPU)

当虚拟机运行程序时,虚拟CPU会生成内存地址,虚拟CPU通过地址总线发送该内存地址到内存芯片,内存芯片根据该内存地址找到存储程序的存储单元,存储单元通过地址总线返回给虚拟CPU,而Hypervisor将虚拟内存地转换为物理内存地址,vCPU执行物理存储单元返回的程序。

I/O流虚拟化 

Hypervisor在物理硬件上抽象出一个虚拟化层,这个虚拟化层负责将物理设备(如键盘)抽象成多个虚拟设备,供多个虚拟机共享。对于键盘等输入设备,VMM会截获虚拟机对设备的访问请求,并进行相应的处理和模拟,以确保输入数据能够正确地传递给虚拟机。

  1. 输入切换机制

    • 在使用物理机键盘对虚拟机进行输入时,需要在物理机和虚拟机之间进行输入切换。这通常通过特定的按键组合(如Ctrl+Alt)或鼠标点击来实现。
    • 当输入对象切换到虚拟机时,所有键盘输入都会被虚拟机捕获并处理;当输入对象切换回物理机时,键盘输入则会被物理机捕获。
  2. 中断处理与数据传输

    • 当虚拟机接收到键盘输入时,会产生中断信号。VMM负责截获这些中断信号,并将其转发给虚拟机中的设备模拟器(如QEMU)。
    • 设备模拟器或驱动程序会处理这些输入数据,并将其传递给虚拟机中的应用程序或操作系统。

 二.KVM概述

KVM本质是Linux内核中的虚拟化模块kvm.ko,KVM运行在内核空间中提供CPU和内存虚拟化,而IO设备虚拟化由运行在用户空间中的QEMU负责。

QEMU工作原理 

  1. 硬件虚拟化初始化

    • 当运行QEMU-KVM时,KVM会加载到Linux内核中,并提供了对CPU和内存虚拟化的支持。
  2. 虚拟机创建与配置

    • 用户通过QEMU提供的工具或界面来创建和配置虚拟机。这些配置信息包括虚拟机的名称、CPU类型、内存大小、磁盘大小等。
    • QEMU将这些配置信息传递给KVM,KVM利用这些信息来创建一个虚拟机实例,并为虚拟机分配必要的资源。
  3. 指令翻译与执行

    • 当客户机操作系统开始运行时,它会发出一系列的指令。这些指令首先被QEMU接收。
    • QEMU使用动态二进制翻译(DBT)技术将这些指令翻译成宿主机能够理解的指令。然后,宿主机的处理器执行这些指令,并将结果返回给虚拟机。
  4. IO设备模拟与交互

    • 虚拟机中的客户机操作系统与IO设备的交互是通过QEMU模拟器来实现的。
    • 当虚拟机中的客户机操作系统请求访问IO设备时,QEMU模拟器会将这些请求转发到宿主机的IO设备。然后,宿主机的IO设备处理这些请求,并将结果返回给虚拟机。

三.KVM部署

  • 虚拟机管理工具:libvirt
  • 虚拟机安装/克隆工具:virt
  • 虚拟机硬盘管理:qemu-kvm
  • virt-manager:KVM图形化管理工具和Vmware功能相同
  • libguestfs-tools:虚拟机系统管理工具

准备工作:开启VMware虚拟化功能 

命令行查看虚拟化功能是否开启(开启则会显示)
[root@localhost ~]# lsmod |grep -i kvm
kvm_intel             385024  0
kvm                  1105920  1 kvm_intel
irqbypass              16384  1 kvm

准备工作:安装远程控制软件 --->远程控制软件地址

准备工作:安装yum源

配置yum源(这里使用阿里源)
[root@timeserver yum.repos.d]# vim /etc/yum.repos.d/wangluo.repo
#写入如下内容
[wangluo-app]
name=wanluo-app
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
gpgcheck=0
[wangluo-base]
name=wangluo-base
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
gpgcheck=0

#安装软件包
[root@timeserver yum.repos.d]# yum install vim bash-completion -y
#出现完毕字样代表成功安装

 第二步:安装上述三种工具并上传虚拟机所用镜像文件

[root@localhost ~]# yum install -y libvirt virt-install qemu-kvm virt-manager libguestfs-tools
#启动虚拟机管理工具
[root@localhost ~]# systemctl start libvirtd.service
[root@localhost ~]# systemctl status libvirtd.service
#上传镜像文件
[root@localhost ~]# ls -lh /opt
总用量 8.5G
-rw-r--r--. 1 root root 8.5G 10月  7 17:23 rhel-baseos-9.1-x86_64-dvd.iso

 第三步:安装虚拟机

#启动KVM图形化管理工具
[root@localhost ~]# virt-manager
#查看虚拟机状态
[root@localhost ~]# virsh list --all

命令行安装方式可参考如下 -->VNC下载链接

--virt-type kvm                                 虚拟化的类型(gemu)
 --os-type=linux                                系统类型
--os-variant rhel7                              系统版本 
--name centos7                                  虚拟机的名字
--memory 1024                                   虚拟机的内存
--vcpus 1                                       虚拟cpu的核数
--disk /opt/centos2.raw, format=raw, size=10    虚拟机安装路径,虚拟磁盘格式,磁盘大小
--cdrom /opt/CentOS-7-x86 64-DVD-1708.iso       虚拟机镜像    
--network network=default                       虚拟机网络(默认NAT)
--graphics vnc,listen=0.0.0.0                   设置虚拟机的显示器使用vnc连接(默认开5900口)
--noautoconsole

KVM-virsh日常管理命令

#查看KVM虚拟机状态
[root@localhost ~]# virsh list --all
 Id   名称      状态
----------------------
 1    rhel9.1   运行

#关闭KVM虚拟机
[root@localhost ~]# virsh destroy rhel9.1
域 'rhel9.1' 已销毁

#删除KVM虚拟机
[root@localhost ~]# virsh undefined rhel9.1

#

 


总结


原文地址:https://blog.csdn.net/zhoutong2323/article/details/142708278

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!