Kernel-Update bringt Performance-Schub

02.03.2001
Der neue Linux-Kernel bietet Verbesserungen sowohl hinsichtlich Leistungsfähigkeit und Skalierbarkeit als auch in der Bedienerfreundlichkeit und bei der Multimedia-Unterstützung. Damit macht das Open-Source-Betriebssystem im Vergleich zu Windows 2000 Boden gut und entwickelt sich zu einer ernst zu nehmenden Alternative als Server-Plattform.

Von: Christoph Lange

Anfang Januar war es endlich so weit: Linus Torvalds gab den lange erwarteten Linux-Kernel 2.4 offiziell frei. Er soll helfen, die Erfolgsstory der letzten Jahre fortzusetzen. Linux ist ein stabiles Betriebssystem, das auch auf günstiger Intel-basierter Hardware läuft und nichts kostet. Im Web-Server-Markt konnte sich Linux bereits als führende Plattform für Application-Server, Firewalls, Proxy- und Caching-Services oder E-Mail-Server etablieren.

Der 2.4-Kernel verbessert Linux in vielen Bereichen. Zu den wichtigsten Neuerungen zählen eine höhere Performance und Skalierbarkeit. Damit wird das Free-OS als Serverbetriebssystem auch für größere Unternehmensnetzwerke interessant. Die Steigerung der maximalen Anzahl von User- und Gruppenobjekten von 65 563 auf 4,2 Milliarden trägt ebenfalls dazu bei.

Höhere Skalierbarkeit

Ein großes Manko von Linux war bislang die eingeschränkte Multiprozessor-Fähigkeit. Die Kernel-Version 2.2 unterstützt zwar bis zu vier CPUs, wurde aber nicht für symmetrisches Multi-Processing (SMP) optimiert und skaliert deshalb nur unzureichend. Die Entwicklergemeinde hat hier viel Arbeit investiert und den SMP-Support verbessert. Der neue Kernel kann eine wesentlich größere Anzahl gleichzeitiger Prozesse verarbeiten und ist für SMP-Maschinen mit acht CPUs ausführlich getestet. Einige Teams haben bereits Projekte in Angriff genommen, um die Skalierbarkeit auf Maschinen mit 16, 32 und sogar 64 Prozessoren zu testen. So ist es eine der ersten Aufgaben des kürzlich von 19 Sponsoren, darunter HP, Intel, IBM und NEC, gegründeten Open Source Development Lab, den Kernel mit 16-Wege-Systemen zu testen und zu optimieren.

Linux 2.4 unterstützt die 64-Bit-Prozessoren Intel Itanium, Alpha 64 und Sparc 64 sowie den seit kurzem verfügbaren Pentium 4. Das Betriebssystem ist zudem bereits für Prozessoren jenseits der 2-GHz-Taktrate vorbereitet. Eine Besonderheit ist der Support für das Mainframe-Betriebssystem S/390 von IBM. Dadurch können auf einer S/390 zahlreiche Linux-Server gleichzeitig als virtuelle Maschinen nebeneinander laufen (siehe folgenden Kasten).

Performance-Gewinne erzielt der neue Kernel auch mithilfe von multiplen "Advanced Programming Interrupt Controllers" (APICs). Diese I/O-Controller (Input/Output) sorgen beim Multi-Processing dafür, dass die Last für Interrupt-Anforderungen gleichmäßig auf alle CPUs verteilt wird. Optimiert wurden zudem die I/O-Operationen zwischen Kernel und Peripheriegeräten. Die Unterstützung für I2O (Intelligent Input Output) entlastet den Hauptprozessor, da die Devices direkt miteinander kommunizieren. Beim Arbeitsspeicher hat Linux mit Windows 2000 Datacenter Server und Solaris 8 gleichgezogen: Bis zu 64 GByte sind möglich. Version 2.2 unterstützte nur 2 GByte (siehe Tabelle).

Flexibleres File-System

Von der Beseitigung des 2-GByte-Limits bei der Dateigröße profitieren Anwendungen mit hohem Speicherplatzbedarf, beispielsweise Datenbanken. Die Obergrenze liegt nun bei einem Terabyte.

Wichtig für einen Einsatz in unternehmenskritischen 24/7-Umgebungen ist der Logical Volume Manager (LVM). Mit ihm lassen sich Änderungen von Partitionen oder Festplattenwechsel durchführen, ohne den Server herunterzufahren. Zudem kann der Administrator File-Systeme auf mehrere Festplatten verteilen. Dem Anwender präsentiert sich das Dateisystem dabei als ein logisches Laufwerk.

Linux unterstützt die meisten gängigen File-Systeme. Im 2.4-Kernel noch nicht enthalten ist ein Journaling-File-System (JFS), das nach Systemabstürzen eine schnelle Wiederherstellung des ursprünglichen Zustands erlaubt. Ein JFS protokolliert alle Schreib- und Leseoperationen in einer Log-Datei mit, bevor sie ausgeführt werden. Es weiß also immer ganz genau, wann und wo Daten verändert werden. Dadurch ist es in der Lage, nach einem Crash schnell wieder zu einem konsistenten Zustand des Dateisystems zu gelangen.

