云计算基础知识
云计算定义
云计算是一种模型,它可以实现随时随地、便捷地、随需应变地从可配置计算资源共享池中获取所需的资源(例如,网络、服务器、存储、应用、及服务),资源能够快速供应并释放,使管理资源的工作量和与服务提供商的交互减小到最低限度。
提前将资源准备好,通过特定技术随时随地使用这些资源去执行特定任务的方式基本就属于云计算类型。
云计算的优势
1、按需自助
2、广泛的网络接入
3、资源池化
4、弹性伸缩
5、可计量服务
云计算的发展
时代 | 云计算1.0 | 云计算2.0 | 云计算3.0 |
---|---|---|---|
特点 | 计算虚拟化 | 软件定义与整合 | 云原生与重构业务 |
核心技术 | Hyper-v XEN KVM VMware ESX |
OpenStack VMware AWS |
Docker CoreOS Cloud Foundry |
优势 | 虚拟化 更好的资源利用率 |
基础设施云化 资源服务标准化、自动化 |
应用云化 敏捷应用开发与生命周期管理 |
云计算的部署模式
1、公有云:华为云、阿里云、百度云、腾讯云
2、私有云:公司内部搭建的openstack
3、混合云:公司内部搭建的云,财务、数据库等重要信息存放在公司的私有云中,其他非关键性业务放在公有云上
4、行业云:运输云、医疗云
云计算的服务模式
IaaS:基础设施即服务
PaaS:平台即服务
SaaS(概念很广泛):软件即服务
计算发展史
1、串行计算
1、首先是一个问题被划分成一个个的小块
2、然后小块会在单个CPU上一个一个的被执行
3、CPU在同一时间只能处理一个小块
缺点:问题很大的话,处理时间较长
2、并行计算(cpu可以来自同一台计算机,也可以是网络中不同的计算机)
1、首先把一个大问题分解成多个可以被同时处理的小块
2、每个小块去找各自的CPU进行处理,每个CPU同时处理不同的小块
3、会有统一控制机制对整个过程进行控制
优点:节省时间(多u协作)节省成本(纳旧)
3、分布式计算
分布式系统,是将自己的所有组件分散在属于不同网络的计算机上,这些计算机通过统一的消息机制来相互通讯和配合。分布在不同网络计算机上的组件互相协作,完成共同目标。
优点:资源可以共享,多台计算机互相负载均衡
4、网格计算(集群)
利用广泛的零散的计算资源完成一个人共同任务
云计算基础虚拟化知识
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
常见名词
1、Host Machine:运行虚拟机的物理主机
2、Host OS:宿主机安装运行虚拟机的操作系统
3、Hypervisor(VMM):虚拟化层(核心技术)
- 作用:识别、捕获、响应虚拟机发出的CPU特权指令或保护指令;负责处理虚拟机队列和调度,并将物理硬件的处理结果返回给相应的虚拟机
- 也就是说,VMM管理所有资源和虚拟化环境
- 标志性产品有:VMware ESXI server FusionCompute
4、Guest Machine:运行在宿主机上的虚拟机
5、Guest OS:虚拟机安装运行的操作系统
虚拟化分类
裸金属型虚拟化有以下特点:
- 优点:虚拟机不依赖于操作系统
- 缺点:虚拟化层内核开发难度大
宿主型虚拟化有以下特点:
- 优点:简单,易于实现
- 缺点:安装和运行应用程序依赖于主机操作系统对设备的支持。管理开销较大,性能损耗大
虚拟化特点
1、分区:分区意味着虚拟化层为多个虚拟机划分服务器资源的能力
2、隔离:如一台虚拟机中病毒之后,不会影响另一虚拟机
3、封装:整个虚拟机存储在独立于物理硬件的一小组文件中,只需要复制几个文件就能复制、保存、移动虚拟机
4、相对于硬件独立:虚拟机运行在虚拟化层模拟出来的虚拟硬件之中,与物理硬件无关
计算虚拟化
计算虚拟化包括CPU虚拟化,内存虚拟化,IO虚拟化。
CPU分级保护域
在讲CPU虚拟化前,我们先简单介绍一下CPU的分级保护域,在这种保护模式中,CPU被分成4个环——Ring0、Ring1、Ring2和Ring3,其中Ring0的权限最高,Ring1次之,Ring2再次之,Ring3最低。Ring0的权限可以直接操作硬件,一般只有操作系统和驱动会允许拥有此权限。Ring3的权限最低,所有程序都可以拥有此权限。为了保护计算机,一些危险的指令只能由操作系统执行,以防止一些恶意软件随意地调用硬件资源,比如某个程序需要开启摄像头就必须向Ring0的驱动程序请求开启,否则会被拒绝此类操作。
主机操作系统所发出的指令一般分为两种类型:特权指令和普通指令
- 特权指令:是指用于操作和管理关键系统资源的指令,这些指令只能在最高特权级(ring0级别)别上运行
- 普通指令:这些指令在CPU普通权限级别上就能够运行,即ring3级别。
在虚拟化环境中,还有一种特殊指令被称为敏感指令。敏感指令是指修改虚拟机的运行模式或宿主机状态的指令,也就是说将Guest OS中原本需要在Ring 0模式下才能运行的特权指令剥夺特权后,交给VMM来执行的指令。
PowerPC架构
在很久之前powerpc采用的解除特权(让GuestOS放在ring1上)陷入模拟(当GuestOS发出指令之后,发送给处在ring0的虚拟化层,虚拟化层处理后发送给物理硬件)
X86的CPU是CISC架构
基于x86的CISC指令集有19条敏感指令不属于特权指令的范畴,这部分敏感指令运行在CPU的Ring 1用户态上。当虚拟机发出这19条敏感指令时,由于指令不属于特权指令,因而这些敏感指令不能陷入-模拟被虚拟机监视器(VMM)捕获,因此x86架构无法使用解除特权,陷入模拟。
x86架构虚拟化方式——全虚拟化
方案:将所有虚拟机发出的操作系统请求转发到虚拟机监视器(VMM),虚拟机监视器对请求进行二进制翻译,如果有19条敏感指令发送给虚拟化层,虚拟化层修改之后发送给硬件。
x86架构虚拟化方式——半虚拟化
方案:修改操作系统内核,当自己发送19条敏感指令的时候,自主发送给虚拟化层处理。
x86架构虚拟化方式——硬件辅助虚拟化
方案:VT-D技术、AMD-V创建个root模式,权限大于ring0,让虚拟机把指令发送给ring0,而虚拟化层处在root模式。对hardware无影响
内存虚拟化
物理主机使用内存要有以下要求
- 内存地址都是从物理地址0开始(多虚拟机无法满足都从0开始)
- 内存地址空间都是连续分配的(多虚拟机无法连续)
解决方案:内存地址映射
实现原理:虚拟内存→物理内存(vmm层管理)→机器内存
I/O虚拟化
全虚(全部使用软件模拟i/o设备,性能差)
过程:虚拟机下发io(用户态),kvm获取io(内核态),放到io共享页中(用户态),kvm发送信息给qemu起来干活,qemu收到后去io共享页读数据,调用内核态的设备驱动进行io,然后qemu将io成功写入io共享页中,并通知kvm,kvm返回结果给虚拟机。
半虚(前端调用后端,性能高Virtio)
过程:虚拟机前端下发io(用户态),io放到vring中(还是用户态),kvm通知qemu后端,qemu去vring中取出,通过调用内核驱动写入io,然后将结果放到vring中返回给kvm,kvm返回给虚拟机。
硬件辅助虚拟化(IO透传,直接分配给虚拟机物理设备)
虚拟化技术
XEN
KVM
KVM虚拟化技术
kvm模块中,实现虚拟化的功能是kvm.ko,提供了CPU和内存的虚拟化,QEMU负责io虚拟化,(qemu可以实现虚拟化,但是性能比较差,模拟网卡通常为100M,现在通常使用virtio,可达10G,),二者合一称为KVM-QEMU
一个linux安装了KVM之后会增加三种模式:
- Guest Mode: 此模式主要是指虚拟机,包括虚拟机的CPU、内存、磁盘等虚拟设备,该模式被置于一种受限的CPU模式下运行;
- User Mode:用户空间,此模式下运行的主要是QEMU,它用来为虚拟机模拟执行I/O类的操作请求;
- Kernel Mode:内核空间,此模式下可以真正操作硬件,当Guest OS执行I/O类操作或特权指令操作时,需要向用户模式提交请求,然后由用户模式再次发起硬件操作请求给内核模式,从而真正操作硬件。
KVM体系一般包括三部分:KVM内核模块、QEMU和管理工具,其中KVM内核模块和QEMU是 KVM的核心组件
都是通过Libvirt接口(一个开源项目)管理kvm,xen,hyperv虚拟机
云计算基础网络知识
TCP/IP四层模型
应用层 | 应用层为用户的应用提供服务并支持网络访问。会话层:负责管理网络中计算之间的通信,提供传输层不具备的连接相关功能。表示层:负责转化数据格式,并处理数据加密和数据压缩。各种应用 |
---|---|
传输层 | 传输层主要提供应用程序接口,为网络应用程序提供网络访问的途径,可以从多个应用层序接收消息的功能(多路复用),同时也提供可以把消息分发给应用程序的功能(多路分解)。TCP/UDP协议(路由工作在这层,具备路由功能就在这层) |
网络层 | 网络层主要是解决数据由一个计算机的IP如何路由到目标计算机的过程规范,我们的计算机消息发送出去后,是经过了哪些处理才能正确的找到目标计算机,其中包含了IP、ARP、RARP、DNS、ICMP等协议。(vlan工作在这层,能划分vlan就是在这层) |
网络接口层 | 网络接口层主要是管理物理网络准备所需要的数据,与计算机网络适配器连接,根据合适的方式调整数据传输(不同的传输介质和网络格式不同),把数据转化为电子流或脉冲的形式在传输介质上传输,对发送的数据添加错误检查信息、对接收的数据进行数据检验。(hub工作在这层) |
三层交换机和路由器的区别
- 交换机通过ASIC芯片负责高速的数据交换,主要适用于局域网,特点主要是数据交换频繁、网络接口单一、数量较大,交换机能够提供快速的数据转发,一般提供网线接口(RJ45)和光纤接口两种,并且每台交换机一般都有较多接口,完全可以满足局域网的需求
- 路由器通过维护路由表进行不同网段之间的路由寻址,同时其天生具备隔离广播域的特性,适用于广域网,网络类型和接口类型众多,路由器的路由功能通常非常强大,不仅适用于同种协议的局域网间,更适用于不同协议的局域网与广域网间。它的优势在于选择最佳路由、负荷分担、链路备份及与其它网络进行路由信息的交换等等路由器所具有的功能。
- 路由器一般由基于微处理器的软件路由引擎执行数据包交换。(软件方式)
- 三层交换机通过硬件执行数据包交换。(硬件方式)
在数据中心中,路由器一般部署在企业或单位网络出口的位置,连接互联网和内网。如果内网需要访问互联网,一般都需要路由器完成路由转发和NAT(网络地址转换),如果通过互联网访问内部网络,同样也需要经过路由器。
数据中心交换机的摆放方式
TOR
EOR
数据中心网络流向(目前东西向流量比南北向流量要大很多,因为东西向通常有虚拟机热迁移,或者下载本地的资源)
数据中心的流量分为业务流量,管理流量,存储流量。如果管理流量和业务流量分开,使用不同的物理线路及接口,这种方式叫带外管理(out-of-band),如果管理流量和业务流量使用同一物理通道,就叫**带内管理(in-band)**。
主机通信方式
局域网中,节点和节点通信的方式分为广播和单播(还有组播,为了简洁,暂且不谈),
广播就相当于一个人拿喇叭喊,他喊的内容,其他人都能听到。但是广播有缺点,就是一个人一直喊,其他人的谈话就受到影响,并且,喊得内容其他人都能听到(群主:今晚pc;警察:!?),不安全,就要控制声音传播的范围,就引入了广播域。
单播就相当于情侣说悄悄话,说了什么话之后,互相能够听到,单播分为半双工(对象是个话痨,一直巴巴,不让你巴巴),全双工(你俩半斤八两)
不同广播域之间是通过路由和网关进行通信
- 路由:相当于电话本,里面记录这每个人的电话,你想给一个人打电话的时候,可以翻电话本查。
- 网关:相当于114查电话号码的,你打电话给114问老王电话是多少,并且跟114说你想告诉老王什么事情,114查到电话之后,代替你打电话给老王,告诉他你老婆怀孕了。
vlan
vlan是将一个物理网络划分为多个广播域的技术,同一个vlan内的主机可以直接通信,不同vlan的主机之间不能直接通信(可以路由)。*
- 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
- 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN
内的用户不能与其它VLAN内的用户直接通信。 - 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其
它VLAN的正常工作。 - 灵活构建虚拟工作组:用VLAN可以将不同的用户划分到不同的工作组,同一工作
组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
vlan是在传统的以太网数据帧****中加入了4字节的802.1Q Tag,不同的VLAN就用这个标签来区分。
传统数据帧
vlan的数据帧
图中:vid=vlan id,代表vlan号,vlan标签。
交换机端口类型
交换机有两种端口类型:access口,和trunk口。
- access口:只允许一种vlan通过,通常用于pc和交换机之间。
- trunk口:允许多种vlan通过,通常用于交换机之间连接。
数据帧处理方式
链路聚合技术
链路聚合技术可以在不进行硬件升级的情况下,通过将多个物理接口捆绑为一个逻辑接口,来达到增加链路带宽的目的。并且在增大带宽的同时,链路聚合采用备份链路机制,可以有效提高设备间链路的可靠性。
优势:
- 增加带宽:链路聚合接口的最大带宽可以达到各成员接口的带宽之和。两个1M的端口,绑定之后可以实现2M的传输速率
- 提高可靠性:当某条活动链路出现故障时,流量可以切换到其它可用的成员链路上,从而提高聚合链路的可靠性。
- 负载分担:在一个链路聚合组内,可实现各成员活动链路间的负载分担。
链路分担分为手工和LACP模式,手工无法检测链路故障,LACP可以自动检测故障,自动切换
虚拟交换机
在一台服务器里,有多个虚拟机,那他们的网卡,以及他们之间的通信,都要通过虚拟交换机实现,早期linux通过网桥来实现虚拟交换功能。
网桥就相当一个交换机,作用:
- MAC学习:学习MAC地址,起初,网桥是没有任何地址与端口的对应关系的,它发送数据,还是得像HUB一样,但是每发送一个数据包,它都会关心对应源MAC地址的数据包是从自己的哪个端口来的,通过学习建立地址-端口的对照表(CAM表)。
- 报文转发:每发送一个数据包,网桥都会提取它的目的MAC地址,再从地址-端口对照表(CAM表))中查找由哪个端口把数据包发送出去。
华为的虚拟交换机分为三种模式,普通模式(全虚),SR-IOV(硬件辅助虚拟化模式,在物理网卡上虚拟化成多个虚拟网卡),用户态交换模式(使用到了DPDK技术,环境抽象层旁路内核协议栈、轮询模式的报文无中断收发、优化内存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术)。
但是sdn(软件定义网络)无法管理网桥,所以引入了开源软件OpenvSwitch。
OVS
OVS是一款开源软件实现的虚拟交换机,它支持多种标准接口协议,支持openflow协议,并且网络状态可迁移(一个虚拟机从一个主机上迁移到另一个主机上,网络配置不会发生变化)ovs可以满足大规模基于Linux的虚拟化环境中对自动和动态网络控制的需求。
华为的虚拟交换机分为普通交换机(OVS或者EVS)和分布式交换机(DVS)
EVS
EVS是华为根据OVS二次开发而来,引入了DPDK技术和多线程处理技术(ovs是单线程处理),增强了IO性能。
DVS
DVS是分布式虚拟交换机,是由VRM维持的,并横跨多台CNA主机的虚拟交换机,他的作用主要是整合同一个物理平面上的不同主机上的虚拟交换机,达到简化网络,方便管理的目的。
DVS涉及到的基础名词
上行链路:上行链路就是虚拟交换机连接物理网络的通道,通过虚拟交换机可以将虚拟机的流量转发到物理网络之中。
端口组:端口组就是虚拟交换机端口的集合,连接在同一端口组的虚拟机具有相同的网络属性,比如vlan,qos等
安全组:安全组的功能和防火墙类似,控制出入虚拟机的流量。主要是使用工具iptables来控制的(控制的是netfiler)。
云计算基础存储知识
硬盘知识
固态硬盘(SSD)由固态电子芯片组成,在-10-70°环境下工作,读写不需要巡道,性能好,价格贵,寿命有限,通常写寿命为万-十万次。
机械硬盘(HDD)
机械硬盘接口类型分为
- SATA(使用ATA协议,最长传输距离1m,容量大,支持8-16个设备)
- SAS(使用SCSI协议,转速快,稳定,抗干扰,传输距离长,支持65536个设备)
- NL-SAS(使用SCSI协议,使用SATA的盘片和转速,但是便宜)
硬盘对比
集中式存储
SAN
SAN:存储区域网络,类型分为FC SAN(传输介质为光纤),IP SAN(传输介质为网线),SAN将存储设备通过高速网络连接起来,这些存储设备通过网络可以被多个服务器共享。
在SAN网络中,所有与数据存储相关的通信都在一个与应用网络隔离的独立网络上完成,这也意味着数据在SAN中传输时,不会对现有的应用系统数据网络产生任何影响。
FC SAN 使用FC协议,IP SAN使用的是ISCSI协议,也就是将SCSI数据封装在IP报文之中。
IP SAN中主要通过启动器和目标器来实现使用存储。
NAS(网络区域存储)
NAS由两种协议实现,CIFS(windows搭建使用的协议)、NFS(Linux搭建使用多个协议)
RAID机制——奇偶校验
RAID是把多个磁盘组成一个阵列,当作单一磁盘使用。它将数据以分段或条带(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起动作,大幅减少数据的存取时间,同时有更佳的空间利用率。
RAID0(条带化):多个硬盘组成一个逻辑磁盘,当一个IO下发的时候,会划分多份,同时进行IO,提高了IO能力。速度快,但是没有冗余能力。
RAID1(双写):完全把之前的磁盘镜像一份。不提升性能,也不提升空间,但是最可靠
RAID5:最少要三块磁盘,最多可以坏一块
RAID6:最少四块盘,最多可以坏两块
分布式存储
分布式存储就是将通用X86架构服务器的磁盘提供到分布式存储上。
分布式存储架构
常见的分部式存储产品有ceph、HDFS、FusionStorage、vSAN等。
分布式存储特点
- 性能卓越:采用无状态机头(不需要查元数据表,每次IO都是通过DHT计算得到)
- 全局负载均衡:系统会将数据打散存放在不同的节点上,冷热数据均匀分布,相同副本分散存放,数据重建速度快。
- SSD缓存:传统存储可以使用SSD作为缓存
- 高性能快照:数据都是大散存放的,天然适合快照,通过一次Hash就可以判断是否快照,以及最新快照位置
- 高性能链接克隆:数据都是打散存放,创建和使用链接克隆速度快。
- 高速IB组网
分布式存储通常使用多副本或者EC机制保证数据的可靠性,谷歌使用的是多副本机制。
多副本机制
数据存储时采用多副本技术、支持两副本或三副本,每个副本会分别存放在不同的节点中,相同的副本不会存放在同一节点内,安全级别为,服务器级、机柜级、机房级
EC机制——云时代RAID替代品
总数据块 = 原始数据块 + 校验块
n = k + m
允许故障:任意m个块,包括原始数据块 和 校验块
- 从k个原始数据块中计算出m个校验块。
- 将这k+m个数据块分别存放在k+m个硬盘上,就能容忍任意m个硬盘故障。
- 当出现硬盘故障时,只要任意选取k个幸存数据块就能计算得到所有的原始数据块。
- 同理,如果将k+m个数据块分散在不同的存储节点上,就能容忍m个节点故障。
虚拟化存储和非虚拟化存储
狭义存储虚拟化:是否有集群文件系统,可以是NFS,也可以是虚拟化集群的文件系统。集群文件系统各个厂商使用的都不同,华为使用的是VIMS,VMware使用的是VMFS,都能超出单个系统的限制。
虚拟机磁盘
每个虚拟机磁盘都对应一个磁盘文件,用来保存用户的真实数据。
常见磁盘格式
基础虚拟化特性
HA
HA就是指当虚拟机或者物理服务器故障之后,可以在集群的其他可用主机上启动虚拟机。
负载均衡
内存复用
内存复用就指当物理内存一定的情况下,通过综合运用内存复用单项技术,实现对内存的分时复用,提高虚拟机密度。主流的内存服用技术有内存共享写时复制,内存置换,内存气泡。
内存共享写实复制
内存共享写时复制就是指多台虚拟机上有相同的内存数据,此时他们共享同一物理内存空间,此时,对这部分物理内存空间做只读操作。
如果有虚拟机要做写操作,开辟另一物理内存空间,并复制内存数据到新空间中,并修改映射。
内存气泡
内存气泡就是指回收空闲虚拟机的内存分配给压力较大的虚拟机使用,内存的回收和分配都是动态执行的,虚拟机上的应用无感知。
内存置换
内存置换就是将虚拟机上部分长时间未被访问的内存数据置换到置换空间之中,当虚拟机要使用这部分内存数据时,重新置换会虚拟机内存中。
虚拟机快速部署
可以按模板部署或者虚拟机克隆快速部署。
虚拟资源热添加
目前的技术可以做到
- 在线/离线添加删除网卡
- 在线/离线添加删除磁盘
- 在线添加/离线添加删除CPU
- 在线添加/离线添加删除内存
虚拟机快照
快照就是在某一时刻虚拟机的完整可用拷贝
目前使用到的快照技术分为
全拷贝快照(也就是将原虚拟机完整拷贝一份),COW(写即复制),ROW(写即重定向)。
COW:COW就是快照之后,当一次IO下发的时候,会先读出此次IO要覆盖掉的数据,将这部分数据存放到快照空间中,然后再执行IO(一次读,两次写)。
ROW:ROW就是快照之后,会创建出一个差分卷,也就是快照卷,增删改查的操作都在差分卷中执行(一次写多次读)。
NUMA
通常服务器都是多CPU的,每个CPU都管理自己的内存,开启NUMA特性之后,每个CPU只能使用自己管理的内存,性能可以提高十倍,但是也会造成负载不均的问题。
DPM
系统会周期性的检测集群的资源利用率,如果集群的资源利用率过低,那么就会将多余的主机下电节能,如果集群的资源利用率过高,会将离线的主机上电,达到一个增加集群资源的效果。
DRS
系统周期性的检测主机的负载情况,通过在集群的主机之间迁移虚拟机实现负载均衡。
IMC
IMC可以降低高代CPU的功能集。
IMC是英特尔特有的特性,举个例子,E3系列CPU支持加减功能,E5系列CPU支持加减乘除功能,虚拟机一开始在E5上运行,使用的加减乘除功能,当虚拟机迁移到E3的服务器上之后,会因为E3不支持乘除功能而出现问题,所以引入了IMC特性。
QOS
QOS分为CPU,内存,网络,存储。
CPU和内存
- 份额
- 限额
- 预留
网络
发送和接受流量整形
存储
- IOPS
- BPS
文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。