设为首页 收藏本站

运维网

查看: 2310|回复: 10

[经验分享] 【电子书】KVM虚拟化技术 实战与原理解析

[复制链接]

累计签到:19 天
连续签到:1 天
发表于 2017-2-15 18:12:02 | 显示全部楼层 |阅读模式

目录


前言

第1章 虚拟化与云计算
1.1 云计算概念
1.1.1 发展历史和现状
1.1.2 概念
1.1.3 云计算模式:SaaS,PaaS,IaaS


1.2 云计算技术
1.2.1 Map/Reduce
1.2.2 资源管理平台,CloudStack,VMware,OpenStack
1.2.3 虚拟化


1.3 虚拟化技术
1.3.1 软件虚拟化和硬件虚拟化(软件虚拟化Qemu,硬件VMM)
1.3.2 准虚拟化与全虚拟化(准Xen)
1.4 KVM简介
1.4.1 KVM的历史——内核虚拟机
1.4.2 KVM功能概览,基本架构,内存管理,存储,设备驱动程序,性能简介
1.4.3 KVM的前景
1.5 Xen简介
1.5.1 Xen的历史——架构简介,微内核
1.5.2 Xen功能概览
1.5.3 Xen的前景


1.6 其他虚拟化方案简介
1.6.1 VMware
1.6.2 VirtualBox
1.6.3 Hyper-V
1.7 本章小结
1.8 本章注释





第2章 KVM原理简介
2.1 Linux操作系统简介——微内核(Xen)和单内核(KVM)设计
2.2 虚拟化模型,(底层是物理机,上层是一个虚拟机监控器(VMM,Hypervisor),非操作系统,上层为真正的虚拟机OS)
2.3 KVM架构

      类型一:虚拟机监控器,Xen,VMWare ESX/ESXi  , Hyper-V

      类型二:虚拟机监控程序,KVM ,VMware Workstation,VirtualBox,为单内核结构

2.4 KVM模块

    CPU虚拟化,内存虚拟化,浅

2.5 QEMU设备模型
2.6 Intel虚拟化技术
2.7 本章小结





第3章 构建KVM环境
3.1 硬件系统的配置,在BIOS中开启VT和VT-d
3.2 安装宿主机Linux系统
3.3 编译和安装KVM——内核空间KVM模块
          下载KVM源代码,配置KVM(配置命令),编译KVM,安装KVM
3.4 编译和安装qemu-kvm——用户空间的KVM模块

          下载qemu-kvm源代码,配置和编译qemu-kvm(make -j 10),安装qemu-kvm
3.5 安装客户机
3.6 启动第一个KVM客户机
3.7 本章小结
3.8 本章注释和参考阅读





