suchen
HeimComputer-TutorialsComputerwissenMöchten Sie herausfinden, wie das Linux-Dateisystem funktioniert?

Möchten Sie herausfinden, wie das Linux-Dateisystem funktioniert?

Feb 20, 2024 am 09:54 AM
linux目录文件系统数据访问持久化存储

Möchten Sie herausfinden, wie das Linux-Dateisystem funktioniert?

Das Linux-Dateisystem ist eine Kernkomponente des Betriebssystems, und sein Betriebsmechanismus ist das, was wir Programmierer verstehen und beherrschen müssen. Die Festplatte stellt den grundlegendsten dauerhaften Speicher für das System bereit, und das Dateisystem stellt alle Dateien im System bereit Die Basis der Festplatte. Unter Linux ist alles eine Datei. Nicht nur gewöhnliche Dateien und Verzeichnisse, sondern auch Blockgeräte, Sockets, Pipes usw. müssen über ein einheitliches Dateisystem verwaltet werden. Heute sprechen wir gemeinsam über die Frage: Wie funktionieren Festplatten und Dateisysteme?

Indexknoten und Verzeichniseinträge

Im Linux-Dateisystem umfassen die Metadaten einer Datei: Verzeichniseinträge, Indexknoten und Datenblöcke.

  • Verzeichniseintrag: Wird als Dentry bezeichnet und dient zum Aufzeichnen des Dateinamens, des Indexknotenzeigers und der Zuordnung zu anderen Verzeichniseinträgen. Mehrere zugehörige Verzeichniseinträge bilden die Verzeichnisstruktur des Dateisystems. Ein Verzeichniseintrag ist eine vom Kernel verwaltete Speicherdatenstruktur und wird daher häufig als Verzeichniseintragscache (Cache) bezeichnet.
  • Indexknoten: Wird als Inode bezeichnet und dient zum Aufzeichnen der Metadaten der Datei, einschließlich Inode-Nummer, Dateigröße, Zugriffsberechtigungen, Änderungsdatum, Datenspeicherort, Anzahl der Links usw. Die Informationen zum Indexknoten werden auf der Festplatte gespeichert zur Speicherung, belegt den Speicherplatz.
  • Datenblock: Wird als Block bezeichnet, in dem Dateidaten gespeichert werden. Die kleinste Speichereinheit einer Festplatte wird als Sektor bezeichnet. Jeder Sektor speichert 512 Byte, was 0,5 KB entspricht. Wenn das Betriebssystem die Festplatte liest, ist dies zu ineffizient liest mehrere Sektoren kontinuierlich gleichzeitig, dh liest jeweils einen „Block“. Dieser aus mehreren Sektoren bestehende „Block“ ist die kleinste Dateizugriffseinheit. „Block“-Größe, am häufigsten ist 4 KB (acht Sektoren).

Um den Dateizugriff zu beschleunigen, werden Indexknoten normalerweise in den Speicher geladen und die Festplatte beim Formatieren in drei Speicherbereiche unterteilt: Superblock, Indexknotenbereich und Datenblockbereich.

  • Super Block wird zum Speichern detaillierter Informationen des Dateisystems verwendet, wie z. B. die Anzahl der Blöcke, die Blockgröße, freie Blöcke usw.
  • Indexknotenbereich, der zum Speichern von Indexknoten verwendet wird.
  • Datenblockbereich, der zum Speichern von Datei- oder Verzeichnisdaten verwendet wird.

Virtuelles Dateisystem

Das virtuelle Dateisystem (VFS, Virtual File System) des Linux-Systems ist eine wichtige Abstraktionsschicht, die Benutzern und Anwendungen eine einheitliche Dateisystemschnittstelle bietet und ihnen den einheitlichen Zugriff auf verschiedene Arten von Dateisystemen ermöglicht Sie müssen sich um die Implementierungsdetails des zugrunde liegenden Dateisystems kümmern.

