Implementierung von Linux-Dateisystemvorgängen

Implementierung von Linux-Dateisystemvorgängen

In dieser Lesenotiz werden hauptsächlich die Vorgänge im Zusammenhang mit dem Dateisystem dokumentiert.

Festplatten- und Verzeichniskapazität

Die Gesamtdaten der Festplatte befinden sich im Superblock, die Kapazität jeder einzelnen Datei wird jedoch im Inode aufgezeichnet. Um die Festplattennutzung anzuzeigen, werden üblicherweise zwei Befehle verwendet:

df: Listet die gesamte Festplattennutzung des Dateisystems auf

du: Bewertet die Festplattennutzung des Dateisystems (wird oft verwendet, um die vom Verzeichnis belegte Kapazität auszuwerten)

$ df [-ahikHTm] [Verzeichnis oder Dateiname]
Parameter:
-a: Listet alle Dateisysteme auf, einschließlich systemspezifischer /proc (/proc ist im Speicher gemountet und belegt keinen Speicherplatz) und anderer Dateisysteme;
-k: Zeigt die Kapazität jedes Dateisystems in KB an. -m: Zeigt die Kapazität jedes Dateisystems in MB an. -h: Zeigt in GB, MB, KB und anderen Formaten an, die leichter zu lesen sind. -H: Ersetzt M=1024K durch M=1000K. -T: Gibt den Dateisystemnamen der Partition an (z. B. ext3).
-i: Anzeige in Inodes statt in Festplattenkapazität

Die von df hauptsächlich gelesenen Daten betreffen fast alle das gesamte Dateisystem, sodass der Lesebereich nur die Informationen innerhalb des Superblocks umfasst. Daher zeigt dieser Befehl die Ergebnisse sehr schnell an.

$ du [-ahskm] Datei- oder Verzeichnisname Parameter:
-a listet alle Datei- und Verzeichniskapazitäten auf, da standardmäßig nur die Dateikapazitäten von Verzeichnissen gezählt werden -h zeigt die Kapazität in menschenlesbarer Form an -s listet die Gesamtmenge auf, ohne die von jedem einzelnen Verzeichnis belegte Kapazität aufzulisten -S zählt die Summe der Unterverzeichnisse nicht auf -k listet die Kapazität in KB auf -m listet die Kapazität in MB auf

du durchsucht direkt alle Dateidaten im Dateisystem

Linkdatei: ln

Unter Linux gibt es zwei Arten von Verbindungsdateien: Eine ähnelt der Verknüpfung unter Windows und ermöglicht eine schnelle Verbindung mit der Zieldatei oder dem Zielverzeichnis. Die andere Möglichkeit besteht darin, einen neuen Dateinamen über die Inode-Verbindung des Dateisystems zu generieren, anstatt eine neue Datei zu generieren. Dies wird als Hardlink bezeichnet.

Hardlink (Hardlink und tatsächlicher Link)

  • Jede Datei belegt einen Inode und der Inode-Eintrag zeigt auf den Inhalt der Datei.
  • Wenn Sie eine Datei lesen möchten, müssen Sie den im Verzeichnis aufgezeichneten Dateinamen verwenden, um auf die richtige Inode-Nummer zu verweisen, bevor Sie sie lesen können.
  • Der Dateiname bezieht sich auf das Verzeichnis und der Dateiinhalt auf den Inode. Ein Hardlink ist ein Zuordnungsdatensatz, der einen neuen Dateinamen in einem Verzeichnis erstellt und eine Verbindung zu einer bestimmten Inode-Nummer herstellt.
vagrant@vagrant-ubuntu-trusty-64:~$ cd /tmp
vagrant@vagrant-ubuntu-trusty-64:/tmp$ touch tes
vagrant@vagrant-ubuntu-trusty-64:/tmp$ ln test test1
vagrant@vagrant-ubuntu-trusty-64:/tmp$ ll -i test test1
62273 -rw-rw-r-- 2 Vagabund Vagabund 0 17. Dez. 12:39 Test
62273 -rw-rw-r-- 2 Landstreicher Landstreicher 0 Dez 17 12:39 test1

Es ist ersichtlich, dass die Inode-Nummern der beiden Dateien gleich sind, ihre Dateiberechtigungsattribute genau gleich sind und die Anzahl der Verbindungen 2 geworden ist.

