今天讨论到docker容器和虚拟机的区别的时候,同事提到虚拟机需要基于操作系统,我说不是要基于虚拟机管理软件吗,于是他给我科普了裸机虚拟机这玩意。
这个虚拟化的方式颠覆了我的认知,原本我以为的虚拟化就是:
物理机上面安装操作系统 -> 在操作系统上面安装虚拟机管理软件(比如VmVare、VirtualBox等等) -> 通过这些管理软件虚拟出不同的机子。
由于宿主机是有操作系统的,所以这种虚拟化被称作【寄居虚拟化】。实际上在这种情况下,虚拟机对各种物理硬件的调用,都是通过【虚拟机管理软件】和【主机的操作系统】一起协调完成的。
而宿主机没有操作系统的虚拟化被称作【裸机虚拟化】,裸机虚拟化只需要在物理机上安装【虚拟机管理器】,就可以在物理机上面虚拟出机子。
这种情况下,安装这个虚拟机管理器不需要宿主机拥有操作系统,因为它本身就算是一个操作系统,可以直接管理硬件资源。当虚拟机有指令要执行时,虚拟机管理器会接管该指令,控制硬件。
除了协调硬件,虚拟机管理器也能管理着各个虚拟机,给他们分配内存、cpu等等,所以虚拟化的确也可以不基于我们所认知的像VmVare、VirtualBox等这些虚拟机管理软件。
关于裸机虚拟机的实现,VmVare提供了esxi,可参考:https://cloud.tencent.com/developer/article/1376427
另外的点:
计算机的冯诺依曼体系结构:
完整的计算机硬件环境包括输入设备、输出设备、存储器、cpu虚拟化技术另外的分类方式:
- 在一台计算机中模拟出多台有独立的cpu、存储器等的机子
- 多台计算机虚拟化为一台