Sowohl das Benutzerprogramm als auch die Glibc-Bibliothek gehören zum Benutzerbereich, und Dateioperationen werden durch Aufrufen von Funktionen der Systemaufrufschicht (SCI) abgeschlossen. Bei diesen Funktionen handelt es sich um vom Linux-Kernel bereitgestellte Schnittstellen, über die Benutzer Vorgänge vom System anfordern können. Beispielsweise ruft der Befehl cat im System die Funktion open() auf, um die Datei zu öffnen, ruft dann die Funktion read() auf, um den Dateiinhalt zu lesen, und ruft schließlich die Funktion write() auf, um den Dateiinhalt an die Konsole auszugeben . Gängige Dateisystemtypen können in mehrere große Kategorien unterteilt werden.

  • Basierend auf der lokalen Festplatte: EXT3, EXT4, XFS, OverlayFS usw. Das Merkmal dieses Dateisystemtyps besteht darin, dass die Daten direkt auf der lokal auf dem Computer montierten Festplatte gespeichert werden, mit guter Leistung und ohne Netzwerk-E/A-Zugriffsverbrauch.
  • Basierend auf Netzwerkdateisystemen: NFS, CIFS/SMB, CephFS, GlusterFS usw. Das Merkmal dieses Dateityps besteht darin, dass Benutzer über das Netzwerk auf Dateien zugreifen und diese verwalten können. Verteilung, Cross-Plattform, Flexibilität und Skalierbarkeit sind ihre größten Vorteile.
  • Speicherbasierte Dateisysteme: tmpfs, ramfs, /proc usw. Diese speicherbasierten Dateisysteme werden normalerweise für bestimmte Zwecke verwendet, z. B. temporäre Dateispeicherung, Caching, schnellen Datenzugriff usw. Sie bieten eine leistungsstarke Lösung zum Lesen und Schreiben von Dateien im Speicher, müssen sich aber auch der Speicherbeschränkungen und der Datenvolatilität bewusst sein.

Datei-E/A

Wir partitionieren und formatieren die Festplatte, um verschiedene Arten von Dateisystemen zu erstellen, die in bestimmte Verzeichnisse im VFS von Linux gemountet werden müssen, bevor sie vom System verwendet werden können. Es gibt verschiedene E/A-Typen für Dateilese- und -schreibvorgänge, und das Anwendungsprogramm wählt je nach Bedarf die geeignete Methode aus.

Gepufferte vs. ungepufferte E/A

  • Die sogenannte „Keine Pufferung“ bedeutet nicht, dass der Kernel keine Pufferung bereitstellt, sondern nur einfache Systemaufrufe, keine Funktionsbibliotheksaufrufe. Der Systemkernel stellt einen Blockpuffer zum Lesen und Schreiben auf die Festplatte bereit. Wenn die Schreibfunktion zum Schreiben von Daten verwendet wird, wird der Systemaufruf direkt aufgerufen, um die Daten in den Blockpuffer zu schreiben und in die Warteschlange zu stellen Bei einer bestimmten Menge werden die Daten in die Warteschlange gestellt. Daher bedeutet die sogenannte ungepufferte E/A, dass der Prozess keine Pufferfunktion bereitstellt. Bei jedem Aufruf der Schreib- oder Lesefunktion wird diese direkt vom System aufgerufen. (Vom Kernel gepuffert).
  • Gepufferte E/A bedeutet, dass der Prozess die Eingabe- und Ausgabeströme verbessert und einen Stream-Puffer bereitstellt. Wenn Sie die Schreibfunktion zum Schreiben von Daten verwenden, werden die Daten zunächst in den Stream-Puffer geschrieben. Wenn bestimmte Bedingungen erreicht sind, z. B. wenn der Stream-Puffer voll ist, werden die Daten sofort an den vom Kernel bereitgestellten Blockpuffer gesendet dann über den Blockpuffer auf die Festplatte geschrieben. (doppelte Pufferung)
  • Daher sind beim Schreiben der gleichen Datenmenge auf die Festplatte für gepufferte E/A weniger Systemaufrufe erforderlich als für ungepufferte E/A.

Direkte E/A und indirekte E/A

  • Direkte E/A: Das Anwendungsprogramm greift direkt auf die Festplattendaten zu, ohne den Kernel-Puffer zu durchlaufen. Der Zweck besteht darin, die Datenkopie vom Kernel-Puffer in den Cache des Benutzerprogramms zu reduzieren.
  • Indirekte E/A: Wenn Dateien gelesen oder geschrieben werden, müssen sie zuerst den Seitencache des Systems durchlaufen und dann vom Kernel oder zusätzlichen Systemaufrufen auf die Festplatte geschrieben werden.
  • Wenn sich bei direkter E/A die Daten, auf die zugegriffen wird, nicht im Anwendungscache befinden, werden die Daten jedes Mal direkt von der Festplatte geladen, und die Effizienz dieses direkten Ladens ist langsamer. Für Anwendungen wie Datenbankverwaltungssysteme ist es jedoch wahrscheinlicher, dass sie ihren eigenen Caching-Mechanismus wählen, da Datenbankverwaltungssysteme die in der Datenbank gespeicherten Daten häufig besser kennen als das Betriebssystem und direkte E/A besser geeignet ist.

