文章目录
一、虚拟化
1、简介
通过将计算机虚拟成多台逻辑计算机,在一台计算机上同时运行,每个逻辑计算机可以运行多个不同的操作系统,应用程序可以在相互独立的空间内运行且相互之间不造成影响,从而提高计算机的工作效率。
2、耦合和解耦合
耦合性是程序结构中各个模块之间相互关联的度量,它取决于各个模块之间的接口复杂程度、调用方式以及允许通过的信息。
①耦合
耦合指两个或以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。
对象之间的耦合越高,其维护成本也就越高。
②解耦合
在软件工程中,降低耦合度即可以理解为解耦。模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但是可以用一些方法将耦合度降到最低。
③为什么要去做解耦合
就像是人与空气,鱼和水一样,人离了空气无法存活,鱼离了水也无法存活。那么有一天水和空气突然消失那人和鱼必然会死。所以我们想要做的就是将关联性降到最低,使得如果有一天服务宕掉了不至于影响整个业务的运行。
3、虚拟化核心组件
①QEMU
QEMU是I/O控制的模块,核心目的是调用物理机内核中的资源分配给虚拟机。QEMU并不是直接调用而是通过I/O方式调用。QEMU把资源调过来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口给虚拟机应用程序。
②KVM
用来逻辑分割物理资源,抽象化为虚拟化资源。
只接受来自QEMU的请求命令,对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU让其判断是否需要执行,可以则执行否则打回。
4、虚拟化类型
①全虚拟化
将物理硬件资源全部通过软件的方式虚拟化然后进行调用。(KVM)
②半虚拟化
需要修改操作系统(EXSI)
③直通
直接使用物理硬件资源,目前还不完善需要支持
5、虚拟化功能
在一个操作系统内