SSD Nodes Learn
指南 Matt Connor作者: Matt Connor · 已更新 2026-07-24

FreeBSD 15 伺服器作業系統優缺點分析

FreeBSD 15 採用統一的 base system 架構,將核心與 userland 整合。本文探討其 ZFS、Jails 與 pf 防火牆的優勢,並說明 pkgbase 如何取代舊有的工具成為未來升級標準。

FreeBSD 15 簡介

FreeBSD 是一個完整的伺服器作業系統,而非僅是核心加上基於其構建的發行版。開發核心的人員同時負責編寫核心 userland、文件與版本發行,並將它們作為一個統一的版本整體發布。FreeBSD 15 是該系統最新的主要版本。如果你僅使用過 Linux,請記住一個核心觀念:在 FreeBSD 中,基礎系統(base system)是一個單一專案,而你新增的套件則清晰地位於其之上。這個設計選擇解釋了使用者喜愛它的主要原因。

我大部分的工作都在 Linux 上執行,而 SSD Nodes 是一家 Linux VPS 供應商。FreeBSD 仍是我最喜歡的伺服器作業系統,本篇文章將說明原因。坦白說:我們不提供 FreeBSD VPS 方案,因為需求較少。喜愛 FreeBSD 的人通常傾向使用自己的硬體,而非租用服務,因此其 VPS 市場規模較小。

FreeBSD 15 的新功能

FreeBSD 15.0(於 2025 年 12 月發布)最重大的變更為 pkgbase:基礎系統本身現在以 pkg 套件的形式進行安裝與更新。安裝程式提供此選項,且官方的 VM 與雲端映像檔(即 VPS 上使用的版本)預設使用 pkgbase。舊有的 freebsd-update 工具在 15 分支仍可運作,但該工具及其依賴的發行集預計在 FreeBSD 16 中移除,因此 pkgbase 是未來的發展方向,而非實驗性功能。

基礎系統與 Linux 發行版模式的差異

如果只能說明一個 FreeBSD 的特性,那就是這個差異,而其他多數特性皆源於此。在 Linux 伺服器上,你運行的是發行版。核心來自一個專案,C 函式庫來自另一個,核心指令來自第三個,而發行版維護者負責將這些組件組合起來並選擇相容的版本。這需要大量的協調工作,雖然可行,但其界限是明顯的:升級可能會移動某些組件,卻不移動其他組件。

FreeBSD 的界限劃分不同。核心、標準指令、C 函式庫、防火牆與 boot loader 屬於同一個原始碼樹,並擁有同一個版本號。你以一個單元進行基礎系統升級:在舊版安裝中透過 freebsd-update,而在 FreeBSD 15 雲端映像檔預設使用的 pkgbase 安裝中,則是透過 pkg 本身。其他所有內容,如 web server、資料庫、語言執行環境,皆來自 pkg 套件,它們位於基礎系統之上,而非編織於其中。即使在 pkgbase 模式下(由單一工具同時更新兩個層級),「作業系統」與「我安裝的軟體」仍是兩個可以獨立思考的獨立層級。

ZFS 作為一等公民

ZFS 是大多數人選擇 FreeBSD 的主要原因,而在 FreeBSD 15 中,它是系統內建的一等公民,而非外掛組件。ZFS 將檔案系統與磁碟管理整合為一體,這提供了具備校驗碼(checksum)的資料以偵測靜默毀損(silent corruption),而非僅僅信任硬碟;它還提供即時快照(snapshots)、廉價的 clone,以及用於將檔案系統逐位元(byte for byte)傳輸至另一台機器的 zfs sendzfs receive

對於具備實質意義的伺服器,你可以為資料集(dataset)建立升級前的快照:

zfs snapshot zroot/ROOT/default@before-upgrade

如果升級失敗,可以直接還原到該狀態。FreeBSD 的 boot loader 支援 ZFS boot environments,因此你可以將整個作業系統還原到觸碰前的快照狀態。Linux 也可以透過 OpenZFS 執行 ZFS,且表現良好。差別在於,在 FreeBSD 中,ZFS 從一開始就與安裝程式、boot loader 與更新工具整合在一起。

Jails:在容器普及之前的容器技術

