一、虚拟化简介
通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率。
1.在一个操作系统中(win10)模拟多个操作系统(centos、win10、suse),同时每个操作系统可以跑不同的服务(nginx+tomcat),从而实现一台宿主机搭建一个集群(从整体).
2.通过软件、应用程序的方式,来实现物理硬件的功能。例如ensp,以软件形式是心啊物理设备的功能(二层交换机、路由器、三层交换机)。
1.虚拟化概述
虚拟化:将应用程序和系统内核资源进行解耦,以操作系统级别进行隔离,目的是提高资源利用率
2、耦合与解耦合
耦合性是程序结构中各个模块之间互相关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。
2.1耦合
1.耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至于联合起来的现象
2.对象之间的耦合度就是之间的依赖性。
3.对象之间的耦合越高,维护成本越高
2.2解耦合
1.字面意思就是解除耦合关系
2.在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。
设计的核心思想:尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写。
2.3 小结
- 耦合是项目模块之间的关联度高及相互依赖程度高,也就是说我们在后期项目修改时,如果耦合度高的话,这样会牵一发而动全身,增加了相应的维护成本
- 相反,解耦合就是要降低这种模块之间的相互依赖程度,降低维护成本与复杂度。
3.虚拟化作用
缓解/解决了 资源利用率的问题
注:物理硬件的性能就会比虚拟化的性能高,在极度吃资源的情况,不适合用虚拟化。例mysql高并发
4、虚拟化工作原理
虚拟化类型:
1、全虚拟化(50%)
2、半虚拟化(软硬件结合)
3、直通(以全硬件的方式,实现虚拟化功能)
虚拟化功能
1、在一个操作系统内,模拟多个操作系统
2、以软件的方式模拟物理设备的功能
虚拟机管理器功能:调用资源
两大核心组件:QEMU、KVM
4.1 QEMU
- QEMU是I/O控制的模块,可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。
- QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序。
4.2 KVM
- 用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化。
- 只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令。
对于workstation而言——》硬件辅助虚拟化,表现形式在处理器里面有一个虚拟化引擎,可以勾取硬件辅助虚拟化,看到虚拟接口/dev/kvm,可以加强辅助调用,在应用程序需要频繁调用的时候,需要开启。比如openstack。
4.3 虚拟化类型
- 全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
- 半虚拟化:需要修改操作系统
- 直通:直接使用物理硬件资源(需要支持,还不完善)
全虚拟化:KVM——》产品vmware—ce
半虚拟化:EXSI——》workststion vsphere
4.4 虚拟化功能
- 在一个操作系统内,模拟多个操作系统
- 以软件的方式模拟物理设备的功能