Blockierende E/A und nicht blockierende E/A

  • Blockieren von E/A: Der Anwendungsprozess blockiert beim Aufrufen einer E/A-Operation erst, nachdem er darauf gewartet hat, dass die Daten vorbereitet und in den Puffer des Anwendungsprozesses kopiert werden. Die Merkmale sind: geringe Implementierungsschwierigkeiten, einfache Anwendungsentwicklung und geeignet für die Entwicklung von Netzwerkanwendungen mit geringer Parallelität.
  • Nicht blockierende E/A: bedeutet, dass die Anwendung, nachdem sie einen E/A-Vorgang ausgeführt hat, den aktuellen Thread nicht blockiert und weiterhin andere Aufgaben ausführen und dann das Ergebnis des Aufrufs durch Abfrage oder Ereignisbenachrichtigung erhalten kann. Die Merkmale sind: relativ komplex. Geeignet für die Entwicklung von Netzwerkanwendungen, die ein geringes Maß an Parallelität aufweisen und keine zeitnahe Reaktion erfordern

Synchrone und asynchrone E/A

  • Synchronisierte E/A: bedeutet, dass die Anwendung, nachdem sie eine E/A-Operation ausgeführt hat, warten muss, bis die gesamte E/A abgeschlossen ist, bevor sie die E/A-Antwort erhalten kann.
  • Asynchrone E/A: bedeutet, dass die Anwendung, nachdem sie den E/A-Vorgang ausgeführt hat, nicht auf den Abschluss und die Antwort nach Abschluss warten muss, sondern mit der Ausführung fortfahren kann. Nachdem diese E/A abgeschlossen ist, wird die Antwort in Form einer Ereignisbenachrichtigung an die Anwendung übermittelt.

Einige allgemeine Kenntnisse über Dateien

Auf der Festplatte ist noch viel Speicherplatz frei und es ist nicht genügend Platz für neue Dateien und Verzeichnisse vorhanden.

  • Ideen zur Fehlerbehebung: Es besteht eine hohe Wahrscheinlichkeit, dass zu viele kleine Dateien vorhanden sind und die Inodes aufgebraucht sind. Sie können df -i verwenden.

Die Statistiken zur Festplattennutzung zwischen du und df sind inkonsistent.

  • du zählt die Größe jeder vom Dateisystem aufgezeichneten Datei und akkumuliert dann die Gesamtgröße, die über das Dateisystem ermittelt wird. df liest hauptsächlich Festplattennutzungsinformationen aus dem Superblock (Superblock). Was df erhält, ist die Nutzung von Festplattenblöcken. Diese Situation wird höchstwahrscheinlich dadurch verursacht, dass eine Datei gelöscht wird, sie jedoch von einem anderen Prozess verwendet wird (der das Handle besitzt), das über lsof grep gelöscht gefunden werden kann. Wenn der Prozess stoppt oder abgebrochen wird, werden diese Leerzeichen freigegeben.

Wenn wir die Festplattenkapazität abfragen, warum ist die Größe von „Verwendet+Verfügbar“ immer kleiner als die Gesamtkapazität (SIze)?

  • Um Notfälle zu verhindern, reserviert das Linux ext-Dateisystem einen Teil des Festplattenspeichers. Der spezifische reservierte Wert kann über tune2fs -l [dev_name] | (dev_name) angezeigt werden , der hier reserviert ist, wird von df in den verwendeten Speicherplatz berechnet, was zu inkonsistenten Statistiken zwischen df und du führt. Wenn Sie die Größe des reservierten Speicherplatzes anpassen müssen, können wir tune2fs -m [size] [dev_name] verwenden, um Anpassungen vorzunehmen.

Das obige ist der detaillierte Inhalt vonMöchten Sie herausfinden, wie das Linux-Dateisystem funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:每日运维. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Must -Know -Fixes - Kennwort auf dem Anmeldebildschirm nicht eingebenMust -Know -Fixes - Kennwort auf dem Anmeldebildschirm nicht eingebenApr 24, 2025 am 12:50 AM