Jail 是一種輕量級的隔離環境,它與主機共用核心,但擁有獨立的檔案系統、使用者、網路與進程視圖。如果這聽起來像 container,那它確實就是,且 jails 的出現比 Docker 早了約十年。FreeBSD 15 持續強化這項技術。

其運作邏輯比完整的 container stack 更簡單。Jail 是一個目錄樹加上一個小型設定檔,在主機核心上執行真實的 FreeBSD userland。你不需要 image registry 或背景守護進程即可實現隔離。對於託管多個獨立服務的伺服器,jails 能以極低的開銷提供強大的隔離性,而 bastille 等工具讓管理變得非常方便。這與 在各自的 Docker container 中執行每個服務 的直覺相同,只是從另一個方向實現。

pf,你會享受編寫的防火牆

FreeBSD 的封包過濾器 pf 深受歡迎,原因只有一個:其規則語法讀起來就像平鋪直敘的句子。規則集(ruleset)是一個可以由上而下閱讀並實際理解的檔案。與在 Linux 上手寫 iptables/nftables 規則相比,pf 感覺像是為了人類維護而設計的。如果你曾與一大堆 iptables 行規則搏鬥,pf 會讓你感到輕鬆。

FreeBSD 的適用與不適用場景

由於 ZFS,FreeBSD 是儲存伺服器的強大選擇;由於 pf,它是防火牆與路由器的首選;對於任何比起追求最新核心功能,更重視穩定、一致的基礎系統與乾淨升級的伺服器,它也是極佳選擇。其文件 FreeBSD Handbook 是整個開源世界中最優秀的手冊之一,閱讀它是學習該系統最快的方式。

它並非萬能。Container 生態系規模較小且以 Linux 為主,因此如果你的工作流程完全基於 Docker images 與 Kubernetes,你將會事倍功半。某些專有驅動程式與廠商工具僅支援 Linux。此外,大多數自架(self-hosting)教學(包括本站上的許多教學)都假設使用 Linux 發行版。若要了解家用或副業專案伺服器可以執行什麼,self-hosting overview 雖然是為 Linux 編寫,但其概念是通用的。若要直接進行功能對比,請閱讀 Linux versus FreeBSD for servers

若要進行不同的比較,Linux versus Windows Server 權衡了另一個大型伺服器平台與 Linux。

FAQ

FreeBSD 15 適合用於伺服器嗎?

是的,適合特定的工作。FreeBSD 15 是一個穩定且一致的伺服器作業系統,內建 ZFS、jails 與 pf,擁有完善的文件以及乾淨的單一單元升級機制。對於重視預測性而非最新核心功能的儲存、防火牆與長期運作服務,它的表現特別強大。如果你的工作流程是圍繞著以 Linux 為主的 container 生態系建立,則它的適用性較低。

FreeBSD 基礎系統與 Linux 有什麼區別?

在 Linux 上,核心與 userland 來自不同的專案,由發行版進行組合。在 FreeBSD 上,核心、核心指令、C 函式庫、防火牆與 boot loader 屬於同一個原始碼樹,擁有同一個版本,並透過 freebsd-update 或 pkgbase 安裝中的 pkg 作為一個單元進行升級,而你安裝的所有內容則維持在基礎系統之上的獨立套件層。這種基礎系統與套件之間的劃分是其核心結構差異。

我可以在 VPS 上執行 FreeBSD 嗎?

你可以從提供該系統的供應商那裡租用 FreeBSD VPS,儘管選擇比 Linux 少。SSD Nodes 不提供 FreeBSD 方案,因為需求較少:使用 FreeBSD 的人傾向使用自己的硬體而非 VPS。許多 FreeBSD 伺服器是使用者直接控制的實體機。

在嘗試 FreeBSD 之前我需要先學會 Linux 嗎?

不需要,但學過 Linux 會很有幫助。如果你使用過 Linux,shell、SSH 與大多數日常指令會讓你感到熟悉。需要重新學習的主要重點是基礎系統與套件的劃分、用於軟體的 pkg(以及在 FreeBSD 15 pkgbase 安裝中,基礎系統也使用 pkg,而 freebsd-update 正在被取代),以及用於防火牆的 pf。FreeBSD Handbook 會引導你完成所有學習過程。

#freebsd#freebsd-15#zfs#jails#server-os#bsd