FreeBSD 15はサーバーOSとして何が優れている?
FreeBSD 15がサーバー運用で選ばれる理由を解説します。ZFS、jails、pf、統合されたベースシステムの強みと、Linuxとの違い、適した用途がわかります。
FreeBSD 15 とは
FreeBSD は、カーネルの上にディストリビューションを構築したものではなく、完全なサーバーオペレーティングシステムです。カーネルを開発する人々が、コアの userland、ドキュメント、リリースも開発し、それらをバージョン管理された1つの全体として同時にリリースします。FreeBSD 15 は、このシステムの最新のメジャーリリースです。Linux しか使ったことがない場合、次の点を押さえてください。FreeBSD ではベースシステムが1つのプロジェクトとして管理され、追加するパッケージはその上に明確に分離して配置されます。この設計上の選択が、FreeBSD が多くの人に好まれる理由の大半を説明します。
私は普段の作業の多くで Linux を使っており、SSD Nodes は Linux VPS ホストです。それでも、腰を据えて使うサーバーオペレーティングシステムとしては FreeBSD が今でも一番好きであり、この記事ではその理由を説明します。率直に補足すると、当社は FreeBSD VPS プランを提供していません。需要が少ないためです。FreeBSD を好む人は、レンタルするよりも自分のハードウェアで運用することが多く、そのため FreeBSD の VPS 市場は小さいままです。
FreeBSD 15 の新機能
2025 年 12 月にリリースされた FreeBSD 15.0 で最も大きな変更は pkgbase です。ベースシステム自体が pkg パッケージとしてインストールおよび更新されるようになりました。インストーラーで選択できるほか、VPS で利用する公式 VM イメージとクラウドイメージでは、デフォルトで pkgbase が使用されます。従来の freebsd-update ツールも 15 ブランチでは引き続き動作しますが、このツールと、それが依存する配布セットは FreeBSD 16 で削除される予定です。そのため、pkgbase は実験的な機能ではなく、今後の標準的な方向性です。
ベースシステムと Linux ディストリビューションモデルの違い
FreeBSDを理解するうえで、この違いが最も重要です。他の多くの違いも、ここから生じています。Linuxサーバーでは、ディストリビューションを使用します。カーネルは1つのプロジェクト、Cライブラリは別のプロジェクト、基本コマンドはさらに別のプロジェクトから提供されます。ディストリビューションのメンテナーは、それらを組み合わせ、互換性のあるバージョンを選定します。多くの調整が必要ですが、この方式は機能します。ただし、構成要素の境界は明確に残ります。アップグレードによって、一部の構成要素だけが更新されることがあります。
FreeBSDでは、境界を別の位置に置いています。カーネル、標準コマンド、Cライブラリ、ファイアウォール、ブートローダーは、1つのソースツリーに含まれ、1つのバージョン番号で管理されます。ベースシステムは一体としてアップグレードします。古いインストールでは freebsd-update を使用し、FreeBSD 15のクラウドイメージでデフォルトになっているpkgbaseインストールでは、pkg 自体を使用します。その他の要素、つまりWebサーバー、データベース、言語ランタイムは、ベースシステムに組み込まれるのではなく、その上に配置される pkg パッケージから提供されます。pkgbaseでは、1つのツールで両方の層を更新できるようになりました。それでも、「オペレーティングシステム」と「自分でインストールしたソフトウェア」は、個別に考えられる2つの異なる層として残ります。
ZFS を中核機能として利用する
ZFS は、多くの人が FreeBSD を選ぶ理由となるファイルシステムです。FreeBSD 15 では、後から追加する機能ではなく、システムの中核として統合されています。ZFS はファイルシステムとボリュームマネージャーを統合します。これにより、ディスクを無条件に信頼するのではなく、チェックサムでデータを検証してサイレント破損を検出できます。さらに、即時スナップショット、低コストのクローン、ファイルシステムをバイト単位で別のマシンへ転送する zfs send と zfs receive も利用できます。
サーバーでは、この機能が実運用に直結します。アップグレードの前にデータセットのスナップショットを作成できます。
zfs snapshot zroot/ROOT/default@before-upgradeアップグレードに失敗した場合は、その時点の状態へすぐにロールバックできます。FreeBSD のブートローダーは ZFS のブート環境を認識します。そのため、変更を加える前に取得したスナップショットへ、オペレーティングシステム全体をロールバックできます。Linux でも OpenZFS を通じて ZFS を利用でき、十分に実用的です。違いは、FreeBSD では最初からインストーラー、ブートローダー、更新ツールに組み込まれている点です。
コンテナが一般化する前から存在したコンテナ、jail
jail は、ホストのカーネルを共有しながら、独自のファイルシステム、ユーザー、ネットワーク、プロセスビューを持つ、軽量で分離された環境です。コンテナのように聞こえるなら、その理解で合っています。jail は Docker より約10年早く登場しました。FreeBSD 15 でも、引き続き機能が強化されています。
完全なコンテナスタックよりも、考え方は単純です。jail はディレクトリツリーと小さな設定で構成され、ホストのカーネル上で実際の FreeBSD userland を実行します。分離のために、イメージレジストリやバックグラウンドデーモンは必要ありません。複数の独立したサービスをホストするサーバーでは、jail によってオーバーヘッドをほとんど増やさずに強力な分離を実現できます。bastille などのツールを使えば、管理も容易です。これは 各サービスを独自の Docker コンテナで実行するのと同じ発想ですが、別の方向から実現しています。特定のサービスでどちらを選ぶか判断する場合は、jail と Docker コンテナでは、ソフトウェアの導入方法、状態の保存場所、ネットワークの接続方法が大きく異なります。
pf:書くことが楽しいファイアウォール
FreeBSD のパケットフィルターである pf が広く支持されている理由は 1 つです。ルール構文が通常の文章のように読めます。ルールセットは上から下まで読み進めることができ、内容を実際に理解できるファイルです。Linux で iptables/nftables のルールを手作業で記述する場合と比べると、pf は人が保守することを前提に設計されたように感じられます。iptables 行が並ぶ画面に悩まされた経験があるなら、pf は大きな助けになります。
FreeBSD が適する用途と適さない用途
FreeBSD は、ZFS を利用するストレージサーバー、pf を利用するファイアウォールやルーター、最新のカーネル機能を追い続けることよりも、安定した一貫性のある基盤と安全なアップグレードを重視するサーバーに適しています。FreeBSD のドキュメントである FreeBSD Handbook は、オープンソース全体を見ても特に優れたマニュアルの 1 つです。これを読むことが、システムを学ぶ最も早い方法です。
FreeBSD がすべての用途に適しているわけではありません。コンテナのエコシステムは Linux を中心に発展しており規模も小さいため、ワークフロー全体が Docker イメージと Kubernetes に依存している場合は、対応に追われることになります。一部のプロプライエタリドライバーやベンダー製ツールは Linux 専用です。また、このサイトを含む多くのセルフホスティングチュートリアルは、Linux ディストリビューションを前提にしています。自宅やサイドプロジェクトのサーバーで実行できるものを広く把握するには、セルフホスティングの概要を参照してください。Linux 向けに書かれていますが、考え方は FreeBSD にも適用できます。機能を直接比較するには、サーバーにおける Linux と FreeBSD の比較を参照してください。
別の比較については、Linux と Windows Server の比較で、Linux ともう 1 つの主要なサーバープラットフォームを比較しています。
FAQ
FreeBSD 15 はサーバーに適していますか?
適切な用途であれば適しています。FreeBSD 15 は、ZFS、jails、pf がベースシステムに組み込まれた、安定性と一貫性の高いサーバー OS です。公式ドキュメントも充実しており、システム全体を単位とした更新をクリーンに実施できます。最新のカーネル機能より予測可能性を重視する、ストレージ、ファイアウォール、長期運用するサービスに特に適しています。Linux を中心としたコンテナエコシステムを前提とするワークフローには、適合しにくい場合があります。
FreeBSD のベースシステムと Linux の違いは何ですか?
Linux では、カーネルとユーザーランドは別々のプロジェクトから提供され、ディストリビューションがそれらを組み合わせます。FreeBSD では、カーネル、基本コマンド、C ライブラリ、ファイアウォール、ブートローダーが 1 つのソースツリーと 1 つのバージョンで管理されています。これらは freebsd-update で一括して更新します。pkgbase のインストールでは pkg を使用します。一方、インストールするものはすべて、別のパッケージ層としてその上に追加されます。このベースシステムとパッケージの分離が、構造上の中心的な違いです。
FreeBSD を VPS で実行できますか?
FreeBSD を提供しているホストであれば、VPS 上で実行できます。ただし、Linux より選択肢は限られます。SSD Nodes は FreeBSD プランを提供していません。需要が少ないためです。FreeBSD を実行するユーザーは、VPS よりも自分で管理するハードウェアを使う傾向があります。FreeBSD サーバーの多くは、所有者が直接管理する物理マシンです。
FreeBSD を試す前に Linux を知っておく必要はありますか?
必須ではありませんが、知っていると役立ちます。Linux を使った経験があれば、シェル、SSH、日常的に使うコマンドの多くは見慣れたものに感じられます。新たに学ぶ主な点は、ベースシステムとパッケージの分離、ソフトウェア用の pkg です。FreeBSD 15 の pkgbase インストールでは、ベースシステムにも pkg を使用しますが、freebsd-update は廃止される予定です。ファイアウォールには pf を使用します。これらは FreeBSD Handbook で一通り学べます。