设备虚拟化

虚拟化技术
开源桌面虚拟化应用程序(比如 VirtualBox)使用户甚至是小型企业(中小型业务部门或中小型企业)环境能够在单个物理系统上运行多个虚拟机。但是,VirtualBox 等虚拟化环境是作为客户端应用程序在桌面或服务器系统上运行的。企业计算环境需要更接近物理硬件(“裸机”)的高性能、面向服务器的虚拟化环境,支持用少得多的操作系统开销来执行虚拟机。裸机虚拟化机制可更好地管理硬件资源,也可最佳地利用对内置于大多数 64 位 x86 和 PowerPC 处理器中的虚拟化硬件支持。
裸机虚拟化机制使用一个称为虚拟机管理程序(VMM)的小操作系统,来管理和计划虚拟机以及相关的资源。裸机虚拟机管理程序称为 Type 1 虚拟机管理程序。两种最流行的裸机开源虚拟化技术是 Kernel Virtual Machine (KVM) 和 Xen。KVM 的流行度和复杂度在不断增加,它现在已成为大多数 Linux 发行版的推荐默认虚拟化机制。
两种虚拟机设备模拟架构
基于管理程序的设备模拟
在这个模型中,VMM包含各种客户操作系统能够共享的公共设备,如虚拟磁盘、虚拟网络适配器和其他必需的平台元素。这个特定模型如图 1 所示。
图 1. 基于管理程序的设备模拟
基于管理程序的设备模拟的另一个变体是准虚拟化(paravirtualized)驱动程序。在这个模型中,VMM包含物理驱动程序,每个客户操作系统包含一个管理程序可以感知的驱动程序,这个驱动程序与管理程序驱动程序(称为准虚拟化 或 PV 驱动程序)配合工作。
用户空间设备模拟
顾名思义,这种设备模拟是在用户空间中实现的,而不嵌入到 VMM中。QEMU(不仅提供设备模拟,还提供一个管理程序的开源软件)提供设备模拟,用于大量独立管理程序,如 Kernel-based Virtual Machine (KVM) 和 VirtualBox 等。这个模型更具优势,因为设备模拟独立于VMM,因而可以在多个管理程序之间共享。另外,这个模型还支持任意设备模拟,无须VMM(以特权状态运行)负担这个功能。
图 2. 用户空间设备模拟
红围脖客户端
无论设备模拟发生在管理程序内还是在一个客户虚拟机(VM)之上,模拟方法都是相似的。
设备模拟能够模拟一个特定设备(如 Novell NE1000 网络适配器)或一个特定磁盘类型(如 Integrated Device Electronics [IDE])。物理硬盘可以完全不同 — 例如,尽管一个 IDE 驱动器被模拟为客户操作系统,物理硬件平台可以使用一个串口 ATA (SATA) 驱动器。
以上两种设备模型实现的设备共享是有代价的, 无论设备模拟在 VMM中还是在独立VM 中执行, 都存在开销, 导致竞争和性能下降.
设备透传俄美关系
若设备共享不是必须的, 使用设备透传技术更为有效. 在最高层面上,设备透传就是向一个特定客户操作系统提供一种设备隔离,以便该设备能够被那个客户操作系统独占使用(见图 3)。设备透传的价值在于高性能以及提供本质上不能共享的设备的专用权。
对于性能而言,使用设备透传可以获得近乎本机的性能。对于某些网络应用程序(或那些拥有高磁盘 I/O 的应用程序)来说,这种技术简直是完美的。
违反社会主义道德
图 3. 管理程序内的设备透传
设备透传技术需要硬件支持, Intel 和 AMD 都在它们的新一代处理器架构中提供对设备透传的支持.
MSI
另一种帮助将中断缩放为大量 VM 的技术革新称为 Message Signaled Interrupts (MSI)。MSI 将中断转换为更容易虚拟化的消息(缩放为数千个独立中断),而不是依赖将被关联到一个客户机的物理中断 pin。从 PCI 2.2 开始,MSI 就已经可用,但 PCI Express (PCIe)
也提供 MSI,在 PCIe 中,MSI 支持将结构缩放为多个设备。MSI 是理想的 I/O 虚拟化技术,因为它支持多个中断源的隔离(而不是必须通过软件多路传输或路由的物理 pin)。
时间同步测试方法
大致原理: 使用外置 GPS模块提供 PPS信号,所有需同步的系统获取该信号作为标准参照时间,分别计算当前时间与参照时间的偏移量.类 unix 系统提供的系统调用 gettimeofday() 可获得精度为微秒的系统当前时间.
gettimeofday()的函数原型为:
飞夺泸定桥教学设计#include<sys/time.h>
int gettimeofday(struct timeval*tv, struct timezone *tz )
gettimeofday()会把目前的时间用 tv 结构体返回,当地时区的信息则放到 tz 所指的结构中。其结构体定义为:
1struct  timeval {
电磁学的应用
2long  tv_sec;/*秒*/
3商战三十六计long  tv_usec;/*微妙*/
4    };
5
6struct  timezone{
7int tz_minuteswest;/*和greenwich 时间差了多少分钟*/
8int tz_dsttime;/*type of DST correction*/
9    };
通过一个内核模块执行 busy-wait 循环,连续占用 CPU检测外置时钟源的 PPS信号, 当信号到达, 调用 gettimeofday() 记录二者差值.

本文发布于:2024-09-20 14:41:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/613962.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设备   模拟   虚拟化   管理程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议