深度实践KVM--读书笔记

    博文为自己在斟酌完技术书籍深度实践KVM后提取出的个人认为重要的术语解析,以及简单的知识总结汇总,介于篇幅,总结的比较精短,知识为于快速记忆,如需详细了解技术细节原理,读者可自行阅读原著

##前言知识##

1、虚拟化层翻译分为:软件全虚拟化,改造虚拟机系统内核加虚拟化层翻译、即半虚拟化,硬件支持的全虚拟化

2、QEMU:实际是一台硬件模拟器 ,Libvirtd 是一套开源的虚拟化的管理工具,

##CPU、内存虚拟化##

3、SMP、MPP、NUMA都是为了解决多CPU共同工作的问题,SMP即多个CPU通过一个总线访问存储器,MPP可以近似理解成SMP的横向扩展群,NUMA模式则是每个处理器有自己的存储器,每个处理器也可以访问别人的存储器,使用那些内存消耗型的应用时,可以考虑直接将系统的NUMA自动平衡策略关闭
4、KSM技术可以合并相同的内存页, 当宿主机内存不足时,临时打开KSM也是一种应急方案
5、virsh vcpuinfo命令查看虚拟机VCPU 和物理CPU的对应关系
6、emulatorpin命令可以查看虚拟机可以使用哪些物理逻辑CPU、CPU绑定实际上是Libvirt通过CGroup实现的
7、VMWare第一层是用的硬件虚拟化技术,第二层完全软件模拟出来的,可做俩层嵌套,KVM是将物理CPU特性传给虚拟机 ,故可嵌套N层

8、KVM的内存气球技术可以在虚拟机之间按照需要调节内存大小,提高内存的利用率(查看当前内存大小:virsh qemu-monitor command),如果有俩种或者几种不同的虚拟机在同一台宿主机上,可以考虑用气球技术,而内存限制技术可以和内存气球技术结合,将内存气球技术限制在一定范围,避免内存被气球无限压缩。

##网络虚拟化##

9、Open vSwitch 主要是解决虚拟化网络的管理问题,是一个由软件实现的虚拟交换机

10、全虚拟化与半虚拟化的根本区别在于客户机是否需要修改才能运行在宿主机中,俩者网卡的区别是全虚拟化网卡是虚拟化层完全模拟出来的网卡、半虚拟化网卡通过驱动对操作系统做了改造
11、vhost-net 技术使虚拟机的网络通信绕过用户空间的虚拟化层,可以直接和内核通信,从而提供虚拟机的网络性能,MacVTap 则是跳过内核的网桥。使用vhost-net的前提是使用Virtio半虚拟化网卡
12、虚拟网络设备TUN/TAP(TAP:模拟第二层以太网设备,TUN模拟第三层网络层设备),可用于服务器开启代理功能。MacVlan的功能是给同一个物理网卡设置多个Mac地址,使用MACVTap以太网口的虚拟机能够通过TAP设备接口,直接将数据传递到内核中对应的MacVTap以太网口 
13、virtio设计用于进行客户系统的前端与VMM的后端通信 使用vhost-net方式后,进入内核态后不需要在进行内核态用户态的切换,进一步减少特权级切换的开销
14、网卡多队列实际就是网卡的数据请求可以通过多个CPU处理 

15、物理网卡的中断与多队列将不同流分发到不同CPU上,同一数据流始终在同一CPU上,避免TCP的顺序性和并行性发生冲突

16、网卡软中断分发的解决方法:RSS、RPS

17、SR-IOV实际上是一种硬件解决方案,提供一种从硬件上绕过系统和虚拟化层,并使每个虚拟机能有单独的内存地址、中断,DMA流。即一个物理网卡,开多个VFs(虚拟功能)

##磁盘虚拟化##

18、磁盘调优主要是不同业务场景的磁盘镜像方式及缓存方式选择,虚拟机和物理机文件系统的块对齐对磁盘性能影响也大
PCI-E:总线与接口标准
19、IDE、SATA是纯软件模拟磁盘,也称为全虚拟化的磁盘类型,Virtio、Virtio-SCSI是半虚拟化的磁盘,Virtio驱动原理主要是绕过QEMU软件模拟这一层,让虚拟机的操作系统可以和内核的虚拟化层直接通信
20、磁盘类型(接口):IDE、SATA、Virtio、Virtio-SCSI  镜像方式:raw(二进制型,主要是一些块设备文件)、qcow2、qed ,cloop,cow,vmdk,qcow(2)文件系统:xfs、ext(0 2 4)、fat缓存方式:wirtethrough(单机虚拟化),wirteback(测试环境),none(用于虚拟机在线迁移),directsync,unsafe
21、LVM优点:可以动态调整,可以做快照,管理方便

22、guestfish是一套虚拟机镜像管理的利器,提供一系列镜像管理的工具,提供对外API,没有他之前,对镜像的处理,先转换成raw格式,再转换成裸格式,然后挂载

23、CPU消耗型的虚拟机使用qcow2这样的文件镜像,磁盘I/O消耗型的虚拟机用lvm这样的裸设备

24、??块对齐:磁盘报告给BIOS每个磁盘轨道有63个扇区,因此操作系统依然将第一个分区的开始位置放置到第一个轨道上,从第63个扇区开始。

25、固态硬盘SSD是一种以存储器Flash作为永久性存储器的存储设备,分为SLC(单层式存储)、 MLC(多层式存储) TLC (多层式存储)

##虚拟机资源限制##

26、常见资源限制做法;CGroups限制虚拟机的I/O资源,绑定CPU,Linux TC、Libvirt、iptables限制虚拟机网络流量、