第4章 KVM核心基础功能
4.1 硬件平台和软件版本说明
4.2 CPU配置
4.2.1 vCPU的概念,KVM的三种模式相互切换,切换图
4.2.2 SMP的支持,参考cpu-info.sh,/proc/cpuinfo文件查看系统cpu,多核心,超线程等情况

     qemu-system-x86_64 -smp(或不加) 8  其他参数   /*.img
4.2.3 CPU过载使用

         利用客户机使用物理CPU时间差异,保证物理CPU一直处在最大状态,如果8核物理机,开3个客户机都是8核的,但3个客户机运行的时间不一样,一个早上,一个下午,一个晚上。

4.2.4 CPU模型

      qemu64,kvm64,等

      好处:便于迁移,兼容等问题

4.2.5 进程的处理器亲和性和vCPU的绑定(**)

      一个进程在前一个时间片是在CPUM上,但是在后一个时间片是在CPUN上,

      亲和性是指:将进程绑定到指定的一个或多个CPU上,而不允许将进程调度到其他进程上。

      每个vCPU是宿主机上的一个普通的Qemu进程,使用taskset工具,设置处理器的亲和性,将某个vCPU绑定到某个或几个固定的cpu上去调度。

      测试步骤:

        1)启动宿主机时,在linux内核上加上“isolcpus="参数,实现cpu的隔离,从宿主机中隔离出几个cpu供客户机使用;

        2)启动2个客户机,并实现vcpu和物理cpu的绑定。


4.3 内存配置
4.3.1 内存设置基本参数

    1)qemu-system-x86_64 rhe16u3.img

    2)客户机中,free -m  ,查看内核使用的情况

                         dmesg


4.3.2 EPT和VPID简介

    客户机虚拟地址GVA——>客户机物理地址GPA转换,通过客户机操作系统实现

    客户机物理地址GPA——>宿主机物理地址HPA转换,通过Hypervisor实现


    影子页表,软件实现GVA——>HPA的转换过程,后来引入EPT,硬件实现GVA——GPA——HPA的转换。

    VPID,虚拟处理器标识,在硬件上为每个TLB项增加一个标识,用于区分不同的虚拟处理器的地址空间。

4.3.3 大页(Huge Page)

    4KB的内存页——>2MB的内存页,减少了内存页的数量,提高了缓存命中率,这是一种提高性能的技术手段。
4.3.4 内存过载使用

    内存不足,解决方案

    1)内存交换,和交换分区来交换,openstack目测使用的就是这种方式。

            性能较差,要求(物理内存空间+交换空间大小总和)>所有客户机的内存总和。

            举例:64个内存1G的客户机,32G内存的物理机,如何分区,其中宿主机维持自身进程占用资源4G。

                   客户机要求的交换分区总和   64x1G+4G-32G=36G.

                   安装redhat建议,32G的物理内存,建议使用8G的交换分区。

                   故而,在宿主机中使用 44GB(36GB+8GB)的交换分区来满足安全使用内存过载问题。

    2)气球(ballooning技术),通过virio_balloon驱动来实现宿主机和客户机之间的协作。网易的openstack实践中好像就是用这种。

    3)页共享(page sharing),通过KSM合并多个客户机进程使用相同的内存页。
4.4 存储配置
4.4.1 存储配置和启动顺序

         1)qumu-kvm参数      -hda file    /  -hdb file  / ... /  -fdb  file  ; -driver参数

         2)客户机的启动顺序:即类似Bios中系统引导顺序

         3)举例

4.4.2 qemu-img命令

        1)qemu-img check rhe16.img 检查镜像文件;

        2)qemu-img create -f qcow2 -o ? temp.cow

        3)  qemu-img convertmy -o qcow2 rhe16.img rhe16-1.gcow2

        4)  qemu-img info rhe16.img

        5)  snapshot  /rebase /resize  
4.4.3 QEMU支持的镜像文件格式

        1)raw——原始格式,一次性占用磁盘空间。

        2)qcow2——支持稀疏文件和加密、压缩。qcow——老版本,支持后端镜像和加密

        3)sheepdog——为KVM虚拟化提供块存储,单点无故障,淘宝贡献较多。

        4)clinder——openstack镜像块存储。

4.4.4 客户机存储方式

        1)物理磁盘或磁盘分区;

        2)LVM

        3)分布式文件系统,NFS,iSCSI,GFS2

4.5 网络配置

        1)QEMU支持的网络模式——virtio类型
        A.使用网桥模式,通过linux-bridge来实现。此部分可以实际参考。

        B.使用NAT模式——此部分可以参考,讲的不错。

                dnsmasq,宿主机中运行的DHCP工具,给宿主机分配NAT内网的IP地址。基本架构图。

                bridge-util 管理linux-brige的工具

                iptables 对内核中IPv4包过滤工具和NAT管理工具。
        C.QEMU内部的用户模式网络

                Qeum自身实现的网络管理,性能差,不常用。
        D.其他网络选项


4.6 图形显示
4.6.1 SDL的使用
4.6.2 VNC的使用
4.6.3 VNC显示中的鼠标偏移
4.6.4 非图形模式
4.6.5 显示相关的其他选项
4.7 本章小结
4.8 本章注释和参考阅读




第5章 KVM高级功能详解
5.1 半虚拟化驱动
5.1.1 virtio概述(Qemu模拟I/O设备的基本原理和优缺点,virtio的基本原理和优缺点
5.1.2 安装virtio驱动(Linux、Windows中virtion驱动程序的安装、使用)
5.1.3 使用virtio_balloon(1.ballooning简介;2.KVM中balloning的原理及优劣势;3.KVM中ballooning使用示例;4.通过ballooning过载使用内存)
5.1.4 使用virtio_net(半虚拟化网络设备--1.配置和使用;2.宿主机中的TSO和GSO设置;3.用vhost_net后端驱动)
5.1.5 使用virtio_blk(使用virtio API为客户机提供访问块设备的IO方法)
5.1.6 kvm_clock配置(半虚拟化时钟,为客户机提供精准的System time和Wall time)
5.2 设备直接分配(VT-d)
5.2.1 VT-d概述

     Emulated device: QEMU纯软件模拟的设备

     Virtio device:实现virtio API的半虚拟化驱动的设备

     PCI device assignment:PCI设备直接分配(VT-d)

5.2.2 VT-d环境配置

     (1.硬件支持和BIOS设置;2.宿主机内核的配置;3.在宿主机中隐藏设备;4.通过Qemu命令行分配设备给客户机)
5.2.3 VT-d操作示例

      (1.网卡直接分配;2.硬盘直接分配;3.USB直接配置;4.VGA显卡直接分配)
5.2.4 SR-IOV技术——多个虚拟机共享一个物理设备资源,达到设备直接分配的性能。

      (1.SR-IOV概述,物理功能,虚拟功能)

      (2.SR-IOV操作示例)

      (3.SR-IOV使用问题解析)


5.3 热插拔——电脑运行时(不关闭电源)插上或拔除硬件
5.3.1 PCI设备热插拔
5.3.2 PCI设备热插拔示例(1.网卡的热插拔;2.USB的热插拔;3.SATA硬盘的热插拔)
5.3.3 CPU和内存的热插拔


5.4 动态迁移
5.4.1 动态迁移的概念

      (迁移概念,静态迁移,动态迁移。)
5.4.2 动态迁移的效率和应用场景

       (衡量条件:整体迁移时间,服务器停机时间,对服务器性能的影响)
5.4.3 KVM动态迁移原理和实践

       (先迁移内存、后迁移配置;KVM动态迁移应该注意的事项,在KVM上具体进行的操作步骤)
5.4.4 VT-d/SR-IOV的动态迁移


5.5 嵌套虚拟化
5.5.1 嵌套虚拟化的基本概念(Xen On Xen和KVM On Xen,VMware on VMware 和KVM on KVM等等)
5.5.2 KVM嵌套KVM(主要步骤)


5.6 KSM技术—写实复制。
5.6.1 KSM基本原理—内核同页合并。

    KSM允许内核在两个或多个进程(包括虚拟机客户机)之间共享完全相同的内存页。
5.6.2 KSM操作实践

    配置文件
5.7 KVM其他特性简介
    5.7.1 1GB大页

       (2MB->1GB,减少内存页表数量,提高TLB缓存的效率,从而提高了系统的内存访问性能。

         1GB大页的使用步骤)
    5.7.2 透明大页

        (提高系统内存的使用效率和性能。

          使用透明大页的步骤)

5.7.3 AVX和XSAVE——高级矢量扩展。
5.7.4 AES新指令——指令的配置、测试
5.7.5 完全暴露宿主机CPU特性——CPU模型特性、CPU信息查看。
5.8 KVM安全
5.8.1 SMEP—安全渗透,监督模式执行保护
5.8.2 控制客户机的资源使用-cgroups—linux内核中的一个特性,用于限制、记录和隔离进程组对系统物理资源的使用。

       cgroups的功能—资源限制,优先级控制,记录,隔离,控制。

       cgroups子系统。

       cgroups操作示例:通过cgroups的blkio子系统来设置2个客户机对磁盘I/O读写的优先级。
5.8.3 SELinux和sVirt

       SELinux—linux内核中的安全访问体系(MAC,强制访问控制模式),为每一个应用程序提供一个“沙箱”,只允许应用程序执行它设计需要的且在安全策略中明确允许的任务,对每个应用程序只分配它正常工作所需要的对应权限。

       sVirt—对虚拟化客户机使用强制访问控制来提高安全性,阻止因为Hypervisor的bug而导致的从一台客户机向宿主机或其他服务器的攻击。

       SELinux和sVirt的配置和操作示例。
5.8.4 可信任启动-Tboot

       TXT—在PC或服务器系统启动是对系统关键部位进行验证的硬件解决方案。

       TBoot—可信启动,是使用TXT技术在内核或Hypervisor启动之前的一个软件模块,用于度量和验证操作系统或Hypervisor的启动过程。

       使用TBoot的示例。
5.8.5 其他安全策略

       1.镜像文件加密

       2.虚拟网络的安全

       3.远程管理的安全

       4.普通Linux系统的安全准则


5.9 QEMU监控器
5.9.1 QEMU monitor的切换和配置

5.9.2 常用命令介绍

      help,info,info version ,info ,commit,cont,change,balloon,cup index,log,sendkey keys,x和xp,p或print fmt expt
5.10 qemu-kvm命令行参数

      qemu-system-x86_64[options] [disk_images]

      cpu的相关参数—-cpu参数,-smp参数

      磁盘相关的参数

      网络相关的参数

      图形显示相关的参数

      Vt-d和SR-IOV相关参数

      动态迁移的参数

      已用过的其他参数
5.10.1 回顾已用过的参数
5.10.2 其他常用参数


5.11 迁移到KVM虚拟化环境
5.11.1 virt-v2v工具介绍—将虚拟客户机从一些Hypervisor(也包括KVM自身)迁移到KVM环境中去。
5.11.2 从Xen迁移到KVM

      virt-v2v-ic xen+ssh://root@xen0.demo.com -os pool -b brnamevm-name
5.11.3 从VMware迁移到KVM

      virt-v2v-ic esx://esx.demo.com/ -os pool --bridege brame vm-name
5.11.4 从VirtualBox迁移到KVM

      virt-v2v -ic vbox+ssh://root@vbox.demo.com -os pool -b bramevm-name
5.11.5 从物理机迁移到KVM虚拟化环境(P2V)

      
5.12 本章小结
5.13 注释和参考阅读






第6章 KVM管理工具
6.1 libvirt
6.1.1 libvirt简介

   对KVM虚拟机进行管理的工具和应用程序接口、守护进程和管理工具。

   libvirt目标、交互框架、支持的虚拟机、主要的功能、支持的语言、主要进程

6.1.2 libvirt的编译、安装和配置
6.1.3 libvirt和libvirtd的配置

  /etc/libvirt/libvirt.conf——用来配置一些常用libvirt连接(通常是远程连接的)别名

  /etc/libvirt/libvirtd.conf——libvirt的守护进程libvirtd的配置文件,是一些启动设置,包括打开TCP连接、设置TCP监听端口、TCP连接认证授权方式、设置UNIX domain的保存目录等。

  /etc/libvirt/qemu.conf——对Qeum的驱动的配置文件

  /etc/libvirt/qume/目录/——存放的是使用Qume驱动域的配置文件

  libvirtd——是libvirt虚拟化管理工具的服务器端的守护进程。(要让某个节点能够使用libvirt进行管理,都需要在这个节点上安装该守护进程) libvirt的客户端程序包括——virsh,virt-manager。

  libvirtd的常见命令行。
6.1.4 libvirt域的XML配置文件

    Libvirt对虚拟机管理,实质是基于xml文件作为配置文件。

    客户机的XML文件,其中CPU配置(vcpu、cpuset,vcpupin),内存的配置(memory),客户机系统类型及其启动顺序,网络的配置(桥接方式,NAT方式,用户模式网络的设置,网卡设备直接分配(VT-d),存储的配置,域的配置,QEMU模拟器的配置,图形显示的方式,客户机声卡和显卡的配置,PCI控制器

6.1.5 libvirt API简介

    连接Hypervisor相关API:以virConnect开头的一系列操作,

        连接函数 virConnectOpen,virConnectOpenReadOnly,virConncetOpenAuth

        交互:virConectGetCapabilities,virConnectListDomains

        关闭操作:virConnectClose

    域管理的API:以virDomain开头的一系列函数

        获取域对象:virDomainPtrvirDomainLookupByID,virDomainPtrvirDomainLookupByID

        查询域信息,控制域的生命周期

    节点管理的API:以virNode开头的一系列函数

        获取各种资源信息:virNodeGetInof,virNodeGEtCPUStatus,virNodeGetMemoryStats,virNodeGetFreeMemory,virNodeSuspendForDuration

    网络管理的API:以virNetwork开头的和virInterface开头的

    存储卷管理的API:以virStorageVol开头的一系列函数

    存储池管理的API:以virStroagePool开头的一系列函数

    事件管理API:以virEvent开头的一系列函数

    数据流管理的API:以virStream开头的一系列函数

6.1.6 建立到Hypervisor的连接

    CS架构,服务器端运行Hypervisor,其上需要Libvirtd这个守护进程,科幻段连接到Libvirtd从而进行管理操作。

    本地URI——客户端使用本地URL用于连接本系统范围内的Hypervisor;

    远程URI

    使用URI   virsh -c qemu:///system

              virsh -c qemu+ssh://root@192.168.158.31/system


6.1.7 libvirt API使用示例

     使用C API连接客户机,查询域信息

     使用Python API连接客户机,查询域信息


6.2 virsh

6.2.1 virsh简介

      管理虚拟化环境中的客户机和Hypervisor的命令行工具,客户端连接程序。两种工作模式,交互模式和非交互模式。
6.2.2 virsh常用命令

      域管理命令(list,dominfo,domid,....)

      宿主机和Hypervisor的管理(version,sysinfo,nodeinfo,...)

      网络管理命令(iface-list,iface-name,net-list,net-edit,...)

      存储池和存储卷的管理命令(pool-list,pool-info<pool-name>,...)
6.3 virt-manager

6.3.1 virt-manager简介

      管理虚拟机的图形化的桌面用户接口
6.3.2 virt-manager编译和安装

6.3.3 virt-manager使用

      1.打开virt-manager

      2.创建、启动、暂停、关闭一个客户机;

      3.连接到本地和远程的Hypervisor

      4.查看和修改客户机的详细配置

      5.动态迁移

      6.性能统计图像界面,可以统计客户机CPU利用率、客户机磁盘IO,客户机网络IO等

6.4 virt-viewer、virt-install和virt-top
6.4.1 virt-viewer——用于与虚拟化客户机的图形显示的轻量级的交行接口工具。
6.4.2 virt-install——为virt-manager的图形界面和创建客户机提供安装系统的API。
6.4.3 virt-top——用于展示虚拟化客户机状态和资源利用率的工具。


6.5 OpenStack云计算平台
6.5.1 OpenStack简介
6.5.2 使用DevStack安装和配置OpenStack开发环境
6.5.3 在OpenStack中使用KVM
6.6 本章小结
6.7 本章注释和参考阅读





第7章 Linux发行版中的KVM
7.1 RHEL和Fedora中的KVM
7.1.1 Red Hat、RHEL、Fedora和CentOS简介
7.1.2 RHEL中的KVM
7.1.3 Fedora中的KVM
7.2 SLES和openSUSE中的KVM
7.2.1 SLES中的KVM
7.2.2 openSUSE中的KVM
7.3 Ubuntu中的KVM
7.4 本章小结
7.5 本章注释和参考阅读





第8章 KVM性能测试及参考数据

虚拟化方案——功能和性能;功能是实现虚拟化的基础,性能是虚拟化效率的关键指标。评价一个系统的性能指标:

响应时间:客户端发出请求到响应的整个过程所花费的时间

吞吐量:指在一次性能测试过程中网络上传输的数据量的总和。

并发用户数:指在使用一个系统服务的用户数量

资源占用率:使用某个服务时,客户端和服务器占用资源的情况。

     CPU密集型:科学计算;网络IO秘籍型:web服务;磁盘IO密集型:数据库服务;内存密集型:缓存服务


8.1 虚拟化性能测试简介


8.2 CPU性能测试
8.2.1 CPU性能测试工具

   SPECCPU2006

   SPECjbb2005:评估服务器端Java应用性能的基准测试程序

   UnixBench:类Unix系统提供的基础的衡量指标

   SysBench:系统在模拟高压力数据库应用中的性能

   PCMark:针对一个计算机系统整体及其部件进行性能评估的基准测试工具。

   内核编译:CPU密集型、也可是内存密集型

   Super PI:典型的计算CPU密集型基准测试工具。

8.2.2 测试环境配置

   宿主机、客户机软硬件环境,内核选项配置情况

8.2.3 性能测试方法

   SPEC CPU2006测试安装

   内核编译

   Super PI
8.2.4 性能测试数据


8.3 内存性能测试
8.3.1 内存性能测试工具

     LMbench——评价系统综合性能的良好工具。

     Memtest86++——内存检测工具

     STREAM——衡量系统运行一些简单矢量计算内核是能达到的最大内存带宽和相应的计算速度。
8.3.2 测试环境配置
8.3.3 性能测试方法

     LMbench——评估KVM内存虚拟机性能。会生成一个系统测试文档和测试结果报告
8.3.4 性能测试数据

8.4 网络性能测试
8.4.1 网络性能测试工具

     Netperf——网络性能测试工具,可以测试多个方面。

     Iperf——常用的网络测试工具

     NETIO——使用不同大小的数据包来测试TCP和UDP网络连接的吞吐量。

     SCP——最常用的远程文件复制工具。

8.4.2 测试环境配置

     注意网卡配置,使用默认的rt181139模式的网桥网络、使用virtio-net(QEMU做后端驱动)的网桥网络,使用virtio-net模式的网桥网络,

     VT-d直接分配PF,SR-IOV直接分配VF
8.4.3 性能测试方法

     Netperf

     SCP
8.4.4 性能测试数据

     不同配置下的Netperf测试数据;不同配置下的SCP测试数据

     结论:

       配置对比:virtio、VT-d和SR-IOV模式,可以达到和原生系统网络差不多的性能;在达到相同带宽的情况下,VT-d和SR-IOV方式占用的CPU资源比virtio略少;纯软件模拟的rt181139和e1000网卡的性能较差。


8.5 磁盘I/O性能测试
8.5.1 磁盘I/O性能测试工具

  DD——文件复制工具;

  IOzone——通过对多种文件进行操作,来衡量一个文件系统的性能。

  Bonnie++——可以模拟数据库去访问一个单一的大文件

  hdparm——获取和设置SATA和IDE设备的参数工具,粗略的测试磁盘IO的性能。

8.5.2 测试环境配置

  使用纯软件模拟IDE磁盘和使用virtio-blk驱动的磁盘。
8.5.3 性能测试方法

  DD、IOZone、Bonnie++
8.5.4 性能测试数据
8.6 本章小结
8.7 本章注释和参考阅读





第9章 参与KVM开源社区

9.1 开源社区介绍
9.1.1 Linux开源社区

     Linux内核代码维护层次结构
9.1.2 KVM开源社区

     KVM Forum,http://www.linux-kvm.org/page/KVM_Forum
9.1.3 QEMU开源社区

     Qume:  http://git.qemu.org/   
9.1.4 其他开源社区

     Libvirt 一个虚拟化API项目   www.libvirt.org

     OpenStack  www.openstack.org

     CloudStack cloudstack.apache.org

     Xen        www.xen.org

     Apache     httpd.apache.org

     Nginx      www.nginx.org

     Hadoop     hadoop.apache.org

9.2 代码结构简介
9.2.1 KVM代码   

     kvm框架核心代码  位于目录 virt/kvm/下

     与硬件架构相关的代码,位于  arch/*/kvm
