虚拟化底层之道--Qemu-KVM学习--徐安(QQ&微信:2484769112)目录KVM技术学习OpenStack,Docker的应对之策广告--汉柏OPV-Suiteyun.opzoon.com什么是虚拟化,什么是KVM网络上最靠谱的定义:虚拟化是将计算机物理资源如服务器、网络、内存及存储等予以抽象、转换后呈现出来,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。Virtualization=Abstract+Pool+Automate特点:-脱离物理设备-可弹性控制-按需使用-可度量yun.opzoon.com什么是KVMKVM(全称是Kernel-basedVirtualMachine)是开源的Linux下x86硬件平台上的全功能虚拟化解决方案,自Linux2.6.20之后集成在Linux的各个主要发行版本中。yun.opzoon.comQemu-kvm线程模型主(父)线程。主线程执行循环,主要做三件事情执行select操作;执行定时器回调函数;执行下半部(BH)回调函数--FT实现在这里执行客户机代码的线程如果有多个vcpu,就意味着存在多个线程。每个vcpu是一个单独的thread;vcputhread在VM_ENTER以后执行客户机代码,在VM_EXIT以后根据退出原因执行PIO或者MMIO。异步io文件操作线程,aio_context_thread_pool提交i/o操作请求到队列中,该线程从队列取请求,并进行处理。如果aio类型是threadspool,启动一个thread去执行类似bdrv_aio_readv/raw_aio_writev操作如果aio类型是nativeio,同步执行完io_submit后立马返回,启动专门的work线程去执行io_getevents--异步得到返回结果VNC线程yun.opzoon.comCPU虚拟化-1VCPU线程被Main线程创建yun.opzoon.comCPU虚拟化-2VCPU什么时候被调度?不需要被调度,一直都在运行--主要在右边的while中运行。调用KVM的KVM_RUN就是把CPU交给虚拟机及KVM。虚拟机有IO请求需求QEMU-KVM处理时,会退出,QEMU-KVM根据run-exit_reason的原因进行下一步的动作。yun.opzoon.com内存虚拟化-1虚拟机地址访问过程GVA(VM页表)--GPA(kvm_mem_slot结构体)--HVA(Host页表)--HPAyun.opzoon.com内存虚拟化-2有两个方法加快以上翻译的过程影子页表:•VMM可以使用该HPA来构建影子页表,即建立GVA到HPA的映射。使用EPT:•则VMM在“eptviolationvmexit”发生时利用以上素材建立GPA与HPA的映射关系--EPT表。我们到底用的是哪个呢?$cat/proc/cpuinfo|grepept检查硬件是否支持ept机制。如果支持那么kvm会自动的利用EPT。yun.opzoon.com影子页表CR3指向影子页表;任何修改页表的动作都被捕获,由KVM来修改影子页表yun.opzoon.comEPT利用硬件自动翻译--GPA到HPA的映射TLB加快速度yun.opzoon.com网卡虚拟化(E1000)yun.opzoon.com虚拟机收包yun.opzoon.com虚拟机发包yun.opzoon.comVirtio-netyun.opzoon.comVirtio-net收包yun.opzoon.comVirtio-net发包yun.opzoon.comVirtio-blkyun.opzoon.comVirtio-blk读写流程yun.opzoon.com存储软件栈yun.opzoon.com用Native的性能会比threads模型的性能更高目录KVM技术学习OpenStack,Docker的应对之策广告--汉柏OPV-Suiteyun.opzoon.comOpenStackOpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。yun.opzoon.comOpenStack为我们带来什么牛X的体系结构设计全世界的高手在给你写代码开放通用的接口技术讨论的平台和社区......yun.opzoon.comOpenStack不能给我们带来什么不是一个产品不能解决“客户现场”的问题方向&代码不由你控制为“大千万众”服务,而不单独为你--很多东西你都用不上......yun.opzoon.com其中一个方向产品化的有自己特色的接口通用的自有产品yun.opzoon.com容器与DockerDocker基于LXC(容器--提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性)技术Docker在LXC容器上加入了:应用分发机制,COW根文件系统--部署多个类似镜像快上加快,补充基本功能--shell,日志相对于虚拟化技术Pros:密度大,启动快--软件栈减少两层--GuestOS+KVM更容易部署SAAS和PASS--解耦“应用”与“操作系统”,为应用分发提供可能Cons:安全风险,因为共享内核--被诟病最多资源(CPU,Memory,Disk,Network)控制依赖于HostOSyun.opzoon.comDocker与KVM1)Docker和LXC与KVM考虑的层次是不一样的:前者主要考虑应用如何快速,高效(比如COW)发布和部署;后者主要考虑如何快速,高效交付资源(CPU,Memory,Disk,Network),并最好做到灵活控制,自动化控制。2)Docker可构建在OPV上,实现联动--用户既能控制资源,也能控制应用3)Docker等技术后续会取代目前的kvm等虚拟化技术吗?天马行空最理想的状况是什么呢?更多的状况可能是:有些地方单独用Docker--不关注资源;有些地方单独用KVM--不关注应用;有些地方一起用--两套系统,分别关注资源和应用。那能不能有一套系统和技术:应用部署和资源分配的单位统一为一个呢?--貌似不可能,因为应用需要跑在资源的管理系统(也就是操作系统)上,所以,应用的单位本身就应该小于资源的单位。目录KVM技术学习OpenStack,Docker的应对之策广告--汉柏OPV-Suite产品(OPV-Suite)定位及构成该系统软件由虚拟化引擎OPV-X和虚拟化管理系统OPV-M组成,OPV-X将物理硬件资源(CPU、内存、硬盘、网卡等)虚拟化并形成资源池,OPV-M实施统一的资源分配和资源管理、用户身份管理、虚拟机基础安全管理、基础网络服务管理、物理资源及虚拟机资源监控。产品定位汉柏虚拟化系统软件(简称:OPV-Suite)是汉柏科技有限公司面向数据中心云计算基础架构推出的业界领先的云计算基础架构软件系统。OPV-Suite将所有服务器整合为可以按需取用的动态资源池,从而将传统数据中心改变为可扩展的、动态的、绿色的云计算数据中心。产品构成OPV-Suite虚拟化系统软件逻辑架构WEB管理端CLI管理端用户管理安全管理资源管理镜像管理OPV-X虚拟化引擎DNSPXEDHCPTFTPQoSDatabase存储服务配置管理高可靠性管理基础服务管理监控管理端监控服务集群监控主机监控CPU监控内存监控IO监控存储监控VM监控Admin管理端自服务管理电源管理OPV-ManagerVM管理OPV-Suite产品关键特性计算•支持虚拟资源热变更•支持物理机资源热添加①支持vCPU数量32个②支持vRAM数量32G③支持vDISK数量24个④支持vNIC数量8•虚拟机•物理机①CPU内核数量无限制②RAM数量无限制③集群内节点数量32台网络•分布式虚拟交换机•专用虚拟网络vLAN•物理网络QOS•虚拟网络QOS•vDHCP服务•vDNS服务•物理网卡多模式绑定存储管理•完整模式克隆•链接模式克隆•增量快照•磁盘自动精简配置•共享存储•本地存储•分布式存储•存储镜像备份与恢复①FCSAN②IPSAN•虚拟防火墙①基于L4-L7访问控制②基于vNIC访问控制安全可靠性自动化•虚拟机迁移•分布式资源调度•智能化节能调度•大规模高效自动化部署•主机/虚拟机级别HA•管理平台分布式部署,无单点故障•存储多路径保障•管理平台随主机安装虚拟化系统而自动安装•虚拟化四层管理结构•多种接入方式管理①B/S②C/S③CLI④API集成•平台全方位监控•自定义告警内容和告警方式兼容性•兼容业界主流IT厂商服务器、存储、网络硬件•兼容主流Windows、Linux操作系统•基于本地和域用户的权限管理我们的成就2项软件著作权73项虚拟化核心技术专利4项认证证书3项大奖合作共赢