FreeBSD 15 适合服务器吗?优势与适用场景
了解 FreeBSD 15 为什么适合服务器:统一基础系统、ZFS、jails 和 pf 如何协同工作,以及 pkgbase 取代传统升级工具的具体变化。
用一段话说明 FreeBSD 15
FreeBSD 是完整的服务器操作系统,不是由内核和构建在其上的发行版组成的系统。编写内核的团队也负责核心用户空间、文档和版本发布,并将它们作为一个带版本号的整体一起发布。FreeBSD 15 是该系统最新的主版本。如果您一直只使用 Linux,需要记住这一点:在 FreeBSD 中,基础系统由一个项目统一维护,您添加的软件包则明确位于基础系统之上。这一设计选择解释了人们喜欢 FreeBSD 的大部分原因。
我日常的大多数工作使用 Linux,SSD Nodes 也是 Linux VPS 主机商。不过,FreeBSD 仍然是我最喜欢深入使用的服务器操作系统,这篇文章将说明原因。这里需要坦诚说明一点:我们不提供 FreeBSD VPS 方案,因为市场需求很少。喜欢 FreeBSD 的用户通常会在自己的硬件上运行它,而不是租用服务器,因此 FreeBSD 的 VPS 市场一直很小。
FreeBSD 15 的新增内容
FreeBSD 15.0 于 2025 年 12 月发布。其最重要的变化是 pkgbase:基本系统本身现在作为 pkg 软件包安装和更新。安装程序提供该选项,官方 VM 和云映像也默认使用 pkgbase;VPS 使用的就是这类映像。旧版 freebsd-update 工具仍可用于 15 分支,但该工具及其依赖的 distribution sets 计划在 FreeBSD 16 中移除。因此,pkgbase 是未来的发展方向,而不是试验性功能。
基础系统与 Linux 发行版模型
如果有一个差异可以解释 FreeBSD,那就是这一点,其他大多数差异也都由此产生。在 Linux 服务器上,您运行的是一个发行版。内核来自一个项目,C 库来自另一个项目,核心命令又来自其他项目;发行版维护者负责组装这些组件,并选择能够协同工作的版本。这需要大量协调,通常也能正常工作,但组件之间的边界确实存在:升级可能只更新部分组件,而不是全部组件。
FreeBSD 则在不同的位置划分边界。内核、标准命令、C 库、防火墙和引导加载程序来自同一个源代码树,并使用同一个版本号。您可以将基础系统作为一个整体升级:在较早的安装中使用 freebsd-update;而在 FreeBSD 15 云镜像默认使用的 pkgbase 安装中,则直接使用 pkg。其他所有组件,包括 Web 服务器、数据库和语言运行时,都来自 pkg 软件包。这些软件包位于基础系统之上,并不与基础系统交织在一起。即使使用 pkgbase,一个工具现在可以同时更新这两个层次,“操作系统”和“我安装的软件”仍然是两个相互独立的层次,您可以分别理解和管理它们。
ZFS 作为系统的核心组件
ZFS 是大多数用户选择 FreeBSD 的主要原因。在 FreeBSD 15 中,ZFS 是系统的一等组件,而不是需要额外安装的附加功能。ZFS 将文件系统和卷管理器合并为一个整体,提供带校验和的数据保护,可检测静默损坏,而不是盲目信任磁盘;同时还支持即时快照、低成本克隆,以及 zfs send 和 zfs receive,可将文件系统逐字节传输到另一台计算机。
对于服务器而言,这些功能具有直接的实际价值。您可以在升级前为数据集创建快照:
zfs snapshot zroot/ROOT/default@before-upgrade如果升级失败,可以直接回滚到该精确状态。FreeBSD 的引导加载程序支持 ZFS 引导环境,因此您可以将整个操作系统回滚到修改前创建的快照。Linux 也通过 OpenZFS 运行 ZFS,并且运行良好。区别在于,FreeBSD 从设计之初就将 ZFS 集成到安装程序、引导加载程序和更新工具中。
Jails:容器普及前的容器技术
Jail 是一种轻量、隔离的环境。它共享主机内核,但拥有独立的文件系统、用户、网络和进程视图。如果这听起来像容器,那是因为它确实如此,而且 jail 比 Docker 早出现了大约十年。FreeBSD 15 继续改进这一功能。
相比完整的容器技术栈,jail 的工作模型更简单。Jail 是一个目录树和一份简短配置,使用主机内核运行真正的 FreeBSD 用户空间。要实现隔离,不需要镜像仓库或后台 daemon。对于托管多个独立服务的服务器,jail 能以极低的开销提供强隔离,使用 bastille 等工具管理也很方便。这与为每个服务运行独立的 Docker 容器遵循相同的思路,只是实现路径相反。如果要为某个服务在两者之间做选择,请参阅jail 与 Docker 容器的主要区别在于软件如何进入环境、状态存储在哪里,以及网络如何连接。
pf:您会乐于编写的防火墙
FreeBSD 的数据包过滤器 pf 广受欢迎,原因只有一个:它的规则语法接近普通句子。规则集是一个可以从头到尾阅读并真正理解的文件。与在 Linux 上手写 iptables/nftables 规则相比,pf 更像是专为人工维护而设计的。如果您曾经处理过满屏的 iptables 行,pf 会让您轻松许多。
FreeBSD 适用的场景,以及不适用的场景
FreeBSD 凭借 ZFS,适合用作存储服务器;凭借 pf,适合用作防火墙和路由器。如果服务器更看重稳定、统一的基础系统和干净的升级过程,而不是追逐最新的内核功能,FreeBSD 也是很好的选择。它的文档《FreeBSD Handbook》是整个开源领域中最好的手册之一。阅读该手册是了解这个系统最快的方法。
FreeBSD 并不适合所有场景。容器生态规模较小,而且以 Linux 为主。如果整个工作流都依赖 Docker 镜像和 Kubernetes,使用 FreeBSD 就会面临较多限制。一些专有驱动和厂商工具仅支持 Linux。此外,大多数自托管教程(包括本网站上的许多教程)都以 Linux 发行版为基础。要全面了解家用服务器或副项目服务器可以运行哪些服务,请阅读 自托管概览。该文章面向 Linux 编写,但其中的思路同样适用于其他系统。要直接逐项比较功能,请阅读 面向服务器的 Linux 与 FreeBSD 对比。
如需进行另一组比较,请阅读 Linux 与 Windows Server 对比,了解另一个主要服务器平台与 Linux 的差异。
FAQ
FreeBSD 15 适合作为服务器吗?
适合,但要看具体用途。FreeBSD 15 是稳定且一致的服务器操作系统,基础系统内置 ZFS、jails 和 pf,文档完善,并支持整套系统按单元进行干净升级。如果您重视可预测性,而不是追求最新的内核功能,它尤其适合存储、防火墙和长期运行的服务。如果您的工作流依赖以 Linux 为首选的容器生态,FreeBSD 的适配性会较弱。
FreeBSD 基础系统与 Linux 有什么区别?
在 Linux 中,内核和用户空间来自不同项目,由发行版负责组装。在 FreeBSD 中,内核、核心命令、C 库、防火墙和 boot loader 位于同一个源代码树中,使用同一个版本,并通过 freebsd-update 作为一个整体升级;对于使用 pkgbase 安装的系统,则通过 pkg 升级。同时,您安装的所有其他软件仍作为独立的软件包层位于其上。基础系统与软件包的这种分离,是两者最核心的结构差异。
可以在 VPS 上运行 FreeBSD 吗?
可以,但前提是主机商提供 FreeBSD,且可选主机比 Linux 少。SSD Nodes 不提供 FreeBSD 方案,因为需求较少:运行 FreeBSD 的用户往往使用自己的硬件,而不是 VPS。许多 FreeBSD 服务器都是由所有者直接控制的物理机。
尝试 FreeBSD 前需要先了解 Linux 吗?
不需要,但了解 Linux 会有所帮助。如果您使用过 Linux,那么 shell、SSH 和大多数日常命令都会很熟悉。需要重新学习的主要内容包括基础系统与软件包的分离、使用 pkg 管理软件(在 FreeBSD 15 的 pkgbase 安装中也用于管理基础系统,freebsd-update 正逐步退出使用),以及使用 pf 配置防火墙。FreeBSD Handbook 会逐步介绍这些内容。