9.2.2 QEMU代码

     QEMU代码实现了对PC客户机的完全模拟。

     QEMU配合KVM启动一个客户机的流程。先打开 /dev/kvm设备,通过名为 KVM_CREATE_VM的IOCTL调用来创建一个虚拟机对象,然后通过KVM_CREATE_VCPU为虚拟机创建vcpu对象,最后通过 KVM_RUN 让vCPU 运行起来。这个抽象后的简化过程如下:

     main(): vl.c

     configure_accelerator():vl.c -> kvm_init(): kvm_all.c

     machine->init():vl.c            qemu_open("/dev/kvm"):kvm_all.c

     pc_init_pci():pc_piix.c         kvm_ioctl(KVM_CREATE_VM):kvm_all.c

     pc_init1():hw/i386/pc_piix.c

     pc_nex_cpu():hw/i386/pc.c

     ...

     qemu_init_vcpu():cpu.c

     qemu_kvm_start_vcpu():cpu.c

     qemu_thread_create():util/qemu-thread-posix.c

     pthread_create():#create vCPU thread

     qume_kvm_cpu_thread_fn(): cpu.c

     kvm_init_vcpu:kvm-all.c

     kvm_vm_ioctl(KVM_CREATE_VCPU)


9.2.3 KVM单元测试代码

     基本原理:将编译好的轻量级测试内核镜像(*.flat文件)作为支持多重启动的QEMU的客户机内核镜像来启动,测试使用一个通过客户机BIOS来调用的基础架构,该基础架构将会主要初始化客户机系统(包括CPU等),然后切换到长模式(x86_64 CPU架构的一种运行模式)并调用各个具体测试用例的主函数从而执行测试,在测试完成QEMU进程自动退出。

