zoukankan      html  css  js  c++  java
  • Virtualization基础

    官方文档学习

      https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Virtualization_Getting_Started_Guide/Red_Hat_Enterprise_Linux-7-Virtualization_Getting_Started_Guide-en-US.pdf

    CPU虚拟化

    模拟 emulation

      对于CPU来说,需要模拟ring 0、1、2、3

      虚拟机内核运行在ring 1上

      

    虚拟 virtualization

      完全虚拟化 full-virtualization

        对于CPU来说,需要虚拟ring 0

        虚拟机内核运行在ring -1 上

        Guest认为自己直接运行在物理主机上,没有意识到自己是虚拟机

        BT 二进制翻译,基于软件的方式

        HVM 硬件辅助的虚拟化,基于底层硬件支持虚拟化指令集

      半虚拟化 para-virtualization

        Guest清楚的知道自己是虚拟机

        如果虚拟机要运行特权指令,但这条特权指令不会影响到其它的虚拟机和物理机,则由虚拟机的内核直接调用硬件资源,减少了中间的指令转换层

        如果虚拟机要运行的特权指令,会影响虚拟机和物理机,则发出hyper call,交由hypervisor调用硬件资源

    Memory虚拟化

    在虚拟机中

      Shadow Page Table 实现虚拟机中逻辑地址到虚拟机物理地址的转换

        MMU 将虚拟机的物理地址转换为物理主机的物理地址

        GVA ---> GPA ---> HPA

      MMU Virtualization 硬件实现,能使得虚拟机中的逻辑地址直接转换成为物理主机的物理地址

        Intel EPT Extended Page Table

        AMD NTP Nested Page Table

        GVA ---> HPA

      TLB Virtualization

        Translation Lookaside Buffer 转换检测缓冲区是一个内存管理单元

        tagged TLB

          存储虚拟机中逻辑地址到物理机的物理地址的转化

    I/O虚拟化

      存储设备

        硬盘、光盘、U盘、软盘

      网络设备

        网卡

      显示设备

        VGA

          frame buffer机制

          给每个驱动一个缓冲窗口,一般使用完全虚拟化

      字符设备

        键盘

          ps/2、usb

        鼠标

          ps/2、usb

        使用焦点捕获方式,将字符设备和虚拟机建立临时关联,一般使用完全虚拟化

      I/O虚拟化方式

        完全虚拟化

          完全使用软件来模拟真实硬件

          适用于所有的设备

        半虚拟化

          移除了虚拟机中不必要的模拟驱动使用,而是调用I/O前端驱动,I/O前端驱动和物理主机上的I/O后端驱动交互,从而直接调用物理驱动

          通常仅适用于

            磁盘、网卡

          IO-through IO透传

            让虚拟机直接使用物理设备,仍然需要hypervisor协调

            需要硬件支持透传技术

              Intel VT-d

                在IO MMU层隔离各虚拟机的IO数据,避免因为集中的DMA设备管理,导致多虚拟机的IO数据混淆

                并且还能完成中断映射的对应关系,明确各IO中断对应的处理虚拟机

                基于北桥的硬件辅助的虚拟化技术,主要提升I/O设备可靠性、灵活性以及性能

    虚拟化技术两种实现

      Type-I

        hypervisor ---> vm

        Xen、RHEV、ESXi

      Type-II

        host vmm ---> vms

        KVM、VMware Workstation、Virtual Box

        依赖底层操作系统

    KVM、Xen缺陷

      它们都不能完整意义上的实现IO,必须通过qemu、virtio实现IO传输

    虚拟化技术分类

      模拟

        PearPC

        Bochs

        QEMU

        (模拟器)

      完全虚拟化

        native virtualization

        底层硬件架构必须和虚拟机架构一致

        VMware Workstation、VMware Server、Parallels Desktop、KVM、Xen(HVM)

      半虚拟化

        para-virtualization

        底层硬件架构必须和虚拟机架构一致

        xen、uml(user-mode linux)

      OS级别虚拟化

        OpenVZ

        lxc

        Solaris Containers

        FreeBSD jails

        (性能好)

      库虚拟化

        wine

        在Linux上模拟Windows库,可以玩Windows上的游戏、软件

      应用程序虚拟化

        jvm

    TUN与TAP

      在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网卡实现的设备,这些虚拟的网络全部用软件实现,并向运行于操作系统上的软件提供与硬件网络设备相同的功能

      TAP等同于一个以太网设备,它操作第二层数据包如以太网数据帧

      TUN模拟了网络层设备,操作第三层数据包比如IP数据包

      操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据。反之,用户空间的程序也可以像操作硬件网络设备那样,通过TUN/TAP设备发送数据,数据包投递至操作系统的网络栈,从而模拟外部接受数据的过程

    虚拟化网络

      nat

      bridge

      route

      isolation

    网桥设备管理

    NetworkManager不支持桥设备管理

    1 chkconfig NetworkManager off
    2 chkconfig networ on

    桥设备管理软件包安装

    1 yum install -y bridge-utils

    编辑桥配置文件

    cp ifcfg-eth0 ifcfg-br0
    
    vim ifcfg-br0
    
        DEVICE=br0
        NM_CONTROLLED=no
        TYPE=Bridge
        # 下面IP、掩码、DNS直接使用原网卡的
        # 如果有mac地址最好删除掉
    
    vim ifcfg-eth0
    
        # 将 IP、掩码、DNS等删除
        BRIDGE=br0
    
    service network restart

    使用brctl配置桥设备(不持久)

    brctl addbr br0
    
    brctl stp br0 on 
    
    ifconfig eth0 0 up
    
    brctl addif br0 eth0
    
    ifconfig br0 IP/NETMASK up
    
    route add default gw GW_IP
  • 相关阅读:
    10分钟学会在Ubuntu 18.04 LTS上安装NFS服务器和客户端
    脱发、秃头防不胜防?这里有一份给码农的减压指南 [转自机器之心]
    Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本
    ubuntu tree 查看目录结构
    Clion快捷键
    斜杠与反斜杠的记法
    C++ 既有约定
    docker其他参考资料
    标准错误重定向、标准输入重定向
    第一本Docker书读书笔记
  • 原文地址:https://www.cnblogs.com/cq146637/p/8893627.html
Copyright © 2011-2022 走看看