Linux虚拟化技术KVM

文章目录

  • 虚拟化基础
    • 什么是虚拟化
    • 虚拟化优势
    • 虚拟机
    • 虚拟机的主要特征
    • Hypervisor类型
      • 类型1:裸金属型
      • 类型2:宿主型
  • KVM概述
    • KVM体系结构
    • KVM模块载入后的系统运行模式
    • KVM集中管理和控制
    • 宿主机环境准备
  • 安装KVM工具包
    • libvirt包功能
    • libvirt结构图
    • 安装KVM相关包
      • CentOS安装KVM
      • Ubuntu安装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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3281029.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux AMBA 驱动:DMA 控制器 PL330 驱动简析

文章目录 1. 前言2. 背景3. PL330 简介4. PL330 驱动加载流程4.1 PL330 设备注册流程4.2 PL330 驱动加载流程 5. 小结6. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 本文基于…

鸿蒙对接极光推送时候报错1000900010,厂商token获取失败

在AppGallery Connect上配置项目的调试证书,然后手动导入,不要用IDE的自动构建证书: https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/

探索Python的加速神器:CyToolz,让数据处理快如闪电!

文章目录 探索Python的加速神器:CyToolz,让数据处理快如闪电!背景:为何选择CyToolz?CyToolz是什么?如何安装CyToolz?五个简单函数的使用方法1. cytoolz.curry2. cytoolz.map3. cytoolz.reduce4.…

(十)联合概率数据互联原理及应用(JPDA)

目录 前言 一、JPDA原理及算法步骤 (一)算法步骤 1.确认矩阵计算 2.确认矩阵拆分 3.互联概率计算 4.状态及协方差更新 二、仿真验证 (一)模型构建 (二)仿真结果 总结 引用文献 前言 本文主要针…

微软:警惕利用VMware ESXi进行身份验证绕过攻击

微软于7月29日发布警告,称勒索软件团伙正在积极利用 VMware ESXi 身份验证绕过漏洞进行攻击。 该漏洞被追踪为 CVE-2024-37085,由微软安全研究人员 Edan Zwick、Danielle Kuznets Nohi 和 Meitar Pinto 发现,并在 6 月 25 日发布的 ESXi 8.0 …

吴恩达机器学习C1W2Lab05-使用Scikit-Learn进行线性回归

前言 有一个开源的、商业上可用的机器学习工具包,叫做scikit-learn。这个工具包包含了你将在本课程中使用的许多算法的实现。 目标 在本实验中,你将: 利用scikit-learn实现使用梯度下降的线性回归 工具 您将使用scikit-learn中的函数以及matplotli…

c#中使用数据验证器

前言 在很多情况下,用户的输入不一定满足我们的设计要求,需要验证输入是否正确,传统的方案是拿到控件数据进行逻辑判定验证后,给用户弹窗提示。这种方法有点职责延后的感觉,数据视图层应该很好的处理用户的输入。使用…

STM32DMA数据传输

我估计大多数人学这么久连听说都没听说过DMA,更不用提知道它是干嘛的。其实DMA的本质就是一个数据的搬运工。平常的时候当我们没有配置的时候,一直都是CPU在搬运数据,但是这个活又累又没有技术含量,所以DMA的重要性还是有的。 1.…

YOLOv9最新最全代码复现(论文复现)

YOLOv9最新最全代码复现(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 YOLOv9最新最全代码复现(论文复现)引言YOLOv9模型概述模型框架图环境搭建及训练推理环境配置数据集准备训练过程测试和评估实践应用 报错修…

【机器学习西瓜书学习笔记——神经网络】

机器学习西瓜书学习笔记【第四章】 第五章 神经网络5.1神经元模型5.2 感知机与多层网络学习感知机学习率成本/损失函数梯度下降 5.3 BP神经网络(误差逆传播)5.4 全局最小与局部极小5.5 其他常见神经网络RBF网络RBF 与 BP 最重要的区别 ART网络 第五章 神…

Vue组件库移动端预览实现原理

引言 大家如果使用过移动端组件库(比如:Vant),会发现在网站右侧有一个手机端的预览效果。 而且这个手机端预览的内容和外面的组件代码演示是同步的,切换组件的时候,移动端预览的内容也会发生相应的变化。 …

守护线程(Daemon Threads)详解:与非守护线程的区别

守护线程(Daemon Threads)详解:与非守护线程的区别 1、守护线程是什么?2、守护线程与非守护线程的区别2.1 JVM关闭行为2.2 任务性质2.3 线程设置2.4 示例代码 3、总结 💖The Begin💖点点关注,收…

pytorch 绘制Depth Anything网络结构

pytorch 绘制模型的网络结构有很多中方法,个人比较喜欢 torchview 生成的 Graphviz 风格的图片。 Graphviz介绍 Graphviz是一款开源的图形可视化软件,其名称来源于“Graph Visualization Software”的缩写。它通过使用一种名为DOT的描述语言来定义图形…

不踩雷的护眼大路灯有哪些?五款盲选不踩雷的护眼大路灯推荐

不踩雷的护眼大路灯有哪些?作为一名专业的实测博主温馨提示大家,虽然护眼落地灯是个好东西,它能够提供柔和舒适的环境光,减少对眼睛的伤害,但是千万别乱买跟风,盲目入手踩雷率80%以上。那么如何辨别一盏护眼…

创客项目秀 | 基于 XIAO 开发板的语音向导

背景 柴火创客空间作为大湾区科技创新的窗口,每年到访空间的社区伙伴众多,为了更好的进行空间信息交互,我们希望有一个装置是可以解决:当空间管理员不在现场的时候,到访者可以通过装置获得清晰的介绍与引导。 为了解…

vue2 封装插槽组件

安装 element-ui npm install element-ui --save ---force main.js 导入 import Vue from vue; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import App from ./App.vue; Vue.use(ElementUI); new Vue({ el: #app, render: h > h(Ap…

全渠道AI数字化商品管理 零售品牌增长“超级引擎”

随着“流量红利”时代的终结 品牌面临增速放缓、利润下滑的双重挑战。 消费者的诉求日益理性和个性化, 国内外品牌角逐市场份额 A1、大数据等先进技术迅猛发展 品牌商品计划管理变得更加复杂而多维。 零售品牌正加速数字化与全渠道融合以应对挑战。 可持续盈利…

对于一家企业来说,电气数字化是否有那么重要?

时代大背景下,尤其是在复杂的国际与社会环境交织之中,全社会的“数字化”转型已成必然之势。对于电子产业而言,“数字化”无疑是重大机遇。 众所周知,在蒸汽机时代,身为机械工程师堪称幸运,彼时涌现出众多…

MySQL 将查询结果导出到文件(select … into Statement)

我们经常会遇到需要将SQL查询结果导出到文件,以便后续的传输或数据分析的场景。为了满足这个需求,MySQL的select语句提供了into子句可以将的查询结果直接导出到文本文件。本文就MySQL中select…into的用法进行演示。 文章目录 一、select…into语句简介…

AWS账号注册:AWS 用借记卡注册是否有风险?

亚马逊云服务(Amazon Web Services,简称 AWS)作为全球领先的云服务提供商,吸引了众多企业和个人用户。注册 AWS 账户时,提供支付方式是必要的步骤,许多用户会选择使用借记卡来完成注册。那么,使…