虚拟化与 KVM

这页讲的是:Linux 不只自己跑应用,它还可以帮助一台机器像承载多台机器那样工作。学这页的重点,是把“容器共享内核”和“虚拟机拥有独立内核”这两种思路区分清楚。

这块是什么

虚拟化讲的是如何让一台物理机器在较强隔离下运行多个“像完整机器一样”的来宾系统。KVM 则是 Linux 内核中支撑这种能力的重要组成部分。和容器不同,这里强调的不只是视图隔离,而是让不同 guest 看到自己像在一台独立机器上运行。

如果说容器像“同一栋楼里分隔出的不同房间”,虚拟机更像“在同一块地上搭了多栋各自运行的小楼”。

它负责什么

支撑虚拟机运行

  • 帮助 guest 获得 CPU、内存等基础执行环境
  • 让来宾系统像在自己的机器上运行
  • 利用硬件虚拟化能力提高效率
  • 把 Linux 变成虚拟化平台的一部分

组织资源映射与隔离

  • 为 guest 组织虚拟 CPU、内存和设备视图
  • 控制不同 guest 之间的边界
  • 减少相互干扰
  • 帮助一台物理机承载多套系统实例

连接更高层虚拟化栈

  • 和用户空间虚拟化管理组件协作
  • 把底层能力暴露给更高层工具使用
  • 服务云主机和测试环境等场景
  • 让虚拟化不是抽象概念,而是可运营系统能力

虚拟机和容器最核心的区别

维度容器虚拟机
内核共享同一个宿主 Linux 内核。每个 guest 通常有自己的内核视角和系统实例。
隔离思路更像在同一系统里做资源和视图隔离。更像在同一物理机上运行多台逻辑机器。
开销与灵活性通常更轻、更快启动。通常更重,但隔离和系统独立性更强。
关注点共享内核下的治理和打包运行。硬件抽象、来宾系统运行和强隔离环境。

关键概念

概念现在怎么理解
KVMLinux 内核中支撑硬件辅助虚拟化的重要能力。
guest运行在虚拟机里的来宾系统。
host承载虚拟化能力和来宾系统的宿主环境。
vCPU分配给来宾系统使用的虚拟 CPU 视图。
设备虚拟化让 guest 看到可用设备接口,而不必直接掌握真实硬件全部细节。

为什么重要

常见误解

它不负责什么

和其他模块的关系

相关模块关系
调度器guest 的执行最终仍要落到宿主机的 CPU 调度上。
内存管理guest 内存视图和宿主资源管理之间需要严密配合。
设备模型 / 驱动虚拟设备和真实设备之间的衔接离不开设备和驱动组织方式。
安全更强的隔离能力也意味着对边界和可信执行要求更高。

你现在先把虚拟化拆成三层看

层次它在做什么为什么这样拆有帮助
guest 视角来宾系统觉得自己像在一台独立机器上运行。这能帮你理解虚拟机为什么和容器的“共享宿主内核”根本不同。
KVM / 内核能力把 CPU、内存和某些硬件辅助虚拟化能力正式接进 Linux 内核。这说明虚拟化不是单靠用户空间包装出来的幻觉。
用户空间虚拟化栈更高层工具去创建、管理和编排虚拟机实例。这能帮你把“内核提供底座”和“平台提供管理体验”分开。
真实物理资源最终 guest 用到的一切,还是要落回宿主机的 CPU、内存和设备。这解释了为什么调度、内存和设备模型始终绕不开虚拟化话题。

读完这页后,你应该能回答

后面适合继续问:虚拟 CPU 和真实 CPU 的关系是什么?来宾内存和宿主内存是怎样衔接的?为什么虚拟化经常和设备模型一起讨论?