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-server 和 ovs-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启动失败。所以,请务必按上面的验证步骤走一遍,确认无误再进入下一章。