Der größte Vorteil von Hardlinks ist die Sicherheit. Wenn Sie einen beliebigen Dateinamen löschen, bleiben Inode und Block weiterhin vorhanden. Zu diesem Zeitpunkt können Sie die richtigen Dateidaten über einen anderen Dateinamen lesen. Unabhängig davon, welchen Dateinamen Sie zum Bearbeiten verwenden, wird das Endergebnis in denselben Inode und Block geschrieben, sodass die Daten geändert werden können.

Wenn Sie zum Verbinden von Dateien Hardlinks verwenden, ändern sich der Speicherplatz und die Anzahl der Inodes im Allgemeinen nicht. Hardlinks schreiben lediglich weitere verknüpfte Daten in einen Block unter einem Verzeichnis. Dadurch wird weder der Inode erhöht, noch wird die Anzahl der Blöcke verbraucht (es sei denn, die Festplatte ist voll, wenn Sie weitere verknüpfte Daten zum Block hinzufügen. In diesem Fall müssen Sie möglicherweise einen weiteren Block hinzufügen, um die Dateinamenzuordnung aufzuzeichnen, was zu einer Änderung des Speicherplatzes führt).

Einschränkungen bei Hardlinks:

  • Dateisysteme können nicht überschritten werden.
  • Sie können keine Verbindung zu einem Verzeichnis herstellen, da bei Verwendung eines Hardlinks zur Verbindung zu einem Verzeichnis die verbundenen Daten zusammen mit allen Daten unter dem verbundenen Verzeichnis verbunden werden müssen, was zu einer erheblichen Komplexität der Umgebung führen würde. Daher werden Verzeichnisse derzeit nicht unterstützt.

symbolischer Link (ein symbolischer Link, auch als Verknüpfung bekannt)

Ein symbolischer Link erstellt eine unabhängige Datei, und diese Datei verweist beim Lesen der Daten auf den Dateinamen der Datei, auf die sie verweist. Da die Datei nur als Zeigeroperation verwendet wird, kann die symbolische Linkdatei die Quelldatei nicht finden und kann nicht geöffnet werden, wenn die Quelldatei gelöscht wird.

vagrant@vagrant-ubuntu-trusty-64:/tmp$ ln -s test test2
vagrant@vagrant-ubuntu-trusty-64:/tmp$ ll -i test test2
62273 -rw-rw-r-- 2 Vagabund Vagabund 0 17. Dez. 12:39 Test
62275 lrwxrwxrwx 1 Landstreicher Landstreicher 4 Dez 17 13:07 test2 -> test

Die beiden Dateien zeigen auf unterschiedliche Inode-Nummern. Wichtig an der verbundenen Datei ist, dass sie den Dateinamen der Zieldatei schreibt. Da die Datei auf der rechten Seite des Pfeils 4 Byte groß ist, beträgt die Größe der verbundenen Datei 4 Byte.

Die durch den symbolischen Link erstellte Datei ist eine unabhängige neue Datei und belegt daher den Inode und den Block.

Wenn Sie eine symbolische Linkdatei ändern, wird die Quelldatei geändert.

$ ln [-sf] Quelldatei Zieldatei Parameter:
-s: Wenn Sie ohne Parameter eine Verbindung herstellen, handelt es sich um einen Hardlink, und -s ist ein symbolischer Link
-f: Wenn die Zieldatei existiert, löschen Sie sie und erstellen Sie sie neu.

Anzahl der Links zum Verzeichnis

Wenn eine Datei mit einem Hardlink verbunden ist, erhöht sich die Anzahl der Dateiverbindungen um 1. Wenn wir ein leeres Verzeichnis erstellen, gibt es, da es zwei Verzeichnisse gibt, . und .., grundsätzlich drei Dinge, wenn wir ein leeres Verzeichnis /tmp/testing erstellen:
/tmp/testen
/tmp/testen/.
/tmp/testen/..
/tmp/testing und /tmp/testing/. repräsentieren beide das Verzeichnis, und /tmp/testing/.. repräsentiert das Verzeichnis /tmp. Wenn wir also ein neues Verzeichnis erstellen, beträgt die Anzahl der Links zum neuen Verzeichnis 2, und die Anzahl der Links zum übergeordneten Verzeichnis erhöht sich um 1.

