In der Juni-Ausgabe des IT-Administrator dreht sich alles um den Schwerpunkt 'Monitoring & Dokumentation'. So zeigen wir Ihnen, wie die Netzwerküberwachung in ... (mehr)

Dateisystem-Layer

Das Dateisystem stellt der Anwendung einen Namensraum zur Verfügung, der die physische Struktur der Blockgeräte verbirgt. Anstatt mit Blocknummern zu hantieren, erfolgt der Zugriff auf die gewünschten Daten mittels Datei- und Verzeichnisnamen. Metainformationen zu diesen Objekten gehören ebenfalls zu den Informationen, die ein Dateisystem verwaltet. Dazu zählen beispielsweise Größenangaben der Objekte, Besitz- und Zugriffsrechte, Zeitstempel und viele andere Details.

Unter Linux existiert eine Vielzahl unterschiedlichster Dateisysteme mit teilweise gravierenden Unterschieden. Der Linux-Kernel stellt mittels des Virtual Filesystem (VFS) eine zusätzliche Schicht zur Verfügung, die die Unterschiede der einzelnen Dateisysteme abstrahiert. Diese zusätzliche Schicht ist sowohl nach unten, also Richtung Dateisystem, als auch nach oben, Richtung aufrufender Prozess, implementiert. Jedes Dateisystem muss eine Schnittstelle zum VFS anbieten.

Auf dem gleichen Layer ist ebenfalls der sogenannte Page Cache angesiedelt. Dieser im RAM vorgehaltene Cache stellt Daten zur Verfügung, die entweder zuvor aus dem Dateisystem gelesen wurden oder dort abgelegt werden müssen. Der Name beruht auf der Tatsache, dass der Zugriff auf Block-Geräte über ein seitenweises (page) Memory-Mapping funktioniert und der Cache daher ebenfalls seitenweise organisiert ist. Da sich der Cache im RAM befindet, hat dieser wesentlich bessere Zugriffszeiten als ein Block-Gerät und die Daten werden schneller eingelesen beziehungsweise optimiert auf das Block-Gerät geschrieben. Mittels read-ahead- und write-behind-Operationen ist der Betriebssystem-Kernel dabei in der Lage, vorausschauend Daten zu puffern (read-ahead) beziehungsweise erst dann eine Schreib-Operation auf der Festplatte durchzuführen, wenn sich eine gewisse Anzahl von zusammenhängenden Blöcken ergeben hat (write-behind).

Block-Layer

Mittels des Block-Layers stellt der Betriebssystem-Kernel eine einheitliche Sicht auf sämtliche Block-Geräte zur Verfügung und abstrahiert diese. Für die Anwendung spielt es somit keine Rolle, ob die Daten auf eine Festplatte oder beispielsweise einen Flash-Speicher geschrieben werden. Die Hauptaktivität auf diesem Layer besteht darin, die Daten aus den Block-Strukturen des Dateisystem-Layers in einer optimierten Reihenfolge an einen Device-Treiber im nächsten Layer zu transportieren.

Hierfür sammelt der I/O-Scheduler sämtliche Requests in einer sogenannten Request-Queue, bevor diese in einer sortierten Reihenfolge in die Dispatch-Queue übertragen werden. Diese Queue wird dann vom Device-Treiber abgearbeitet. Wie bereits erwähnt, stellt das Schreiben und Lesen von Daten auf/von einem Block-Gerät eine recht teure Operation dar und ist im Vergleich zu anderen Subsystemen (RAM) teuer. Es gilt daher, die Anzahl der Positionierungsrequests der Schreib-/Leseköpfe einer Festplatte zu minimieren. Daher ist es sinnvoll, die Daten in einer sortierten Reihenfolge an den Device-Treiber weiterzuleiten anstatt diese einfach so weiterzureichen, wie sie anfallen. Der Linux-Kernel bietet unterschiedliche I/O-Scheduler an, um die angefallenen Daten zu sortieren. Jeder dieser Scheduler besitzt hierfür unterschiedliche Algorithmen, die für diese Aufgabe zum Einsatz kommen. Aktuell existieren die Scheduler NOOP, Deadline und CFQ. Bis Kernel 2.6.33 war ebenfalls noch der sogenannte Anticipatory Scheduler vorhanden. Welcher Scheduler am besten passt, ist zu großen Teilen davon abhängig, welcher Workload auf dem System vorhanden ist.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023