一、虚拟化技术介绍
- 资源抽象成共享资源池,操作系统与硬件解耦,从资源池中分配资源。
- 本质:分区→一个物理服务器上运行多个虚拟机、隔离→同一服务器上虚拟机间相互隔离、封装→虚拟机都保存在文件中、独立→独立于硬件,无需修改即可在任何服务器上运行
- 类型
- 寄居虚拟化 vmware workstation,virtual PC→简单易于实现;管理开销,性能损耗大。
- 裸金属虚拟化 vmware esxserver,citrix xenserver,redhat KVM,微软hyper V,华为 fusionshpers→不依赖于操作系统,支持多种系统多种应用;虚拟化层内核开发难度大。
- 操作系统虚拟化,docker。→简单易于实现,管理开销低
- 裸金属虚拟化主要实现两个基本功能:
- 识别、捕获和响应虚拟机发出的CPU特权指令或保护指令
- 处理虚拟机队列和调度,并将屋里硬件的处理结果返回给相应的虚拟机。
二、计算虚拟化
- 包括:CPU虚拟化,内存虚拟化,IO虚拟化
- CPU虚拟化
- 利用与原始操作系统类似的机制-通过定时器中断,在中断触发时陷入VMM,从而根据调度机制进行调度。
- 经典虚拟化方法主要使用特权解除和陷入-模拟的方式→客户OS在运行在非特权级,VMM运行在最高特权级。客户OS的大部分指令仍然可以在硬件上直接运行,当执行特权指令时,陷入到VMM模拟执行。
- X86架构的虚拟化漏洞:敏感指令需要读取系统关键资源,但不是特权指令。
- 解决方法:半虚拟化,全虚拟化,硬件辅助虚拟化
- 半虚拟化:敏感指令修改为对VMM的调用指令→性能损耗小;只能是可修改的操作系统
- 全虚拟化:将敏感指令翻译成特权指令后进行→支持广泛的OS;引入新的复杂性,性能损耗大
- 硬件辅助虚拟化:利用CPU新增的虚拟化指令进行特权和非特权的交换→简化VMM软件→发展趋势
- 内存虚拟化
- 物理操作系统内存特点:从物理地址0开始;内存连续;
- 虚拟化后的问题:只有一个0地址;地址连续分配使用效率不高,缺乏灵活性。
- 内存虚拟化核心→引入客户机物理地址空间→通过VMM在客户机物理地址空间和物理地址空间中建立映射表。
- IO虚拟化
- 目的在于复用有限的外设资源。
- 原理:VMM截获客户OS对设备访问的请求,然后通过软件方式来模拟真实设备的效果。
- 问题:设备发现,控制各虚拟机能访问的设备;访问截获
- 实现:前后端驱动模型;Intel硬件虚拟化技术
- 硬件虚拟化技术:VT-x,VT-d,VT-c,TXT
三、存储虚拟化
- 概念:存储设备上加入逻辑层,通过逻辑层访问存储资源
- 作用:管理员→方便调整存储资源,提高存储利用率;终端用户→更好的性能和易用性
- 实现方式:裸设备+逻辑卷;存储设备虚拟化;主机存储虚拟化+文件系统
- 裸设备+逻辑卷:直接在通用块上建立逻辑卷→实现简单,性能好;支持业务少
- 存储设备虚拟化:通过存储设备的能力,进行卷的维护操作→支持业务相对较多,需要特定的存储设备
- 存储虚拟化+文件系统:在通用块层上建立文件系统,通过文件系统管理虚拟机磁盘→支持异构存储和异构服务器,高级功能丰富;IO路径长,性能损耗大。→目前采用较多的方式。
四、网络虚拟化
- 背景:一台服务器上多个虚拟机→传统网络无法满足虚拟机间通信;虚拟机动态迁移→传统网络无法很好满足。
- 网络虚拟化包括:
- 物理设备虚拟化:QBG、QBR,TRILL,SPB
- 服务器虚拟化:VMDQ、SR-IOV,VXLAN(叠加大二层网络技术)
- 虚拟交换技术:
- vSwitch:服务器内部CPU实现虚拟交换功能→功能扩展灵活;消耗CPU,性能低
- eSwitch:网卡实现→性能高,节省CPU资源;依赖特殊网卡;
- QBG:物理交换机实现→可继承交换机的二层特性;规格小,扩展困难,Hypervisor均不支持
- 华为网络虚拟化解决方案→分布式虚拟交换,集中管理,分布式虚拟交换支持vSwitch和eSwitch两种方式。
五、创建虚拟机简介
- 创建流程:
- 使用者提出业务需求,确定虚拟机规格
- 管理员从存储池中划分虚拟硬盘
- 管理员选择符合所需CPU,内存,虚拟网卡的物理服务器
- 将虚拟硬盘挂载到物理服务器上
- 用CPU,内存,硬盘启动一个无系统的虚拟机
- 使用CIFS协议将ISO挂载到VNA节点,设置虚拟机从虚拟光驱启动,加载ISO文件,安装系统
- 没有操作系统的虚拟机,可以使用ISO文件安装操作系统,或者挂载瘦终端上的光驱安装