FreeBSD の先進的な技術について
先進的な機能を数多く提供する FreeBSD
使うアプリケーションがどんなものでも、 自分のシステムの資源は最大限に活用したいものです。 FreeBSD の性能、ネットワーク、容易に管理可能なストレージ、 優れた文書はそれを可能にします。
4.4BSD ベースの完全なオペレーティングシステム
FreeBSD は、 カリフォルニア大学バークレー校のコンピュータシステムリサーチグループから公開された BSD ソフトウェアに由来しています。 BSD の改良は 10 年以上にも渡って続けられています。 新しい管理ツール、ファイルシステム、セキュリティ機能に加え、 業界をリードする SMP の追加、マルチスレッド、 ネットワーク性能の改良がおこなわれ、 FreeBSD はインターネット上のいたる所で利用されるようになりました。 コアルーター製品のオペレーティングシステム、 ルートネームサーバでの採用、メジャーなウェブサイトのホスティング、そして、 広く使われているデスクトップオペレーティングシステムの基盤としても採用されています。 これは、世界各国から集まった多様なボランティア開発者からなる FreeBSD プロジェクトだからこそ可能になったことです。
組み込み環境からハイエンドのマルチプロセッササーバまで、 FreeBSD は幅広いシステムにおいて理想的な、 高性能なオペレーティングシステムの機能を提供します
2008 年 2 月にリリースされた FreeBSD 7.0 は、 たくさんの新しい機能や性能の改良をもたらしました。 FreeBSD 7.0 ではストレージやマルチプロセッサの性能に焦点が当てられ、 Sun の ZFS ファイルシステム および マルチプロセッサの性能における高いスケーラビリティ が実現されました。 8 コアサーバにおける MySQL と PostgreSQL に対するベンチマークテストでは、 最新の Linux システムの 2 倍の性能を示しました。
- SMPng: 7 年に渡る先進的な SMP サポートの改良の結果、 FreeBSD 7.0 は、細粒なカーネルを実現し、 多くのワークロードにおいて、8 コア以上の CPU で線形なスケーラビリティを可能にしました。 FreeBSD 7.0 では、Giant Lock の排除がほぼ完了し、 CAM ストレージレイヤ、NFS クライアントからの Giant Lock の削除から、 ネットワークサブシステムにおける、より細粒度の高いロックへと移行しています。 カーネルのスケジューリングおよび原始的なロック機構の最適化という重要な作業も行われました。 ULE スケジューラによりスレッド CPU アフェニティ、 per-CPU の実行キューが可能となり、 オーバーヘッドが減少し、キャッシュとの親和性が高くなりました。 1:1 スレッドを提供する libthr スレッドパッケージがデフォルトになりました。 同じマルチコアのハードウェアによるベンチマークの結果、 他の UNIX® オペーレーティングシステムに比べ劇的な性能の優位性が示されました。 これは、長年にわたる FreeBSD カーネルの SMP 技術への投資を反映しています。
- ZFS ファイルシステム: Sun の ZFS は、シンプルな管理、 トランザクションセマンティクス、エンドツーエンドのデータ完全性、 そして、高いスケーラビリティを提供する最新のファイルシステムです。 セルフヒーリングから、ビルトイン圧縮、RAID、 スナップショットおよびボリューム管理まで、 ZFS は FreeBSD のシステム管理者が、 たくさんのストレージアレイを簡単に管理できるようにします。
- 10 ギガビットネットワークの最適化: メジャーなすべての 10 ギガビットネットワークベンダからの最適化されたデバイスドライバとともに、 FreeBSD 7.0 では、ハイパフォーマンスワークロードに対するネットワークスタックの広範囲にわたる最適化が行われました。 これには、オートスケーリングソケットバッファ、TCP Segment Offload (TSO), Large Receive Offload (LRO)、ダイレクトネットワークスタックディスパッチ、および 10 ギガビットネットワークカードに対応した複数の CPU、または、 マルチネットワークインタフェースが同時に利用された際の TCP/IP ワークロードのロードバランスが含まれます。 Chelsio, Intel, Myricom および Neterion がフルサポートを提供しています。
- SCTP: FreeBSD 7.0 は、新しい IETF Stream Control Transmission Protocol (SCTP) プロトコルのリファレンス実装です。 これは、VoIP、テレコミュニケーション、および、マルチパスデリバリ、 フェイルオーバやマルチストリーミングのような機能を利用する、 高い信頼性や品質が変化するトランスミッションを行うアプリケーションへの対応を意図したものです。
- ワイヤレス: FreeBSD 7.0 では high-power Atheros ベースのカード、 Ralink, Intel, ZyDAS カードの新しいドライバ、 WPA、バックグラウンドスキャンニングおよびローミング、そして 802.11n 等、ワイヤレスへの対応が急拡大しました。
- 新しいハードウェアアーキテクチャ: FreeBSD 7.0 では、先行して対応した SUN Ultrasparc T1 プラットフォームと同様に、組み込み ARM アーキテクチャへの対応が著しく改善しました。
FreeBSD は、以下のような先進的なオペレーティングシステムの機能開発の長い歴史を持っています。
- 仮想メモリとファイルシステムバッファキャッシュの統合により、 プログラムに使われるメモリとディスクキャッシュの量は、 常に最適に調整されるようになっています。 これにより、プログラムからは、 優れたメモリ管理機能と高性能のディスクアクセスの両方を利用することが可能です。 またシステムの管理者は、 キャッシュメモリを調整する作業から解放されます。
- 互換モジュール により、Linux, SCO UNIX, System V Release 4 など、 他のオペレーティングシステム用のプログラムを FreeBSD 上で動かすことが可能です。
- Soft Updates により、 安全性と信頼性を犠牲にすることなくファイルシステムの性能が向上しました。 これはメタデータのファイルシステム操作を解析して、 いくつかの操作を非同期に行ないます。同期的に処理する代わりに、 完了していないメタデータ操作に関する内部状態を保持することでメタデータをキャッシュし、 効率が向上するように、同一のファイルに対する連続した操作をひとつにまとめて、 処理の順番の入れ換えを行なっています。 バックグラウンドでのファイルシステムのチェックやスナップショットといった機能は、 Soft Updates がもたらす一貫性とパフォーマンスの上に築かれています。
- ファイルシステムスナップショットにより、管理者は、 ファイルシステム中の空き領域を用いてバックアップ用にアトミックなファイルシステムのスナップショットを取ったり、 停電後再起動した際に、 ファイルシステムのクリーンナップ処理が終わるのを待たずにマルチユーザモードへ移行できる、 便利な background fsck の恩恵が受けられます。
- IPsec(IPsec) に対応しています。これらは、 高いネットワークセキュリティの実現と次世代のインターネットプロトコル IPv6 への対応を可能にします。 FreeBSD の IPsec 実装は、 多くのハードウェア暗号アクセラレータに対応しています。
- IPv6 に難しい設定なしに対応しています。 これは KAME IPv6 stack によって行われ、FreeBSD を次世代のネットワーク環境にシームレスに統合させることができます。 FreeBSD は IPv6 に対応した多くのアプリケーションも提供します。
- マルチスレッド SMP アーキテクチャにより、 カーネルを複数のプロセッサ上で並列に実行することができます。 カーネルプリエンプションと合わせると、 優先度の高いカーネルタスクが他のカーネル内の動作から制御を先取りでき、 レイテンシを下げられます。優先度の高いカーネルタスクには、 マルチスレッドネットワークスタックとマルチスレッド仮想メモリサブシステムがあります。 FreeBSD 6.x からは、VFS が完全に並列化され、 UFS ファイルシステムが複数のプロセッサ上で同時に実行できるようになり、 CPU に集約される I/O 最適化の負荷分散が行われるようになりました。
- pthreads による M:N アプリケーションのスレッド化 により、 多くのユーザースレッドを少数の Kernel Schedulable Entities (KSE) に対応づけるスケーラブルな方法で、 スレッドを複数の CPU 上で実行できます。 Scheduler Activation モデルを採用することで、 スレッド化手法を広範囲のアプリケーションの要求仕様に合わせられます。
- 差込可能なネットワークスタック Netgraph により、 開発者はきれいに階層化されたネットワーク抽象を介して、 ネットワークスタックを動的かつ容易に拡張できます。 Netgraph ノードにより、カプセル化、トンネル、暗号化、 性能最適化といった広範囲のネットワークサービスを実装することができます。 この結果、拡張ネットワークサービスの Rapid Prototyping と業務展開を、より簡単にバグの発生を減らして行えます。
- 拡張可能なカーネルセキュリティである TrustedBSD MAC フレームワークにより、 開発者はオペレーティングシステムのセキュリティモデルを、 堅牢化のためのポリシー作成から強制ラベル付け秘密保持統合ポリシーの適用まで、 特定の環境に合わせてカスタマイズできます。 セキュリティポリシーの見本には、Multi-Level Security (MLS) と Biba Integrity Protection があります。 サードパーティモジュールに、Type Enforcement の FLASK ベースの実装である SEBSD が含まれます。
- TrustedBSD Audit は、セキュリティイベント監視サービスで、 きめ細かい特権、安全で信頼性のあるシステムイベントの監視機能を提供します。 管理者は、ユーザによる監視、ファイルアクセスのトラック、 コマンドの実行、ネットワークアクティビティ、システムログ、 他のシステムの振舞いに関するログの性質や細粒度を設定できます。 Audit パイプは、IDS ツールがカーネル監査サービスに接続し、 セキュリティのモニタリングに必要なイベントを提供できるようにします。 FreeBSD は、業界標準の BSM 監査証跡ファイル形式や API に対応しているので、 既存の BSM ツールは少しの変更、または変更なしに実行出来ます。 このファイル形式は、Solaris や Mac OS X でも利用されており、 簡単な相互運用、統合された解析が可能です。
- 差込可能なストレージ層 GEOM により、 新たなストレージサービスをすみやかに開発して、 FreeBSD のストレージサブシステムにきれいに組み込むことができます。 GEOM は、ストレージサービスを検出したり、 階層化して用いるための一貫して筋の通ったモデルを提供しており、RAID とボリューム管理のようなサービスを重ね合わせて使うことが容易になります。
- FreeBSD の GEOM ベースのディスク暗号化 (GBDE) により、 GEOM フレームワークを用いた強力な暗号化による保護が提供されます。 ファイルシステム、swap デバイス、 そしてその他のストレージメディアの保護を行うこともできます。
- カーネルキューによって プログラムのファイル I/O やソケット I/O など、 さまざまな非同期イベントに対する応答性が向上し、 アプリケーションやシステムの性能を改善することができます。
- accept フィルタは、ウェブサーバなど、 接続要求の多いアプリケーションに必要な機能の一部をオペレーティングシステムのカーネルに組み入れたものです。 これを利用して、 そのようなアプリケーションの性能を向上させることができます。
FreeBSD は、 ネットワークやサーバを保護する多くのセキュリティ機能を提供しています。
FreeBSD 開発者は、性能や安定性と同じくらいセキュリティに注意を払っています。 FreeBSD にはステートフルな IP ファイアウォールのカーネルレベルの対応が、 IP プロキシゲートウェイ、アクセス制御リスト、 強制アクセス制御、jail ベースの仮想サーバ、 ストレージの暗号保護のようなサービスと同様に組み込まれています。 これらの機能は、 互いに信頼できない顧客や消費者を高いセキュリティでホスティングすることや、 ネットワークセグメントの強力な分割、 そして情報の洗浄 (scrubbing) とフロー制御のための安全なパイプラインの構築に使用することができます。
また、FreeBSD は暗号ソフトウェア、セキュアシェル、Kerberos 認証、jail により作られる「仮想サーバ」、サービスを chroot して ファイルシステムへのアクセスを制限するアプリケーション、 Secure RPC 機構、TCP wrappers に対応したソフトウェア用のアクセス制御リストを搭載しています。