使用OVS-switch(2.14)+DPDK运行ovs-tcpdump遇数据库schema解析错误
解决OVS 2.14(DPDK版)ovs-tcpdump数据库Schema解析错误的方案
我之前在维护OVS 2.14 + DPDK的环境时,也碰到过一模一样的error: Parsing database schema failed : Type mismatch for member 'name'错误,折腾了一阵终于找到几个靠谱的解决方向,分享给你:
1. 修复OVS数据库Schema的版本一致性
这个错误最常见的原因是OVS数据库(conf.db)的Schema和当前OVS 2.14版本不匹配——可能是升级OVS时没同步更新数据库,或者数据库文件损坏了。操作步骤如下:
- 先停掉OVS服务:
systemctl stop openvswitch - 一定要先备份数据库,避免丢失现有配置:
cp /etc/openvswitch/conf.db /etc/openvswitch/conf.db.bak - 如果你想保留现有端口、流表配置,先导出配置文件:
ovs-vsctl show > ovs_config_backup.txt - 用OVS 2.14对应的Schema重新初始化数据库:
ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema - 重启OVS服务:
systemctl start openvswitch - 如果之前导出了配置,重新导入恢复:
ovs-vsctl --file ovs_config_backup.txt --no-wait apply
2. 确认ovs-tcpdump与OVS版本完全匹配
有时候系统里会混装不同版本的OVS工具,比如ovs-vswitchd是2.14,但ovs-tcpdump是从其他版本安装的,这就会导致Schema解析不兼容:
- 分别查看两个工具的版本:
ovs-tcpdump --version ovs-vswitchd --version - 如果版本不一致,卸载当前的ovs-tcpdump,重新安装OVS 2.14对应的工具包。比如用yum的话:
yum remove openvswitch-tcpdump yum install openvswitch-tcpdump-2.14.x86_64
3. 检查DPDK端口的命名合规性
OVS数据库的name字段有格式要求,如果你的DPDK端口命名包含特殊字符或者不符合Schema定义的类型,也会触发类型不匹配错误:
- 先查看当前所有端口的配置:
ovs-vsctl show - 找到DPDK端口的
name字段,确认它是普通字符串(没有空格、特殊符号,长度在合理范围内)。如果有问题,重新命名端口:ovs-vsctl set Interface <旧端口名> name=<新合规端口名> options:dpdk-devargs=<你的DPDK设备参数>
4. 强制指定Schema路径执行ovs-tcpdump
如果上述方法都没解决,可以尝试在执行ovs-tcpdump时强制指定正确的Schema文件路径,绕过系统自动查找的问题:
ovs-tcpdump -i <你的DPDK端口名> --ovsdb-schema /usr/share/openvswitch/vswitch.ovsschema
内容的提问来源于stack exchange,提问作者rohit
相关产品推荐
相关产品推荐

