Unsere neue Linux-Serie beschreibt die verschiedenen Facetten der Administration des Dateisystems. Mit Ausnahme der ersten beiden Teile richtet sich die Serie explizit an Linux-Profis. Die achtteilige Artikelreihe behandelt dabei folgende Themen:
-
Dateisystemtypen: Dieser Abschnitt gibt einen Überblick über die von Linux unterstützten Dateisystemtypen.
-
Verwaltung des Dateisystems: In diesem Abschnitt lernen Sie, wie Sie Linux- und Windows-Partitionen, Disketten, Daten-CDs und -DVDs, USB-Memory-Sticks et cetera nutzen können. Der Abschnitt gibt auch Tipps, was zu tun ist, wenn sich eine Festplattenpartition als zu klein herausstellt.
-
Partitionierung der Festplatte: Die Partitionierung der Festplatte ist ein zentraler Bestandteil der Installation von Linux. Manchmal ist es aber auch im Betrieb von Linux erforderlich, eine neue Partition hinzuzufügen.
-
Dateisysteme: ext3 ist das wichtigste Linux-Dateisystem. Es ist abwärtskompatibel zu seinem Vorgänger ext2, enthält aber zusätzliche Journaling-Funktionen. reiserfs ist eine Alternative zu ext3. Das Dateisystem unterstützt ebenfalls Journaling und ist vor allem für den Umgang mit kleinen Dateien optimiert.
-
RAID: Mit RAID (Redundant Array of Inexpensive / Independent Disks) verknüpfen Sie die Partitionen mehrerer Festplatten miteinander, um auf diese Weise ein zuverlässigeres und/oder schnelleres Gesamtsystem zu erreichen. Dieser Abschnitt geht kurz auf die Grundlagen von RAID ein und beschreibt dann die Einrichtung eines RAID-0-Systems (Striping).
-
LVM: Der LogicalVolumeManager (kurz LVM) ermöglicht eine flexiblere Verwaltung von Partitionen. Mit LVM können Sie beispielsweise Partitionen mehrerer Festplatten zu einer virtuellen Partition vereinen. Zudem lässt sich die Größe der virtuellen Partition im laufenden Betrieb ändern.
-
DMA-Modus für IDE-Festplatten: Der so genannte Bus-Master-DMA-Modus kann den Zugriff auf IDE-Festplatten erheblich beschleunigen. Aus Kompatibilitätsgründen wird dieser Modus aber oft per Default nicht aktiviert.
Die Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration, Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch in unserem Buchshop versandkostenfrei bestellen oder als PDF-eBook herunterladen.
Teil 1 |
|
---|---|
Teil 2 |
|
Teil 3 |
|
Teil 4 |
|
Teil 5 |
|
Teil 6 |
|
Teil 7 |
|
Teil 8 |
RAID-Grundlagen
RAID steht für Redundant Array of Inexpensive/Independent Disks, wobei beide Definitionen gebräuchlich sind. Die Grundidee besteht darin, Partitionen mehrerer Festplatten logisch miteinander zu verknüpfen. Das Ziel ist dabei, ein zuverlässigeres und/oder schnelleres Gesamtsystem zu schaffen:
-
Durch RAID kann die Datenübertragung gesteigert werden, indem der Datenzugriff quasi parallel erfolgt: Während das System beispielsweise auf Daten von Festplatte 1 wartet, kann es bereits weitere Daten von Festplatte 2 anfordern.
-
Durch RAID kann aber auch die Sicherheit gesteigert werden, indem Daten redundant (mehrfach) gespeichert werden. Das ist dann allerdings mit Geschwindigkeitseinbußen verbunden und beansprucht zusätzlichen Speicherplatz.
Der folgende Überblick über verschiedene RAID-Level geht davon aus, dass Partitionen unterschiedlicher Festplatten miteinander verbunden werden. Theoretisch können auch Partitionen einer Festplatte verbunden werden, das ist aber nicht sinnvoll - weder vom Sicherheits- noch vom Geschwindigkeitsstandpunkt aus.
Zunächst folgt eine knappe Einführung in RAID. Einen umfassenden Überblick mit einer detaillierten Gegenüberstellung aller Vor- und Nachteile der acht verschiedenen RAID-Level finden Sie in unserem Grundlagenbeitrag RAID im Überblick.
Gebräuchliche RAID-Level
Linear Concatenation: Hier werden mehrere physikalische Partitionen zu einer größeren virtuellen Partition verbunden. Der Vorteil besteht darin, dass sehr große Partitionen entstehen, die über mehrere Festplatten reichen. Es gibt keinen Geschwindigkeitsvorteil, und das Ausfallrisiko ist höher: Wenn eine Festplatte ausfällt, sind alle Daten verloren.
RAID-0 (Striping): Auch hier werden mehrere Partitionen zu einer größeren Partition vereint. Allerdings beschreibt das System die Partitionen nicht linear der Reihe nach; sondern verteilt die Daten quasi parallel in kleinen Blöcken (typisch 4 bis 64 KByte) auf die einzelnen Partitionen. Beim Zugriff auf eine längere Datei liefern alle Festplatten alternierend die Daten. Daraus ergibt sich im optimalen Fall eine Vervielfachung der Datenrate. Bei drei Festplatten kann sich der Datendurchsatz verdreifachen.
In der Praxis ist dieser Effekt aber sowohl durch physikalische Grenzen wie die maximale Übertragungsrate des SCSI-Busses als auch durch den nötigen Verwaltungs-Overhead beschränkt. Das Ausfallrisiko ist wie bei der linearen Verbindung von Partitionen hoch. Eine defekte Festplatte führt zum Verlust aller Daten.
RAID-0 beschleunigt Blockoperationen, also das Lesen und Schreiben großer zusammenhängender Datenmengen. Bei kleinen Datenblöcken ist der Effekt etwas weniger ausgeprägt. Die Anzahl der Random-Access-Zugriffe pro Sekunde wird durch das Striping hingegen nicht oder nur geringfügig verbessert. Mit anderen Worten: Striping ist vor allem dann sinnvoll, wenn Sie oft große Dateien bearbeiten (Bildverarbeitung, Multimedia), hilft aber beim Zugriff auf kleine Dateien und kleine Datensegmente großer Dateien wenig.
Weitere gebräuchliche RAID-Level
RAID-1 (Mirroring): Hier speichert das System dieselben Daten doppelt in zwei Partitionen. Wenn eine Festplatte ausfällt, stehen alle Daten auf der anderen Festplatte zur Verfügung. Der Vorteil ist die höhere Sicherheit, der Nachteil die halbierte Kapazität. Die Geschwindigkeit hängt von der Implementierung ab.
Bei Hardware-RAID-1 kann bei Schreiboperationen weit gehend die gleiche Geschwindigkeit wie bei einem normalen Zugriff auf eine Partition erreicht werden, bei Lese- und Suchoperationen ist sogar eine Beschleunigung möglich. Bei Software-RAID sind aber insbesondere Schreibvorgänge etwas langsamer.
RAID-5 (Parity Striping): RAID-5 funktioniert im Prinzip wie RAID-0, allerdings werden zusätzlich in einer - für jeden Datenblock wechselnden - Partition Paritätsinformationen gespeichert. Wenn eine Festplatte ausfällt, kann RAID-5 die gesamten Daten rekonstruieren.
RAID-5 versucht, die Vorteile von RAID-0 und RAID-1 zu vereinen, ohne die Nachteile zu übernehmen. Wenn n gleich große Partitionen eine RAID-5-Partition bilden, steht immerhin (n - 1) mal der Platz einer Partition für Daten zur Verfügung. Der Overhead zur Verwaltung der Paritätsinformationen kann zumindest teilweise durch den parallelen Zugriff auf die Festplatten ausgeglichen werden.
IDE- versus SCSI-, Hardware- versus Software-RAID
Auf Grund seines Funktionsprinzips bietet das SCSI-System für alle RAID-Varianten und unabhängig von einer Software- oder Hardware-Implementierung große Vorteile. Der wichtigste Vorteil besteht darin, dass sich Festplatten nach der Entgegennahme eines Kommandos vorübergehend vom SCSI-Bus abmelden können, bis die Daten tatsächlich bereitstehen. In der verbleibenden Zeit ist der SCSI-Bus frei zur Übertragung von Kommandos und Daten von anderen Platten.
IDE-Platten erreichen eine optimale Performance nur dann, wenn die Festplatten an unterschiedlichen Controllern angeschlossen sind. Die in der Praxis häufigste und sinnvollste IDE-Konfiguration ist ein RAID-0-System mit zwei Festplatten an zwei Controllern (/dev/hda und /dev/hdc). Nur in diesem Fall kann das theoretische Potenzial von RAID-0 selbst mit IDE-Festplatten beinahe ausgeschöpft werden. Die Datenübertragungsrate für große Dateien kann sich dabei annähernd verdoppeln.
Hardware- versus Software-RAID
RAID kann man entweder durch einen RAID-Controller (einen SCSI- oder IDE-Controller mit zusätzlichen RAID-Funktionen) oder per Software realisieren. Beide Varianten haben Vor- und Nachteile:
Hardware-RAID belastet den Rechner (die CPU) nicht und ist im Regelfall schneller und stabiler. Manche Hardware-RAID-Lösungen unterstützen zudem den Austausch und die Restauration defekter Platten im laufenden System (hot swap). Allerdings sind Hardware-RAID-Controller zum Teil recht teuer. Außerdem unterstützt Linux nicht alle Hardware-RAID-Controller. Der Link auf http://www.linux-ide.org/chipsets.htm führt zu einer Liste der Linux-kompatiblen IDE-RAID-Controller. Eine vergleichbare Liste für SCSI-RAID-Controller ist nicht bekannt.
Software-RAID verursacht keine zusätzlichen Kosten. Je nach RAID-Level kann die gleiche Datenübertragungsrate wie mit Hardware-RAID erreicht werden, allerdings bei einer höheren CPU-Belastung. Dieser Artikel berücksichtigt ausschließlich Software-RAID!
Weitere RAID-Grundlagen finden Sie in diversen HOWTOs und FAQs:
http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
http://www.tldp.org/HOWTO/Multi-Disk-HOWTO.html
http://www.tldp.org/HOWTO/ATA-RAID-HOWTO/index.html
http://www.tldp.org/FAQ/Linux-RAID-FAQ/index.html
Konfiguration von RAID-0 (Striping)
An dieser Stelle geht es darum, eine sehr einfache Form von Software-RAID zu konfigurieren, nämlich RAID-0 (Striping). Der Lohn für diese Arbeit besteht darin, dass manche Festplattenoperationen beinahe n-mal schneller durchgeführt werden können (wobei n die Anzahl der Festplatten bezeichnet).
Die Grundidee von Software-RAID sieht so aus: Zwischen den Treiber zum Festplattenzugriff (IDE/SCSI) und den Dateisystemtreiber (zum Beispiel ext2) wird eine Zwischenschicht gesetzt. Der so genannte Multi Devices Driver Support (kurz md) bildet aus mehreren Festplatten-Partitionen ein neues, logisches Device, auf das der Dateisystemtreiber zugreifen kann (/dev/mdn). Mit anderen Worten: Wenn Sie nach der RAID-Konfiguration das Dateisystem einrichten, verwenden Sie nicht mehr /dev/hd, sondern /dev/mdn als Datenpartition.
Es gibt drei wesentliche Voraussetzungen für das Striping:
-
Ihr Kernel muss RAID unterstützen. Dies ist per Default fast immer der Fall. Sie erkennen das daran, dass die Datei /proc/mdstat existiert. Trifft das nicht zu, führen Sie folgendes Kommando aus: root# modprobe md
-
Sie brauchen zumindest zwei Festplatten, auf denen jeweils Platz für eine neue Partition ist. Damit das RAID-Autodetect funktioniert (siehe unten), müssen die Partitionen die ID-Nummer fd (hexadezimal) aufweisen. Die Partitions-ID-Nummer stellt fdisk mit dem Kommando "T" ein.
-
Sie benötigen die Kommandos zur RAID-Administration. Bei den meisten Distributionen müssen Sie dazu das Paket raidtools installieren.
Dieser Beitrag beschreibt ausschließlich die raidtools-Version 1.0. Doch vorab noch zwei Hinweise
-
RAID-0 können Sie statt mit den RAID-Kommandos auch mit dem logical volume manager realisieren. Die LVM-Konfiguration ist zwar komplexer als die hier beschriebene RAID-Konfiguration, bietet aber auch mehr Flexibilität bei einer späteren Änderung der Partitionsgröße. LVM unterstützt zurzeit allerdings nur den RAID-Level 0. Wenn Sie LVM mit einem anderen RAID-Level kombinieren möchten, müssen Sie zuerst RAID-n einrichten und dann darauf aufbauend LVM konfigurieren. LVM wird im nächsten Beitrag unserer Serie beschrieben.
-
Striping ist auch für Swap-Partitionen möglich. Dazu sind aber weder aufwendige Vorbereitungen noch der Multiple-Device-Treiber erforderlich. Sie müssen lediglich in /etc/fstab bei allen Swap-Partitionen die Option pri=1 angeben.
RAID einrichten
Zugriff: Der Zugriff auf die virtuellen RAID-Partitionen erfolgt über die Devices /dev/md*. Bei den meisten Distributionen sind diese automatisch eingerichtet. Falls das nicht der Fall ist, schaffen die folgenden Kommandos Abhilfe:
root# mknod /dev/md0 b 9 0
root# mknod /dev/md1 b 9 1
root# mknod /dev/md2 b 9 2
root# mknod /dev/md3 b 9 3
root# chown root.disk /dev/md*
root# chmod 660 /dev/md*
Partitionen einrichten: Sie benötigen zumindest zwei Partitionen mit dem Partitionstyp fd. Das folgende Beispiel nimmt an, dass die Partitionen die Device-Namen /dev/hda10 und /dev/hdc10 haben. Die Partitionen müssen nicht formatiert werden. (Dieser Schritt folgt später.)
Sie können diese Partitionen mit jedem Partitionierungswerkzeug einrichten, etwa mit fdisk. Die Partitionen sollten gleich groß sein, das ist aber nicht unbedingt erforderlich. Je nach RAID-Level führt eine unterschiedliche Größe aber dazu, dass die Geschwindigkeit nicht optimal ist oder dass Teile der größeren Partition nicht genutzt werden können.
Konfiguration des RAIDs
Die Konfiguration der RAID-Devices erfolgt in /etc/raidtab. Die folgenden Zeilen zeigen beispielhaft den Aufbau dieser Datei:
# /etc/raidtab
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
device /dev/hda10
raid-disk 0
device /dev/hdc10
raid-disk 1
Das bedeutet, dass ein auf zwei Festplatten verteiltes RAID-0-System erstellt werden soll. chunk-size gibt die Seitengröße an, die hier mit 32 KByte gewählt wurde. Dabei gibt es keine einfache Regel, welche Größe eine optimale Geschwindigkeit erreicht - probieren Sie es aus. Das Software-RAID-HOWTO empfiehlt 32 KByte als guten Startwert.
persistent-superblock bedeutet, dass am Ende jeder Partition einige Verwaltungsinformationen gespeichert werden. Dies ermöglicht eine richtige Zusammensetzung des RAID-Systems selbst dann, wenn die Reihenfolge der Festplatten im System vertauscht wurde. Die Option ist auch erforderlich, damit der Kernel beim Starten automatisch RAID erkennt.
Inbetriebnahme
Das so definierte RAID-System wird nun mit mkraid erzeugt:
root# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda10, 24097KB, raid superblock at 24000KB
disk 1: /dev/hdc10, 24066KB, raid superblock at 24000KB
Als Nächstes müssen Sie auf der neuen virtuellen Partition /dev/md0 ein Dateisystem anlegen. Diese Partition binden Sie mit mount in das Linux-Dateisystem ein. Die Partition wird hier über das Verzeichnis /striped angesprochen - selbstverständlich können Sie stattdessen auch einen anderen Namen verwenden.
root# mke2fs -j /dev/md0
root# mkdir /striped
root# mount -t ext3 /dev/md0 /striped/
Wenn alles klappt, sollten Sie die neue Partition in /etc/fstab aufnehmen, um den Tippaufwand bei mount zu minimieren oder um zu erreichen, dass die Partition beim Systemstart automatisch in das Dateisystem eingebunden wird:
# in /etc/fstab
/dev/md0 /striped ext3 defaults 0 0
Systemstart und -stopp
Bei den meisten Linux-Distributionen wird das RAID-System während des Init-V-Prozesses automatisch initialisiert, sofern drei Voraussetzungen erfüllt sind:
-
Der Kernel muss mit RAID-Autodetection-Unterstützung kompiliert sein (das ist üblicherweise der Fall)
-
Die RAID-Partitionen müssen die ID-Nummer fd besitzen
-
Die RAID-Devices müssen mit der Option persistent-superblock erzeugt worden sein.
Bei Red Hat und Fedora wird das RAID-System nur dann initialisiert, wenn /etc /fstab eine RAID-Partition enthält, die während des Systemstarts in das Dateisystem eingebunden werden soll. Ist das nicht der Fall, können Sie das RAID-System manuell mit raidstart --all
starten. Dieses Kommando aktiviert alle /dev/md-Devices, die in /etc/raidtab spezifiziert sind.
RAID kann nicht ohne Weiteres für die Root-Partition verwendet werden. Der Grund besteht darin, dass das Lesen einer RAID-Partition erst funktioniert, nachdem die entsprechenden Kernel-Module aktiv sind. Dazu müssen der Kernel und diverse Konfigurationsdateien aber zuerst einmal geladen werden. Viele Software-RAID-Systeme verwenden deswegen eine normale root-Partition und RAID nur für die Datenpartitionen.
Wenn Sie RAID auch für die Systempartition verwenden möchten, benötigen Sie eine eigene, gewöhnliche /boot-Partition für das Kernel-Image für GRUB beziehungsweise LILO. Des Weiteren müssen Sie das RAID-Modul in einer Initial-RAM-Disk zur Verfügung stellen. Tipps zur Verwendung von RAID für die /root- Partition finden Sie auch in folgendem, allerdings etwas älteren HOWTO: http://www.tldp.org/HOWTO/Boot+Root+Raid+LILO.html
Ausblick
Nachdem wir in diesem Teil die Konfiguration eines einfachen RAID-Systems unter Linux vorgestellt haben, geht es in Teil 7 um die dynamische Verwaltung von Festplatten mit LVM. Mit dem Logical Volume Manager können Sie im laufenden Betrieb Partitionen beispielsweise vergrößern oder zusammenlegen. Über Snapshots können Sie zudem den aktuellen Zustand des Dateisystems für Backups einfrieren.
Diese Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration, Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch in unserem Buchshop versandkostenfrei bestellen oder als eBook herunterladen. (ala)
Teil 1 |
|
---|---|
Teil 2 |
|
Teil 3 |
|
Teil 4 |
|
Teil 5 |
|
Teil 6 |
|
Teil 7 |
|
Teil 8 |