Openstack 实战讲解之-----------02-控制节点kvm虚拟化配置
KVM虚拟化的特性 嵌入到linux正式kernel(提高了兼容性) 代码级资源调用(提高性能) 虚拟机就是一个进程(内存易于管理) 直接支持NUMA技术(提高扩展性) 虽然被RedHat收购了,但是依然保持开源发展模式,社区活跃 更好的商业支持及服务保障 CentOS7较CentOS6默认支持cpu热添加,内存热添加,大页内存默认都是开启的。 支持虚拟化的条件 Inter的cpu简称为:VMX AMD的cpu简称为:SVM VMware需要开启如下两个条件即可,如果是物理机,需要在bios里面设置,默认都是开启的。 通过下面的命令查看虚拟化信息: grep-E"svm|vmx"/proc/cpuinfo flags:fpuvmedepsetscmsrpaemcecx8apicsepmtrrpgemcacmovpatpse36clflushdtsmmxfxsrssesse2sssyscallnxrdtscplmconstant_tscarch_perfmonpebsbtsnoplxtopologytsc_reliablenonstop_tscaperfmperfeagerfpupnipclmulqdqvmxssse3cx16pcidsse4_1sse4_2x2apicpopcntaesxsaveavxf16crdrandhypervisorlahf_lmidaaratepbplnptsdthermtpr_shadowvnmieptvpidfsgsbasesmepxsaveopt flags:fpuvmedepsetscmsrpaemcecx8apicsepmtrrpgemcacmovpatpse36clflushdtsmmxfxsrssesse2sshtsyscallnxrdtscplmconstant_tscarch_perfmonpebsbtsnoplxtopologytsc_reliablenonstop_tscaperfmperfpnipclmulqdqvmxssse3cx16pcidsse4_1sse4_2x2apicpopcnttsc_deadline_timerxsavea*vxhypervisorlahf_lmaratepbplnptsdthermtpr_shadowvnmieptvpidtsc_adjust KVM的安装实战 安装管理工具和virt命令 1 yum install -yqemu-kvmlibvirtvirt- install 1 2 3 Kvm:linux内核的一个模块,模块不需要安装,只需要加载 Qemu:虚拟化软件,可以虚拟不同的cpu,支持异构(x86架构可虚拟化出不是x86的架构) Qemu-kvm:用户态管理kvm,网卡,声卡,PCI设备等都是qemu来管理的 创建虚拟磁盘 1 2 qemu-imgcreate-fraw /opt/Centos7_x86_64 .raw10G Formatting '/opt/Centos7_x86_64.raw' , fmt =rawsize=10737418240 创建qcow2格式的虚拟磁盘 1 2 qemu-imgcreate-fqcow2 /opt/Centos7_x86_64 .qcow210G Formatting '/opt/Centos7_x86_64.qcow2' , fmt =qcow2size=10737418240encryption=offcluster_size=65536lazy_refcounts=offrefcount_bits=16 转换虚拟磁盘格式: 1 qemu-imgconvert-c-fraw-Oqcow2CentOS-7-x86_64.rawCentOS-7-x86_64.qcow2 qcow2和raw的区别: 1.raw创建多大占用多大磁盘空间 2.qcow2占用磁盘大小根据使用量来决定 -> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@linux-node1~] #qemu-imginfo/opt/Centos7_x86_64.raw image: /opt/Centos7_x86_64 .raw file format :raw virtualsize:10G(10737418240bytes) disksize:0 [root@linux-node1~] #qemu-imginfo/opt/Centos7_x86_64.qcow2 image: /opt/Centos7_x86_64 .qcow2 file format :qcow2 virtualsize:10G(10737418240bytes) disksize:196K cluster_size:65536 Formatspecificinformation: compat:1.1 lazyrefcounts: false refcountbits:16 corrupt: false 显示内核中kvm的状态: 1 2 3 [root@linux-node1~] #lsmod|grepkvm kvm_intel1621530 kvm5252591kvm_intel 启动管理工具服务: 1 2 3 [root@linux-node1~] #systemctlenablelibvirtd [root@linux-node1~] #systemctlstartlibvirtd [root@linux-node1~] #systemctlstatuslibvirtd 上传镜像到node1机器中 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@linux-node1~] #cd/opt/ [root@linux-node1opt] # wgethttp: //mirrors .aliyun.com /centos/7 .2.1511 /isos/x86_64/CentOS-7-x86_64-DVD-1511 .iso 法二: 利用CRT的SFTP上传 CRT==>File==>ConnectSFTPSession(英文版CRT) CRT==>文件==>连接到SFTP(中文版CRT) sftp > cd /opt sftp >putD: /ISO/CentOS-7-x86_64-DVD-1511 .iso #将镜像上传到/opt下 法三: [root@linux-node1~] #cd/opt/ [root@linux-node1opt] #ddif=/dev/cdromof=/opt/CentOS-7.1-x86_64.iso 创建虚拟机: 1 virt- install --virt- type kvm--nameCentos7.2_mini_x64-- ram 1024--cdrom= /tmp/CentOS-7-x86_64-Minimal-1611 .iso--diskpath= /opt/Centos7_x86_64 .qcow2--networknetwork=default--graphicsvnc,listen=0.0.0.0--noautoconsole 创建完毕的检查命令: 1 2 3 4 [root@linux-node1tmp] #virshlist--all IdNameState ---------------------------------------------------- 1Centos7.2_mini_x64running 虚拟机基本操作 生成kvm虚拟机:virt-install 查看再运行的虚拟机:virsh list 查看kvm虚拟机配置文件:virsh dumpxml name 启动kvm虚拟机:virsh start name 正常关机:virsh shutdown name 非正常关机:virsh destroy name 删除:virsh undefine name (彻底删除,无法找回,除非备份xml文件) 根据配置文件定义虚拟机:virsh define file-name.xml 挂起,终止:virsh suspend name 回复挂起状态:virsh resumed name 热添加CPU 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@linux-node1opt] #cd/etc/libvirt/qemu/<-虚拟机xml路径-> [root@linux-node1qemu] #ll total4 -rw-------1rootroot3887Dec1111:19CentOS-7-x86_64.xml<-虚拟机xml文件-> 注:修改虚拟机xml文件不直接修改上文所述文件,要在用virsh管理命令修改 virsh #editCentOS-7-x86_64<-控制台内修改-> [root@linux-node1qemu] #virsheditCentOS-7-x86_64<-控制台外修改-> 注:热添加的CPU数不能超过最大值 [root@linux-node1qemu] #virsheditCentOS-7-x86_64<-编辑配置文件-> <vcpuplacement= 'static' >1< /vcpu ><-修改此行内容-> <vcpuplacement= 'auto' current= "1" >4< /vcpu ><-当前为1自动扩容最大为4-> [root@linux-node1~] #virshshutdownCentOS-7-x86_64<-关闭虚拟机-> DomainCentOS-7-x86_64isbeing shutdown [root@linux-node1~] #virshstartCentOS-7-x86_64<-开启虚拟机-> DomainCentOS-7-x86_64started 没有热添加cpu之前先查看cpu的个数 1 2 3 virshsetvcpusCentOS-7-x86_642--live <- 热添加CPU-> 添加完cpu后,查看cpu个数: l激活cpu 1 2 3 4 5 6 7 8 9 [root@linux-node1~] #echo"1">/sys/devices/system/cpu/cpu1/online 高版本的kvm不需要这样做,直接可以激活 [root@linux-node1~] #cat/sys/devices/system/cpu/cpu0/online 1 [root@linux-node1~] #cat/sys/devices/system/cpu/cpu1/online 1 第二种添加cpu的方法:安装时指定 [root@linux-node1~] #virt-install–vcpus5–vcpus5,maxcpus=10,cpuset=1-4,6,8–vcpussockets=2,cores=4,thread=2 更改kvm内存配置 内存的设置拥有一个“气球(balloon)机制”,可以增大减少,但是也要设置一个最大值,默认并没有设置最大值,也可以在安装的时候指定 1 2 3 4 5 [root@linux-node1~] #virsheditCentOS-7-x86_64<-编辑配置文件-> <memoryunit= 'KiB' >4194304< /memory ><-最大内存:4G-> <currentMemoryunit= 'KiB' >1048576< /currentMemory ><-当前内存:1G-> [root@linux-node1~] #virshqemu-monitor-commandCentOS-7-x86_64--hmp--cmdinfoballoon<-查看当前内存-> [root@linux-node1~] #virshqemu-monitor-commandCentOS-7-x86_64--hmp--cmdballoon512<-修改内存:512-> 4.8更改虚拟机网桥连接设置 默认情况下是NAT,但是在生产环境,使用的更多的是桥接模式,更改虚拟机为网桥模式 网桥的基本原理就是创建一个桥接接口br0,在屋里网卡和虚拟网络接口之间传递数据。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 [root@linux-node1~] #brctladdbrbr0<-添加网桥br0-> [root@linux-node1~] #brctladdifbr0eth0<-桥接br0和eth0-> 注:此时会断网如果是远程操作服务器不在身边,建议写成脚本来执行 [root@linux-node1~] #ipaddrdeldeveth0192.168.56.11/24<-删除eth0的IP-> [root@linux-node1~] #ifconfigbr0192.168.56.11/24up<-给br0设置IP-> [root@linux-node1~] #routeadddefaultgw192.168.56.2<-给br0设置网关-> 为了避免断网,直接写成脚本即可: #!/bin/bash brctladdbrbr0 brctladdifbr0eth0 ipaddrdeldeveth0192.168.56.11 /24 ifconfig br0192.168.56.11 /24 up routeadddefaultgw192.168.56.2 [root@linux-node1~] #virsheditCentOS-7-x86_64<-修改虚拟机配置-> 将: <interfacetype= 'network' <-虚拟机网络连接方式-> <macaddress= '52:54:00:0b:f8:a5' /> < source network= 'default' /><-当前主机网络名称-> 修改为: <interfacetype= 'bridge' > <macaddress= '52:54:00:0b:f8:a5' /> < source bridge= 'br0' /> [root@linux-node1~] #virshshutdownCentOS-7-x86_64<-关闭虚拟机-> DomainCentOS-7-x86_64isbeing shutdown [root@linux-node1~] #virshstartCentOS-7-x86_64<-启动虚拟机-> DomainCentOS-7-x86_64started [root@linux-node1~] #ifconfig<-查看网卡信息-> br0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500 inet192.168.56.11netmask255.255.255.0broadcast192.168.56.255 inet6fe80::20c:29ff:fefe:1620prefixlen64scopeid0x20<link> ether00:0c:29:fe:16:20txqueuelen0(Ethernet) RXpackets74bytes8909(8.7KiB) RXerrors0dropped0overruns0frame0 TXpackets63bytes11462(11.1KiB) TXerrors0dropped0overruns0carrier0collisions0 eth0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500 inet6fe80::20c:29ff:fefe:1620prefixlen64scopeid0x20<link> ether00:0c:29:fe:16:20txqueuelen1000(Ethernet) RXpackets26401bytes26066467(24.8MiB) RXerrors0dropped0overruns0frame0 TXpackets8582bytes1939240(1.8MiB) TXerrors0dropped0overruns0carrier0collisions0 lo:flags=73<UP,LOOPBACK,RUNNING>mtu65536 inet127.0.0.1netmask255.0.0.0 inet6::1prefixlen128scopeid0x10<host> looptxqueuelen0(LocalLoopback) RXpackets4bytes216(216.0B) RXerrors0dropped0overruns0frame0 TXpackets4bytes216(216.0B) TXerrors0dropped0overruns0carrier0collisions0 virbr0:flags=4099<UP,BROADCAST,MULTICAST>mtu1500 inet192.168.122.1netmask255.255.255.0broadcast192.168.122.255 ether00:00:00:00:00:00txqueuelen0(Ethernet) RXpackets0bytes0(0.0B) RXerrors0dropped0overruns0frame0 TXpackets2bytes84(84.0B) TXerrors0dropped0overruns0carrier0collisions0 vnet0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500 etherfe:54:00:0b:f8:a5txqueuelen500(Ethernet) RXpackets0bytes0(0.0B) RXerrors0dropped0overruns0frame0 TXpackets0bytes0(0.0B) TXerrors0dropped0overruns0carrier0collisions0 本文转自 kesungang 51CTO博客,原文链接:http://blog.51cto.com/sgk2011/1886277,如需转载请自行联系原作者