31 虚拟机
- 资源大小不灵活:不需要太大资源,但无法申请很小的资源。
- 资源申请不灵活:申请资源周期长。
- 资源复用不灵活:不同的进程共享资源可能会产生冲突。
虚拟化方式
完全虚拟化(Full virtualization)
虚拟化软件模拟 CPU、内存、网络、硬盘,慢。
硬件辅助虚拟化(Hardware-Assisted Virtualization)
Intel 的 VT-x 和 AMD 的 AMD-V 从硬件层面弄一个新的标志位,表示当前是在虚拟机状态下,还是在真正的物理机内核下。
对于虚拟机内核,只要将标志位设为虚拟机状态,就可以直接在 CPU 上执行大部分的指令,不需要虚拟化软件在中间转述,除非遇到特别敏感的指令,才需要将标志位设为物理机内核态运行,大大提高效率。
查看物理 CPU 标志位是否打开:
Intel:grep "vmx" /proc/cpuinfo
AMD:grep "svm" /proc/cpuinfo
半虚拟化
优化资源访问
- 虚拟化的本质是用 qemu 的软件模拟硬件,但是模拟方式比较慢,需要加速;
- 虚拟化主要模拟 CPU、内存、网络、存储,分别有不同的加速办法;
- CPU 和内存主要使用硬件辅助虚拟化进行加速,需要配备特殊的硬件才能工作;
- 网络和存储主要使用特殊的半虚拟化驱动加速,需要加载特殊的驱动程序。