虚拟化
目的
解决资源大小不灵活,资源申请不灵活,资源复用不灵活的问题
方式
-
完全虚拟化
虚拟化软件会模拟假的 CPU、内存、网络、硬盘,导致的问题是慢
-
硬件辅助虚拟化
CPU 新增虚拟机状态的标志位,直接在在 CPU 上执行大部分的指令,不需要虚拟化软件在中间转述,除非遇到特别敏感的指令,才需要将标志位设为物理机内核态运行,这样大大提高了效率
-
半虚拟化
用户态 采用完全虚拟化的方式 如 qemu模拟器
KVM 内核模块通过 /dev/kvm 暴露接口,用户态程序可以通过 ioctl 来访问这个接口
容器化
无论是容器,还是虚拟机,都依赖于内核中的技术,虚拟机依赖的是 KVM,容器依赖的是 namespace 和 cgroup 对进程进行隔离。
namespace
类型:
- UTS hostname
- User 用户和组
- Mount 文件系统挂载点
- Pid 进程
- Network 网络协议栈
- IPC