Festplattenpartitionierung, Formatierung, Überprüfung und Einbinden

Wenn Sie dem System eine neue Festplatte hinzufügen möchten, müssen Sie Folgendes tun:

  1. Partitionieren Sie die Festplatte, um neue verfügbare Partitionen zu erstellen
  2. Formatieren Sie die Partition, um ein Dateisystem zu erstellen, das vom System verwendet werden kann.
  3. Wenn Sie vorsichtiger sein möchten, können Sie das neu erstellte Dateisystem überprüfen.
  4. Auf einem Linux-System müssen Sie einen Einhängepunkt (also ein Verzeichnis) erstellen und ihn einhängen.

Festplattenpartition: fdisk

$ fdisk [-l] Gerätename-Parameter:
-l: Gibt den Inhalt aller Partitionen des folgenden Geräts aus. Wenn nur fdisk -f verwendet wird, listet das System alle Partitionen der Geräte auf, die das gesamte System finden kann.

# Zum Beispiel:
# Suchen Sie zuerst den Datenträgerdateinamen vagrant@vagrant-ubuntu-trusty-64:/tmp$ df /
Dateisystem 1K-Blöcke Verwendet Verfügbare Nutzung% Eingebunden auf
/dev/hdc1 41251136 3631948 35883276 10 % /
# Geben Sie fdisk ohne die Nummer ein vagrant@vagrant-ubuntu-trusty-64:/tmp$ fdisk /dev/hdc
Es erscheint die Eingabeaufforderung „Befehl (m für Hilfe)“. Geben Sie „m“ ein, um die entsprechenden Parameteraufforderungen anzuzeigen. d bedeutet, eine Partition zu löschen. n bedeutet, eine Partition hinzuzufügen. p bedeutet, die Partitionstabelle auf dem Bildschirm anzuzeigen. q bedeutet, das Programm fdisk ohne Speichern zu beenden. w bedeutet, den vorherigen Vorgang in die Partitionstabelle zu schreiben.

Achten Sie besonders auf q und w. Wenn Sie beim Verlassen von fdisk q drücken, werden alle Vorgänge nicht wirksam. Im Gegenteil, wenn Sie w drücken, werden die Vorgänge wirksam.

Löschen einer Festplattenpartition

Um eine Partition zu löschen (beispielsweise um alle Partitionen von /dev/hdc zu löschen), müssen Sie die folgenden Schritte ausführen:

  1. fdisk /dev/hdc: Rufen Sie zuerst die fdisk-Schnittstelle auf
  2. p: Schauen Sie sich zunächst die Partitionsinformationen an, vorausgesetzt, Sie möchten /dev/hdc1 löschen
  3. d: Zu diesem Zeitpunkt müssen Sie eine Partition auswählen, also wählen Sie 1
  4. w oder q: w kann in der Datentabelle der Festplatte speichern und fdisk beenden; wenn Sie es bereuen, drücken Sie einfach q, um den Löschvorgang abzubrechen.

Fügen Sie eine neue Festplattenpartition hinzu

Die folgenden Aktionen müssen ausgeführt werden:

  1. fdisk /dev/hdc: Rufen Sie zuerst die fdisk-Schnittstelle auf
  2. n: Neue Partition hinzufügen
  3. p oder e oder l: Wählen Sie verschiedene Partitionstypen aus, wobei p für primäre Partition, e für erweiterte Partition und l für logische Partition steht
  4. 1 - 4: Partitionsnummer, Sie können zwischen 1 und 4 wählen. Wenn es sich um eine logische Partition handelt, müssen Sie die Partitionsnummer nicht eingeben
  5. Geben Sie die letzte Zylindernummer ein. Wenn es zu mühsam ist, die Zylinder-/Partitionsgröße selbst zu berechnen, können Sie ein Format wie „+512M“ verwenden, damit das System uns bei der Zuweisung der Zylindernummer hilft, die 512M am nächsten kommt.
  6. p: Partitionsinformationen anzeigen
  7. w oder q: w kann in der Datentabelle der Festplatte speichern und fdisk beenden; wenn Sie es bereuen, drücken Sie einfach q, um den Löschvorgang abzubrechen.

