Die technischen Fortschritte von FreeBSD
FreeBSD bietet viele hochentwickelte Funktionalitäten.
Unabhängig von der Anwendung möchten Sie Ihr System optimal ausnutzen. Da FreeBSD den Fokus auf optimale Leistung, Netzwerk- und Speicherfunktionalitäten zusammen mit einer einfachen Systemverwaltung und einer exzellenten Dokumentation legt, sind Sie genau dazu in der Lage.
Ein komplettes Betriebssystem, basierend auf 4.4BSD.
FreeBSD hat seine Ursprünge in der BSD-Software, welche von der Computer Systems Research Group an der Universität von Californien, Berkeley, veröffentlicht wurde. Seit damals sind mehr als 10 Jahre vergangen. In dieser Zeit wurde BSD massiv verbessert. Unter anderem wurde ein heraussagendes SMP und Multithreading implementiert. Zusätzlich wurden neue Managementtools, Dateisysteme und Sicherheitsfunktionalitäten in FreeBSD integriert. Als Folge dieser Arbeiten wird FreeBSD heute in allen Bereichen des Internets, beispielsweise als Betriebssystem von Core-Routern und Root-Nameservern, als Webserver für umfangreiche Webseiten sowie als Basis für weitverbreitete Desktop-Betriebssysteme eingesetzt. Diese weite Verbreitung wurde nur durch die weltweit verteilten und engagierten Mitarbeiter des FreeBSD Projects möglich.
FreeBSD bietet fortgeschrittene Betriebssystem-Funktionalitäten, die es für den Einsatz auf unterschiedlichsten Systemen, von eingebetteten Systemen bis hin zu High-End-Multiprozessorsystemen prädestinieren.
FreeBSD 7.0 (das im Februar 2008 erschienen ist) bringt sowohl zahlreiche neue Funktionalitäten als auch eine verbesserte Systemleistung. Der Schwerpunkt dieser neuen Version liegt auf der Verbesserung der Speicher- und Multiprozessorleistung. Beispielsweise unterstützt FreeBSD 7.0 erstmals das Dateisystem ZFS von Sun und bietet eine hoch skalierbare Multiprozessorleistung. Benchmarks haben gezeigt, das FreeBSD auf Servern mit 8 Prozessorkernen beim Umgang mit MySQL- und PostgreSQL-Datenbanken doppelt so schnell arbeitet wie aktuelle Linux-Systeme.
- SMPng: Nach sieben Jahren Entwicklung, in denen an der Implementierung einer leistungsfähigen SMP-Unterstützung gearbeitet wurde, wurde mit FreeBSD 7.0 das Ziel eines feingranulierten Kernels erreicht, der eine lineare Skalierbarkeit für bis zu acht Prozessorkernen erlaubt, um auch hohen Anforderungen zu genügen. Der als Giant Lock bekannte Sperrmechanismus wurde nahezu vollständig (unter anderem aus dem CAM Storage Layer sowie dem NFS-Client) aus FreeBSD 7.0 eleminiert und durch einen feingranulierten Sperrmechanismus für das Netzwerk-Subsystem ersetzt. Bedeutende Fortschritte wurden auch in den Bereichen Kernelscheduling und Locking Primitives gemacht. Der nun optional verfügbare ULE-Scheduler ermöglicht Thread-CPU-Affinität sowie prozessorspezifische Warteschlangen, um den Overhead zu verringern und die Cache-Leistung zu verbessern. Das libthr Threading-Paket (das 1:1-Threading erlaubt) ist nun standardmäßig aktiviert. Benchmarks haben gezeigt, dass dadurch auf der gleichen Multiprozessorhardware im Vergleich zu anderen UNIX®-Betriebssystemen eine deutlich bessere Systemleistung erzielt werden kann, ein Umstand, der erst durch die intensiven Arbeiten an der Implementierung der SMP-Technologie in den FreeBSD-Kernel möglich wurde.
- Dateisystem ZFS: Bei Sun's ZFS handelt es sich um ein State-of-the-Art-Dateisystem, das ein einfache Administration, Transaktionssemantiken, Ende-zu-Ende-Datenintegrität und eine ausgezeichnete Skalierbarkeit bietet. Mit Funktionen wie Selbstheilung, eingebauter Kompression, RAID, Snapshots und Volume Management erlaubt es ZFS Systemadministratoren, komplexe Speicherverbünde einfach zu verwalten.
- 10-Gigabit-Netzwerkoptimierung: Durch optimierte Gerätetreiber aller wichtigen 10-Gigabit-Netzwerkanbieter konnte die Leistungsfähigkeit des Netzwerk-Stacks von FreeBSD 7.0 drastisch verbessert werden. Zu den neuen oder verbesserten Funktionen gehören: Automatisch skalierende Socket-Buffer, TCP Segment Offload (TSO), Large Receive Offload (LRO), Direct Network Stack Dispatch, sowie einen TCP/IP-Lastenausgleich über mehrere Prozessoren beim Einsatz von 10-Gigabit-Netzwerkkarten oder beim simultanen Einsatz von mehreren Netzwerkkarten. Folgende Hersteller bieten einen umfassenden FreeBSD-Support: Chelsio, Intel, Myricom, sowie Neterion.
- SCTP: FreeBSD 7.0 stellt die Referenzimplementierung des neuen IETF Stream Control Transmission Protocols (SCTP) dar, das entwickelt wurde, um VoIP, Telekommunikation und andere Anwendungen, die eine hohe Zuverlässigkeit bei variabler Sendequalität erfordern, zu unterstützen. Dazu wurde Funktionalitäten wie Multi-path Delivery, Fail-over und Multi-Streaming implementiert.
- Drahtlose Verbindungen: FreeBSD 7.0 verfügt über eine signifikant verbesserte Unterstützung für drahtlose Geräte, beispielsweise der leistungsfähigen Atheros-basierten Karten. Zusätzlich wurden neue Treiber für Ralink-, Intel- und ZyDAS-Karten entwickelt. Die Unterstützung für WPA, Background Scanning und Roaming sowie 802.11n wurde ebenfalls verbessert oder neu implementiert.
- Neue Hardware-Architekturen: FreeBSD 7.0 enthält eine signifikant verbesserte Unterstützung für die eingebettete ARM-Architektur. Außerdem wird erstmalig die Sun Ultrasparc T1-Plattform unterstützt.
Für FreeBSD wurden im Laufe der Zeit zahlreiche fortgeschrittene Betriebssytem-Funktionalitäten entwickelt. Einige dieser Funktionalitäten werden im Folgenden beschrieben:
- Ein Puffer-Cache, der gemeinsam vom Dateisystem und virtuellen Speicher genutzt wird, regelt kontinuierlich den Speicherplatz von Programmen und dem Festplatten-Cache. Daher profitieren Anwendungen gleichzeitig von der ausgezeichneten Speicherverwaltung und den schnellen Festplattenzugriffen. Für den Systemadministrator entfällt das Optimieren der Cache-Grössen.
- Kompatibilitäts-Module erlauben die Ausführung von Anwendungen unter FreeBSD, welche eigentlich für andere Betriebsysteme, wie z.B. Linux, SCO UNIX und System V Release 4, geschrieben wurden.
- Soft Updates steigern die Leistung von Dateisystemen, ohne dabei die Sicherheit und Zuverlässigkeit zu beeinträchtigen. Dazu werden Operationen auf Dateisystem-Metadaten analysiert, damit diese nicht mehr synchron abgearbeitet werden müssen. Stattdessen werden noch ausstehende Operationen in einem Puffer zwischengespeichert. Diese werden dann durch Zusammenfassen mehrerer Operationen auf dieselbe Datei, sowie einer effektiveren Gestaltung der Abarbeitungsreihenfolge, optimiert. Funktionen wie die Überprüfung des Dateisystems im Hintergrund, und Schnappschüsse (Snapshots) eines Dateisystems, basieren auf der Beschaffenheit und Geschwindigkeit von Soft Updates.
- Dateisystem Snapshots ermöglichen dem Administrator atomare Schnappschüsse eines Dateisystems als Backup zu erstellen, indem der freie Speicherplatz verwendet wird. Im Hintergrund ausgeführte Überprüfungen des Dateisystems ermöglichen es einem System, im Mehrbenutzerbetrieb zu laufen, ohne auf die Beendigung eventueller Korrekturen am Dateisystem warten zu müssen.
- Unterstützung für IPsec und IPv6 bieten eine höhere Netzwerksicherheit und das Internet-Protokoll der nächsten Generation. Die Implementierung von IPsec in FreeBSD beinhaltet auch die Unterstützung einer breiten Menge an Hardware, die kryptographische Verschlüsselungen beschleunigt.
- Hervorragende Unterstützung von IPv6 mittels des KAME IPv6 Stacks ermöglicht eine nahtlose Integration von FreeBSD in Netzwerkumgebungen der nächsten Generation. Unter FreeBSD sind bereits Anwendungen verfügbar, welche um eine Unterstützung von IPv6 erweitert wurden!
- Multi-threaded SMP Architektur, die eine parallele Ausführung des Kernels auf mehreren Prozessoren erlaubt, sowie Präemption des Kernels, welche es einem Prozess mit hoher Priorität erlaubt, andere Aktivitäten des Kernels zu unterbrechen, und so effektiv die Latenzzeit zu reduzieren. Dies beinhaltet auch einen Multi-Threaded Netzwerkstack, sowie ein virtuelles, multi-threaded Speichersubsystem. Seit FreeBSD 6.X steht die Unterstützung eines vollständig parallelen VFS zur Verfügung, welches es dem UFS-Dateisystem erlaubt, gleichzeitig mehrere Prozessoren zu bedienen, und die Lastverteilung rechenintensiver I/O-Operationen zu optimieren.
- M:N Threading via pthreads erlaubt eine skalierbare Ausführung von Threads auf mehreren CPUs, indem viele Benutzer-Threads auf eine kleine Anzahl von Kernelentitäten verteilt werden. Durch die Übernahme des Scheduler Activation-Models kann das Threading an spezielle Anforderungen einer breiten Masse an Anwendungen angepasst werden.
- Netgraphs erweiterbarer Netzwerkstack erlaubt Entwicklern, diesen dynamisch und einfach über saubere Abstraktionsschichten zu erweitern. Netgraph-Knoten können eine breite Masse an Netzwerkdiensten, unter anderem Kapselung, Tunnelung, Verschlüsselung sowie Performanceanpassung, ausführen. Dadurch ist eine schnelle Entwicklung von Prototypen, und ein schnellerer produktiver Einsatz von erweiterten Netzwerkdiensten einfacher und fehlerfreier möglich.
- Erweiterbare Kernel-Sicherheit des TrustedBSD MAC Frameworks ermölglicht Entwicklern eine Anpassung des Betriebsystems an spezielle Umgebungen, vom Einrichten restriktiver Richtlinien bis hin zu vorgeschriebenen Verhaltensregeln zur Vertraulichkeit. Die Sicherheitsrichtlinien beinhalten Multi-Level Security (MLS), sowie Biba Integrety Protection. Zusätzliche Module beinhalten SEBSD, eine FLASK-basierte Implementierung von Type Enforcement.
- Bei TrustedBSD Audit handelt es sich um einen Dienst, der ein feingranuliertes, sicheres Aufzeichnen von die Systemsicherheit betreffenden Ereignissen über den Audit-Dienst ermöglicht. Administratoren können dabei gezielt festlegen, welche Ereignisse aufgezeichnet werden sollen. Zu diesen Ereignissen gehören beispielsweise das Benutzerverhalten, der Zugriff auf überwachte Dateien, ausgeführte Befehle, Netzwerkaktivitäten, Anmeldungen am System sowie verschiedene andere Ereignisse. Audit-Pipes erlauben es IDS-Programmen, den Kernel-Audit-Dienst zu nutzen und Informationen über Ereignisse, die sie aus Sicherheitsgründen überwachen müssen, zu beziehen. FreeBSD unterstützt das BSM Audit-Trail-Dateiformat sowie dessen API (die den Industriestandard darstellen). Daher können vorhandene BSM-Werkzeuge in der Regel ohne oder nur mit geringen Anpassungen unter FreeBSD eingesetzt werden. Das BSM-Dateiformat wird auch unter Solaris sowie Mac OS X eingesetzt, daher sind Interoperabilität sowie eine systemübergreifende Analyse möglich.
- GEOMs erweiterbare Speicherschicht erlaubt eine schnelle Entwicklung und nahtlose Integration neuer Speicherdienste in das FreeBSD Speicher-Subsystem. GEOM bietet ein einheitliches und zusammenhängendes Model, um Speicherdienste zu erkennen und bereitzustellen, so dass Dienste wie RAID und Volume Management einfach abstrahiert werden können.
- FreeBSDs GEOM-basierte Festplattenverschlüsselung (GBDE) bietet unter Verwendung des GEOM Frameworks starken kryptographischen Schutz, und kann Dateisysteme, Auslagerungsgeräte und andere Datenspeichermedien verwenden.
- Kernel-Queues ermöglichen es Anwendungen, effizienter auf asynchrone Ereignisse, wie I/O-Operationen auf Dateien und Sockets, zu reagieren, und dadurch die Leistungsfähigkeit der Anwendungen und des Systems zu verbessern.
- Accept-Filter erlauben verbindungsintensiven Anwendungen, wie z.B. Webservern, Teile ihrer Funktionen sauber in den Betriebsystemkern auszulagern, und so deren Leistungsfähigkeit zu steigern.
FreeBSD bietet viele Sicherheitsmerkmale, um Netzwerke und Server abzusichern.
Den FreeBSD-Entwicklern bedeutet Sicherheit genauso viel, wie Geschwindigkeit und Stabilität. FreeBSDs Kernel bietet Unterstützung für Stateful IP-Firewalling, sowie IP Proxy Gateways, Access Control Lists, Mandatory Access Control, Jail-basiertes virtuelles Hosting und kryptographisch gesicherte Datenspeicher. Diese Funktionalitäten erlauben hochsicheres Hosting für mehrere, sich gegenseitig nicht vertrauende Kunden oder Konsumenten, eine strenge Aufteilung von Netzwerken, sowie den Aufbau sicherer Pipelines zur Geheimhaltung und Kontrolle von Informationsfluss.
FreeBSD bietet unter anderem Verschlüsselungswerkzeuge, sichere Shells, Kerberos-Authentifizierung, "virtuelle Server" durch die Verwendung von Jails, den Betrieb von Diensten in chroot-Umgebungen, um den Zugang der Dienste zum Dateisystem einzuschränken, Secure RPCs sowie Zugriffslisten für Dienste, die TCP-Wrapper unterstützen.