Bitte nehmen Sie Platz!

Dr. Linux

01.01.2001
Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux beobachtet die Patienten in den Linux-Newsgruppen, stellt an dieser Stelle Rezepte für aktuelle Probleme aus und alternative Heilmethoden vor.

Ist da noch ein Plätzchen?

Ich habe das Gefühl, dass der Platz auf meinem Rechner knapp wird. Wie finde ich heraus, wieviel Festplattenplatz belegt ist?

Dr. Linux: Zunächst gibt es da Programme, die Sie auf einer Kommandozeile aufrufen können, zum Beispiel den Befehl df (engl. disk free):

user$ df
 Filesystem   1k-blocks     Used Available Use% Mounted on
 /dev/hda6      3470648  2045904   1245220  62% /
 /dev/hda2       932912   637288    248236  72% /Red Hat

Er liefert Ihnen prompt die Speicherbelegung aller Dateisysteme, die Sie aktuell gemountet haben.

Der Speicherplatz wird Ihnen in Ein-Kilobyte-Einheiten (Blöcken) angezeigt. Sie erhalten Angaben über den gesamten Platz auf der jeweiligen Festplattenpartition, Diskette, CD etc., aufgeschlüsselt, wieviel davon belegt (Used) oder verfügbar (Available) ist; ferner den genutzten Speicherplatz in Prozent.

Beim Nachrechnen wird Ihnen auffallen, dass der benutzte plus der noch verfügbare Speicher nur rund 95 Prozent des Gesamtspeichers ausmacht. Es handelt sich hier nicht um einen Programm- oder Rechenfehler, sondern um eine gewollte Beschränkung des Speicherplatzes für normalsterbliche Anwender. Die letzten fünf Prozent sind nur für den Superuser verfügbar. Der hat damit die Möglichkeit, auf einer vollgefüllten Platte mit einem Packprogramm, das seinerseits etwas Speicherplatz zum Arbeiten benötigt, wieder Platz zu schaffen.

Wenn Sie lieber eine Angabe in Mega- oder Gigabyte haben möchten, geben Sie df die Option -h mit:

user$ df -h
 Filesystem   Size  Used Avail Use% Mounted on
 /dev/hda6    3.3G  2.0G  1.2G  62% /
 /dev/hda2    911M  622M  242M  72% /Red Hat

Für Anwender, die lieber mit grafischen Oberflächen arbeiten, stehen ebenfalls einige Anwendungen zur Verfügung. Im KDE-Menü finden Sie im Unterverzeichnis Dienstprogramme möglicherweise die Programme KDFree (Abbildung 1) und KDu (Abbildung 4) vor.

Falls nicht, liefert Ihre Distribution sie ggf. in einem kdu-Paket zum Nachinstallieren mit. Bei SuSE Linux steckt es in der Serie kpa. Werden Sie auch hier nicht fündig, können Sie das passende Paket unter http://rpmfind.net/linux/RPM/kdu.html herunter laden.

kdfree bietet zunächst eine Übersicht aller Datenträger, die in Ihrer /etc/fstab eingetragen sind. Diese sind zusätzlich einzeln über Reiter anwählbar, die eine Tortengrafik und Informationen zum gewählten Laufwerk bereit stellen (Abbildung 1). Wie bei df werden nur die Datenträger berücksichtigt, die unterhalb eines Mountpoints im System eingehängt sind.

#Gerätename  Eingehängt als  Dateisystem  mount-Optionen
 /dev/sda1     /              ext2         defaults       0  0
 […]
 /dev/hdc      /cdrom         iso9660      ro,noauto,user 0  0
Abbildung 1: kdfree zeigt die Speicherbelegung einzelner Laufwerke als Übersicht oder im Detail
Abbildung 2: Die Anzeige von gdiskfree kommt etwas spärlich daher

Im direkten Vergleich dazu wirkt das Programm GNOME Freie Platte (Abbildung 2), das Sie im GNOME-Untermenü Werkzeuge finden, etwas sparsam in der grafischen Darstellung. Hier zeigen Ihnen Rundinstrumente einen prozentualen Wert, der darstellt, wie weit Ihre Platte gefüllt ist. Mit dem Befehl gdiskfree lässt sich dieses Tool auch von der Kommandozeile aus aufrufen.

Zusätzlich bietet Ihnen GNOME die Möglichkeit, ein Applet in die Kontrollleiste einzufügen, mit dem Sie ständig ein Auge auf den Speicherplatz haben (Abbildung 3). Wählen Sie dazu im GNOME-Menü unter Panel/Applet hinzufügen/Statusanzeigen den Punkt Plattenplatz. Auf der Kommandozeile führt die Eingabe von diskusage_applet & zum gleichen Ergebnis.