27、所谓机制就是“我要提供哪种功能”,策略就是“我要怎样来实现这种功能“,CGroups对应机制,子系统对应策略。CGroups中每个子系统代表一种类型的资源,包括:(cpu子系统、cpuset子系统、cpuacct子系统、memory、blkio、devices、freezer、net-cls、NameSpaces)。cgcreate命令可以创建CGroups控制组群,cgcreate命令可以删除CGroups控制组群,cgset命令可以设置子系统参数,cgclassify将进程移动到指定的控制组群中

28、给进程分配不同的CPU core,当多个进程运行在同一个CPU CORE 上时,也可以限制每个进程得到的cpu时间比例

29、限制网络流量方法:a、通过TC限制虚拟机流量,TC是内核中一套限制网络流量的机制,工作原理就是通过设置不同类型的网络接口队列,从而改变数据包·发送的速率和优先级,达到流量控制目的,且只能控制出口流量,入口不能 b、通过libvirt限制虚拟机流量 c、通过iptables限制虚拟机流量

##物理机转虚拟机  P2V## 

应用场景:软件环境配置复杂,操作系统比较老而不能在新的服务器上安装

30、p2v技术实施方案:a、静态方案,需要关机操作,没有磁盘驱动,比如    KVM 的virtio,所以要将驱动导入到系统中, b、动态方案,不需要加载驱动,但需要安装Agent

##桌面虚拟化##

31、远程访问协议:RDP、PCOIP、SPICE(客户端、服务端、Agent)

##分布式文件系统##   

32、NTP:保证时间同步;Corosyncs 是LINUX集群通信套件,Pacemaker是一套以资源管理为基础的linux系统集群管理软件

33、常见的开源分布式文件系统:DRBD、GlusterFS 、MooseFS(合适用于镜像存储)、 Sheepdog。    DRBD:分布式复制块设备;DRBD复制协议(3种):【协议A:异步复制协议,本地写成功后立即返回,数据放在发送Buffer中  协议B:内存同步(半同步)复制协议 本地写成功并将数据发送到对方后立即返回  协议C:同步复制协议 本地和对方写成功确认后返回  安全但速度慢】,KVM使用DRBD方法有俩种,分别是NFS方式和Iscsi方式

34、GlusterFS(基于GNU协议的集群文件系统,全对称的开源分布式文件系统),其协议层支持IP和RDMA(远程直接数据存储),支持的卷类型:分布卷、复制卷、条带卷、分布条带卷、分布复制卷、分布条带复制卷(生产环境建议方式,加最好虚拟机环境镜像保存3份)、条带复制卷、分散卷、分布分散卷

解决·性能最好的·方法是SSD和万兆网络

##Ceph在KVM虚拟化中的应用##

35、Ceph提供了对象存储、块存储及文件存储的通一存储模型。其三大组件分别为 Ceph OSD(存储数据、副本数据处理、数据恢复、数据回补、平衡数据分布,将相关监控信息提供给Monitor)、Monitor(维护集群状态的表组)、MDS(保存的是Ceph文件系统的元数据)

36、CephFS挂载方式有俩种:FUSE(用户空间文件系统)和通过内核模块挂载

37、CRUSH算法:一种基于可扩展哈希的控制复制算法,负责数据对象实际分布与数据恢复的算法;三要素:【Cluster  (集群映射):记录所有可用的存储资源及相互之间的空间层次架构  Data distribution policy(数据分布规则):由placement rules 组成 多参数Hash函数】。。其算法调优涉及:a、手动编辑CRUSH Map配置文件,其中可以调整的部分包括OSD权重,Bucket 的定义、Rule规则

##云管理平台##

38、常见开源云管理平台:OpenStack、OpenNebula、convirt、cloudstack、ovirt、webvirtmgr

39、OpenStack组件及功能:keystone(负责认证、用户管理工作,有user、role、tenant这几个概念(一个user可以在不同的tenant内有不同的role);其他组件都需要在这里创建相应的service和API endpoint,用于通信)、 glance(负责镜像管理)、 nova(管理计算资源)、 neutron(负责虚拟化网络的管理,需要配置 open vswitch作为其插件来实现底层的网络虚拟化)、 cinder(提供块存储服务,由3个组件组成:cinder-api(负责处理API请求)、cinder-scheduler(负责调度)、cinder-volume(负责实际操作后端存储))、 horizon(openstack的dashboard(信息窗),提供了通过网页管理openstack的功能)、 swift(提供对象存储服务)

40、RabbitMQ是OpenStack各组件之间通信的枢纽,Haproxy是一款开源的负载均衡软件。

41、OpenNebula的组件:front-end(前端:用于运行opennebula服务)、host(用于运行所有的虚拟机)、datastores(数据存储:用于实际存储虚拟机的硬盘)、network (网络)

##KVM虚拟化·项目实施##

42、基于shell的服务器性能采集脚本示例

从脚本功能上看,主要做了几件事:第一,获取服务器的基本信息;第二,检查·服务器环境,确保这几个采集性能的命令能运行;第三,采集服务器性能;第四,打包上传性能数据

基本敲完了,后来没有保存,气死了,直接上图算了

#!/bin/bash
#default frequency
#$TIMES x $INTERVAL =performance collection long




43、后端存储技术:NAS(网络附加存储,常见的有NFS、CIFS) IP SAN(IP 存储区域网络) FC SAN(光纤通道 存储区域网络 ),业务是CPU消耗型的考虑使用分布式文件系统

##自动化运维管理##

44、自动化工具:puppet、ansible等

45、WEBrick库是一个HTTP服务的工具集,可用Apache+Passenger替代

46、top是动态变化,ps是静态显示运行数据,进程从备用状态切换到运行状态,或运行态切换到阻塞态就是上下文切换 SNMP:网络管理协议

猜你喜欢

转载自blog.csdn.net/dongfei2033/article/details/80331062