Probleme beim Verstehen des Montagekonzepts

13

Beides gelesen haben Was bedeutet es, ein Gerät in Linux zu mounten? Und wenn ich "mount" als ein Konzept im Betriebssystem verstehe , habe ich ein Problem, bei dem es heißt, dass

Allen zugänglichen Speichern muss ein Speicherort in diesem einzelnen Verzeichnisbaum zugeordnet sein. Dies unterscheidet sich von Windows, bei dem (in der gängigsten Syntax für Dateipfade) ein Verzeichnisbaum pro Speicherkomponente (Laufwerk) vorhanden ist. Beim Mounten wird ein Speichergerät einem bestimmten Speicherort in der Verzeichnisstruktur zugeordnet.

Unter / dev / cdrom befindet sich jedoch bereits ein zugänglicher Speicherort für ein CD-ROM-Laufwerk, das offensichtlich in der Verzeichnishierarchie enthalten ist. Warum muss also ein separater "Mount Point" unter / media / cdrom erstellt werden? Warum ist ein direkter Zugriff von / dev / cdrom unmöglich? Ich habe gehört, dass die Geräteknotendateien wie normale Dateien sind. Das Lesen und Schreiben ist wie bei normalen Dateien. Bedeutet dies, dass das Dateisystem in der CD-ROM nicht verfügbar ist, wenn wir von / dev / cdrom darauf zugreifen. Und die Dateisystemhierarchie (innerhalb der CD-ROM) wird "lebendig", wenn wir sie "mounten"?

Sounak
quelle

Antworten:

11

Sie können / dev / cdrom lesen oder schreiben (z. B. mit ddoder cat), aber wenn Sie dies tun, lesen oder schreiben Sie nur die unformatierten Bytes des Geräts. Dies kann unter verschiedenen Umständen nützlich sein (z. B. beim Klonen einer Partition). Im Allgemeinen möchten wir jedoch die auf dem Gerät gespeicherten Verzeichnisse und Dateien anzeigen.

Wenn Sie ein Gerät einbinden, weisen Sie den Kernel an, eine Softwareschicht (den Dateisystemtreiber) zu verwenden, um diese unformatierten Bytes in ein tatsächliches Dateisystem zu übersetzen. Durch das Mounten eines Geräts wird das Dateisystem auf diesem Gerät der Verzeichnishierarchie zugeordnet.

PM 2Ring
quelle
8

Ich denke darüber auf folgende Weise nach: mountist ein Tool, das das System anweist, den Inhalt einiger Dateien als Verzeichnisbäume zu interpretieren.

  • Das Dateisystem enthält Verzeichnisse und Dateien, und jede Datei ist eine Bezeichnung für eine Zeichenfolge von Bytes.
  • /dev/cdrom ist eine Datei, die die auf der CD gespeicherte Bytefolge darstellt.
  • Sie können diese sehr lange Zeichenfolge direkt lesen, dies ist jedoch nur für spezielle Zwecke (z. B. zum Erstellen eines vollständigen Datenträgerabbilds) sehr praktisch.
  • Diese lange Zeichenfolge hat eine zusätzliche interne Struktur: Sie enthält ein Dateisystem, das Auskunft darüber gibt, welche Verzeichnisse und Dateien wo in dieser sehr langen Zeichenfolge gespeichert sind.
  • Indem Sie verwenden mount -t iso9660 /dev/cdrom /media/cdrom, teilen Sie dem System mit: "Nehmen Sie diese sehr lange Zeichenfolge von Bytes, die Sie enthalten /dev/cdrom, interpretieren Sie sie als Verzeichnisbaum im iso9660-Format und erlauben Sie mir, unter dem Speicherort darauf zuzugreifen /media/cdrom".
  • Tatsächlich funktioniert dies auch für reguläre Dateien. Sie können eine reguläre Datei erstellen, die ein Festplatten-Image enthält, und dann verwenden, mountum darauf zuzugreifen. Versuche dies:
dd if = / dev / zero von = fs-image bs = 1M count = 50
mke2fs fs-image
sudo mount fs-image / some / mount / point