Angezeigt werden wie bei df auf einer Kommandozeile der Mountpoint (MP:) und hinter av: wie "available" der verfügbare Speicherplatz in Kilobyte-Blöcken.

Wenn Sie mit der rechten Maustaste auf das Applet-Icon im Panel klicken, lassen sich über den Menüpunkt Eigenschaften noch einige Konfigurationen vornehmen; insbesondere mag hier die Auffrischungsrate der Darstellung interessant sein.

Abbildung 3: Das Applet Plattenplatz und sein Konfigurationsmenü

Speicherplatz in Verzeichnissen

Wie kann ich ermitteln, wieviel Speicherplatz einzelne Verzeichnisse belegen?

Dr. Linux: Wechseln Sie auf einer Kommandozeile in das Verzeichnis, dessen Speicherbelegung Sie interessiert, und setzen Sie den Befehl

user$ du -k

ab (engl.: "disk usage"). Sie erhalten eine Ausgabe der Speicherbelegung in Kilobyte für die Unterverzeichnisse und den gesamten Speicherverbrauch eines Verzeichnisses.

Auf der grafischen Oberfläche bietet das schon erwähnte KDu im Unterverzeichnis Dienstprogramme des KDE-Menüs Ihnen die Möglichkeit, sich den Speicherverbrauch von Verzeichnissen anzeigen zu lassen (Abbildung 4).

Abbildung 4: KDu zeigt den Speicherplatz in Verzeichnissen

Wer nicht fragt…

Mein Rechner kommt mir so langsam vor – gibt's da Diagnosemöglichkeiten?

Dr. Linux: Ihr Linuxsystem bringt natürlich einige Programme mit, die Ihnen bei der Analyse Ihres Systems echte Hilfe bieten. Vorstellen möchte ich Ihnen vmstat ("virtual memory statistics"). Auf der Kommandozeile aufgerufen produziert es etwa folgende Ausgabe:

procs                      memory    swap          io     system         cpu
  r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
  0  0  0    212   4936   3104  23556   0   0     3     0  128   266   2   0  98

Diesen Zahlen- und Abkürzungswirrwarr entschlüsseln Sie wie folgt:

  • r ("run"): Je höher die Zahl, die Sie hier vorfinden, desto langsamer ist Ihr System. Hier wird angezeigt, wieviele Prozesse laufen würden, wenn sie nicht auf Rechenzeit warten müssten.
  • b ("block"): Prozesse, die hier angezeigt werden, warten auf bestimmte Ereignisse, um den Programmablauf fortsetzen zu können, nicht jedoch auf Rechenzeit.
  • w: Die Zahl an dieser Stelle zeigt Ihnen die Anzahl aller Prozesse, die z.Z. in den Swap-Bereich ausgelagert sind.
  • swpd gibt den aktuell benutzten Swap-Speicher in Kilobyte an.
  • free zeigt, wieviel Kilobyte RAM-Speicher gerade ungenutzt sind.
  • buff zeigt die Größe der Speicherbereiche, in denen die Ein-/Ausgabe-Puffer liegen; die Einheit ist ebenfalls Kilobyte. Werden Daten produziert, so wird nicht für jedes Zeichen bzw. jeden Block ein Transfer auf die Festplatte vorgenommen. Alle Ein-/Ausgaben landen zunächst in einem Pufferbereich. Wird z.B. durch Lesen einer Datei versucht, auf einen Block innerhalb der Datei zuzugreifen, so schaut das Betriebssystem nach, ob der gesuchte Block schon im Puffer vorhanden ist. Wenn ja, wird er geladen und danach dem Programm zur Verfügung gestellt, das ihn angefordert hat.
  • Unter cache erfährt man in Kilobyte, wieviel eingebauter Festplattencache momentan zur Verfügung steht.
  • si ("swap in") und so ("swap out") zeigen an, wieviel Kilobyte Daten pro Sekunde vom Swap-Bereich auf der Festplatte in den Hauptspeicher geladen bzw. vom RAM auf die Platte ausgelagert wurden.
  • bi ("block in") und bo ("block out") deutet z.B. auf Festplattenaktivitäten hin, da hier die Anzahl der Blöcke pro Sekunde angezeigt wird, die an Block-Geräte geschickt bzw. von solchen empfangen wurden. Block-Geräte sind zum Beispiel Floppies und Festplatten.
  • in zeigt die Anzahl der Unterbrechungen pro Sekunde, die durch Hardware-Anforderungen entstehen; die sogenannten Interrupts.
  • cs ("context switch") zeigt, wie oft pro Sekunde von einem Programm zum nächsten umgeschaltet wird (Multitasking).
  • us gibt wieder, wieviel der genutzten Prozessorzeit prozentual von Anwendungsprogrammen verbraucht wird, während
  • sy die vom System genutzte Prozessorzeit anzeigt.
  • id ist die ungenutzte Prozessorzeit, wiederum in Prozent.

