1)查看cpu插槽数量 [root@kvm ~]# cat /proc/cpuinfo |grep 'physical id' |wc -l24 2)查看cpu核心数量 [root@kvm ~]# cat /proc/cpuinfo |grep 'core id'| wc -l24 3)查看cpu的模型 [root@kvm ~]# cat /proc/cpuinfo |grep modelmodel : 62model name : Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHzmodel : 62model name : Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHzmodel : 62model name : Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHzmodel : 62 4)设置CPU的个数 [root@kvm ~]# virsh shutdown vm1 #先关闭vm[root@kvm ~]# vi /etc/libvirt/qemu/vm1.xml #修改xml配置文件 5)设置CPU模型 ps:虚拟机的CPU model可以通过配置文件定义 custom模式 可以根据需求自定义CPU的model xml配置文件如下:
host-model模式 根据物理CPU的特性,选择一个最靠近其特性的标准CPU型号。CPU默认的模型就是host-model模式 xml配置文件如下:
host-passthrough模式 直接将物理CPU暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号,一般用于嵌套虚拟化,让虚拟机的CPU支持虚拟化技术,这种模型有一个弊端,就是当要进行kvm迁移的时候,被迁移机器的物理特性要和迁移机器的一样。 xml配置文件如下:
host-passthrough模式实验 [root@kvm ~]# virsh shutdown vm1 #先关闭vm[root@kvm ~]# vi /etc/libvirt/qemu/vm1.xml #修改vm的xml配置文件 1)设置内存大小 [root@vm1 ~]# free –h #查看当前的内存大小total used free shared buff/cache availableMem: 992M 96M 779M 6.6M 116M 767M[root@kvm ~]# virsh shutdown vm1 #关闭vm[root@kvm ~]# vi /etc/libvirt/qemu/vm1.xml #修改vm的xml文件 2)内存限制 ps:只有当内存竞争发生时,内存限制才会生效。 命令行格式为: virsh memtune virtual_machine --parameter size [parameter]:
memtune生效方式有3种
应用示例:
限制虚拟机竞争时为7g内存 memtune virthost --soft-limit 7340032 --config 限制虚拟机最大内存加可以使用的宿主机的swap不超过10g memtune virthost--swap-hard-limit 10488320 --config 保证虚拟机最少可以使用4g内存 memtune virthost--min-guarantee 4194304 --config xml配置文件示例: 3)内存气球 KVM支持内存气球技术,允许不关闭虚拟机,实现动态调整内存大小 [root@vm1 ~]# lsmod |grep virio_balloon #需要加载virio_balloon驱动virtio_balloon 13664 0virtio_ring 21524 5 virtio_blk,virtio_net,virtio_pci,virtio_balloon,virtio_consolevirtio 15008 5 virtio_blk,virtio_net,virtio_pci,virtio_balloon,virtio_console 查看内存气球空间 [root@kvm ~]# virsh qemu-monitor-command vm1 --hmp --cmd info balloonballoon: actual=1024 调整内存气球空间 [root@kvm ~]# virsh qemu-monitor-command vm1 --hmp --cmd balloon 800[root@kvm ~]# virsh qemu-monitor-command vm1 --hmp --cmd info balloonballoon: actual=800 4)内存共享 KVM有着内存共享的强大功能,内存共享通过一项名为内核同页合并(Kernel Samp-page Merging,KSM)的功能来实现。KSM扫描每个虚拟机的内存,如果虚拟机用于相同的内存页面,KSM将这些页面合并到一个在虚拟机之间共享的页面,仅存储一个副本。可以提供内存利用率。要在linux下实现内存合并,只需要启动KSM,ksmtuned服务 [root@kvm ~]# systemctl status ksm● ksm.service - KernelSamepage Merging Loaded: loaded(/usr/lib/systemd/system/ksm.service; enabled; vendor preset: enabled) Active: active (exited) since Sat 2017-04-4 18:25:32 CST;1 day 2h ago [root@kvm ~]# systemctl status ksmtuned● ksmtuned.service -Kernel Samepage Merging (KSM) Tuning Daemon Loaded: loaded(/usr/lib/systemd/system/ksmtuned.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2017-04-4 18:25:32CST; 1 day 2h ago 创建6个内存4G的虚拟机 [root@kvm ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 20G[root@kvm ~]# virt-install --cdrom=/opt/iso/CentOS-7.2-x86_64-DVD.iso --vcpu=2 --ram=4096 --network bridge=virbr0 --disk path=/var/lib/libvirt/images/vm1.qcow2 --graphics spice,listen=0.0.0.0 --name=vm1vm2-------vm5略[root@vm1 ~]# virsh list Id Name State---------------------------------------------------- 1 vm1 running2 vm2 running3 vm3 running4 vm4 running5 vm5 running6 vm6 running 我的物理机是16G的内存,由于我启用了内存共享的功能,所有可以创建6个内存为4G的虚拟机。 1)KVM的存储模式:宿主机提供一个存储池,从存储池里面划分存储卷给虚拟机使用。 2)创建存储池(基于LVM) [root@kvm ~]# pvcreate /dev/sdb #把/dev/sdb做成pv Physical volume '/dev/sdb'successfully created[root@kvm ~]# vgcreate kvm-storage /dev/sdb #创建vg Volume group 'kvm-storage'successfully created[root@kvm ~]# lvcreate -L 18G -n kvm-data /dev/kvm-storage #创建lv Logical volume 'kvm-data' created.[root@kvm ~]# lvs #查看创建的lv kvm-data kvm-storage -wi-a----- 18.00g[root@kvm ~]# vi kvm-data.xml #编辑存储池xml文件 3)从存储池划分存储卷给虚拟机使用 [root@kvm ~]# virsh shutdown vm1 #关闭vm1[root@kvm ~]# vim /etc/libvirt/qemu/vm1.xml #编辑vm1的xml文件 虚拟机上外网的方式有两种:一种通过桥接方式,一种通过nat方式
下载软件包 [root@kvm ~]# yum -y install bridge-utils 编辑网桥的配置文件 [root@kvm network-scripts]# cat ifcfg-brexDEVICE=brex #指定网桥为brexBOOTPROTO=static #IP获取方式为静态ONBOOT=yes #启用该设备TYPE=bridge #指定类型为网桥IPADDR=172.16.1.111 #网桥的IP地址PREFIX=24 #网桥的掩码GATEWAY=172.16.1.1 #网桥的网关DNS1=202.96.128.133 #网桥的首选DNSDNS2=202.96.128.166 #网桥的备用DNSSTP=yes #启用STP功能 编辑要绑定到桥的物理网卡的配置文件 [root@kvm network-scripts]# cat ifcfg-enp10s0 DEVICE=enp10s0 IPADDR=172.16.1.111PREFIX=24GATEWAY=172.16.1.1DNS1=202.96.128.133DNS2=202.96.128.166ONBOOT=yesNM_CONTROLLD=yesBRIDGE=brex #指定绑定到桥brex 重启网络 [root@kvm network-scripts]# systemctl restart network 查看网络状态 [root@kvm~]# ip add show 4:enp10s0: 编辑虚拟机的XML文件 [root@kvm ~]# vi /etc/libvirt/qemu/vm1.xml 查看网桥的状态 [root@kvm~]# brctl show bridgename bridge id STP enabled interfacesbrex 8000.70e28405fa30 yes enp10s0 vnet0virbr0 8000.5254000f5751 yes virbr0-nic 在VM1上验证 [root@vm1 ~]# ip add show1: lo: ping外网测试 [root@vm1 ~]# ping www.baidu.com PINGwww.a.shifen.com (14.215.177.37) 56(84) bytes of data.64bytes from 14.215.177.37: icmp_seq=1 ttl=53 time=11.8 ms64bytes from 14.215.177.37: icmp_seq=2 ttl=53 time=11.4 ms
下载openvswitch软件yum源 [root@kvm ~]# yum -y install centos-release-openstack-newton 安装openvswitch [root@kvm ~]# yum -y install *openvswitch* 编辑nat桥的配置文件 [root@kvm network-scripts]#cat ifcfg-natex DEVICE=natex #指定设备为natexBOOTPROTO=static #IP获取方式为静态ONBOOT=yes #开机启用该设备TYPE=OVSBridge #类型为OVS桥DEVICETYPE=ovs #设备类型为ovsIPADDR=192.168.133.80 #桥的IP地址NETMASK=255.255.255.0 #桥的掩码GATEWAY=192.168.133.1 #桥的网关 编辑要绑定到桥的物理网卡的配置文件 [root@kvm network-scripts]# cat ifcfg-enp10s0DEVICE=enp10s0 ONBOOT=yesTYPE=OVSPortDEVICETYPE=ovs #设备类型为ovsOVS_BRIDGE=natex #指定要绑定到的网桥为natex 编辑VM的xml文件,桥接到物理网卡 [root@kvm ~]# vi /etc/libvirt/qemu/vm1.xml 查看宿主机网络状态 [root@kvm ~]# ip add show4: enp10s0: 查看ovs桥 [root@kvm network-scripts]# ovs-vsctl show521d2c60-16ce-49b2-9e76-c28e0e6ea38b Bridge natex Port 'enp10s0' Interface 'enp10s0' Port 'vnet0' Interface 'vnet0' Port natex Interface natex type: internalovs_version:'2.5.0' 虚拟机上验证 [root@vm1 ~]# ip add show2:ens3: ping外网测试 [root@vm1 ~]# ping g.cn PINGg.cn (203.208.40.52) 56(84) bytes of data.64bytes from 203.208.40.52: icmp_seq=1 ttl=52 time=33.3 ms64 bytesfrom 203.208.40.52: icmp_seq=2 ttl=52 time=32.3 ms
如有纰漏,欢迎指正。
|
|