7.虚拟化(不全

概述

  • 大机器不灵活, 因此诞生在物理机上搭建虚拟机的方法.
    • 资源大小不灵活
    • 资源申请不灵活
    • 资源共享不灵活
  • 搭建虚拟机的问题是: 虚拟机软件必定是运行在用户态, 虚拟机中的内核无法运行内核指令.
  • 在虚拟化层, 例如桌面应用 VritualBox 中有三种虚拟化方式:
    • 完全虚拟化
      由虚拟化软件(例如 VirtualBox) 模拟假的 CPU, 内存, 硬盘等待资源, 将虚拟机的内核指令转发给外部系统运行, 将结果返还给虚拟机.
      缺点: 执行速度很慢.
    • 硬件虚拟化
      为了提高运行速率, 让虚拟机大部分内核指令都能直接在 CPU 上执行, 部分敏感指令还是通过中转的方式执行. Intel VT-X 和 AMD AMD-V 提供硬件支持. 通过添加标志位来标识当前虚拟机的指令是否直接在 CPU 上执行.
    • 半虚拟化
      网络/硬盘可以加载针对虚拟机特殊优化的驱动, 通过内存缓存等方式优化资源的访问.


      image.png
  • 虚拟化工具
    • 桌面虚拟化软件用 VirtualBox, 服务器上用 qemu
    • qemu 采用完全虚拟化的模式. 可在 BIOS 中打开硬件辅助虚拟化, 虚拟机 CPU 指令通过 KVM 直接运行, 提高运行速率.
    • KVM 是一个内核模块. 通过 /dev/kvm 暴露接口, 用户态程序可以通过 ioctl 访问这个接口直接运行 CPU 指令.
    • Qemu 整合 KVM, 将 CPU 指令交由 KVM 运行. 即 qemu-kvm (或 qemu-system-XXX)
    • Qemu-kvm 只解决 CPU 性能问题, qemu 让虚拟机加载特殊驱动, 实现半虚拟化. 例如网络驱动 virtio_net, 存储驱动 virtio_blk.

你可能感兴趣的:(7.虚拟化(不全)