centos安装kvm虚拟机遇到的问题

CentOS7安装测试kvm虚拟机时遇到的问题总结笔记

1、当在ovs网桥内添加虚拟接口时,出现ovs-vsctl: Error detected while setting up ‘xxx’: could not open network device xxx (No such device).
//网桥内添加port出现错误
[root@localhost ~]# ovs-vsctl add-port eth2 kvm02-eth2
ovs-vsctl: Error detected while setting up 'kvm02-eth2': could not open network device kvm02-eth2 (No such device).  See ovs-vswitchd log for details.
//查看网桥内的port信息,可以看到接口状态报错
[root@localhost ~]# ovs-vsctl show
    Bridge "eth1"
        Port "kvm02-eth1"
            Interface "kvm02-eth1"
                error: "could not open network device kvm02-eth1 (No such device)"
//设置port的type属性为internal
[root@localhost ~]# ovs-vsctl set Interface kvm02-eth1 type=internal
2、某一执行文件或命令提示:Permission denied,原因是当前用户执行权限不够,只需chmod命令添加相应权限即可,添加后再尝试,success。
[root@localhost ~]# ./clearline 5001
-bash: ./clearline: Permission denied

[root@localhost ~]# chmod 777 clearline
[root@localhost ~]# ./clearline 5001
killing 9223
killing 11882
socat reset success!
3、创建新的虚拟机时,出现error: internal error Network is already in use by interface kvm01-br0

这个问题表示新创建的虚机的上网口ip地址与服务器的default.xml中的IP地址冲突了,比较直接的解决办法是先卸载之前创建出的虚拟机,再重新创建新的虚拟机。

[root@localhost vfw]# virsh undefine kvm01
[root@localhost vfw]# virsh undefine kvm02
//创建新的虚机
[root@localhost vfw]# ./hsvfw install ../kvm/tmpimg/1..qcow2 vm02 dhcp-host -n 5 -c 2 -e 4096
//创建vm08
./hsvfw install ../kvm/tmpimg/SG6000-R8P2_INTG-VM-ARM-V6-r0118.qcow2 vm08 kvm08 -n 5 -c 8 -e 16384
5、ovs网桥绑定虚拟机接口,将物理接口与虚拟机接口添加进同一个网桥下,即可实现流量链路互通。一个物理口可对应多个虚拟机的接口,即多个虚拟机的其中一个接口可以共用一个物理口,但只能一一对应,不能将同一个虚拟机的多个接口放入同一个ovs网桥内。
[root@localhost vfw]# ovs-vsctl add-br br50   
[root@localhost vfw]# ovs-vsctl del-br br50   //创建与删除网桥

[root@localhost vfw]# ovs-vsctl add-port eth1 kvm01-eth1  //添加接口kvm01-eth1到eth1网桥内
[root@localhost vfw]# ovs-vsctl del-port eth1 kvm01-eth1   //从eth1网桥删除接口kvm01-eth1
4、性能调优方式之一,虚拟机绑核将虚拟机的每一个vcpu绑定在服务器上的物理CPU上,由该CPU处理相应的线程(例如IO线程),可以减少由于cpu调度导致的多余资源开销,从而提升虚拟机性能(以华为鲲鹏920服务器为例)。

1)使用numactl -H查看服务器上NUMA节点信息,若提示不识别numactl,则使用yum install numactl进行安装;

[root@localhost vfw]# numactl -H
available: 4 nodes (0-3)
node 0 cpus: 0 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
node 0 size: 31922 MB
node 0 free: 24819 MB
node 1 cpus: 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
node 1 size: 32729 MB
node 1 free: 29439 MB
node 2 cpus: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
node 2 size: 32729 MB
node 2 free: 19470 MB
node 3 cpus: 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
node 3 size: 32711 MB
node 3 free: 18526 MB
node distances:
node   0   1   2   3
  0:  10  12  20  22
  1:  12  10  22  24
  2:  20  22  10  12
  3:  22  24  12  10