Eine id-Zahl im zweistelligen Bereich und gleichzeitige krasse Aktivitäten in si und so können erste Hinweise auf zu wenig Hauptspeicher sein. Die hohe Zahl unverbrauchter Prozessorzeit bedeutet in so einem Fall, dass das System häufig auf Festplattenzugriff warten muss. Bestätigen lässt sich dies, wenn swpd hoch ist, free,buff und cache hingegen relativ niedrig bleiben. Bewegen sich id, si und so ständig nahe bei Null, sind dies ernsthafte Hinweise auf einen zu lahmen Prozessor.

Um Problemen auf die Spur zu kommen, veranlassen Sie vmstat während dessen, periodische Meldungen zu produzieren. Allerdings müssen Sie hier u.U. Geduld beweisen, wenn sich sowieso schon alles so lahm bewegt wie eine Schildkröte im Winter.

Das folgende Beispiel zeigt eine vmstat-Ausgabe mit sechs Wiederholungen (zweite Ziffer) im Sekundentakt (erste Ziffer):

user$ vmstat -n 1 6
    procs                      memory    swap          io     system         cpu
  r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
  1  0  0    208   1556   2616  20736   0   0     3     0  130   265   2   0  97
  2  0  0    208   1552   2616  20552   0   0   230     0 2019  2358  36  16  48
  0  0  1    208   1544   2616  18868   0   0    91     0  830  2607  41  19  40
  0  0  0    208   1544   2616  18868   0   0     0     0  102   208   0   1  99
  1  0  0    208   1500   2616  18912   0   0    11     0  358   734   0   5  95
  0  1  0    208   2336   2616  19188   0   0    69    60 1150   727  10   5  85

Wer nicht gleich in der Manpage stöbern will, bekommt mit vmstat x eine Kurzanleitung für den Gebrauch dieses nützlichen Tools.

Platz ist in der kleinsten Hütte

Ich habe beim Aufspielen meines Linuxsystems offenbar eine zu kleine Swappartition angelegt. Kann ich den Swapspeicher auch ohne Umpartitionierung aufrüsten?

Dr. Linux: Als temporäre Lösung bietet sich hier eine – ggf. von Windows her bekannte – Swapdatei an. Linux kennt zwei Möglichkeiten der Datenauslagerung aus dem RAM auf die Festplatte:

  • Beim Installieren Ihres System haben Sie unweigerlich die Swappartition kennen gelernt. Das ist die erste und schnellere Möglichkeit.
  • Seltener genutzt wird die Swapdatei. Sie arbeitet langsamer als eine Swappartition. Linux kann bis zu 16 Swapbereiche gleichzeitig verwalten, daher lassen sich Swapdateien bei Bedarf einfach "dazu schalten".

Das Anlegen und Anmelden einer Swapdatei wird vom Superuser auf der Kommandozeile erledigt. Ersteres geschieht mit dem Befehl

root# dd if=/dev/zero of=Dateiname bs=1024 count=Dateigrösse_in_Kilobyte

Er kopiert die Datei /dev/zero in den angegebenen Dateinamen. Als Dateigröße tragen Sie einen Wert zwischen 40 und 131073 Kilobyte ein. Die Angabe 131073 legt eine rund 128 Megabyte große Datei an, das ist der Höchstwert für Swapspeicher. Die kleinste verwaltbare Menge von 40 Kilobyte ist zum Anlegen eines Swapbereichs nicht gerade sinnvoll.

Durch den Befehl

root# mkswap Dateiname Dateigrösse_in_Kilobyte

erhält die Datei eine Swap-Kennzeichung. Erst dann lässt sich die Datei als Auslagerungsspeicher nutzen. Sie können sich diesen Vorgang vorstellen wie das Einrichten eines Dateisystems mit dem Befehl mkfs.

Bevor Sie die neue Datei im System anmelden, stellen Sie sicher, dass nur der Superuser Lese- und Schreibrecht darauf hat. Sonst wird Ihr System die falschen Rechte bemängeln bzw. mit Fehlermeldungen den Zugriff auf den neuen Swapbereich verweigern. Im Zweifelsfall legen Sie mit chmod 0600 Dateiname die korrekten Berechtigungen fest.

Zuletzt melden Sie den neuen Speicher mit dem Befehl

root# swapon Dateiname

beim System an. Ab sofort steht Ihnen der Swapspeicher zur Verfügung.

In Listing 1 sehen Sie die Rückmeldungen, die Linux produziert, während Sie eine Swapdatei erstellen. Zwischen den Befehlen zum Erstellen der Datei wird hier noch der Befehl sync abgesetzt. Dieser stellt sicher, dass alles auf die Festplatte geschrieben wird, bevor das nächste Kommando weitere Aktionen ausführt. Mit

