Im Kapitel zur Standardinstallation (siehe [userguide02]) wird auf Möglichkeiten der Partitionierung des Systems eingegangen. Dieser Abschnitt soll nun detaillierte Informationen bereitstellen, mit denen Sie sich ein optimales Partitionierungsschema anlegen können. Dies ist insbesondere für diejenigen interessant, die ihr System optimal konfigurieren möchten, sowohl in puncto Sicherheit, als auch was Geschwindigkeit betrifft, und die dafür bereit sind, unter Umständen das bestehende System komplett neu aufzusetzen.
Ein grundlegendes Verständnis der Funktionsweise eines UNIX-Dateisystemes wird vorausgesetzt. Die Begriffe Mountpoint sowie physikalische, erweiterte und logische Partition sollten Ihnen nicht fremd sein.
Stellen Sie als ersten Schritt folgende Informationen zusammen:
Einsatzgebiet dieses Rechners (File-Server, Application-Server, Compute-Server, Einzelplatzrechner)?
Wie viele Leute werden an diesem Rechner arbeiten (simultane Logins)?
Wie viele Festplatten hat der Rechner, wie groß sind diese und welches System verwenden sie (EIDE-, SCSI- oder RAID-Controller)?
Oft werden Sie lesen: Mindestens doppelt so viel Swap wie Hauptspeicher. Diese Formulierung stammt noch aus einer Zeit, in der 8 MB RAM im Rechner nicht wenig war. Der Rechner soll also über ungefähr 30 bis 40 MB virtuellen Speicher, also Ram plus Swap verfügen. Mit modernen Applikationen müssen auch diese Werte nach oben hin korrigiert werden. Als durchschnittlicher Benutzer ist man auf absehbare Zeit mit 256 MB virtuellem Speicher auf der sicheren Seite. Auf keinen Fall sollten Sie überhaupt keinen Swap-Speicher anlegen.
Der häufigste Anwendungsfall für einen Linux-Rechner ist der Einsatz als Einzelplatzrechner. Damit Sie sich an konkreten Werten orientieren können, haben wir ein paar Beispielkonfigurationen zusammengestellt, die Sie je nach Bedarf bei sich zu Hause oder in der Firma übernehmen können. In Tabelle 1.1. “Beispiele für Größen von Installationen” sehen Sie einen kleinen Überblick der verschiedenen Installationsvolumina für ein Linux-System.
Sie haben eine ca. 500 MB große Festplatte übrig und möchten auf diese Linux installieren: eine 64 MB große Swap-Partition und den Rest für / (Root-Partition).
Sie haben 2 GB für Linux frei. Kleine Boot-Partition /boot (5-10 MB bzw. 1 Zylinder), 128 MB für Swap, 800 MB für / und den Rest für eine separate /home-Partition.
Falls Ihnen 2 GB oder mehr auf mehreren Platten zur Verfügung stehen, gibt es keine pauschale Partitionierung. Lesen Sie hierzu bitte Abschnitt 1.7.3. “Optimierungsmöglichkeiten”.
Hier kommt es wirklich auf Festplattenperformance an. SCSI-Geräten sollte unbedingt der Vorzug gegeben werden. Achten Sie auch auf Leistungsfähigkeit der Platten und des verwendeten Controllers.
Ein Fileserver bietet die Möglichkeit, Daten zentral zu halten. Hierbei kann es sich um Benutzerverzeichnisse, eine Datenbank oder sonstige Archive handeln. Der Vorteil ist eine wesentlich einfachere Administration. Falls der Fileserver ein größeres Netz bedienen soll (ab 20 Usern), wird die Optimierung des Plattenzugriffs essentiell. Angenommen, Sie möchten einen Linux-Fileserver aufbauen, der 25 Benutzern Heimatverzeichnisse (Home) zur Verfügung stellen soll: Sie wissen, jeder Benutzer wird maximal 100-150 MB für seine persönlichen Daten in Anspruch nehmen. Falls nicht jeder dieser Benutzer stets in seinem Home kompiliert, reicht hierfür eine 4-GB-Partition, welche einfach unter /home gemountet wird.
Haben Sie 50 Benutzer, so wäre rein rechnerisch eine 8-GB-Partition notwendig. Besser ist es in diesem Fall jedoch, /home auf zwei 4-GB-Festplatten aufzuteilen, da diese sich dann die Last (und Zugriffszeit!) teilen.
![]() | Tipp |
|---|---|
Den Cache eines Webbrowsers sollten die Benutzer unbedingt auf lokalen Festplatten halten! | |
Ein Compute-Server ist in der Regel ein leistungsstarker Rechner, der berechnungsintensive Aufgaben im Netz übernimmt. Solch eine Maschine verfügt typischerweise über einen etwas größeren Hauptspeicher (ab 512 MB RAM). Der einzige Punkt, an dem für einen schnellen Plattendurchsatz gesorgt werden muss, sind etwaige Swap-Partitionen. Auch hier gilt: mehrere Swap-Partitionen auf mehrere Platten verteilen.
Die Platten sind zumeist der begrenzende Faktor. Um diesen Flaschenhals zu umgehen, gibt es drei Möglichkeiten, die am Besten zusammen eingesetzt werden sollten:
Verteilen Sie die Last gleichmäßig auf mehrere Platten.
Setzen Sie ein optimiertes Dateisystem ein (zum Beispiel reiserfs).
Statten Sie den Fileserver mit genügend Speicher aus (256 MB Minimum).
Die erstgenannte Methode bedarf einer tiefergehenden Erklärung. Die Gesamtzeit, die vergeht, bis angeforderte Daten bereitgestellt werden, setzt sich (in etwa) aus folgenden Teilen zusammen:
Zeit, bis die Anforderung beim Plattencontroller ist.
Zeit, bis der Plattencontroller diese Anforderung an die Festplatte schickt.
Zeit, bis die Festplatte ihren Kopf positioniert.
Zeit, bis sich das Medium zum richtigen Sektor gedreht hat.
Zeit für die Übertragung.
Punkt 1 ist abhängig von der Anbindung über das Netzwerk und muss dort geregelt werden. Punkt 2 ist eine relativ vernachlässigbare Zeit, die vom Plattencontroller selbst abhängt. Punkte 3 und 4 sind die Hauptbereiche. Gemessen wird die Positionierung in ms. Verglichen mit den in ns gemessenen Zugriffszeiten im Hauptspeicher ist das ein Faktor von 1 Million! Punkt 4 ist von der Drehzahl der Platte abhängig. Auch diese Zeit wird meist mehrere ms betragen. Punkt 5 von der Drehzahl und der Anzahl der Köpfe, ebenso wie von der aktuellen Position des Kopfes (innen oder außen).
Für die optimale Performance sollte man also bei Punkt 3 angreifen. Hier kommt bei SCSI-Geräten das Feature disconnect ins Spiel. Mit diesem Feature passiert in etwa folgendes:
Der Controller sendet an das angeschlossene Gerät (in diesem Fall die Festplatte) den Befehl Gehe zu Track x, Sektor y. Nun muss sich die träge Mechanik der Platte in Bewegung setzen. Wenn die Platte intelligent ist (also disconnect beherrscht) und der Treiber für den Controller dieses Feature auch beherrscht, schickt der Controller der Platte unmittelbar daraufhin einen disconnect-Befehl und die Platte trennt sich vom SCSI-Bus ab. Ab jetzt können andere SCSI-Geräte ihre Transfers erledigen. Nach einer Weile (je nach Strategie bzw. Last auf dem SCSI-Bus) wird wieder die Verbindung zur Platte aktiviert. Idealerweise hat diese bereits den geforderten Track erreicht.
In einem Multitasking-Multiuser Betriebssystem wie Linux kann man hier natürlich gut optimieren. Sehen wir uns einen Ausschnitt einer Ausgabe des Befehls df an (vgl. Ausgabe 1.1. “Beispielausgabe df-Befehl”).
Beispiel 1.1. Beispielausgabe df-Befehl
Filesystem Size Used Avail Use% Mounted on /dev/sda5 1.8G 1.6G 201M 89% / /dev/sda1 23M 3.9M 17M 18% /boot /dev/sdb1 2.9G 2.1G 677M 76% /usr /dev/sdc1 1.9G 958M 941M 51% /usr/lib shmfs 185M 0 184M 0% /dev/shm
Was bringt uns diese Parallelisierung? Angenommen wir geben in /usr/src als Benutzer root ein:
tar xzf package.tar.gz -C /usr/lib
Das soll also package.tar.gz nach /usr/lib/package installieren. Hierzu werden von der Shell tar und gzip aufgerufen (befinden sich in /bin und somit auf /dev/sda), dann wird package.tar.gz von /usr/src gelesen (befindet sich auf /dev/sdb). Als Letztes werden die extrahierten Daten nach /usr/lib geschrieben (liegt unter /dev/sdc). Sowohl Positionierung, als auch Lesen/Schreiben der platteninternen Puffer können nun quasi parallel ausgeführt werden.
Das ist ein Beispiel von vielen. Als Faustregel gilt, dass bei Vorhandensein entsprechend vieler (gleich schneller) Platten /usr und /usr/lib auf verschiedenen Platten lagern sollten. Hierbei sollte /usr/lib ca. 70 Prozent der Kapazität von /usr haben. Das Rootverzeichnis / sollte sich bei der Verlagerung auf zwei Platten wegen der Zugriffshäufigkeit auf der Platte mit /usr/lib befinden.
Ab einer gewissen Menge an SCSI-Platten (ca. 4 bis 5) sollte man sich jedoch ernsthaft mit einer RAID-Lösung in Software oder gleich besser mit der Anschaffung eines RAID-Controllers beschäftigen. Dadurch werden dann Operationen auf den Platten nicht nur quasiparallel, sondern echt parallel ausgeführt. Fehlertoleranz ist ein weiteres angenehmes Nebenprodukt.
Wir weisen an vielen Stellen darauf hin, dass die Größe des Hauptspeichers unter Linux oft wichtiger ist als die Geschwindigkeit des Prozessors. Ein Grund – wenn nicht sogar der Hauptgrund – ist die Eigenschaft von Linux, dynamische Puffer mit Festplattendaten anzulegen. Hierbei arbeitet Linux mit allerlei Tricks wie read ahead (holt vorsorglich Sektoren im Voraus) und delayed write (spart sich Schreibzugriffe, um sie dann auf einmal auszuführen). Letzteres ist der Grund, warum man einen Linux-Rechner nicht einfach ausschalten darf. Beide Punkte sind dafür verantwortlich, dass sich der Hauptspeicher mit der Zeit scheinbar immer füllt und dass Linux so schnell ist; vgl. auch Abschnitt 12.2.6. “Der Befehl free”.