28.5 Administration
Im Folgenden 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 14 besprochen. In diesem Abschnitt wollen wir die Administration besprechen, die die Festplatte beziehungsweise das Dateisystem an sich betrifft.
28.5.1 QtParted und GParted
Zunächst stellen wir zwei sehr einfach zu benutzende Tools vor, die Ihnen bei der Partitionierung von
Dateisystemen helfen.
Abbildung 28.2 QtParted
Das erste Tool nennt sich QtParted, wurde in C++ geschrieben und basiert auf Qt. Das zweite Tool, GParted, ist eine praktisch gleichwertige Lösung für GNOME-User (mit der Ausnahme, dass es derzeit keine Formatierungen durchführen kann).
Abbildung 28.3 GParted
Im Folgenden werden wir nun diverse Konsolentools zur Administration des Dateisystems vorstellen.
28.5.2 palimpsest
Mit palimpsest gibt es ein sehr umfangreiches Programm zur Administration und Überwachung von Laufwerken. palimpsest kann nicht nur Partitionierungen vornehmen, Datenträger formatieren und Dateisysteme überprüfen, sondern auch SMART-Werte auslesen und darstellen. Sie können dem Programm beim Starten die gewünschte Platte als Parameter übergeben (palimpsest --show-drive=/dev/sda), aber das ist nicht notwendig, da Sie sie auch in der Oberfläche selektieren können.
Abbildung 28.4 palimpsest
28.5.3 disklabel
disklabel ist ein BSD-Tool, um die konfigurierten Eigenschaften einer Festplatte auszulesen und zu editieren. Es liefert Informationen über die Festplatte, zum Beispiel deren Größe und Typ.
Übergibt man disklabel das Device einer Platte, so 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 des Laufwerks pro Minute (rpm) [Fn. In diesem Beispiel wird der Wert von »3600« angezeigt, was recht gering ist.] oder die Interleave-Aktivierung [Fn. 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:
Listing 28.20 Informationen über die Disk 'wd0' unter OpenBSD
# 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
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, sicher zusagen.
Listing 28.21 EDITOR-Variable setzen
$ export EDITOR=vi
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, hat dieses Menü beim Installationsabschnitt der Partitionskonfiguration schon einmal gesehen.
Listing 28.22 disklabel im Einsatz
# 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
28.5.4 hdparm
Möchte man Festplatten »tunen«, ist hdparm das Tool der Wahl. Um Parameter wie den DMA-Modus oder den Readahead anzeigen lassen, braucht man hdparm nur mit der betreffenden Festplatte als Parameter aufzurufen:
Listing 28.23 Festplattenparameter mit hdparm anzeigen
# hdparm /dev/sda
/dev/sda:
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
Natürlich können Sie mit hdparm diese Parameter auch verstellen. Dazu können Sie zusätzlich zur Angabe der Festplatte unter anderem folgende Flags verwenden: [Fn. Die ausführliche Liste mit Parametern gibt es natürlich auf der Manpage. ;-)]
- -a <Wert>
Mit diesem Parameter verändern Sie den readahead-Wert. Dieser Wert legt fest, wie viele Sektoren die Festplatte bei einer Leseanfrage bereits im Voraus in ihren Cache lesen soll – nachfolgende 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 – schließlich werden 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 ist, erst nach erfolgter Arbeit wieder unterbricht. - -c 1
Mit diesem Wert kann man die (E)IDE-32-Bit Übertragung aktivieren – generell eine gute Idee.
Wir wollen jedoch festhalten, dass es grundsätzlich 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.
28.5.5 fdisk und cfdisk
Die Partitionierung
Das Tool fdisk dient zur Partitionierung von Festplatten. Unter den meisten Linux-Distributionen existiert zudem noch cfdisk, das eine leichtere, intuitive Konfiguration von Festplatten zulässt. Oftmals trifft man auch distributionsspezifische Tools an, wie yast2 unter openSUSE, die einem die Konfiguration nochmals deutlich erleichtern. Greifen Sie, wenn möglich, auf diese einfachen Tools zurück.
Zunächst übergeben wir dem Tool fdisk die zu partitionierende Festplatte als Argument: Es erscheint nun die Aufforderung zur Eingabe eines fdisk-Befehls. Dieser besteht aus einem einzigen Buchstaben. Eine Liste der verfügbaren Kommandos erhalten Sie durch Eingabe von »m«.
Listing 28.24 Aufruf von fdisk
# fdisk /dev/sda
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
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 werden Sie nach der zu löschenden Partitionsnummer gefragt. Die Nummer der Zielpartition findet 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 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 Kommandos l anzeigen lassen. In der Regel gilt 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 Bootflag; Linux oder anderen Unix-Systemen ist es dagegen vollkommen egal, ob Sie das Flag setzen oder nicht. Ausschlaggebend ist am Ende nur der Bootmanager wie beispielsweise GRUB, der das betreffende Betriebssystem dann startet.
Die Partitionstabelle betrachten
Durch Eingabe von p im Kommandomenü erhalten Sie eine Liste der Partitionen Ihrer Festplatte wie diese hier:
Listing 28.25 Die Beispielpartitionstabelle
Device Boot Start End Blocks Id System
/dev/sda1 * 1 535 4044568+ 83 Linux native
/dev/sda2 536 559 181440 82 Linux swap
Die erste Spalte gibt die Gerätebezeichnungen für die Partitionen der Platte an und die zweite Spalte das eventuell vorhandene Bootflag.
Da eine Festplatte in Zylinder aufgeteilt ist (die Platte /dev/sda2 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, so muss zunächst ein Neustart erfolgen, bevor es weitergeht.
28.5.6 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 Nach oben und Nach unten zur Auswahl der Partition und die Tasten Nach links und Nach rechts zur Auswahl der Menüoption dienen.
Abbildung 28.5 cfdisk
Die Bedienung von cfdisk 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.
28.5.7 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. Anzugeben sind das zu formatierende Device sowie der Typ des gewünschten Dateisystems. 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.ext4, mkfs.vfat.
Listing 28.26 Anlegen eines ext4-Dateisystems in einer Datei
swendzel$ dd if=/dev/zero bs=1M count=10 of=file.fs
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0449227 s, 233 MB/s
swendzel$ mkfs.ext4 file.fs
mke2fs 1.41.4 (27-Jan-2009)
file.fs is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
2560 inodes, 10240 blocks
512 blocks (5.00 %) reserved for the super user
First data block=1
Maximum filesystem blocks=10485760
2 block groups
8192 blocks per group, 8192 fragments per group
1280 inodes per group
Superblock backups stored on blocks:
8193
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to
override.
28.5.8 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 mit dem entsprechenden Argument ändern. Die wichtigsten Parameter sind hier zusammengefasst:
- -c max_mounts_count
Mit diesem Parameter ändern Sie die Anzahl der Mounts, nach denen 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 viele Prozent des Plattenplatzes sollen 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 legen Sie 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 noch das entsprechende Device angeben, auf das die Operation ausgeführt werden soll. Ein Beispiel erwartet Sie in den Aufgaben am Ende des Kapitels.
28.5.9 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 auf Nummer sicher gehen wollen.
Des Weiteren wird bei den meisten Distributionen automatisch – etwa nach 30 Bootvorgängen – eine Überprüfung des Dateisystems durchgeführt.
Rückgabewert
Den Erfolg von fsck können Sie übrigens auch über Shellskripte prüfen, da der Rückgabewert dieses Programms vom Resultat der Überprüfung abhängig ist. Dieser Rückgabewert wird dabei aus der Summe von verschiedenen Meldungen gebildet: »0« steht für eine erfolgreiche Überprüfung, »1« besagt, dass Dateisystemfehler bereinigt wurden, »2«, dass das System rebootet werden sollte, und »4« weist auf nicht korrigierte Fehler hin. Weitere Werte sind »8« (Fehler während der Ausführung), »16« (Bedienungsfehler, zum Beispiel bei Übergabe falscher Parameter), »32« (das Programm wurde durch den Benutzer unterbrochen) und »128« (Fehler durch eine Bibliothek). Falls mehrere Dateisysteme gleichzeitig überprüft werden, werden die Rückgabewerte durch ein bitweises ODER verknüpft.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.