aws 整理和理解aws的虚拟化技术

news2024/12/23 8:59:45

资料

  • Introduce_to_virtualization
  • KVM I/O虚拟化
  • AWS EC2 Virtualization 2017: Introducing Nitro
  • 从AWS转向KVM,再看KVM与XEN的技术路线之争

简单整理并了解下和aws相关的虚拟化技术

虚拟化技术

相关概念

Hypervisor

Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统。可以协调访问服务器上的所有的物理设备和虚拟机,也叫虚拟机监视器。Hypervisor是所有虚拟化技术的核心。当服务器启动并执行Hypervisor时,他会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统,常见的产品有Vmware、KVM、Xen等

Xen

Xen是运行在裸机上的虚拟化管理程序(HyperVisor),是半虚拟化(Para-Virtualization)技术的典型代表。Xen的管理VM为Dom0,虚拟机操作系统被称做DomU。管理VM负责管理整个硬件平台上的所有输入输出设备驱动,半虚拟化中的Hypervisor不对I/O设备作模拟,而仅仅对CPU和内存做模拟

图片

KVM

KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是一个基于Linux环境的开源虚拟化解决方案,最早由以色列Qumranet公司开发,在2006年10月出现在Linux内核的邮件列表上,并于2007年2月被集成到Linux 2.6.20内核中,成为内核的一部分

QEMU

KVM并不是一个完整的模拟器,而只是一个提供了虚拟化功能的内核插件,具体的模拟器工作需要借助QEMU来完成。QEMU(Quick Emulator)仿真所有硬件,包括BIOS、IDE控制器、VGA显示卡、USB控制器和网卡等

图片

DPDK

什么是DPDK?

包处理任务存在内核态与用户态的切换,以及多次的内存拷贝,系统消耗变大,以CPU为核心的系统存在很大的处理瓶颈。为了提升在通用服务器(COTS)的数据包处理效能,Intel推出了服务于IA(Intel Architecture)系统的DPDK技术。DPDK应用程序运行在操作系统的User Space,利用自身提供的数据面库进行收发包处理,绕过了Linux内核态协议栈,以提升报文处理效率。

DPDK将来会成为趋势吗?

DPDK主要解决网络虚拟化之后性能大幅度降低的问题。最初性能的瓶颈在于硬件本身。而如今硬件的性能越来越高,内核软件方面已经非常滞后。

  • 内核软件栈太长。以存储I/O为例,用户软件发送一个I/O请求,要经过虚拟文件系统、文件系统、通用块设备层、块设备调度层、驱动层等等。经过一层层的的系统软件,一个I/O才能落盘
  • 系统要在内核态与用户态之间不断切换,涉及到上下问切换以及内存拷贝问题,耗费了大量的CPU资源。
  • 内核大量的中断模式,起初中断模式的设计是在于硬件处理速度较慢,因此采用中断的模式可以避免忙等,待硬件处理完I/O后中断通知CPU。在目前硬件性能如此之快的情况下,中断模式反而不适合

用户态协议栈绕过内核,可以直接操作裸设备。用户态软件栈使用了polling模式,来避免中断模式所产生的瓶颈

SR-IOV

  • 如何在Amazon EKS中部署SR-IOV设备插件

SR-IOV 的全称是 Single Root I/O Virtualization,SR-IOV标准允许在虚拟机之间高效共享PCIe(快速外设组件互连)设备,由于它是在硬件中实现的,所以可以获得能够与本机性能接近的I/O性能。SR-IOV 使用 physical functions (PF) 和 virtual functions (VF) 为 SR-IOV 设备管理全局功能。PF 包含SR-IOV 功能的完整PCIe设备,PF 作为普通的PCIe 设备被发现、管理和配置 。PF 通过分配VF 来配置和管理 SR-IOV 功能。

VF 是轻量级 PCIe 功能(I/O 处理)的 PCIe 设备,每个 VF 都是通过 PF 来生成管理的,VF 的具体数量限制受限于 PCIe 设备自身配置及驱动程序的支持,启用SR-IOV后,主机将在一个物理NIC上创建单个PF和多个VF。 VF的数量取决于配置和驱动程序支持。

虚拟化技术的分类

x86平台指令集分为4个特权模式:Ring0 、Ring1、Ring2、Ring3、OS工作在Ring0级别,应用软件工作在Ring3级别,驱动程序工作在Ring1和Ring2