Es wird nicht mehr lange dauern, bis ein Journaling-File-System Eingang in den Kernel findet. Die besten Chancen werden "Reiser FS" eingeräumt, das für Suse Linux bereits als Add-on erhältlich ist. Es arbeitet nicht wie das bisherige Standard-File-System von Linux, "Ext2" (Second Extended File System), mit einer starren Aufteilung in Datenblöcke fester Größe. Durch die dynamische Blockgröße kann es den Speicherplatz besser nutzen, insbesondere wenn mit vielen kleinen Dateien gearbeitet wird. Zudem erzielt Reiser-FS beim Umgang mit großen Verzeichnissen und beim Dateizugriff höhere Geschwindigkeiten. Bald verfügbar sein dürfte auch "Ext3", eine Erweiterung von "Ext2". An der Entwicklung eines JFS für Linux sind auch SGI und IBM beteiligt, die ihre Erfahrungen mit eigenen JFS einbringen.

Ausgefeilte Caching-Mechanismen ermöglichen dem System einen effizienten Umgang mit Dateien. Datei- und Verzeichnisinformationen werden direkt im Arbeitsspeicher vorgehalten. Dies reduziert langsame Lesezugriffe auf die Festplatte und erhöht die Geschwindigkeit des File-Systems.

Besserer Hardware-Support

In größeren Umgebungen müssen Serversysteme häufig mehrere Netzwerkverbindungen parallel bedienen. Linux wird diesen Anforderungen jetzt besser gerecht: Pro System unterstützt es bis zu 16 Ethernet-Adapter und bis zu 10 IDE-Controller, also maximal 20 IDE-Festplatten. Durch den Support für Gigabit-Ethernet und ATM ist die Open-Source-Plattform auch für Highspeed-Einsätze gerüstet.

Die im Kernel implementierten Raid-Funktionen haben die Linux-Entwickler grundlegend überarbeitet. Unter anderem wurde das Thread-Handling für symmetrisches Multi-Processing optimiert. Einzelprozessorsysteme profitieren ebenfalls von einer besseren Raid-Performance. Das Mounten eines Root-Disk-Sets ist nun auch ohne Ram-Disk-Image möglich.

Die hinzu gekommene Unterstützung von Raw-Devices ist vor allem für Datenbankanwendungen wichtig. Sie können schneller agieren, da Zugriffe direkt auf das Low-Level-Device erfolgen, das von der Applikation gesteuert wird. Raw-Devices lassen sich zudem für fehlertolerante Lösungen nutzen, die die Daten sofort auf die Festplatte schreiben und damit ausschließen, dass sie im Cache verloren gehen.

Für eine einfachere Bedienbarkeit sorgen Support für USB, Power-Management (ACPI), PCMCIA, Plug-and-Play für ISA-Karten und das umstrittene "DevFS", das im 2.4-Kernel standardmäßig deaktiviert ist. DevFS kann Geräte automatisch hinzufügen oder entfernen. Allerdings ist das dynamische Device-File-System nicht abwärtskompatibel. 3-D-Anwendungen erhalten durch den im Kernel integrierten "Direct Rendering Manager" bisher nicht gekannten Schwung. Firewire befindet sich noch im Teststadium.

Auch der Netzwerk-Stack hat eine Generalüberholung erfahren. Die Entwickler haben ihn mit der Zielvorgabe "Bessere Skalierbarkeit und Stabilität" komplett neu geschrieben. Optimiert wurde unter anderem das Handling von Multi-Threading, wodurch höhere Übertragungsgeschwindigkeiten im Netzwerk erreicht werden. Der neue Kernel kann zudem multiple Netzwerkkarten effizienter nutzen und unterstützt den 802.11b-Standard für Wireless LANs.

Durch Änderungen am SCSILayer konnten sowohl die Performance als auch die Fehlerbehandlung verbessert werden. Die Funktion "Explicit Congestion Notification" erlaubt es Routern, Linux-Server zu benachrichtigen, wenn eine Route verstopft ist. Das bereits erwähnte Open Source Development Lab hat sich die Aufgabe gestellt, die Unterstützung gleichzeitiger TCP/IP-Verbindungen von 20 000 auf über 64 000 zu steigern. Der auf Kernel-Level implementierte Web-Server-Daemon "khttpd" bringt eine höhere Leistung bei der Lieferung von statischen Web-Seiten. Er lässt sich mit dem Web-Server "Apache" integrieren und unterstützt PPP-Verbindungen (Point-to-Point-Protocol) über DSL, Ethernet und ATM.

Ausbau der Sicherheit

Die Firewall-Funktionen wurden ebenfalls grundlegend überarbeitet. Das neue IP-Paket-Filtersystem auf Kernel-Level heißt "Netfilter" und ersetzt bisherige Implementierungen wie "ipchains" oder "ipfwadm". NAT (Network Address Translation) und IP-Masquerading zum Schutz der internen IP-Adressen wurden ebenso verbessert, wie die Standard-Filtermechanismen.

So ist es zum Beispiel möglich, nach MAC-Adressen zu filtern und die Filterregeln nicht nur für das SYN-Flag, sondern auch für die fünf anderen TCP-Flags festzulegen. Die Leistungsfähigkeit der "Stateful Inspection" wurde erhöht und die zu überwachenden Ports lassen sich flexibler als bisher auswählen.

Markteinführung im Gange

Die ersten Linux-Distributionen mit dem neuen Kernel sind bereits erhältlich. Suse liefert seit Mitte Februar die auf 2.4 basierende Version 7.1 aus. Red Hat hat Anfang Februar ein Update-Pack für Red Hat 7 mit dem 2.4-Kernel herausgebracht. Die mit dem neuen Kernel integrierte Version 7.1 ist für April angekündigt. Red Hat begründet diesen späten Termin damit, dass zunächst umfangreiche Tests durchgeführt sowie Anpassungen an den neuen Kernel vollzogen werden müssen. Bis die Server-Hersteller zertifizierte Lösungen auf den Markt bringen, werden noch einige Wochen ins Land gehen.