2)查看qemu主线程所处的numa node,如下所示,qemu主线程运行在node2上;

[root@localhost vfw]# numastat -c qemu-kvm 

Per-node process memory usage (in MBs) for PID 122616 (qemu-kvm)
         Node 0 Node 1 Node 2 Node 3 Total
         ------ ------ ------ ------ -----
Huge          0      0      0      0     0
Heap          0      0     48      0    48
Stack         0      0      0      0     0
Private       0      0   4242     20  4262
-------  ------ ------ ------ ------ -----
Total         0      0   4290     20  4310

3)虚机绑核尽量将其绑在同一个numa node下,2)中服务器即需要绑定在node2的物理cpu上,将修改写入对应的虚拟机.xml文件内;

[root@localhost vfw]# virsh edit kvm01

将2部分做如下修改即可:

  <vcpu placement='static' cpuset='64,66'>2</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='64'/>
    <vcpupin vcpu='1' cpuset='66'/>
    <emulatorpin cpuset='64,66'/>
  </cputune>

参数说明:

  • emulatorpin cpuset=‘64,66’:表示将QEMU主线程绑定到4至7物理CPU上。
  • vcpu placement = ‘static’ cpuset=‘64,66’:用于IO线程、worker threads线程仅能使用64和66这2个核,若不配置此参数,虚拟机任务线程会在CPU任意core上浮动,会存在更多的跨NUMA和跨DIE损耗。
  • vcpupin用于限制对CPU线程做一对一绑核。若不使用vcpupin绑CPU线程,则线程会在64和66这个2个核之间切换,造成额外开销。
6、当服务器重启之后,操作虚拟机时,出现ovs-vsctl: unix:/usr/local/var/run/openvswitch/db.sock: database connection failed (No such file or directory),执行以下脚本:
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
                     --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
                     --private-key=db:Open_vSwitch,SSL,private_key \
                     --certificate=db:Open_vSwitch,SSL,certificate \
                     --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
                     --pidfile --detach
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach
7、当出现交换机到服务器的链路不通时,在虚拟机running的情况下,首先排查ovs网桥下的虚拟机接口是否状态正常,若出现以下error: "could not add network device kvm02-eth4 to ofproto(Device or resource busy),则按照下面的配置进行修改:
 1016  ovs-vsctl list-ports eth4
 1017  ifconfig enp189s0f3 down
 1018  ifconfig enp189s0f3
 1019  ifconfig enp189s0f3 up
 1020  ifconfig enp189s0f3 4.1.1.150/8
 1021  ping 4.1.1.100
 1022  ping 4.1.1.1
 1024  yum install tcpdump
 1025  tcpdump -i enp189s0f3 -vv   #线上抓包不保存文件#
 1026  tcpdump -i enp189s0f3 -w sss.pcap   #抓包并保存.pcap文件#
[root@localhost vfw]# ovs-vsctl show
514f1bf9-2d5b-445f-a824-27b6634e4de8
    Bridge "eth4"
        Port "kvm02-eth4"
            Interface "kvm02-eth4"
                error: "could not add network device kvm02-eth4 to ofproto (Device or resource busy)"
        Port "kvm04-eth4"
            Interface "kvm04-eth4"
                error: "could not add network device kvm04-eth4 to ofproto (Device or resource busy)"

若出现以上error回显,则表明创建出来的虚拟机接口不在对应的ovs网桥下,根因是创建虚拟机时,所有虚拟机接口被默认放在br网桥下,如下图所示:
在这里插入图片描述
可以看到,所有虚拟机接口都在br网桥下,我们需要将它们全释放出来,使用以下命令:

[root@localhost vfw]# brctl delif kvm01-br1 kvm01-eth1
[root@localhost vfw]# brctl delif kvm01-br2 kvm01-eth2

配置完成后,再ovs-vsctl show可以看到有问题的接口都变为正常状态,如下图所示:

**xxx**

在这里插入图片描述
再通过配置服务器IP等操作,ping直连的交换机vlan接口ip地址,ping通则表示问题已经解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值