img

  • 软件虚拟化:通过软件完全模拟cpu、芯片组、磁盘、网卡等计算机硬件。
  • 全虚拟化:通过VMM截取guestos的ring 0特权指令,转译为宿主机的指令最终由物理设备处理。此时Guestos不知道自身运行在虚拟机环境。
  • 半虚拟化:guestos将原先ring0级别的特权指令转换为supercall,仍旧和VMM交互但是不需要转译性能有所提升。但是需要修改OS内核,典型实现为XEN(dom0和domu)
  • 硬件辅助虚拟化:intel退出的VT-x技术,避免了指令的转译(除了少数客户端指令),基于硬件进行处理效率较高。当前不仅CPU指令有硬件虚拟化方案,I/O通信也有硬件解决方案,称为VT-d;网络通信的称为VT-c
  • 容器虚拟化:基于CGroups、Namespace对进程隔离,例如docker

aws ec2虚拟化发展

Amazon EC2 虚拟化技术演进:从 Xen 到 Nitro
在这里插入图片描述
按照时间顺序有如下发展轨迹

  • 早期的Xen虚拟化。Xen 实现了虚拟机的CPU 和内存虚拟化,但是虚拟机的I/O 访问,包括网络和存储等,都是通过虚拟机中的前端模块和 dom0 中的后端模块通信。I/O路径太长,降低了I/O性能。dom0还会和业务虚拟机抢占宿主机资源,很难实现管理虚机和业务虚机之间的平衡,以及避免抖动

  • 引入单根I/O虚拟化(SR-IOV),采用aws增强型网络(enhanced networking)(通过ixgbe驱动程序实现)

  • 引入EBS的硬件虚拟化技术,将远端存储以NMVe形式呈现给虚拟机

  • 发展增强网络实现为ENA(Elastic Network Adapter),使得虚拟机能够绕过内核和用户空间网络处理程序,直接操作网卡硬件。Nitro的首个专用硬件卡(完全的网络负载卸载硬件)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JaeKcH6e-1670333401554)(assets/image-20221206211252182.png)]

  • 发展实例存储,Annapurna Labs研发的Nitro存储卡管理的SSD磁盘

  • 替换Xeni架构,使用基于KVM的Nitro hypervisor 替换了Xen

Nitro技术

Nitro - Hypervisor + 网络/存储卡 + 安全芯片

Nitro卡

AWS Nitro 系统是模块化组件的集合,使用广泛的计算、存储、内存和网络选项来设计 EC2 实例(Nitro卡)

  • VPC Data Plane(用于VPC访问的Nitro卡):通过PCIe附加到宿主机上的一块定制网卡,支持网络封包和解包、安全组、限速器和路由,网络加速等功能。实例通过ENA驱动和它通信。
  • EBS Data Plane(用于EBS卷访问的Nitro卡):通过PCIe附加到宿主机上的一块定制卡。远端存储被以NVMe设备形式展现给实例,实例通过标准NVMe驱动程序访问该卡。支持卷加密、存储加速
  • Instance Storage Data Plane(用于实例存储访问的Nitro卡):本地磁盘被以NVMe设备形式展现给实例,实例通过标准NVMe驱动程序访问这些磁盘。支持加密、限速器和本地磁盘监控
  • 卡控制器(Card Controller)。提供API端点,负责协调所有Nitro卡、Nitro Hypervisor和Nitro安全芯片。利用Nitro安全芯片实现了Hardware Root Of Trust(硬件信任根),支持实例监控、计量和认证。它还为Nitro EBS卡实现了NVMe控制器。

Nitro 安全芯片

Nitro安全芯片整合到宿主机主板中,控制对所有非易失性存储的访问,持续监控和保护硬件资源,并在每次系统启动时独立验证固件。

Nitro hypervisor

Nitro hypervisor基于KVM位于极简化的定制的Linux 内核中,带有定制的VMM和小用户空间应用。只负责管理内存和CPU分配,将Nitro卡虚拟功能分配给实例,监控和计量硬件等,不再需要提供任何网络功能。

2017年hypervisor仍旧在宿主机上,2018年后hypervisor被集成到了硬件中

Firecracker

资料

  • 深度解析:AWS Fargate 数据平面
  • Firecracker – 无服务器计算的轻量级虚拟化
  • 深度解析 AWS Firecracker 原理篇 – 虚拟化与容器运行时技术
  • 深度解析 AWS Firecracker 实战篇 – 一起动手点炮竹
  • Firecracker: Lightweight Virtualization for Serverless Applications
  • Firecracker:无服务器应用程序的轻量级虚拟化(翻译)

github

  • https://firecracker-microvm.github.io/
  • firecracker-microvm/firecracker

