2、环境准备:Linux系统要求、OVS安装方式(源码编译与包管理器)、验证OVS是否安装成功

2.1 Linux系统要求——别让操作系统拖后腿

做网络实验,操作系统是地基。我个人习惯用Ubuntu 20.04 LTS或CentOS 7.9以上版本。为什么?因为OVS对内核版本有依赖,太老的内核编译时会报一堆莫名其妙的错误。

具体来说,你需要满足以下条件:

  • 内核版本:建议Linux Kernel 4.19以上。我曾在CentOS 7.2(内核3.10)上折腾过,结果OpenFlow流表下发总是不对劲,后来升级内核才解决。
  • CPU架构:x86_64为主流,ARM64也能跑,但部分DPDK功能受限。
  • 内存:至少2GB,如果你要跑多网桥+流表实验,建议4GB以上。
  • 磁盘空间:源码编译需要至少5GB空闲空间(包含依赖包和编译中间文件)。
⚠️ 避坑提醒:我曾经在虚拟机里用默认的2GB内存编译OVS,结果编译到一半直接OOM(内存溢出)被杀进程。后来老老实实加到4GB,一次通过。

2.2 OVS安装方式——两种主流方案怎么选?

OVS的安装方式主要有两种:包管理器安装源码编译安装。你想想看,这就像装软件——有人喜欢apt-get一键搞定,有人偏要自己编译定制。两种我都用过,说说我的感受。

2.2.1 包管理器安装(推荐新手)

这是最省事的方式。Ubuntu上用apt,CentOS上用yum。说白了就是一行命令的事。

Ubuntu/Debian系:

sudo apt update
sudo apt install openvswitch-switch openvswitch-common

CentOS/RHEL系:

sudo yum install epel-release
sudo yum install openvswitch

安装完成后,OVS服务会自动启动。你可以用 systemctl status openvswitch-switch 检查一下。

💡 我的经验:包管理器安装的版本通常比官方最新版落后1-2个小版本。如果你只是学习Patch Port基础用法,完全够用。但如果你要尝鲜新特性(比如最新的DPDK支持),就得走源码编译了。

2.2.2 源码编译安装(适合进阶玩家)

源码编译的好处是你可以定制编译选项,比如开启DPDK支持、关闭某些不需要的模块。嗯,这里要注意,编译前需要装一堆依赖包。

第一步:安装编译依赖

sudo apt install build-essential autoconf automake libtool \
                 pkg-config python3 python3-pip python3-sphinx \
                 libssl-dev libcap-ng-dev libnuma-dev

第二步:下载源码并编译

wget https://www.openvswitch.org/releases/openvswitch-3.3.0.tar.gz
tar -xzf openvswitch-3.3.0.tar.gz
cd openvswitch-3.3.0

./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
make -j$(nproc)
sudo make install

第三步:初始化OVS数据库

sudo mkdir -p /usr/local/etc/openvswitch
sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db \
    /usr/local/share/openvswitch/vswitch.ovsschema

第四步:启动OVS服务

sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
    --pidfile --detach
sudo ovs-vswitchd --pidfile --detach
🔧 避坑指南:我曾经在编译时忘了加 --prefix 参数,结果二进制文件散落在系统各个目录,卸载时痛苦不堪。建议你从一开始就规划好安装路径。

2.3 验证OVS是否安装成功——别急着往下走

装完了不代表就能用。我习惯用三个命令快速验证,缺一不可。

2.3.1 检查版本号

ovs-vswitchd --version

正常输出类似:

ovs-vswitchd (Open vSwitch) 3.3.0
Library version: 3.3.0

2.3.2 检查服务运行状态

sudo systemctl status openvswitch-switch

或者(源码编译方式):

ps aux | grep ovs

你应该能看到 ovsdb-serverovs-vswitchd 两个进程在跑。

2.3.3 创建第一个网桥测试

sudo ovs-vsctl add-br test-br
sudo ovs-vsctl show

输出应该包含:

Bridge "test-br"
    Port "test-br"
        Interface "test-br"
            type: internal

测试完成后记得清理:

sudo ovs-vsctl del-br test-br
⚠️ 重要提醒:如果 ovs-vsctl show 报错说无法连接数据库,八成是 ovsdb-server 没启动。源码编译新手常犯这个错——编译完了忘了启动服务。

2.4 两种安装方式的对比总结

对比项 包管理器安装 源码编译安装
安装难度 ⭐ 极低,一行命令 ⭐⭐⭐⭐ 较高,需处理依赖
版本更新 滞后1-2个小版本 可获取最新版
定制能力 可开启/关闭特定模块
卸载清理 简单,apt remove即可 需手动删除文件
适用场景 学习、快速验证 生产环境、性能调优

我个人建议:如果你是第一次接触OVS,先用包管理器装一个跑起来。等理解了Patch Port的基本原理,再考虑源码编译。别一上来就挑战高难度,容易劝退。

💡 最后说一句:环境准备这一步看似简单,但很多人在这里栽跟头。我记得有个学员在群里问了一整天,最后发现是内核版本太低导致ovs-vswitchd启动失败。所以,请务必按上面的验证步骤走一遍,确认无误再进入下一章。