26.5 Administration
Nun werden wir uns mit der Administration der Dateisysteme befassen. Grundlegende Verwaltungsaufgaben wie das Setzen von Quotas oder Tools wie du und df wurden bereits in Kapitel 9 besprochen. In diesem Abschnitt wollen wir die Administration besprechen, die die Festplatte beziehungsweise das Dateisystem an sich betrifft.
26.5.1 qtparted und gparted
Zunächst werden wir zwei sehr einfach zu benutzende Tools vorstellen, die bei der Partitionierung von Dateisystemen helfen. Das erste nennt sich qtparted, wurde in C++ geschrieben und basiert auf Qt. Das zweite, nämlich gparted, ist hingegen eine praktisch gleichwertige Lösung für GNOME-User (mit der Ausnahme, dass gparted derzeit keine Formatierungen durchführen kann).
Abbildung 26.2 qtparted
Abbildung 26.3 gparted
Im Folgenden werden wir nun diverse Konsolentools zur Administration des Dateisystems vorstellen.
26.5.2 disklabel
disklabel ist ein BSD-Tool, um die konfigurierten Eigenschaften einer Festplatte auszulesen bzw. zu editieren.
Das BSD-disklabel liefert Informationen über die Festplatte. Dazu zählen beispielsweise die Plattengröße und der Typ der Platte.
Übergibt man disklabel das Device einer Platte, bekommt man Informationen über
- den Plattentyp (type),
- die Datenträgerbezeichnung (label),
- die Anzahl der Bytes pro Sektor,
- die Anzahl der Sektoren pro Track,
- die Anzahl der Tracks pro Zylinder,
- die Anzahl der Sektoren pro Zylinder,
- die Gesamtzahl der Zylinder,
- die Gesamtzahl der Sektoren,
- technische Details (etwa die Umdrehungen, die das Laufwerk pro Minute durchführt (rpm), <In diesem Beispiel wird dort der Wert von 3600 angezeigt, was recht gering ist.> oder die Interleave-Aktivierung <Bei Interleave handelt es sich um eine Technik, die den Zugriff auf die Sektoren der Festplatte verbessert. Dabei werden aufeinanderfolgende Sektoren in einer bestimmten Reihenfolge angeordnet.>) und die Partitionstabelle.
Führen wir disklabel also einmal unter OpenBSD aus:
# disklabel wd0 # using MBR partition 3: type A6 off 63 (0x3f) size 39102147 (0x254a6c3) # /dev/rwd0c: type: ESDI disk: ESDI/IDE disk label: WDC WD200BB-00DE flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 16383 total sectors: 39102336 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # microseconds track-to-track seek: 0 # microseconds drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] a: 39102273 63 4.2BSD 2048 16384 328# Cyl 0*- 38791 c: 39102336 0 unused 0 0 # Cyl 0 – 38791
Listing 26.17 Informationen über die Disk 'wd0' unter OpenBSD
Konfiguration: Der harte Weg
Um diese Konfiguration nun aber zu verändern, ruft man disklabel -e [Device] (für edit) auf.
Daraufhin wird der Editor, der in der Variable EDITOR angegeben ist, mit der Konfiguration geladen. Falls Sie die Partitionstabelle etwas komfortabler verändern möchten, wird Ihnen das Tool, das wir als Nächstes besprechen, allerdings etwas mehr Komfort bieten.
$ export EDITOR=vi
Listing 26.18 EDITOR-Variable setzen
Konfiguration: Der einfache Weg
Wenn man disklabel nicht mit dem Parameter -e, sondern mit -E aufruft, erscheint ein menübasiertes Konfigurationssystem ähnlich dem von fdisk. Jeder, der einmal OpenBSD installiert hat, sollte dieses Menü beim Installationsabschnitt der Partitionskonfiguration schon einmal gesehen haben.
# disklabel -E wd0 # using MBR partition 3: type A6 off 63 (0x3f) size 39102147 (0x254a6c3) Treating sectors 63-39102336 as the OpenBSD portion of the disk. You can use the 'b' command to change this. Initial label editor (enter '?' for help at any prompt) > ? Available commands: ? [cmnd] – this message or command specific help. a [part] – add new partition. b – set OpenBSD disk boundaries. c [part] – change partition size. D – set label to default. d [part] – delete partition. e – edit drive parameters. g [b|d|u] – use [b]ios, [d]isk or [u]ser geometry. M – show entire OpenBSD man page for disklabel. m [part] – modify existing partition. n [part] – set the mount point for a partition. p [unit] – print label. q – quit and save changes. r – recalculate free space. s [path] – save label to file. u – undo last change. w – write label to disk. X – toggle expert mode. x – exit without saving changes. z – zero out partition table. Numeric parameters may use suffixes to indicate units: 'b' for bytes, 'c' for cylinders, 'k' for kilobytes, 'm' for megabytes, 'g' for gigabytes or no suffix for sectors (usually 512 bytes). '\%' for percent of total disk size, '&' for percent of free space. Non-sector units will be rounded to the nearest cylinder. Entering '?' at most prompts will give you (simple) context sensitive help. > p device: /dev/rwd0c type: ESDI disk: ESDI/IDE disk label: WDC WD200BB-00DE bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 16383 total sectors: 39102336 free sectors: 0 rpm: 3600 ... ...
Listing 26.19 disklabel im Einsatz
26.5.3 hdparm
Möchte man Festplatten »tunen«, ist hdparm das Tool der Wahl. Möchte man sich Parameter wie den DMA-Modus oder Readahead anzeigen lassen, so braucht man hdparm nur mit der betreffenden Festplatte als Parameter aufzurufen:
# hdparm /dev/hda /dev/hda: multcount = 0 (off) IO_support = 1 (32-bit) unmaskirq = 1 (on) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 65535/16/63, sectors = 156301488, start = 0
Listing 26.20 Festplattenparameter mit hdparm anzeigen
Natürlich kann man mit hdparm diese Parameter auch verstellen. Dazu kann man zusätzlich zur Angabe der Festplatte unter anderem folgende Flags verwenden: <Die ausführliche Liste mit Parametern gibt es natürlich auf der Manpage. ;-)>
- -a <Wert>
- Mit diesem Parameter kann man den readahead-Wert verändern. Dieser Wert legt fest, wie viele Sektoren die Festplatte bei einer Leseanfrage im Voraus bereits in ihren Cache lesen soll – folgende Anfragen nach exakt diesen Blöcken können dann sehr schnell beantwortet werden. Hohe Werte bringen also vor allem beim Lesen großer, zusammenhängender Dateien einen Geschwindigkeitsvorteil, können jedoch beim Lesen kleiner Dateien störend sein – es werden schließlich unnütze Daten eingelesen.
- -d 1
- Mit dieser Option bringt man die Festplatte dazu, den DMA-Modus zu nutzen. In diesem Modus kümmert sich der Prozessor nicht selbst darum, Daten von der Festplatte in den Hauptspeicher zu kopieren. Stattdessen wird diese Arbeit vom DMA-Controller erledigt, der den Prozessor, der zwischenzeitlich sinnvollerweise mit anderen Aufgaben/Prozessen beschäftigt war, erst nach erfolgter Arbeit wieder unterbricht.
- -c 1
- Mit diesem Wert kann man die (E)IDE-32-Bit Übertragung aktivieren. Das ist generell eine gute Idee.
Wir wollen jedoch festhalten, dass es generell nicht notwendig ist, an diesen Parametern etwas umzustellen.
Allerdings kann man bei dedizierten Rechnern wie beispielsweise Datenbankservern durch geschicktes Experimentieren mit diesen Parametern durchaus bessere Ergebnisse erzielen.
26.5.4 fdisk und cfdisk
Die Partitionierung
Das Tool fdisk dient zur Partitionierung von Festplatten. Unter den meisten Linux-Distributionen existiert zudem noch das Tool cfdisk, das eine leichtere, intuitive Konfiguration der Festplatten zulässt. Oftmals trifft man auch distributionsspezifische Tools, wie yast2 unter SuSE, an, die einem die Konfiguration nochmals deutlich erleichtern. Greifen Sie, wenn möglich, auf diese einfachen Tools zurück.
fdisk müssen wir die zu partitionierende Festplatte als Argument übergeben:
# fdisk /dev/hda Command (m for help):
Listing 26.21 Aufruf von fdisk
Es erscheint nun die Aufforderung zur Eingabe eines fdisk-Befehls, wobei dieser aus einem einzigen Buchstaben besteht. Eine Liste der verfügbaren Kommandos bekommen Sie durch Eingabe von »m«.
Eine Partition löschen
Falls Ihre Festplatte bereits partitioniert ist (zum Beispiel mit einer Windows-Partition) und diese Partition gelöscht werden soll, um Speicher zu schaffen, sollten Sie den Buchstaben »d« eingeben.
Anschließend wird Ihnen die Frage nach der zu löschenden Partitionsnummer gestellt. Die Partitionsnummer der Zielpartition bekommt man heraus, indem man im Kommandomenü »(p) print the partition table« auswählt und die Partitionsliste von oben abzählt.
Eine Partition erstellen
Eine neue Partition wird mit n erstellt, wobei zunächst angegeben werden muss, ob es sich um eine logische oder um eine primäre Partition handelt. Anschließend sind die Größe und der Typ der Partition festzulegen.
In fdisk können Sie sich alle gängigen Partitionstypen durch Eingabe des l-Kommandos anzeigen lassen. In der Regel braucht man für eine Linux-Partition die ID 83h und für eine Swap-Partition die ID 82h.
Das Bootflag wird für die zu bootende Partition gesetzt. Möchten Sie alternativ von einer Windows-Partition booten? Dann setzen Sie mit a die aktive Partition auf die Nummer jener Partition. Eine Windows-Installation legt in der Regel großen Wert auf das »Boot«-Flag; Linux oder anderen Unix-Systemen ist es vollkommen egal.
Und ausschlaggebend ist am Ende auch nur der Bootmanager wie beispielsweise grub, der das betreffende Betriebssystem dann startet.
Die Partitionstabelle betrachten
Durch Eingabe von p im Kommandomenü erhält man eine Liste der Partitionen seiner Festplatte wie diese hier:
Device Boot Start End Blocks Id System /dev/hda1 * 1 535 4044568+ 83 Linux native /dev/hda2 536 559 181440 82 Linux swap
Listing 26.22 Die Beispielpartitionstabelle
Die erste Spalte gibt die Gerätebezeichnungen für die Partitionen der Platte an und die zweite das eventuell vorhandene Bootflag.
Da eine Festplatte in Zylinder aufgeteilt ist (die Platte /dev/hda2 aus dem obigen Listing verfügt über 559 dieser Zylinder), werden die Partitionen durch diese abgegrenzt. »Start« und »End« geben jeweils den Anfangs- und Endzylinder einer Partition an.
Die »Blocks«-Spalte gibt die Größe der Festplatte in Blockeinheiten an, »Id« gibt die Partitions-ID und »System« die Bezeichnung des Partitionstyps an.
Speichern der Konfiguration
Die Konfiguration wird mit der Taste w in die Partitionstabelle geschrieben, und mit q wird fdisk beendet. Wurden einige alte MS-DOS-Partitionen modifiziert, muss zunächst ein Neustart erfolgen, bevor es weitergeht.
26.5.5 Das Tool cfdisk
Ist Ihnen fdisk zu kryptisch? Kein Problem. Das Programm cfdisk bietet eine konsolenbasierte grafische Oberfläche und kann mit den Cursor-Tasten bedient werden. Wobei die Tasten für »auf und ab« zur Auswahl der Partition und die Tasten für »links und rechts« zur Auswahl der Menüoption dienen.
Abbildung 26.4 cfdisk
Die Bedienung ist selbsterklärend und einfacher als bei fdisk. Darüber hinaus wird die Nutzung durch bestimmte Details vereinfacht. So ist zum Beispiel die Größe der Partitionen in Megabyte dargestellt.
26.5.6 mkfs
Nachdem man eine Partition erstellt hat, möchte man sie in der Regel noch mit dem richtigen Dateisystem versehen.
Dazu gibt es unter Linux das Tool mkfs. Dabei muss man natürlich das zu formatierende Device sowie den Typ des gewünschten Dateisystems angeben. Je nach Wahl sind dann auch noch weitere, spezifische Dateisystem-Optionen möglich.
Das Dateisystem kann bei mkfs nach dem Parameter »-t« übergeben werden, alternativ kann man auch gleich das entsprechende Pendant benutzen, dem man nur noch das zu formatierende Device übergeben muss:
mkfs.ext2, mkfs.ext3, mkfs.vfat.
Wie man damit umgeht, werden Sie in den Aufgaben am Ende des Kapitels einmal ausprobieren.
26.5.7 tune2fs
Wie Sie sicherlich bemerkt haben, besitzt ein Ext-Dateisystem mehrere »Parameter« wie beispielsweise den Zeitraum beziehungsweise die maximale Anzahl von Mounts, nach dem bzw. der eine Partition spätestens durch fsck überprüft wird.
Solche Parameter kann man über das Tool tune2fs und den entsprechenden Parameter ändern. Die wichtigsten sind hier zusammengefasst:
- -c max_mounts_count
- Mit diesem Parameter ändern Sie die Anzahl der Mounts, bevor das Dateisystem spätestens neu überprüft wird.
- -C mount_count
- Hier können Sie einstellen, wie oft das Dateisystem schon gemountet wurde, ohne überprüft zu werden.
- -m reserved_blocks_percent
- Wie viel Prozent des Plattenplatzes soll für den Superuser reserviert bleiben? Achtung: Diesen Wert sollten Sie nicht auf null setzen, um bei Problemen mit einer vollen Platte zumindest als root noch alles ins Reine bringen zu können.
- -i interval(d|m|w)
- Mit diesem Parameter legt man die maximale Zeit zwischen zwei Checks des Dateisystems fest. Dieser Parameter »konkurriert« mit der Anzahl der maximalen Mounts darum, das Dateisystem zu einem Check zu zwingen.
Natürlich muss man beim Aufruf von tune2fs neben dem entsprechenden Parameter noch das entsprechende Device angeben, auf das die Operation ausgeführt werden soll. Ein Beispiel erwartet Sie in den Aufgaben.
26.5.8 fsck
Wenn man das Dateisystem nicht ordentlich herunterfährt, wird beim nächsten Booten das fsck-Tool für die entsprechende Partition gestartet. Natürlich können Sie das Programm auch von Hand starten und Ihr Dateisystem auf Inkonsistenzen prüfen. Dies ist jedoch nur sehr selten notwendig, beispielsweise wenn Sie einen produktiven Server mit großer Uptime laufen haben und Sie auf Nummer sicher gehen wollen.