9.2.4 KVM Autotest代码

     
9.3 向开源社区贡献代码
9.3.1 开发者邮件列表
9.3.2 代码风格

     缩进;长的行和字符串打乱(每一行的长度不要超过80个词);大括号的位置;空格的使用;
9.3.3 生成patch

     patch:添加的新功能或者修复某个bug的代码。

     使用diff工具或Git工具可以生成patch

      diff -urN kvm.git/ kvm-my.git/ >my.patch

      git add virt/kvm/kvm_main.c
9.3.4 检查patch

      使用脚步检查patch是否合规: scripts/checkpatch.pl

9.3.5 提交patch
9.4 提交KVM相关的bug
9.4.1 通过邮件列表提交bug
9.4.2 使用bug管理系统提交bug
9.4.3 使用二分法定位bug
9.5 本章小结
9.6 本章注释和参考阅读



下载连接:http://pan.baidu.com/s/1c8EkPo

KVM.txt

53 Bytes, 下载次数: 42, 下载积分: 金币 -1

售价: 1 金币  [记录]


运维网声明 1、欢迎大家加入本站运维交流群:群②:197202523 群⑤:202807635 群⑦870801961 群⑧679858003 群⑨230483671
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.iyunv.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-342631-1-1.html 上篇帖子: 大神请支招儿 下篇帖子: KVM虚拟化管理平台VManagePlatform 电子书 技术
点击关注更多内容

