KVM虚拟化技术
一、kvm虚拟化介绍及资料链接
KVM详解:http://www.cnblogs.com/sammyliu/p/4543110.html
KVM视频教程:https://pan.baidu.com/s/11NNqa-fjXCWQRqszZvaqVQ
Libvirt官网:https://libvirt.org/downloads.html
virinstall 安装
#!/bin/bash virt-install \ --name=ubuntu\ --ram=512 \ --vcpus=1,maxvcpus=4 \ --os-type=linux \ --cdrom=/home/ubuntu-16.04.2-server-amd64.iso \ --disk path=/var/lib/libvirt/images/xp64_1.img,size=8,format=qcow2 \ --network bridge=virbr0 \ --vnc \ --vncport=5950 \ --vnclisten=0.0.0.0,keymap=en_us \ --autostart
二、Linux KVM 安装
1、ubuntu安装KVM:
1)查看CPU是否支持KVM
egrep "(svm|vmx)" /proc/cpuinfo
2)KVM相关依赖包
sudo apt-get install qemu-kvm sudo apt-get install qemu sudo apt-get install virt-manager sudo apt-get install virt-viewer sudo apt-get install libvirt-bin sudo apt-get install bridge-utils
2、centos 安装KVM:
1)查看CPU是否支持KVM
egrep "(svm|vmx)" /proc/cpuinfo
2)KVM相关依赖包
yum install qemu-kvm qemu-img libvirt virt-install libvirt-python virt-manager python-virtinst libvirt-client virt-viewer -y
三、KVM核心基础功能
1、CPU配置
1.1 环境安装及命令
1.1.1 numactl 管理工具安装
ubuntu 安装 下载安装包:https://launchpad.net/ubuntu/+source/numactl centos 安装 yum install numactl -y
1.1.2 numactl 命令介绍
numactl - 用于控制 进程与共享存储的 NUMA 技术机制 语法: numactl [--interleave nodes] [--preferred node] [--membind nodes] [--cpunodebind nodes] [--physcpubind cpus] [--localalloc] [--] {arguments ...} numactl --show numactl --hardware numactl [--huge] [--offset offset] [--shmmode shmmode] [--length length] [--strict] [--shmid id] --shm shmkeyfile | --file tmpfsfile [--touch] [--dump] [--dump-nodes] memory policy 主要参数: --interleave=nodes, -i nodes 这个选项用于设定内存的交织分配模式。 也就是说系统在为多个节点分配内存空间的时候,将会以轮询分发的方式被分配给这多个节点. 如果在当前众多的交织分配内存节点中的目标节点无法正确的分配内存空间的话,内存空间将会由其他的节点来分配。 --membind=nodes, -m nodes 选项 '--membind' 仅用来从节点中分配内存空间所用。 如果在这些节点中无法分配出所请求的空间大小的话该分配操作将会失败. 上述命令中指定需要分配空间的 nodes 的方式可以遵照上述 N,N,N , N-N ,N 这种方式来指定. --cpunodebind=nodes, -N nodes 上述命令仅用于施加在运行与 cpu 上的进程。这个命令用于显示 cpu 的个数,cpu 数目信息同样记录在系统中的存放处理器领域信息的 /proc/cpuinfo 文件夹下, 或者是按照关联的中央处理器信息 在当前的中央处理器集中所存放. --localalloc , -l 这个命令选项通常是为当前的节点分配内存的 --preferred=node 该命令由于指定优先分配内存空间的节点,如果无法将空间分配给该节点的话,应该分配给该节点上的空间将会被分发到其他的节点上 该命令选项后面仅接收一个单独的节点标号. 相关的表示方式也可以使用. --show,-s 该命令用于显示 NUMA 机制作用在当前运行的那些进程上 --hardware , -H 该命令用于显示当前系统中有多少个可用的节点. --huge 当创建一个基于大内存页面的系统级的共享内存段的时候,使用 --huge 这个选项。 --huge 选项仅在 --shmid 或是 --shm 命令的后面使用才有效. --offset 该参数选项用于指定共享内存段中的位移量的偏移。 默认的情况下偏移量是 0 。 有效的偏移量单位是 m (用于表示 MB) g (用于表示 GB) , k (用于表示 KB ), 其他没有指定的被认为是以字节为单位. --strict 这个参数选项 当施加了 NUMA 调度机制的共享内存段区域的页面被施加了另一个机制而导致错误的时候, 使用 --strict 选项将会把错误信息显示出来. 默认情况是不使用该选项的。 --shmmode shmmode 该选项仅在 --shmid 或是 --shm 之前使用才会生效。 当创建一个共享内存段的时候,通过整型数值来指定 共享内存的共享的模式类型. --length length Apply policy to length range in the shared memory segment or make the segment length long Default is to use the remaining length Required when a shared memory segment is created and specifies the length of the new segment then . Valid units are m ( for MB ) , g( for GB) , k ( for KB) , otherwise it specifies bytes. --shmid id 通过ID 号码来创建或使用一个共享内存段。 (如果共享内存段已经存在,那么通过 shmid 来指定下面要使用某个 ID 的共享内存段 ; 如果该 ID 对应的共享内存段并不存在的话,那么就创建一个) --shm shmkeyfile 通过存放在 shmkeyfile(共享内存-键文件)中的 ID 号码来创建或者是使用一个共享内存段。 访问 shmkeyfile 文件的进程是通过 fork(3 arguments) 方法来实现的. --file tmpfsfile 将 numa 机制施加于文件上面, 这个文件属于 tmpfs或者是 hugetlbfs 这种特殊的文件系统 --touch 通过将 numa 机制施加于刚刚页面上来实现内存的早期 numa 化。 默认情况下是不使用该选项,如果存在映射或是访问页面的应用的话,将会使用该早期实行 NUMA 机制的这种方法. --dump 该选项用于废除将已经 numa 化的特定区域上的 NUMA性质. (--dump ) 选项后,有效指定 node 的书写方式 all 用于将所有的节点上的 NUMA 特性移除 number 通过指定 node 后接的数值来废除该数字对应的 node number1(number2) node number1(node number2)上的 NUMA 特性将会被移除 number1-number2 node number1 -- node number2 区间上的所有存在的 node 的 NUMA 特性将会被移除 !nodes 除了 nodes 所指定的节点以外的所有节点上的 NUMA 特性全都会被移除
2.1 Vcpu 虚拟 介绍
详细介绍链接地址:https://blog.csdn.net/tengyft/article/details/45619457
2、内存配置
1)EPT与VPID (减少虚拟机内存与宿主机内存切换,提高内存访问性能)
关键字说明:
EPT:页表技术 虚拟机物理地址与宿主机物理地址转换技术 ;EPT加入CPU固件中 自动转化 // KVM 虚拟机内存转换过程如:客户机虚拟内存空间---->客户机虚拟物理地址-------->宿主机内存物理地址
VPID:虚拟处理器标识 ; 硬件上对TLB资源管理优化,通过硬件为每个TLB增加一个标识,用于不同虚拟处理器地址空间,从而区分hypervisor和不同处理器的TLB。
监测 EPT与 VPID 是否启动:
cat /sys/module/kvm_intel/parameters/ept
cat /sys/module/kvm_intel/parameters/vpid
2)大页技术
3)存储配置
4)网络配置
5)图像显示
四、KVM高级功能详解
1)半虚拟化驱动
2)设备直接分配
3)热插拔
4)动态迁移
5)嵌套虚拟化
6)KSM技术
7)KVM安全
8)QEMU监控器
9)qemu-kvm 命令行参数
10)virsh 命令行参数
virsh 参数详解:
virsh [options]... [<command_string>] virsh [options]... <command> [args...] options: -c | --connect=URI hypervisor connection URI //连接远程的主机 -d | --debug=NUM debug level [0-4] -e | --escape <char> set escape sequence for console -h | --help this help //帮助 -k | --keepalive-interval=NUM keepalive interval in seconds, 0 for disable -K | --keepalive-count=NUM number of possible missed keepalive messages -l | --log=FILE output logging to file -q | --quiet quiet mode -r | --readonly connect readonly -t | --timing print timing information -v short version -V long version --version[=TYPE] version, TYPE is short or long (default short) commands (non interactive mode) Domain Management (help keyword 'domain') attach-device attach device from an XML file //XML附加设备 attach-disk attach disk device //附加磁盘设备 attach-interface attach network interface //附加网络接口 autostart autostart a domain //自动启动域 blkdeviotune Set or query a block device I/O tuning parameters. //设置或查询块设备I/O调谐参数 blkiotune Get or set blkio parameters //获取或设置BLKIO参数 blockcommit Start a block commit operation. //启动块提交操作。 blockcopy Start a block copy operation. //启动块复制操作。 blockjob Manage active block operations //管理活动块操作 blockpull Populate a disk from its backing image. blockresize Resize block device of domain. change-media Change media of CD or floppy drive console connect to the guest console cpu-baseline compute baseline CPU cpu-compare compare host CPU with a CPU described by an XML file cpu-stats show domain cpu statistics create create a domain from an XML file define define (but don't start) a domain from an XML file desc show or set domain's description or title destroy destroy (stop) a domain detach-device detach device from an XML file detach-disk detach disk device detach-interface detach network interface domdisplay domain display connection URI domfsfreeze Freeze domain's mounted filesystems. domfsthaw Thaw domain's mounted filesystems. domfsinfo Get information of domain's mounted filesystems. domfstrim Invoke fstrim on domain's mounted filesystems. domhostname print the domain's hostname domid convert a domain name or UUID to domain id domif-setlink set link state of a virtual interface domiftune get/set parameters of a virtual interface domjobabort abort active domain job domjobinfo domain job information domname convert a domain id or UUID to domain name domrename rename a domain dompmsuspend suspend a domain gracefully using power management functions dompmwakeup wakeup a domain from pmsuspended state domuuid convert a domain name or id to domain UUID domxml-from-native Convert native config to domain XML domxml-to-native Convert domain XML to native config dump dump the core of a domain to a file for analysis dumpxml domain information in XML edit edit XML configuration for a domain event Domain Events inject-nmi Inject NMI to the guest iothreadinfo view domain IOThreads iothreadpin control domain IOThread affinity iothreadadd add an IOThread to the guest domain iothreaddel delete an IOThread from the guest domain send-key Send keycodes to the guest send-process-signal Send signals to processes lxc-enter-namespace LXC Guest Enter Namespace managedsave managed save of a domain state managedsave-remove Remove managed save of a domain managedsave-edit edit XML for a domain's managed save state file managedsave-dumpxml Domain information of managed save state file in XML managedsave-define redefine the XML for a domain's managed save state file memtune Get or set memory parameters perf Get or set perf event metadata show or set domain's custom XML metadata migrate migrate domain to another host migrate-setmaxdowntime set maximum tolerable downtime migrate-getmaxdowntime get maximum tolerable downtime migrate-compcache get/set compression cache size migrate-setspeed Set the maximum migration bandwidth migrate-getspeed Get the maximum migration bandwidth migrate-postcopy Switch running migration from pre-copy to post-copy numatune Get or set numa parameters qemu-attach QEMU Attach qemu-monitor-command QEMU Monitor Command qemu-monitor-event QEMU Monitor Events qemu-agent-command QEMU Guest Agent Command reboot reboot a domain reset reset a domain restore restore a domain from a saved state in a file resume resume a domain save save a domain state to a file save-image-define redefine the XML for a domain's saved state file save-image-dumpxml saved state domain information in XML save-image-edit edit XML for a domain's saved state file schedinfo show/set scheduler parameters screenshot take a screenshot of a current domain console and store it into a file set-lifecycle-action change lifecycle actions set-user-password set the user password inside the domain setmaxmem change maximum memory limit setmem change memory allocation setvcpus change number of virtual CPUs shutdown gracefully shutdown a domain start start a (previously defined) inactive domain suspend suspend a domain ttyconsole tty console undefine undefine a domain update-device update device from an XML file vcpucount domain vcpu counts vcpuinfo detailed domain vcpu information vcpupin control or query domain vcpu affinity emulatorpin control or query domain emulator affinity vncdisplay vnc display guestvcpus query or modify state of vcpu in the guest (via agent) setvcpu attach/detach vcpu or groups of threads domblkthreshold set the threshold for block-threshold event for a given block device or it's backing chain element Domain Monitoring (help keyword 'monitor') domblkerror Show errors on block devices domblkinfo domain block device size information domblklist list all domain blocks domblkstat get device block stats for a domain domcontrol domain control interface state domif-getlink get link state of a virtual interface domifaddr Get network interfaces' addresses for a running domain domiflist list all domain virtual interfaces domifstat get network interface stats for a domain dominfo domain information dommemstat get memory statistics for a domain domstate domain state domstats get statistics about one or multiple domains domtime domain time list list domains Host and Hypervisor (help keyword 'host') allocpages Manipulate pages pool size capabilities capabilities cpu-models CPU models domcapabilities domain capabilities freecell NUMA free memory freepages NUMA free pages hostname print the hypervisor hostname maxvcpus connection vcpu maximum node-memory-tune Get or set node memory parameters nodecpumap node cpu map nodecpustats Prints cpu stats of the node. nodeinfo node information nodememstats Prints memory stats of the node. nodesuspend suspend the host node for a given time duration sysinfo print the hypervisor sysinfo uri print the hypervisor canonical URI version show version Interface (help keyword 'interface') iface-begin create a snapshot of current interfaces settings, which can be later committed (iface-commit) or restored (iface-rollback) iface-bridge create a bridge device and attach an existing network device to it iface-commit commit changes made since iface-begin and free restore point iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file iface-destroy destroy a physical host interface (disable it / "if-down") iface-dumpxml interface information in XML iface-edit edit XML configuration for a physical host interface iface-list list physical host interfaces iface-mac convert an interface name to interface MAC address iface-name convert an interface MAC address to interface name iface-rollback rollback to previous saved configuration created via iface-begin iface-start start a physical host interface (enable it / "if-up") iface-unbridge undefine a bridge device after detaching its slave device iface-undefine undefine a physical host interface (remove it from configuration) Network Filter (help keyword 'filter') nwfilter-define define or update a network filter from an XML file nwfilter-dumpxml network filter information in XML nwfilter-edit edit XML configuration for a network filter nwfilter-list list network filters nwfilter-undefine undefine a network filter Networking (help keyword 'network') net-autostart autostart a network net-create create a network from an XML file net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file net-destroy destroy (stop) a network net-dhcp-leases print lease info for a given network net-dumpxml network information in XML net-edit edit XML configuration for a network net-event Network Events net-info network information net-list list networks net-name convert a network UUID to network name net-start start a (previously defined) inactive network net-undefine undefine a persistent network net-update update parts of an existing network's configuration net-uuid convert a network name to network UUID Node Device (help keyword 'nodedev') nodedev-create create a device defined by an XML file on the node nodedev-destroy destroy (stop) a device on the node nodedev-detach detach node device from its device driver nodedev-dumpxml node device details in XML nodedev-list enumerate devices on this host nodedev-reattach reattach node device to its device driver nodedev-reset reset node device nodedev-event Node Device Events Secret (help keyword 'secret') secret-define define or modify a secret from an XML file secret-dumpxml secret attributes in XML secret-event Secret Events secret-get-value Output a secret value secret-list list secrets secret-set-value set a secret value secret-undefine undefine a secret Snapshot (help keyword 'snapshot') snapshot-create Create a snapshot from XML snapshot-create-as Create a snapshot from a set of args snapshot-current Get or set the current snapshot snapshot-delete Delete a domain snapshot snapshot-dumpxml Dump XML for a domain snapshot snapshot-edit edit XML for a snapshot snapshot-info snapshot information snapshot-list List snapshots for a domain snapshot-parent Get the name of the parent of a snapshot snapshot-revert Revert a domain to a snapshot Storage Pool (help keyword 'pool') find-storage-pool-sources-as find potential storage pool sources find-storage-pool-sources discover potential storage pool sources pool-autostart autostart a pool pool-build build a pool pool-create-as create a pool from a set of args pool-create create a pool from an XML file pool-define-as define a pool from a set of args pool-define define an inactive persistent storage pool or modify an existing persistent one from an XML file pool-delete delete a pool pool-destroy destroy (stop) a pool pool-dumpxml pool information in XML pool-edit edit XML configuration for a storage pool pool-info storage pool information pool-list list pools pool-name convert a pool UUID to pool name pool-refresh refresh a pool pool-start start a (previously defined) inactive pool pool-undefine undefine an inactive pool pool-uuid convert a pool name to pool UUID pool-event Storage Pool Events Storage Volume (help keyword 'volume') vol-clone clone a volume. vol-create-as create a volume from a set of args vol-create create a vol from an XML file vol-create-from create a vol, using another volume as input vol-delete delete a vol vol-download download volume contents to a file vol-dumpxml vol information in XML vol-info storage vol information vol-key returns the volume key for a given volume name or path vol-list list vols vol-name returns the volume name for a given volume key or path vol-path returns the volume path for a given volume name or key vol-pool returns the storage pool for a given volume key or path vol-resize resize a vol vol-upload upload file contents to a volume vol-wipe wipe a vol Virsh itself (help keyword 'virsh') cd change the current directory echo echo arguments exit quit this interactive terminal help print help pwd print the current directory quit quit this interactive terminal connect (re)connect to hypervisor
五、KVM管理工具
1)libvirt
2)virsh
3)virt-manager
4)virt-viewer、virt-install、virt-top
六。KVM性能测试
1)CPU性能测试
2)内存性能测试
3)网络性能测试、
4)磁盘 I/O性能测试
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
暂到这里明天继续