当前位置: 首页 > news >正文

虚拟化介绍

虚拟化理论介绍

什么是虚拟化:

虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统。

在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。

随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性。

常用的虚拟化产品:

1.Kvm(redhat)企业级

2.Vmware:

Vmware-workstation(windows和linux)桌面级

Vmware-fusion(mac)

Vmware-esxi(企业级别)本身就是一个操作系统

3.hyper-v(微软)

4.Ovm(oracle公司–Windows linux) virtulbox

5.Xen(rhel6之前所有版本默认用的虚拟化产品)

虚拟化技术的分类:

平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化//针对计算机操作系统。

资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。

应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等,把硬件的东西变成了一个应用。

我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor(虚拟监控器VMM) 或Hypervisor,隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。

平台虚拟化类型:

操作系统虚拟化:有一个非常常见的操作系统叫openvz。特点是所有的虚拟机共享宿主机的内核。

全虚拟化(Full Virtualization):

全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统,或其它系统软件,完全不做任何修改就可以在虚拟机中运行。

现在的kvm与vmware都支持全虚拟化

全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源

半虚拟化(Para Virtualization):

半虚拟化(也叫超虚拟化)是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。因为操作系统自身能够与虚拟进程进行很好的协作。

半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。

硬件辅助虚拟化:

硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。

企业级虚拟化与桌面级虚拟化的区别:

桌面级虚拟化:

App —在安装APP,通过App实现各种功能

guestos —客户机也叫客户操作系统

vmware-workstation(hypervisor(虚拟机管理程序)+图形管理工具)

os

硬件

企业级虚拟化:

App(图形管理工具)

guestos

os+hypervisor:在操作系统级别加上了虚拟机管理程序

硬件

KVM虚拟化技术简介

image-20240302153501027

KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。

KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。

KVM 是作为内核模块实现的

KVM安装

KVM虚拟化技术简介

kvm架构图

image-20240302153532412

从rhel6开始使用 直接把kvm的模块做成了内核的一部分

xen用在rhel6之前的企业版中 默认内核不支持,需要重新安装带xen功能的内核

KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。

这个 hypervisor 提供 x86 虚拟化,同时拥有到 PowerPC® 和 IA64 的通道。另外,KVM 最近还添加了对对称多处理(SMP)主机(和来宾)的支持,并且支持企业级特性,比如活动迁移(允许来宾操作系统在物理服务器之间迁移)。

KVM 是作为内核模块实现的,因此 Linux 只要加载该模块就会成为一个hypervisor。KVM 为支持 hypervisor 指令的硬件平台提供完整的虚拟化(比如 Intel® Virtualization Technology [Intel VT] 或 AMD Virtualization [AMD-V] 产品)。KVM 还支持准虚拟化来宾操作系统,包括 Linux 和 Windows®。

这种技术由两个组件实现。第一个是可加载的 KVM 模块,当在 Linux 内核安装该模块之后,它就可以管理虚拟化硬件,并通过 /proc 文件系统公开其功能。第二个组件用于 PC 平台模拟,它是由修改版 QEMU 提供的。QEMU 作为用户空间进程执行,并且在来宾操作系统请求方面与内核协调。

当新的操作系统在 KVM 上启动时(通过一个称为 kvm 的实用程序),它就成为宿主操作系统的一个进程,因此就可以像其他进程一样调度它。但与传统的 Linux 进程不一样,来宾操作系统被 hypervisor 标识为处于 “来宾” 模式(独立于内核和用户模式)。

每个来宾操作系统都是通过 /dev/kvm 设备映射的,它们拥有自己的虚拟地址空间,该空间映射到主机内核的物理地址空间。如前所述,KVM 使用底层硬件的虚拟化支持来提供完整的(原生)虚拟化。I/O 请求通过主机内核映射到在主机上(hypervisor)执行的 QEMU 进程。

KVM 在 Linux 环境中以主机的方式运行,不过只要底层硬件虚拟化支持,它就能够支持大量的来宾操作系统.

硬件的虚拟化支持来提供完整的(原生)虚拟化。I/O 请求通过主机内核映射到在主机上(hypervisor)执行的 QEMU 进程。

KVM 在 Linux 环境中以主机的方式运行,不过只要底层硬件虚拟化支持,它就能够支持大量的来宾操作系统.

相关文章:

  • 在Pycharm中运行Django项目如何指定运行的端口
  • Java中的图数据库应用:Neo4j入门
  • 【MySQL】MySQL复合查询--多表查询自连接子查询 - 副本
  • 多益网络这种公司你还敢来吗?
  • selenium中webdriver常用的ChromeOptions参数
  • 从键盘输入5个整数,将这些整数插入到一个链表中,并按从小到大次序排列,最后输出这些整数。
  • Golang 并发机制 CSP模型
  • VR转接器:破解虚拟与现实边界的革命性设备
  • 深入理解CSS常见选择器
  • ★【二叉搜索树】【中序遍历+前后指针】Leetcode 530. 二叉搜索树的最小绝对差
  • osi模型,tcp/ip模型(名字由来+各层介绍+中间设备介绍)
  • Mysql索引学习
  • Unity(第十七部)Unity自带的角色控制器
  • 数据结构与算法:堆
  • Carla自动驾驶仿真九:车辆变道路径规划
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 0基础学习移动端适配
  • canvas绘制圆角头像
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript学习总结——原型
  • Java的Interrupt与线程中断
  • JS函数式编程 数组部分风格 ES6版
  • leetcode讲解--894. All Possible Full Binary Trees
  • Less 日常用法
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • php ci框架整合银盛支付
  • React Native移动开发实战-3-实现页面间的数据传递
  • ReactNativeweexDeviceOne对比
  • SOFAMosn配置模型
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • SQLServer之创建显式事务
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue-cli3搭建项目
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Vue实战(四)登录/注册页的实现
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 利用jquery编写加法运算验证码
  • 码农张的Bug人生 - 见面之礼
  • 前端性能优化——回流与重绘
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何优雅地使用 Sublime Text
  • 使用 Docker 部署 Spring Boot项目
  • 首页查询功能的一次实现过程
  • 责任链模式的两种实现
  • 怎么将电脑中的声音录制成WAV格式
  • Java总结 - String - 这篇请使劲喷我
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (TOJ2804)Even? Odd?
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (九十四)函数和二维数组