累计签到:204 天
连续签到:1 天
发表于 2017-2-19 22:49:02 | 显示全部楼层
到时慢慢下载

运维网声明 1、欢迎大家加入本站运维交流群:群②:197202523 群⑤:202807635 群⑦870801961 群⑧679858003 群⑨230483671
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.iyunv.com

点击关注更多内容

累计签到:1 天
连续签到:1 天
发表于 2017-4-20 13:56:53 | 显示全部楼层
密码是什么样呀?

运维网声明 1、欢迎大家加入本站运维交流群:群②:197202523 群⑤:202807635 群⑦870801961 群⑧679858003 群⑨230483671
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.iyunv.com

点击关注更多内容

尚未签到

发表于 2017-12-1 21:02:04 | 显示全部楼层
到底 是几个金币?

运维网声明 1、欢迎大家加入本站运维交流群:群②:197202523 群⑤:202807635 群⑦870801961 群⑧679858003 群⑨230483671
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

尚未签到

发表于 2017-12-24 17:44:13 | 显示全部楼层

运维网声明 1、欢迎大家加入本站运维交流群:群②:197202523 群⑤:202807635 群⑦870801961 群⑧679858003 群⑨230483671
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

累计签到:613 天
连续签到:12 天
发表于 2018-1-26 11:51:13 | 显示全部楼层
Thanks for sharing!!!!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:197202523 群⑤:202807635 群⑦870801961 群⑧679858003 群⑨230483671
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服 E-mail:kefu@iyunv.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2020

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up


客服E-mail:kefu@iyunv.com 在线客服QQ:点击这里给我发消息


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud bjyun

快速回复 返回顶部 返回列表