CentOS Overlay与VXLAN的区别
术语澄清
- 在CentOS语境中,Overlay通常指两种不同技术:
- OverlayFS:Linux的联合文件系统,用于把多个目录合并为一个统一视图,常见于容器镜像/容器的分层存储(如 Docker 的 overlay2 存储驱动)。它是“存储层”的技术。
- Overlay 网络:一种“网络层”的虚拟化模型,在现有物理网络(Underlay)之上通过隧道封装构建虚拟网络,Docker 的 Overlay 网络驱动即属此类,底层常选用VXLAN作为隧道协议。
- VXLAN本身是一种具体的网络隧道/封装协议(MAC-in-UDP),用于在三层网络上扩展二层域,提供大规模多租户隔离(24 位 VNI,约 1600 万个网段)。
核心区别一览
| 维度 |
CentOS OverlayFS(文件系统) |
CentOS Overlay 网络(网络模型) |
VXLAN(隧道协议) |
| 所属领域 |
存储(文件系统) |
网络(虚拟网络模型) |
网络(隧道/封装协议) |
| 工作层次 |
VFS/内核层,联合挂载目录 |
数据链路/网络层,隧道封装 |
数据链路/网络层,MAC-in-UDP |
| 目的 |
合并多层目录,写时复制,节省空间 |
在不改动底层网络下构建跨主机虚拟网络 |
在三层网络上承载二层,扩展二层域与多租户 |
| 关键标识/概念 |
lowerdir、upperdir、workdir、merged |
VTEP、VNI、BD(Bridge Domain) |
VNI(24 位)、UDP 目的端口4789 |
| 依赖/底层 |
内核支持 OverlayFS(如 overlay2) |
物理/Underlay 网络需 IP 可达 |
物理/Underlay 网络需 IP 可达 |
| 性能与开销 |
近原生读、写放大可控,开销小 |
有封装/解封装开销,取决于实现 |
有封装/解封装开销,头部约≈50 字节 |
| 典型场景 |
容器镜像分层、容器运行时可写层 |
Docker Swarm/K8s 跨主机容器网络 |
数据中心/云环境大规模二层扩展、多租户 |
| 配置要点 |
内核/挂载选项,Docker 用 overlay2 |
需启用 Overlay 驱动与集群发现(如 kv 存储) |
配置 VTEP、VNI、BD/EVPN,放行UDP 4789 |
说明:Overlay 网络与 VXLAN 的关系是“模型 vs 实现”。Overlay 网络是一种在 Underlay 之上构建虚拟网络的模型,VXLAN 是其中主流的隧道实现之一;而 OverlayFS 完全属于文件系统领域,和网络无关。
在 CentOS 上的实践要点
- 使用OverlayFS(容器存储):
- 选择 Docker 存储驱动为overlay2(推荐),在 /etc/docker/daemon.json 中设置 “storage-driver”: “overlay2”,重启 Docker 生效。
- 使用Overlay 网络(跨主机容器网络):
- 在 Docker Swarm 或 Kubernetes 中创建 Overlay 网络;确保节点间网络互通并放行UDP 4789(VXLAN 端口)。
- 常见需额外部署的支撑组件包括用于状态同步的键值存储(如 etcd/Consul),以及各节点上的VTEP实现(容器/主机侧虚拟交换机或物理设备)。
- 使用VXLAN(作为 Overlay 的隧道实现):
- 规划VNI与BD映射,部署/配置VTEP(可在服务器 vSwitch 或网络设备),按需采用集中式或分布式网关;Underlay 只需 IP 可达即可承载 VXLAN 流量。
选型建议
- 若目标是容器/镜像的分层与存储优化:选用OverlayFS(overlay2),它是存储技术,和网络无关。
- 若目标是跨主机容器网络且底层网络不可改动或需多租户隔离:选用Overlay 网络 + VXLAN,获得更好的兼容性与扩展性。
- 若目标是数据中心大规模二层扩展、与物理网络解耦:直接使用VXLAN方案(可结合控制器/自动化),获得标准且成熟的隧道能力。