首页 文章

非Hypervisor虚拟化与Type2 Hypervisor

提问于
浏览
1

根据stackoverflow.com here上的标记答案和另一个参考here,我理解:

虚拟机管理程序虚拟化=低于操作系统和硬件虚拟化,其中硬件旨在支持虚拟化

非Hypervisor虚拟化=在操作系统之上(如应用程序软件),纯粹是软件虚拟化

但我们也有Type1和Type2 classifications for hypervisors,在我看来,Type2纯粹是软件虚拟化......所以这是否意味着Non-Hypervisor Virtualization等同于Type 2 Hypervisor或者是否存在一些细微差别?

或者这些术语都是松散定义的?

提前致谢 .

4 回答

  • 2

    在我看来,非虚拟机管理程序虚拟化意味着一个虚拟化层运行除了操作系统之外的其他东西 - 最常见的是虚拟化某些其他操作系统的用户级环境 . 例如,WINE项目是非虚拟机管理程序虚拟化 - 它允许在Linux(或其他)主机上运行win32程序 . 没有尝试运行实际的Windows操作系统或模拟虚拟化操作系统的“裸”硬件 . 相反,虚拟层直接为窗口提供用户级抽象和系统调用 .

    与虚拟机管理程序形成对比,管理程序可以是类型1(在裸机上运行)或类型2(在操作系统上运行),它提供硬件级抽象,并且您可以在其上运行整个操作系统 .

  • 0

    在我看来,Type2纯粹是软件虚拟化

    不要混淆“类型1与类型2”和“硬件与软件”虚拟化 . 事实上,硬件和软件实际上存在中间立场:有全硬件(HVM),“部分”硬件(PVM)和纯软件(SW) .

    我将尝试通过扩展所有6种组合来澄清:

    类型1全硬件(HVM) - 这允许像Xen HVM这样的虚拟机管理程序引导未修改的客户操作系统 . 这实际上很慢,因为虚拟机管理程序必须解析客户操作系统尝试发送到硬件的"telegraph messages" . (即写入磁盘驱动器涉及在0xblahblah位置重复存储字节 . )

    Type 1半虚拟化(PVM) - 这是您稍微修改guest虚拟机操作系统以直接调用Hypervisor以执行某些任务(如磁盘I / O) . 这更快,因为客户只是说"here, write this page of bytes"并且在安装特殊驱动程序时不会执行PVM . 当然,有时操作系统已经内置了虚拟驱动程序 . 例如,任何现代Linux内核在检测到它在Xen,KVM,UML等下运行时会自动切换到PVM模式 .

    Type 1 Pure Software(SW) - I 'm not sure if this exists, but it wouldn'难以构建 . 由于软件仿真速度很慢,因此启动真实操作系统和运行Type 2的开销并不是很大 .

    Type 2 Full Hardware(HVM) - 这允许您在VirtualBox或KVM下引导未修改的Windows . 你知道它是类型2,你可以重新启动所有的客人,仍然在后台播放MP3 :)

    Type 2半虚拟化(PVM) - 每次安装guest虚拟机驱动程序或在VirtualBox / KVM下启动现代Linux内核时都会发生这种情况 .

    Type 2 Pure Software(SW) - 早期版本的Bochs和Qemu . (后期版本实际上也有硬件辅助模式 . )你可以告诉它们是"pure software",因为它们允许你运行你通常可以运行Windows的软件'95 under Bochs on an ARM processor, and I'已经在Qemu下的x86上启动了ARM发行版 . )

    还有另一个与上述不同的主题:

    集装箱技术 . Docker / Rkt / LXD等容器不适合上表 . 容器中的应用程序是以普通方式调用内核的普通程序,不涉及Hypervisor .

    只是容器使用cgroups和命名空间的内核功能来使应用程序“感觉”像在VM中一样 . 每个容器都获得系统的“分区”视图:它是自己的文件系统,它自己的用户ID,它自己的进程ID,它自己的主机名IP地址等 . 但是从外部,你可以看到所有容器中的所有进程都是'ps ” .

  • 2

    根据定义,Hypervisor模拟硬件 . (这可能存在也可能不存在) - 它也可以虚拟化一些 .

    虚拟化拦截一个呼叫并将其重定向到其他地方 .

    它们是两个不同但相互关联的主题 .

    Type 1 Hypervisors 在"bare metal"上运行并位于硬件和虚拟操作系统之间(虚拟机管理程序本身就是操作系统) . 例如,VMWare ESXCitrix XenServerMicrosoft Hyper-V

    Type 2 Hypervisors 在您现有的操作系统之上运行,可能支持硬件或软件虚拟化 . 例如,QEmuBochs都模拟整个CPU,可选地甚至是不同的CPU架构 . 两者都是Type 2 Hypervisor,但由于需要仿真,因此性能开销很大 .

    VMware Workstation / Server / Player / FusionParallelsVirtualbox都是支持Hardware-assisted Virtualization的类型2虚拟机管理程序的示例 - 这意味着CPU指令可以直接通过而不是仿真CPU指令,无需仿真或转换即可有效运行性能如果处理器支持它 .

    接下来, non-hypervisor virtualization 这是(有效)应用程序虚拟化 . 硬件本身并没有以任何方式进行仿真,虚拟化层只是拦截某些系统调用并对其进行虚拟化 . 此类别中的示例包括VMWare ThinappMicrosoft App-V等等 . Windows Vista本身虚拟化某些注册表和磁盘写入到用户无权写入的区域 . Vista中的虚拟化对于向后兼容许多传统应用程序至关重要 .

    最后我们有了纯粹的 emulators - 这里没有虚拟化 . 在这个类别中,我们有WINE,在某种程度上Cygwin . 此外,Bochs适用于此类别以及Type 2 Hypervisor,因为没有虚拟化,只有硬件仿真 . DOSEMU是另一个适合这里的人 .

    我敢肯定我错过了很多例子,但是

  • 1

    (我会将我的评论发布到#answer-16868851,因为我错过了几点来满足"You must have 50 reputation to comment"要求)

    BraveNewCurrency写道:

    Type 1 Pure Software(SW) - 我不确定这是否存在,但构建起来并不难 . 由于软件仿真速度很慢,因此启动真实操作系统和运行Type 2的开销并不是很大 .

    到目前为止,我发现只有一个Type 1虚拟机管理程序能够做到这一点 - 它是 VMware ESXi .

    vSphere 5文档中心| ESXi Hardware Requirements说:

    ■要支持64位虚拟机,必须在x64 CPU上启用对硬件虚拟化(Intel VT-x或AMD RVI)的支持 .

    因此,32位客户在没有VT-x的情况下工作 .

    由于我认为它没有竞争(无论是专有还是开源),我想在没有VT-x支持的情况下(即纯软件中)捕获敏感的CPU指令在实践中是一个严峻的挑战 .


    虽然以下与原始问题无关,但v5.0(和v4.x)需要来自CPU的64位支持:

    ■ESXi 5.0将仅在具有64位x86 CPU的服务器上安装和运行 . ■ESXi 5.0要求主机至少具有两个核心 .

    那些有兴趣在32位机器上运行Type 1 SW管理程序的人(比如我)可能会使用它的早期版本 . Minimum system requirements for installing ESXi/ESX (1003661)说:

    ESX 3.5.x ESX 3.5.x的硬件要求与ESX 3.0.x部分中列出的要求相同,但增加了以下内容 . [...] ESX 3.0.x您需要这些硬件和系统资源来安装和使用ESX 3:至少两个处理器:
    适用于ESX的1500 MHz Intel Xeon及以上或AMD Opteron(32位模式)
    用于Virtual SMP的1500 MHz Intel Xeon及以上,或AMD Opteron(32位模式)
    1500 MHz Intel Viiv或AMD A64 x2双核处理器

    ESX 3.5 Installation Guide在以下部分/小节中重复这一点:

    ESX Server 3要求本节讨论ESX Server 3版本3.5支持的最低和最高硬件配置 . 最低服务器硬件要求......

    因此,纯(和32位)软件:)

相关问题