- Gerätedateien
- Partitionen
- Dateisysteme
- POSIX-Verzeichnisbaum
- Einhängen von Dateisystemen
- Speicherplatzverbrauch auf den Dateisystemen
Gerätedateien
Der Zugriff auf Hardware erfolgt über Gerätedateien, die sich im Verzeichnis /dev befinden. Diese sehr speziellen Dateien werden noch einmal nach Block- und Zeichengeräten unterschieden, erkennbar an dem ersten Zeichen der Zeile, wenn die Datei mit dem Befehl ls -l angezeigt wird. Ein b steht für ein Blockgerät, ein c für ein Zeichengerät.Ein Blockgerät verfügt über einen Puffer und lädt mit einem Schlag einen großen Speicherblock. Festplatten sind typische Blockgeräte. Zeichengeräte liefern die Daten nur einzeln, wie beispielsweise eine Tastatur oder Maus. Das Warten auf einen Block würde die Reaktion verzögern.
Die Gerätedateien stellen nicht nur den Zugriff auf die Geräte dar, sonfern enthalten auch den Zugriff auf den Treiber.
Die Nomenklatur für Festplatten oder ähnliche Geräte wie USB-Sticks:
- Die Dateien für die Festplatten beginnen mit sd (ursprünglich SCSI-Drive).
- Für jede physikalische Platte gibt es einen eigenen Buchstaben, beginndend mit a, also steht /dev/sda für die erste Festplatte des Systems.
- Die Festplatten sind in Partitionen aufgeteilt. Diese sind durchnummeriert, beginnend bei 1, also /dev/sda1 für die erste Partition der ersten Platte.
Partitionen
Eine Festplatte kann in Partitionen aufgeteilt werden. Mindestens eine muss es geben. Bei mehreren Partitionen können beispielsweise mehrere Betriebssysteme parallel installiert werden oder auch Datenbereiche von den Betriebssystembereichen getrennt werden.Für die aktuellen Betriebssysteme sind zwei Arten von Partitionstabellen relevant: MBR und GPT.
- MBR (Master Boot Record) aus MS-DOS-Zeiten
- Maximal vier Partitionen.
- Später erweitert und erweiterte Partitionen.
- In den erweiterten Partitionen konnten mehrere logische Partitionen angelegt werden.
- MBR funktioniert nur auf Festplatten bis 2 TByte Größe
- Tool: fdisk, aber auch gparted
- GPT (GUID Partition Table)
- Beliebig viele Partitionen, beliebige Festplattengröße
- Setzt voraus, dass der Computer GPT unterstützt (UEFI).
- Tool: gparted. Das Tool fdisk funktioniert nicht.
Dateisysteme
Eine Partition enthält keine Struktur, um Dateien oder Verzeichnisse anlegen, bearbeiten oder lesen zu können. Dazu bedarf es eines Dateisystems. Ein Dateisystem ist betriebssystemabhängig. Beispiele:- FAT ist das Dateisystem, das MS-DOS und die ersten Versionen von Windows verwendete.
- NTFS verwendet das aktuelle Windows.
- Linux verwendet ext4. Wie man ahnt, gab es ext, ext2 und ext3. Es gibt auch andere Dateisysteme für Linux, die aber derzeit nicht relevant sind.
Erstellen
Jedes Betriebssystem erstellt normalerweise sein eigenes Dateisystems. Bei Linux erledigt dies der Befehl mkfs mit der Partition als Parameter.# mkfs /dev/sdc1Mithilfe von Optionen kann Linux auch andere Dateisysteme anlegen. Mehr Informationen liefert der Befehl man mkfs.
Prüfen und Reparieren
Beim Booten prüft Linux, ob die Dateisysteme in Ordnung sind. Das kann auch von Hand mit dem Befehl fsck ausgeführt werden. Das Programm kann Dateisysteme auch reparieren. Dazu muss man ggf. weitere Optionen verwenden, die man mit man fsck erfährt. Wenn eine Reparatur notwendig ist, sollte man vor deren Start gefährdete Dateien in Sicherheit bringen.Sollte fsck bei einem Reparaturversuch vereinsamte Datenblöcke aufspüren, die es keinen Dateien zuordnen kann, legt es diese in einem Verzeichnis lost+found ab.
fsck kann nur auf Dateisysteme angewendet werden, die nicht in den Verzeichnisbaum eingehängt sind.
POSIX-Verzeichnisbaum
Im Gegensatz zu Windows oder MacOS sehen Anwendungsprogramme weder Laufwerke noch Dateisysteme. Es gibt nur einen Verzeichnisbaum, in dem die Dateisysteme bestimmten Verzeichnissen und deren Unterverzeichnissen vom Administrator zugewiesen werden. Damit ist es möglich, nachträglich Festplattenplatz hinzuzufügen, ohne dass das Benutzer oder Anwendungsprogramme merken.Die Verzeichnisse sind nach dem in POSIX festgelegten Filesystem Hierarchy Standard (FHS) strukturiert. Sie finden Sie auf jedem UNIX- oder Linux-System in dieser Form wieder.
- / Wurzel des Verzeichnisbaums.
- /home: Für jeden Benutzer gibt es hier einen Ordner. Nur dort (und auf /tmp) darf ein Benutzer schreiben.
- /var: Datenbereich für Server oder lokale Systemdateien, beispielsweise Logdateien (/var/log). Hier legen Serverprogramme typischerweise ihre Daten ab.
- /usr/bin: In diesem Verzeichnis sind die Anwendungsprogramme installiert. Prinzipiell ist es schreibgeschützt. Nur bei einer Installation (durch den Administrator root) wird der Schreibschutz aufgehoben. Auf diese Methode ist der Angriff auf Programme nur schwer möglich.
- /usr/lib: Hier installieren die Anwendungsprogramme ihre dynamischen Bibliotheken oder andere Ressourcen ab. Auch dieses Verzeichnis ist chreibgeschützt.
- /etc: In diesem Verzeichnis legen sowohl das System als auch die Anwendungsprogramme ihre systemweit gültigen Konfigurationsdateien ab. In vielen Fällen können Benutzer in ihrem Home-Verzeichnis Konfigurationen für sich anpassen. Diese Konfigurationsdateien oder -verzeichnisse beginnen meist mit einem Punkt.
- /bin: In diesem Verzeichnis lagen ursprünglich ein Minimalsatz von Programmen, die der Administrator bei einem Systemcrash benötigte, um das System wieder lauffähig zu machen. Heutzutage ist es meist ein symbolischer Link auf /usr/bin.
- /usr/sbin: Befehle, die root zur Verfügung stehen. /sbin ist heutzutage ein symbolischer Link auf /usr/sbin.
- /tmp: Ein Ort für temporäre Dateien. Das Verzeichnis steht allen zur Verfügung und wird meist als RAM-Disk realisiert. Entsprechend sind die enthaltenen Dateien beim nächsten Booten vermutlich weg.
- /boot: Dateien und Programme, die zum Booten erforderlich sind.
- /dev: Gerätedateien. Jede Hardware ist als Datei zugreifbar.
Einhängen von Dateisystemen
Die Dateisysteme werden in den Standardverzeichnisbaum eingehängt. Die Abbildung zeigt das Einhängen mehrerer Dateisysteme in einen Verzeichnisbaum.
- Das Dateisystem /dev/sda1 wird auf dem Wurzelverzeichnis eingehängt.
- Das Dateisystem /dev/sda5 wird auf dem Verzeichnis /home eingehängt.
- Das Dateisystem /dev/sdb1 wird auf dem Verzeichnis /home/johannes eingehängt.
- Das Dateisystem /dev/sdb2 wird auf dem Verzeichnis /var eingehängt.
Einhängen mit mount
Mit dem Befehl mount wird ein Dateisystem in den Verzeichnisbaum eingebunden. Der folgende Befehl hängt das Dateisystem /dev/sda5 unter dem Verzeichnis /mnt ein:
# mount /dev/sda5 /mnt
Das Verzeichnis /mnt existiert immer und sollte für kurzfristiges Einhängen für Wartungsarbeiten immer frei bleiben.
Externe Medien wie USB-Sticks oder externe Festplatten werden unter /media/username/medianame automatisch eingehängt, wenn ein Benutzer angemeldet ist.
Das Verzeichnis, in das ein Dateisystem eingehängt wird, muss bereits existieren, bevor es eingehängt wird. Alle Dateien, die in diesem Verzeichnis liegen, werden durch das Einhängen ausgeblendet. An dieser Stelle erscheinen die Dateien und Verzeichnisse des eingehängten Dateisystems. Nach dem Aushängen erscheinen die ausgeblendeten Dateien und Verzeichnisse wieder. Sinnvollerweise legt man also keine Dateien oder Verzeichnisse in Verzeichnissen an, die später als Einhängepunkt dienen sollen.
Mit dem Befehl umount (nicht unmount!) wird ein Dateisystem wieder ausgehängt. Als Parameter kann sowohl das Dateisystem oder der Pfad sein.
mount wirkt nur bis zum nächsten Reboot.
Kontrolle der eingehängten Dateisysteme
Mit dem Befehl df, der eigentlich die Auslastung der Dateisysteme anzeigt, kann man auch sehen, welche Dateisysteme unter welchen Verzeichnissen eingehängt sind.Dauerhaft einhängen: /etc/fstab
Um die Dateisysteme nicht nach jedem Reboot neu einhängen zu müssen, wird in der Datei /etc/fstab festgelegt, welches Dateisystem in welchem Verzeichnis beim Booten eingehängt wird. Das heißt, dass sie eine Folge von mount-Befehlen beschreibt, die beim Booten durchgeführt werden.Vorsicht: Werden in der Datei /etc/fstab falsche Einträge gemacht, wird der Bootvorgang gestoppt, sobald ein Dateisystem oder ein Verzeichnis nicht verfügbar sind oder eine Option unerfüllbar ist. Das System landet im Single-User-Modus. Es gibt nur einen Prompt, den der Administrator root nutzen kann, um beispielsweise mit dem Kommando nano /etc/fstab die Datei noch einmal zu korrigieren.
Die Datei /etc/fstab wird durch mehrere Spalten gekennzeichnet.
- Die erste beschreibt das Dateisystem.
- Die zweite Spalte gibt das Verzeichnis an, in dem das Dateisystem eingehängt werden soll.
- Die dritte Spalte gibt den Typ des Dateisystems an. In der Regel wird das ext4 sein. Hier kann mit swap eine Swap-Partition angegeben werden, aber auch Netzwerkdateisyste wie etwa NFS oder SAMBA.
- Die vierte Spalte gibt die Optionen an. So kann das Dateisystem einem Benutzer zugeordnet werden oder auch für späteres Einhängen angemeldet werden. Gibt es keine Optionen, wird default angegeben.
- Die fünfte Spalte bestimmt, ob das Dateisystem bei der Datensicherung durch dump einbezogen wird.
- Die sechte Spalte legt fest, in welcher Reihenfolge die Dateisysteme beim Booten durch fsck geprüft werden sollen. Eine 0 gibt an, dass die Prüfung nicht erfolgen soll.
Nähere Informationen erhält man mit dem Befehl man fstab.
Die folgende /etc/fstab würde eine Zuordnung der Dateisysteme zu Verzeichnissen bewirken, wie sie in der obigen Abbildung zu sehen ist.
# /etc/fstab /dev/sda1 / ext4 defaults 1 1 /dev/sda5 /home ext4 defaults 1 2 /dev/sdb1 /home/johannes ext4 defaults 1 3 /dev/sdb2 /var ext4 defaults 1 4
UUID statt Gerätedateien
Bei heutigen Installationen von Linux findet man in der Datei /etc/fstab häufig nicht mehr die Gerätedateien der Dateisysteme, sondern stattdessen deren UUIDs vor.# /dev/sdb1 /home ext4 ... UUID=472bd8b8-5110-448b-b434-edf2b84db5e0 /home ext4 ...Der Hintergrund ist, dass die Reihenfolge der Festplatten leicht geändert werden kann, wenn man versehentlich die SATA-Kabel vertauscht. Dann ist die Festplatte /dev/sda plötzlich die Festplatte /dev/sdb und umgekehrt. Danach wäre ein Booten unmöglich.
Anstatt sich darauf zu verlassen, dass Festplatten immer in der gleichen Reihenfolge eingebaut sind, verwendet man einen eindeutigen Identifier für jedes Dateisystem - eine UUID (Universally Unique Identifier). Auf diese Weise greift das System beim Booten nicht blindlings auf die Festplattenpartition, sondern sucht, auf welcher Partition sich ein Dateisystem mit der genannten UUID befindet.
Um herauszufinden, welches Dateisystem welche UUID hat, kann man den Befehl blkid verwenden:
# blkid /dev/sda6: UUID="20f6df1c-5702-4c9f-a76d-b4ed380fd5b7" ... /dev/sda8: UUID="156e616f-3094-41e4-b72a-7245848e8224" ... /dev/sda9: UUID="cc99dc54-f907-4317-be6e-93a36e4ffc5b" ... /dev/sda5: UUID="c34e5165-59c9-4bff-97b7-b70e3789ca45" ... /dev/sda7: UUID="a693e514-d040-4715-ab3a-861d9fbb1989" ... /dev/sdb1: UUID="8087a09f-97f2-4fa9-8f0b-abddbc453c3c" ... /dev/sdc1: LABEL="TrekStor" UUID="5E76-D471" TYPE="vfat"
Speicherplatzverbrauch auf den Dateisystemen
Dateisysteme enthalten natürlich Daten in Dateien und Verzeichnissen. Und es ist die Natur der EDV, dass diese immer wachsen. Als Administrator will man wissen, wann ein Dateisystem überläuft und das natürlich am besten, bevor es passiert.
Freier Platz: df
Mit dem Befehl df kann man ermitteln, welche Dateisysteme wie weit gefüllt sind. Die Option -h, die hier verwendet wird, gibt die Werte in möglichst großen Einheiten an, also beispielsweise M für Megabyte oder G für Gigabyte an. Ohne diese Option zeigt die df die Größe in KByte an, was zu eifrigem Ziffernzählen führt.
$ df -h Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf udev 3,8G 0 3,8G 0% /dev tmpfs 781M 1,9M 779M 1% /run /dev/sda4 64G 22G 39G 36% / tmpfs 3,9G 172K 3,9G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup /dev/sda1 96M 29M 68M 31% /boot/efi /dev/sda6 538G 404G 107G 80% /home tmpfs 781M 44K 781M 1% /run/user/1000Sie sehen hier, dass das Dateisystem, auf dem sich das Wurzelverzeichnis befindet, nur zu 36 Prozent ausgelastet ist. Das ist in diesem Fall das Betriebssystem und alle anderen Verzeichnisse, bis auf das Verzeichnis /home, das auf dem Dateisystem /dev/sda6 liegt. Dieses ist bereits zu 80 Prozent gefüllt. Hier wird sich also über kurz oder lang die Frage stellen, ob man das Dateisystem aufräumt oder eine größere Festplatte spendiert.
Festplatten sollten nämlich möglichst nicht mehr als zu 90 Prozent belegt sein. Das kann leicht zur Fragmentierung führen. Größere Dateien können dann nicht mehr am Stück geschrieben werden, wenn ein so größer Block nicht mehr vorliegt. Sie werden dann auf die Löcher verteilt, die vorherige Löschungen hinterlassen haben.
Der Schrecken der Fragmentierung, der unter Windows-Benutzer gern geteilt wurde, ist allerdings nicht gar so schrecklich. Wird wieder Platz in größeren Mengen frei, reguliert es sich üblicherweise mit der Zeit von selbst. Bei SSD-Laufwerken ist die Fragmentierung sogar unerheblich, weil die Einbußen vor allem durch die mechanischen Spurwechsel der magnetischen Festplatten verursacht wurden.
Suche nach großen Dateien
Auch wenn Festplatten immer billiger werden, ist es durchaus sinnvoll, mal zu prüfen, wo die fetten Dateein liegen, die das Dateisystem füllen.Der Befehl du (disk usage) ermittelt die Belegung von Dateien. Sinnvollerweise wird er mit der Option -s verwendet. Dadurch wird ein untersuchtes Verzeichnis rekursiv durchlaufen und deren Unterstrukturen zu einer Gesamtdatenmenge aufsummiert.
$ du -s * 83820 beruf 276 Familie 193336 hs 36 Korrespondenz 4668 musik 4 signatur.txt 51620 Songs 1043028 texDieser Befehl bearbeitet durch den Stern alle Dateien und Verzeichnisse des aktuellen Verzeichnisses. Wenn Sie nach großen Dateien suchen, würde das Verzeichnis tex der heißeste Kandidat sein. Interessant dürften dann noch hs und beruf sein. Dagegen dürfte das Duchsuchen von Korrespondenz und Familie Zeitverschwendung sein.