FireCracker是为AWS Lambda和AWS Fargate提供动力的虚拟机监视器(VMM)。Firecracker的核心是一个新的VMM,它使用Linux内核的KVM基础设施来提供支持现代Linux主机以及Linux和OSv客户机的最小虚拟机(microms)

每个工作节点都有数百或数千个MicroVMs。为每个microm启动一个Firecracker微管理进程,负责创建和管理microm、提供设备仿真和处理出口。与microm的通信是通过TCP/IP套接字进行的。

firecracker作为一款轻量级虚拟机,仅提供了有限功能

img

firecracker和docker比较

img

Docker容器技术采用共享宿主机内核方式运行,利用内核特性实现对不同用户的命名空间进行隔离(6种方式),使用 CGroups进行硬件资源分配与限制,POSIX Capabilities进行 root 权限分割等。由于操作系统内核漏洞,Docker 组件设计缺陷,以及不当的配置都会导致 Docker 容器发生逃逸,从而获取宿主机权限。docker实现原理决定了容器的其隔离性、封闭性还是远远低于拥有独立 GuestOS 的虚拟机。而分配、管理、运维这些传统虚拟机与容器轻量、灵活、弹性的初衷背道而驰

firecracker能够为类似 AWS Lambda 和 Fargate 这样的服务提供高安全性、灵活性和效率的运行时环境

firecraker的优势

  • 应用负载的隔离性。每个 MicroVM 内部仅运行一个应用容器,或者仅运行一个应用 Pod。而不同租户的不同应用之间,实现了虚拟化级别的隔离,每个应用不再共享 HostOS 内核,而是拥有独立的 GeustOS Linux 内核。
  • 安全。抛弃 QEMU 使用的 C 语言,选择内存安全的 Rust 作为开发语言。基于 crosvm 使用极简设备模型,模拟尽可能少的必要设备,减小暴露的攻击面
  • 高性能和低开销。Firecracker 取消了 SeaBIOS (开源的 X86 BIOS),移除了 PCI 总线,取消了 VGA 显示等等硬件模拟。GuestOS(MicroVM) 使用定制过的精简 Linux 内核,裁剪掉对应的设备驱动程序、子系统等等

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

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

相关文章

一文彻底搞懂什么是SSH中间人攻击(Man-in-the-middle attack)

文章目录【1】背景【2】中间人攻击原理登录报错信息提示从首次登录服务器说起中间人攻击原理重装服务器导致ssh无法登录的解决方案【3】如何避免中间人攻击?【4】什么是Known_hosts ?known_hosts中的文件来自哪里?这个/etc/ssh/ssh_host_ecds…

gcc内联汇编

1. 介绍 用汇编编写的程序虽然运行速度快,但开发速度非常慢,效率也很低。如果只是想对关键代码段进行优化,或许更好的办法是将汇编指令嵌入到 C 语言程序中,从而充分利用高级语言和汇编语言各自的特点。但一般来讲,在…

华为机试_HJ81 字符串字符匹配【简单】【收藏!】

目录 描述 输入描述: 输出描述: 解题过程 提交代码 学习代码 收藏点 一、strstr函数 二、stdlib.h 描述 判断短字符串S中的所有字符是否在长字符串T中全部出现。 请注意本题有多组样例输入。 数据范围:1≤len(S),len(T)≤200 进阶&#xf…

如何解决“德语/文”等外文字符显示乱码问题

目录 1“德文/语字符”等外文显示乱码原因 2 如何解决“德文/语字符”等外文显示乱码 2.1 使用支持多个“编码”切换的工具打开该文本 2.2 使用变音字符的标准ASCII字符 2.3 将计算机系统切换至西欧编码 3 结尾 1“德文/语字符”等外文显示乱码原因 以德文/语为例&#…

vue3(二)

前一篇讲了 vue3的生命周期钩子的使用。 本节接着讲 vue3的数据通信。 provide/inject 依赖注入 App.vue <script setup lang"ts"> import { ref, provide } from vue import List from ./components/List.vue import User from ./components/User.vue impo…

知识点8--Docker镜像的秘密

前面的知识点我们介绍了docker的日常使用&#xff0c;但其实docker存在的核心意义是交付环境&#xff0c;也就是镜像&#xff0c;本片知识点带大家了解一下镜像的秘密。 镜像本身是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;包…

【Tensorflow学习二】神经网络优化方法学习率、激活函数、损失函数、正则化

文章目录预备知识tf.wheretf.random.RandomState.rand() 返回一个[0,1)之间的随机数np.vstack() 将数组按照垂直方向叠加np.mgrid[ ] np.ravel( ) np.c_[ ] 一起使用可以生成网格坐标点复杂度、学习率复杂度指数衰减学习率激活函数Sigmoid激活函数Tanh激活函数ReLu激活函数Leak…