Bezüglich der Form der Partitionserstellung (primäre Partition/erweiterte Partition/logische Partition) und der Partitionsgröße gibt es grundsätzlich mehrere Formen der Erstellung neuer Partitionen:

  1. Es sind noch 1-4 übrig und das System hat keine erweiterte Partition: Zu diesem Zeitpunkt wird eine Option angezeigt, mit der Sie Primär/Erweitert auswählen können. Sie können eine Zahl zwischen 1 und 4 angeben
  2. Es sind noch 1-4 Partitionen übrig und das System hat eine erweiterte Partition: Sie werden aufgefordert, Primär/Logisch auszuwählen. Wenn Sie p auswählen, müssen Sie eine Zahl zwischen 1 und 4 angeben. Wenn Sie l auswählen, müssen Sie keine Zahl angeben, da das System automatisch eine logische Partitionsdateinamennummer zuweist.
  3. 1-4 ist nicht übrig und das System verfügt über eine erweiterte Partition: Sie werden zu diesem Zeitpunkt nicht aufgefordert, den Partitionstyp auszuwählen, und wechseln direkt in den logischen Partitionsmodus

Im Allgemeinen müssen Sie nach der Partitionierung einen Neustart durchführen, um die Informationen in der Kernel-Partitionstabelle zu aktualisieren. Sie können „partprobe“ verwenden, um den Kernel zu zwingen, die Partitionstabelle erneut zu finden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So ändern Sie die Größe des Linux-Dateisystems (Größenänderung der Linux-Partition)
  • So zeigen Sie den Typ des gemounteten Dateisystems in Linux an
  • So überprüfen Sie die Blockgröße des Linux-Dateisystems
  • Verwenden des GFS-Dateisystems in einer Linux-Umgebung
  • Detaillierte Analyse des Linux-Dateisystems
  • Zusammenfassung des Dateisystemtyps der Linux-Partition
  • So beheben Sie Dateisystemfehler in Linux mit „fsck“
  • Neues Linux Object Storage-Dateisystem
  • Ein Überblick über Linux-Journaling-Dateisysteme
  • Verwenden des Ext3-Dateisystems in einer Linux-Umgebung

<<:  Tutorial zum Herunterladen und Installieren der komprimierten Version von MySQL 8.0.16 unter dem Win10-System

>>:  Vue implementiert Dialogkapselung

Artikel empfehlen

Linux verwendet den Befehl lsof, um den Status des Dateiöffnens zu überprüfen

Vorwort Wir alle wissen, dass unter Linux „alles ...

React realisiert den gesamten Prozess des Seitenwasserzeicheneffekts

Inhaltsverzeichnis Vorwort 1. Anwendungsbeispiele...

Detaillierte Erklärung der JavaScript-Prototypenkette

Inhaltsverzeichnis 1. Konstruktoren und Instanzen...

So zeigen Sie die Netzwerkroutingtabelle in Ubuntu an

Was sind Routing und Routing-Tabellen in Linux? U...

Erläuterung des MySQL-Multitabellen-Join-Abfragebeispiels

In tatsächlichen Projekten gibt es Beziehungen zw...

Detaillierte Schritte zum Einrichten eines Nexus-Servers

1. Die Bedeutung des Aufbaus eines Nexus-Dienstes...

So verwenden Sie rsync unter Linux

Inhaltsverzeichnis 1. Einleitung 2. Installation ...

Der Aufruf der Suchmaschine auf der Seite erfolgt am Beispiel von Baidu

Heute ist mir plötzlich eingefallen, dass es cool ...

Zusammenfassung der Erfahrungen beim Website-Erstellen

<br />Welche Grundsätze sollten beachtet wer...

Layout im Vue.js-Stil Allgemeine Fähigkeiten zur Flutter-Geschäftsentwicklung

Korrespondenz zwischen Flutter und CSS im Shadow-...

Fünf praktische Tipps zur Gestaltung von Webformularen

1. Mobile Auswahl der Formulartexteingabe: Wenn i...

Erfahren Sie mehr über das V-Modell und seine Modifikatoren in einem Artikel

Inhaltsverzeichnis Vorwort Modifikatoren des V-Mo...