root# swapoff Dateiname

melden Sie den zusätzlichen Swapspeicher beim System wieder ab, wenn Sie ihn nicht mehr benötigen.

Listing 1

Erstellen und Anmelden einer Swapdatei unter Linux

root@maxi:/ # dd if=/dev/zero of=swapdatei bs=1024 count=131073
 131073+0 Records ein
 131073+0 Records aus
 root@maxi:/ # sync
 root@maxi:/ # mkswap swapdatei 131073
 Auslagerungsbereich Version 1 mit einer Größe von 134213632 Bytes wird angelegt.
 root@maxi:/ # sync
 root@maxi:/ # chmod 0600 swapdatei
 root@maxi:/ # swapon -v swapdatei
 swapon für swapdatei

Glossar

mount

Mit diesem Kommando geschieht das Einbinden von Datenträgern (z.B. Festplattenpartitionen und CDs) in das Linux-Dateisystem. Dies ist normalerweise root vorbehalten. Ehe man eine gemountete CD oder Diskette wieder aus dem Laufwerk entnehmen kann, ist ein umount-Befehl zwingend nötig. Auch Festplattenpartitionen lassen sich so dem Zugriff unter Linux wieder entziehen.

Dateisysteme

Die Art und Weise, wie Daten auf einem Datenträger organisiert werden, unterscheidet sich für verschiedene Betriebssysteme und unterschiedliche Speichermedien. Beispielsweise ist unter Windows 9x in der Regel eine Erweiterung des DOS-Dateisystems FAT namens VFAT im Einsatz, während Linux seine Daten-Partitionen gern im ext2-Filesystem vorliegen hat. Auf Daten-CDs kommt hingegen iso9660 zum Einsatz.

Kilobyte

Speicher ist in Speicherzellen unterteilt, die entweder den Wert 0 oder 1 enthalten. Eine solche Speicherzelle bzw. die in ihr gespeicherte Information heißt Bit. Mehrere Bits können in Einheiten wie Byte, Wort oder Langwort zusammengefasst werden: Ein Byte beispielsweise entspricht acht Bit. Dies reicht aus, um einen (lateinischen) Buchstaben zu speichern. Das Wort "Platz" braucht demnach fünf Byte Speicherplatz. Eine Seite Text enthält ca. 1500 Zeichen und benötigt daher unformatiert ca. 1500 Byte zum Speichern. Ein Kilobyte (kB, kByte) entspricht übrigens nicht 1000, sondern 1024 Byte. Ein Kilobyte mal einem Kilobyte ergibt ein Megabyte (MB, MByte), das sind genau 1 048 576 Byte. Ein Gigabyte (GByte), also ein Kilobyte malgenommen mit einem Kilobyte mal einem Kilobyte, sind sehr viele Byte, nämlich 1 073 741 824.

/etc/fstab

Diese Konfigurationsdatei wird vom Programm mount benutzt, um beim Systemstart Festplatten(partitionen) u.a. Datenträger ins Dateisystem einzuhängen und Informationen für spätere Mount-Aktionen vorzuhalten. Die ersten vier Spalten in der Datei sind die interessantesten: Die erste gibt das einzubindende Gerät an, die zweite den Mountpoint, die dritte die Art des auf dem Datenträger verwendeten Dateisystems. Die mount-Optionen stehen in der vierten Spalte. Das folgende Beispiel hängt das Wurzel-Dateisystem auf der ersten Partition der ersten SCSI-Festplatte automatisch beim Booten ein, das ATAPI-(IDE-)CDROM hingegen (noauto) nicht. Allerdings haben normale Anwender später dank der Option user die Möglichkeit, mit dem Befehl mount /cdrom eine eingelegte Daten-CD nur lesbar ("read only") unter /cdrom zugänglich zu machen.

Mountpoint

Das Verzeichnis, unter dem die Dateien eines Datenträgers "eingehängt" werden, damit man auf sie unter Linux u.a. Unixbetriebssystemen zugreifen kann.

/dev/zero

Der Inhalt des Zero-Geräts besteht, wie der Name schon andeutet, aus (unendlich) vielen Nullen. Alles, was in diese Spezialdatei geschrieben wird, wird gelöscht.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare
Sinn?
fragender (unangemeldet), Mittwoch, 15. Dezember 2010 10:45:29
Ein/Ausklappen

Warum bitte werden auf der Startseite Artikel verlinkt, die (fast) 10 Jahre auf dem Buckel haben? Was ist die Intention dahinter? Für mich macht das keinen Sinn, da könnte auch der Kicker auf der Startseite unseren WM-Titel von 1990 feiern, das ist alles gefühlte Äonen her.


Bewertung: 162 Punkte bei 13 Stimmen.
Den Beitrag bewerten: Gut / Schlecht