(Die ersten beiden Befehle werden nur beim erstmaligen Erstellen der Image-Datei benötigt.)

Krzysztof Kosiński
quelle
Warum brauchst du mke2fs?
ADTC
So erstellen Sie ein leeres ext2-Dateisystem in der Image-Datei. Ein leeres Dateisystem besteht nicht nur aus Nullen - es hat einige Metadaten und feste Strukturen, genau wie ein leeres Word- oder LibreOffice-Dokument eine Größe ungleich Null hat und Informationen enthält, z. B. über die Standardschriftart und die Größe der Seite.
Krzysztof Kosiński
Oh ok, es ist eine potenziell destruktive Aktion. Schlagen Sie vor, dass Sie erwähnen, dass dieser Befehl nur für die Erstinitialisierung vorgesehen ist. :)
ADTC
5

/dev/cdromverweist auf eine Gerätedatei . Dies ist nicht der Inhalt der Disc, die Sie möglicherweise in Ihr optisches Laufwerk einlegen möchten, sondern ein Verweis auf die Hardware (und wahrscheinlich auch auf die Softwaretreiber) , auf die Sie möglicherweise zugreifen, um dies zu demonstrieren. Wenn Sie mount /dev/cdromzu einem Pfad in Ihrem Baum gelangen, hängen Sie dessen Inhalt an Ihr Dateisystem an .

Die Sache ist - ich kann mir keinen anderen Weg vorstellen, es zu tun. Auch unter Windows gibt es - obwohl es nicht so offensichtlich ist - immer noch die Dateisystemabstraktion für \\?\volumename\. Ich brauchte eine Minute, um mich daran zu erinnern, wie das aussah, und fand es googelnd :

... der Volume-Name ist nur eine symbolische Verknüpfung, die auf ein echtes Volume-Gerät verweist, normalerweise in Form von \Device\HarddiskVolume23. Es gibt ein weiteres Beispiel für ein MS-DOS-Gerät, bei dem es sich um den Laufwerksbuchstaben handelt. Wenn Ihr Volume den Laufwerksbuchstaben C: hat, wird ein symbolischer Link mit dem Namen \\?\C: angezeigt, der auf ein reales Volume im \Device\HarddiskVolumeXXFormat verweist .

Und so ist es vielleicht gar nicht so anders - obwohl ich weniger kompliziert argumentieren würde - es ist einfach offensichtlicher , denke ich. Sie sind nicht ein und dasselbe System, aber sie unterscheiden sich auch nicht grundlegend.

Der wahrscheinlich wichtigste Unterschied zwischen /dev/deviceund /path/to/its/mountbesteht darin, dass im letzteren Pfad ein Dateisystem - eine Art Software, die Daten auf organisierte Weise verarbeiten soll - den Inhalt des ersteren interpretiert. Sie können nicht einfach eine Diskette lesen - jemand muss sie Ihnen vorlesen. Das Dateisystem interpretiert den Inhalt des Geräts.

mikeserv
quelle
Das ist etwas irreführend. Wenn Sie /dev/cdromin einem Hex-Editor öffnen , enthält dieser tatsächlich den Rohinhalt der CD-ROM. Durch die Verwendung von mountteilen Sie dem Betriebssystem einfach mit, dass dieser Inhalt als Verzeichnisbaum interpretiert werden soll.
Krzysztof Kosiński
0

Zusätzlich zu den oben genannten Elementen kann ein Treiber oder ein anderes Programm Daten von einem Gerät zwischenspeichern. Auf einem Schreib- / Lesegerät, z. B. einer Festplatte oder einem USB-Stick, wurden möglicherweise noch keine Daten auf das Gerät geschrieben. Journaldateisysteme können auch das Leeren des Journals erfordern, bevor das Gerät nicht mehr angezeigt wird. Dann haben Sie Dateisysteme, die andere Dateisysteme wie Cryptfs überlagern und wissen müssen, wann das zugrunde liegende Dateisystem nicht mehr verfügbar ist.

Zugegeben, für ein schreibgeschütztes Gerät ist dies weniger sinnvoll, gilt aber dennoch.

Joe Sewell
quelle