今天面了个00后测试员,让我见识到了内卷届的天花板

深耕IT行业多年&#xff0c;我们发现&#xff0c;对于一个程序员而言&#xff0c;能去到一线互联网公司&#xff0c;会给我们以后的发展带来多大的影响。 很多人想说&#xff0c;这个我也知道&#xff0c;但是进大厂实在是太难了&#xff0c;简历投出去基本石沉大海&#xff0…

Linux安装KVM

一、虚拟化技术 1、全虚拟化和半虚拟化技术 如果给KVM、XEN简单归类的话&#xff0c;KVM是完全虚拟化技术又叫硬件辅助虚拟化技术&#xff08;Full Virtualization)。相反&#xff0c;XEN是半虚拟化技术&#xff08;paravirtualization&#xff09;&#xff0c;也叫做准虚拟化…

线上环境内存溢出-OutOfMemoryError

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 线上环境内存溢出-OutofMemoryError前言一、OutOfMemoryError是什么&#xff1f;二、实际情况&#xff08;参考&#xff09;解决方案1.实战总结前言 公司线上环境&#xff0…

getBoundingClientRect属性研究

getBoundingClientRect属性研究 概念 getBoundingClientRect 返回 width、height和下图中的6个属性 实测总结&#xff1a; 抓住一个核心点&#xff0c;就是height、width的值&#xff1a; box-sizing 是 content-box时&#xff0c;width和height 内容borderpaddingbox-siz…

国家级专新特精“小巨人”「皖仪科技」携手企企通,打造采购数字化平台成功上线

近日&#xff0c;安徽皖仪科技股份有限公司&#xff08;以下简称“皖仪科技”&#xff09;携手企企通共同打造的数字化采购管理系统成功上线。基于皖仪科技的采购业务流程和规则&#xff0c;形成全新的数字化采购体系&#xff0c;在推动企业降本增效的同时&#xff0c;实现企业…

单商户商城系统功能拆解42—应用中心—商城公告

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

冠状病毒疾病优化算法 (COVIDOA)附matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法…

npp各个平台npp数据比较

文章目录1GEE中的npp数据2 与其他数据的比较1GEE中的npp数据 在GEE上查阅npp&#xff0c;可以看到有连个数据集&#xff0c;一个是Terra的&#xff0c;另一个是Aqua的。 我比较了两个的不同&#xff0c;发现Terra是2000-目前的&#xff0c;而Aqua是2002-目前的&#xff0c;都是…

2022吴恩达机器学习课程——第一课

注&#xff1a;参考B站视频教程 视频链接&#xff1a;【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】 文章目录第一周一、监督学习与无监督学习二、线性回归三、梯度下降第二周一、向量化二、特征缩放第三周一、逻辑回归二、训练逻辑回归模型三、逻辑回归中的梯度下降四…

[运维]如何快速压缩一个数据库的硬盘占用大小(简单粗暴但有效)

文章目录前言一、数据库文件为什么会那么大&#xff1f;1.数据空间2.日志空间3.索引空间4.其他二、我的解决方案总结前言 在维护网站时我们经常会遇到数据库占用服务器磁盘空间的问题。高端的食材往往只需要采用最朴素的烹饪方式。本文我讲一个简单粗暴但有效的方法。本文以Sq…

RabbitMQ快速上手以及RabbitMQ交换机的四种模式

Win10安装&#xff1a; ​win10下安装 RabbitMQ​_柚几哥哥的博客-CSDN博客 Linux安装&#xff1a; Linux下载安装 RabbitMQ​_柚几哥哥的博客-CSDN博客 一、基础使用 1、导入依赖 <!--RabbitMQ--><dependency><groupId>org.springframework.boot</g…

JAVA12_06学习总结(JDBC,工具类优化)

今日内容 1. PreparedStatement PreparedStatement--预编译步骤1)注册驱动2)获取数据库连接对象3)准备sql语句--不需要拼接--需要的参数全部使用 ? 占位符4)通过数据库连接对象,获取预编译对象,同时将sql语句房费数据库,将参数和参数类型都存储在预编译中Connection中的方法…

均匀传输线的串扰和饱和长度

下图为串扰的电路模型&#xff0c;动态线与静态线之间通过互容与互感联系&#xff0c;这样也说明了动态线的信号耦合到静态线上的条件是存在di/dt或者dv/dt时&#xff0c;也就是说只在信号边沿上产生串扰&#xff0c;当电压或者电流为常数的时候静态线上就不会有串扰的信号。 信…