1、虚拟化概述
(1)虚拟化的几个概念
Guest OS:运行在虚拟机之上的操作系统
Guest Machine:虚拟出来的虚拟机
Hypervisor (Virtual Machine Monitor):虚拟化软件层/虚拟机监控器
Host OS:运行在物理机之上的OS
Host Machine:物理机
(2)Hypervisor架构
TYPE-II(宿主型、高居型):VMM之下还有一层宿主操作系统,Guest OS对硬件资源访问必须经过宿主操作系统,带来额外开销,所有硬件驱动、内存管理、进程调度等由宿主操作系统执行。
——VMware workstation Orade
——VM VirtualBox
计算虚拟化的软件层,通常叫Hypervisor,即虚拟化层,也叫虚拟机监控器(Virtual Machine Monitor,VMM),负责Guest OS所有硬件资源调用。
TYPE-I(裸金属架构):VMM直接运行在裸机上,使用和管理底层硬件资源,Guest OS对硬件资源访问都需通过VMM完成,VMM拥有硬件驱动程序。
——SANGFOR HCI
——VMware ESXi
2、CPU虚拟化
(1)CPU指令系统
内核态:操作系统访问硬件(物理内存,IO设备等),关键数据结构,运行中断等;
用户态:用户运行应用进程。
最初的X86架构不适用于虚拟化,因为存在17条敏感的非特权指令,这些指令在虚拟化环境中执行时可能会导致系统异常。
(2)全虚拟化(Binary Translation)
工作原理:
a、Guest OS指令段在执行前进行整段翻译,将其中的敏感非特权指令替换为Ring0中执行对应特权指令.非特权指令直接执行.
b、特权指令首先被陷入到VMM,VMM通过一系列的模拟操作来实现此特权指令,然后返回给Guest OS,Guest OS从上次被中断的地方继续执行。
优点:Guest OS无需修改,可移植性和兼容性好。
缺点:当负载较大、敏感指令频繁被执行时CPU性能低下。
——VMWare、Hyper-V、KVM-x86(复杂指令集)
(3)半虚拟化(Para-Virtualization)
工作理:
a、在Hypervisor上运行的Guest OS已经集成了与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hypervisor来实现虚拟化。
b、Hypervisor提供Hypercall接口来满足Guest OS的关键内核操作,如内存管理、中断和时间同步等。
优点:性能非常接近物理机。
缺点:不支持未修改的操作系统,兼容性和可移植性差。
——Xen、KVM-PowerPC(简易指令集)
(4)硬件辅助虚拟化
工作原理:
a、引入新的CPU运行模式和新的指令集,使得VMM和Guest OS运行于不同的模式下。
b、Guest OS运行于受控模式,原来的一些敏感指令在受控模式下会全部陷入VMM,由VMM来实现模拟,这样就解决了部分非内核态敏感指令的陷入,而且模式切换时上下文的保存恢复由硬件来完成,这样就大大提高了陷入的效。
主要代表有 Intel的VT-X和AMD的AMD-V;该技术的引入使x86 CPU可以很客易地实现完全虚拟化。所以被几乎所有之前分歧的各大流派所采用。包括KVM-x86,VMWare ESX Server 3,Xen 3.0.
3、内存虚拟化
(1)内存页表
在物理机中,操作系统需要维护内存页表,该页表上记录了应用所使用的虚拟地址到实际内存物理地址的映射。
(2)虚拟内存页表
物理服务器经过虚拟化之后,VMM需要维护有HVA到GPA的内存页表,同时Guest OS也会有自己的系统页表。那么此时从Guest OS下发的内存请求,到物理服务器的硬件这个过程就会消耗大量的性能,甚至会发生故障。
(3)MMU虚拟化
传统MMU(内存管理单元)复杂虚拟地址映射为物理地址。
软件层面的影子页表技术。
硬件层面的EPT(Intel)/RVI(AMD)。
(4)影子页表
影子页表(shadow page table):VMM在宿主机内核中为虚拟机进程维护了一个虚拟机的虚拟地址到宿主机物理地址的页表(将三张页表进行整合),这个页表和虚拟机内核的页表同步更新。
(5)Intel EPT/AMD RVI
利用TLB(translation look-aside buffer) 转换查找缓冲器实现虚拟机虚拟地址到宿主机物理地址“一步到位”的自动映射。
4、IO虚拟化
(1)IO全虚拟化
工作原理:
a、由虚拟机设备驱动发出的I/O请求先通过设备模型转化为物理I/O设备的请求,再通过调用物理设备驱动来完成相应的I/O操作作。
b、反过来,设备驱动将I/O操作结果通过设备模型,返回给虚拟机
的虚拟设备驱动程序。
优点:Guest OS无需修改,可移植性和兼容性好。
缺点:大量的上下文切换时,造成的开销较大。
(2)IO半虚拟化
工作原理:
a、采用I/O环机制,使得Guest 端和Host端可以共享内存,减少了虚拟机与VMM之间的交互。
b、采用事件和回调的机制来实现 Guest与Host VMM之间的通信。这样,在进行中断处理时,就可以直接采用事件和回调机制,无需进行上下文切换,减少了开销。
优点:性能较I/O全虚拟化有了较大的提升。
缺点:存在移梳性问题,导致其使用受限。
比较好的实现就是 vitrio,Linux 2.6.30版本之后就被集成到了Linux 内核横块中。
(3)IO直通或透传
工作理:
a、通过硬件的辅助可以让虚拟机直接访问物理设备,而不需要通过VMM 或被VMM 所截获。
b、通过IOMMU技术来隔离虚拟机对内存资源的访问。
c、通过Intel的VT-d技术对芯片进行改造,提升性能。
优点:性能提升最大,接近于物理主机。
缺点:资源是虚拟机独占的,仅限于物理资源丰富的机器。
(4)软硬件结合的 SR-IOV
工作原理:
a、SR-IOV允许多个虚拟机共享单个I/O设备硬件。
b、Host通过SR-IOV将包括发送、接收队列在内的物资源依据VF数目划分成多个子集。
c、PF驱动将这些资源子集抽象成VF设备,映射给虚拟机使用。
——PF (physical function):包含轻量级的PCle 功能,负责管理SR-IOV设备的特殊驱动,其主要功能是为Guest 提供设备访问功能和全局贡献资源配置的功能。
——VF(virtual function):包含轻量级的PCle 功能。其功能包含三个方面:向虚拟机操作系统提供的接口;数据的发送、接收功能;与PF进行通信,完成全局相关操作。
5、aSV虚拟化性能优化
(1)aSV-虚拟化性能的优化
大页内存支持:虚拟机支持hugepages技术,可以有效提高30%的数据库性能。
NUMA:vCPU访问远地内存需要经过QPI总线才能访问,通过NUMA优化尽可能访问本地内存。
气泡内存:在虚拟机运行时动态地调整它所占用的宿主机内存资源,而不需要关闭虚拟机。
内核同页合并KSM:就将多个相同的内存合并,并将其标记为“写时复制”,优化内存使用,让虚拟机享用到更多内存。
(2)NUMA
当虚拟机使用少量vCPU资源时,尽量将其分配到同一块物理CPU上。
当使用大量vCPU资源时,将其拆分到不同物理CPU上,同时为其分配“Local内存”。
(3)内存气泡
通过内存气泡将较为空闲的虚拟机内存释放给内存使用率较高的虚拟机,从而提升内存利用率。
(4)同页内存合并
KSM(kernel SamePage Merging,内核同页合并),即共享内存或相同页内存合并技术,把相同的内存也合并,减少内存浪费,让屋里主机跑更多的虚拟机。
(5)大页内存
a、“大内存页”有助于Linux系统进行虚拟内存管理。顾名思义,除了标准的4KB大小的页面外,它们还能帮助管理内存中的巨大的页面。使用“大内存页”,最大可以定义1GB的页面大小。
b、在系统启动期间,“大内存页”可以为应用程序预留一部分内存。这部分内存,即被“大内存页”占用的这些存储器永远不会被交换出内存。它会一直保留其中,除非修改了配置。这会极大地提高像Oracle 数据库这样的需要海量内存的应用程序的性能。
c、在虚拟内存管理中,内核维护一个将虚拟内存地址映射到物理地址的表,对于每个页面操作,内核都需要加载相关的映射。如果内存页很小,那么需要加载的页就会很多,导致内核会加载更多的映射表。而这会降低性能。
d、使用“大内存页”,意味着所需要的页变少了。从而大大减少由内核加载的映射表的数量。这提高了内核级别的性能最终有利于应用程序的性能。
(6)故障自动重启
主机根据虚拟机发出的心跳、磁盘IO、网络流量状态,判断虚拟机的Guest系统是否无响应了,持续数分钟后,可认为该虚拟机发生了黑屏或者蓝屏,将该虚拟机执行HA操作,关机并重启。
(7)虚拟化HA
a、实现整体数据中心业务高可用,无需使用昂贵、复杂的传统集群解决方案。
b、最大限度地减少硬件、软件故障造成的业务中断时间。
c、提高整个基础架构范围内的保护力度。
(8)虚拟机热迁移
a、通过热迁移可以实现虚拟机的在线动态迁移,保证业务连续性。
b、零宕机时间:进行计划内硬件维护和升级迁移工作负载。业务不中断。
c、支持带存储的热迁移和跨集群的热迁移。
(9)动态资源调度DRS
设置阈值,在一定的时间内,当(cpu和内存)利用率超出范围后,触发虚机位置调度,实现集群业务负载自动均衡,降低集群内高负载的主机资源利用率。
(10)动态资源扩展DRX
可自动热添加vCPU、vRAM,业务不中断,DRX功能对软件架构无要求,适用于所有应用对应的虚拟机,为深信服独创。
(11)内置WAF
aSV服务器虚拟化内核内置WAF功能:
风险扫描——漏洞检测——Web安全防护——入侵防御
(12)快速备份
a、通过快速的无代理磁盘备份保护您的数据,使用增量备份减少备份所需空间,降低备份成本。
b、无需备份软件和备份服务器,实现增量的备份。
c、快速备份比普通基于快照备份 性能提升60%,且备份完成后,性能无损失。
d、提供手工备份和定时备份功能,保证虚拟机文件的数据安全。
备份及恢复
提供按周、按天、按小时的自动备份周期,根据实际业务需求灵活配置。
提供自动清理备份功能,最大限度节省备份存储空间。
(13)CDP持续数据保护
对指定虚拟机开启实时CDP保护,通过IO镜像方式跟踪记录虚拟机IO变更情况,当虚拟机数据丢失或故障时,可使用备份的任意历史时间点进行恢复(RPO≈0,RTO<5min)。数据备份的目标端可以为超融合存储、SAN和NAS存储。
6、aSAN基本概念
(1)aSAN概述
深信服分布式存储(又称为深信服虚拟存储,以下简称Sangfor aSAN)是一款自主开发的分布式存储系统,利用虚拟化技术“池化”集群存储卷内通用X86服务器中的本地硬盘,实现服务器存储资源的统一整合、管理及调度,最终向上层提供NFS/iSCSI存储接口,供虚拟机根据自身的存储需求自由分配使用资源池中的存储空间。
(2)基本概念
IOPS:
每秒钟的IO数,该指标主要用于评价小块IO性能,体现存储系统的IO演示能力和并发能力。业界一般默认IOPS指的是4K块大小的IO性能,该值越大说明性能越好。
吞计:
每秒钟的IO吞吐,单位MB/s,该指标主要用于评价大块IO性能,体现存储系统的IO带宽能力,该值越大说明性能越好。
镜像格式:
深信服超融合平台使用qcow2镜像格式作为虚拟机的虚拟磁盘文件。简单而言,虚拟机中看到的一块磁盘,实际在aSAN中是以一个qcow2文件的形式存在的。
7、aSAN存储特性
(1)数据分片
虚拟磁盘的大小是不固定的,可以小到几个G,大到几十T。为了能够更灵活地存放和处理这些数据,aSAN通过数据分片技术对单个qcow2文件按照固定单位大小(如aSAN3.0版本默认大小为4G)进行切分成若干个颗粒度更小的分片。aSAN的诸多存储策略都是基于颗粒度更小的分片进行的,让数据在存储卷中分布更加地均衡,数据管理更加灵活。
分片的优点:
a、单个qcow2文件(即单个虚拟磁盘)的大小可达到整个存储卷的可用容量大小;
b、颗粒度小,策略灵活。例如分布均匀,断点续修;
c、多盘性能(结合条带化)
(2)条带化
条带化技术的普遍定义是将一块连续的数据切分成很多个小的数据块,然后并发地存储到不同物理硬盘上,实现对数
据进行写入或读取时可以获得最大程度上的I/O并发能力,从而获得优异的性能。
(3)多副本
多副本是指将数据保存多份的一种冗余技术,aSAN支持两副本三副本,副本所存放的位置必须满足主机互斥原则。存储池可用空间=(集群数据盘总空间-数据盘预留总空间)/副本数,通常情况下,每块数据盘预留的空间为16G.
8、aSAN高可靠特性
(1)数据平衡
平衡触发的条件
a、计划内平衡:是在用户所计划的时间范围发起的数据平衡,当存储卷内不同硬盘的容量使用率差异较大时,将对使用率较高的硬盘执行数据平衡,迁移部分数据到容量使用率较低的硬盘上。
卷内最高和最低的磁盘容量使用率之差超过一定阀值时(默认是30%),即触发平衡,直至卷内任意两块硬盘的使用率不超过一定阀值(默认是20%)。
b、自动平衡:是无需用户进行干预,由系统自动发起的数据平衡。是为了避免存储卷内某块磁盘的空间已用满,
而其他磁盘仍有可用空间。
当存储卷内存在某块磁值空间使用率已超过风险阀值时(默认是90%)即触发自动平衡,直至卷内最高和最低的磁盘容量使用率小于一定阀值(默认是3%)。
(2)链接克隆设置
由于链接克隆生成的虚拟机会引用同一份数据,为了保证业务的性能和连续性。当检测到引用同一份数据的虚拟机数超过设定的阈值时,系统会自动将这份数据通过源数据拷贝生成另一份数据,以实现读写的负载均衡。
(3)分层优势
——传统缓存机制的局限性:传统的缓存机制中也是将高性能的SSD作为缓存层,低性能容量大的HDD作为容量展。但在SSD中一般只分为固定两个缓存区:写缓存区(wcache)和读缓存区(rcache),两个区分工明确。(实际上在aSAN早期的版本中也是采取这种机制)
a、数握写入的开销大:数据写入到写缓存区时,要保证写入一份到读缓存区。
b、SSD的效能低下:读写同时进行时,写入缓存的速度大于回写至容量展的速度,当缓存区占满时需要等待写缓存空间释放才能写入,即写入速率下降为缓存回写至容量的速率;而且有70%的读缓存区被浪费,无法用于写缓存。
c、无法抵抗扫描读。传统的LRU (Less Recently Used)缓存淘汰算法,遇到扫描性的读操作时,将导致缓存区内有价值的数据被这些仅有一次读取的无效的数据完全挤占掉,失去缓存价值。
——分层的先进性:通过前面章节的介绍,分层既可以提供写缓冲能力,也可以提供读缓冲的能力,因此可以很好地解决传统缓存机制的问题。
a、数据一次写入,开销更小。数据写入到分层后,可以直接用于数据的下次读取,即使数据回写到容量层HDD后,仍然驻留在SSD的分层中。
b、SSD的效能高。首先整个分层空间都是可以用于读写缓存,并且当数据写入量较大时,整个分层都可以申请空间用于写缓存,可以更好地满足业务读写的弹性需求。
c、可以抵抗扫描读。由于aSAN的缓存系统是根据数据被访问的次数以及最近被访问的时间来区分数据热冷,从而定
义数据在分层中被淘汰的优先级。对于扫描性的读操作,虽然其被访问的时间上是最近的,但其被访问的次数仅有一次,因此数据热度并不是最高的,不会挤占由于访问次数较多而热度更高的数据。
存储分卷
aSAN支持在同一个超融合集群内选择不同的主机组成不同的卷,即划分为不同的存储资源池。不同的存储卷之间,数据的存储策略是完全隔离,互不干扰的,虚拟机的数据存储位置选择了存储卷A,那么该虚拟机所产生的数据都只会存在于卷A中,在卷A中执行分片、条带化、副本等策略。但注意,虚拟机的运行位置是可以在任意一个卷的,但一般优先在本卷上运行。
虚拟共享盘
虚拟共享盘是aSAN在虚拟iSCSI磁盘的基础上进行优化的,专用于Oracle RAC场素。利用共享盘方式的部署可以大幅简化Oracle RAC传统部署模式下的复杂度和成本。
传统的Oracle RAC环境部署需要至少两台物理主机,并且同时也需要外置的共享存储设备,如外量iSCSI存储和外置FC存储,那么在超融合平台上,通过虚拟机类比于物理服务器,而虚拟共享盘则类比如置iSCSI存储。
虚拟iSCSI
aSAN可以提供标准的iSCSI协议,将aSAN存储资源开放给其它物理服务器或者虚拟化平台作为纯粹的外置iSCSI存储使用。
aSAN的iSCSI服务器则通过接入IP重定向为虚拟IP池的方式,实现iSCSI服务器的高可用和负载均衡特性。