Kennwort im Anmeldebildschirm nicht eingeben, Windows 7/8/10/11? Warum tritt dieses Problem auf? Was sollten Sie tun, wenn Sie kein Passwort auf dem Anmeldebildschirm eingeben können? Dieser Beitrag von Php.cn bietet Ihnen mehrere mögliche Lösungen für diese Angelegenheit.

[Gelöst] macOS kann nicht überprüfen, ob diese App frei von Malware ist - Minitool[Gelöst] macOS kann nicht überprüfen, ob diese App frei von Malware ist - MinitoolApr 24, 2025 am 12:49 AM

Haben Sie auf die Benachrichtigung „macOS können Sie nicht überprüfen, ob diese App frei von Malware ist“ bei der Ausführung von Apps auf Mac? Dieser Beitrag von Php.cn zeigt Ihnen, wie Sie dieses Problem lösen können.

3 Ziellösungen für den Fehlercode 2000-0415 auf Dell3 Ziellösungen für den Fehlercode 2000-0415 auf DellApr 24, 2025 am 12:48 AM

Der Fehlercode 2000-0415 ist ein kleines Problem, das mit bestimmten Kabel Ihres Computers verbunden ist. Es ist in Dell -Geräten ziemlich häufig. Wenn Sie diesen Fehler momentan erhalten, sind die Tipps und Tricks dieses Beitrags auf der PHP.CN -Website für Sie hilfreich.

Computer friert ein, aber die Maus bewegt sich immer noch - ergebnisgesteuerte MethodenComputer friert ein, aber die Maus bewegt sich immer noch - ergebnisgesteuerte MethodenApr 24, 2025 am 12:47 AM

Haben Sie jemals auf eine Situation gestoßen, in der der Computer gefriert, aber die Maus immer noch bewegt? Viele Menschen sind von diesem Problem beunruhigt und entscheiden sich dafür, ihre Computer gewaltsam zu schließen. Tatsächlich gibt es andere Methoden, die Ihnen helfen können, diese PR zu lösen

Windows 7 Ultimate SP1 kostenloser Download und Installation (32/64 Bit) - MinitoolWindows 7 Ultimate SP1 kostenloser Download und Installation (32/64 Bit) - MinitoolApr 24, 2025 am 12:46 AM

Einige Benutzer verwenden immer noch die Windows 7 Edition und möchten Windows 7 Ultimate SP1 herunterladen. Sie wissen jedoch nicht, wo sie die ISO -Datei finden sollen. Mach dir keine Sorge! In diesem Beitrag von Php.cn werden Sie angeben, wie Sie Windows 7 Ultimate SP1 kostenlos herunterladen und installieren.

Funktioniert Ihr Spectrum DVR nicht? Probieren Sie diese Korrekturen aus! - MinitoolFunktioniert Ihr Spectrum DVR nicht? Probieren Sie diese Korrekturen aus! - MinitoolApr 24, 2025 am 12:45 AM

Was werden Sie tun, wenn es einen Konflikt zwischen Ihren bevorzugten Fernsehsendungen und Arbeitstermine gibt? Spectrum DVR kann Ihnen helfen! Sie können Ihre Lieblingsspiele oder Fernsehsendungen aufnehmen und sie ansehen, wann immer Sie möchten. Wenn Sie von Spectrum DV geplagt werden

So aktivieren Sie die Auswahl -Kontrollkästchen in Datei Explorer Windows 10 - MinitoolSo aktivieren Sie die Auswahl -Kontrollkästchen in Datei Explorer Windows 10 - MinitoolApr 24, 2025 am 12:44 AM

Haben Sie eine Idee, wie Sie Kontrollkästchen im Datei -Explorer anzeigen oder entfernen können? Wenn nicht, sind Sie am richtigen Ort gekommen. Dieses Papier auf Php.cn zeigt Ihnen einige praktikable Möglichkeiten, um Auswahlkontrollkästchen im Datei -Explorer zu aktivieren.

5 Korrekturen für VSS -Fehler 0x800423f4 Bei Sicherung in Win10/115 Korrekturen für VSS -Fehler 0x800423f4 Bei Sicherung in Win10/11Apr 24, 2025 am 12:43 AM

VSS -Fehler 0x800423f4 tritt beim Erstellen eines Systembildes unter Windows 11/10 auf. Wenn Sie von diesem nervigen Problem geplagt sind, befolgen Sie die von Php.cn gesammelten Korrekturen, um es auszurotten. Außerdem ist professionelle Windows -Backup -Software wie Php.cn ShadowMaker Intro

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),