Problemas para comprender el concepto de montaje

13

Habiendo leído ambos ¿Qué se entiende por montar un dispositivo en Linux? y entendiendo "montar" como un concepto en el sistema operativo , tengo un problema donde se afirma que

Todo el almacenamiento accesible debe tener una ubicación asociada en este único árbol de directorios. Esto es diferente a Windows donde (en la sintaxis más común para rutas de archivos) hay un árbol de directorios por componente de almacenamiento (unidad). El montaje es el acto de asociar un dispositivo de almacenamiento a una ubicación particular en el árbol de directorios.

Pero ya hay una ubicación accesible para, por ejemplo, una unidad cdrom en / dev / cdrom que obviamente viene en la jerarquía de directorios. Entonces, ¿por qué la necesidad de crear un "punto de montaje" separado en / media / cdrom? ¿Por qué es imposible acceder directamente desde / dev / cdrom? Escuché que los archivos de nodo del dispositivo son como los archivos normales. Y leer y escribirles es como los archivos normales. Entonces, ¿esto significa que el sistema de archivos en el cdrom no está disponible si accedemos a él desde / dev / cdrom. ¿Y la jerarquía del sistema de archivos (dentro del cdrom) "cobra vida" cuando la "montamos"?

sounak
fuente

Respuestas:

11

Puede leer o escribir / dev / cdrom (por ejemplo, usando ddo cat) pero cuando lo hace, solo está leyendo o escribiendo los bytes sin formato del dispositivo. Eso puede ser útil en varias circunstancias (como clonar una partición), pero generalmente queremos ver los directorios y archivos almacenados en el dispositivo.

Cuando montas un dispositivo, básicamente le estás diciendo al kernel que use una capa de software (el controlador del sistema de archivos) para traducir esos bytes sin procesar en un sistema de archivos real. Por lo tanto, montar un dispositivo asocia el sistema de archivos en ese dispositivo a la jerarquía de directorios.

PM 2Ring
fuente
8

Pienso en esto de la siguiente manera: mountes una herramienta que le dice al sistema que interprete el contenido de algunos archivos como árboles de directorios.

  • El sistema de archivos tiene directorios y archivos, y cada archivo es una etiqueta para alguna cadena de bytes.
  • /dev/cdrom es un archivo, representa la cadena de bytes almacenados en el CD.
  • Puede leer esta cadena muy larga directamente, pero esto no es muy práctico, excepto para fines especiales (por ejemplo, crear una imagen de disco completa).
  • Esta cadena larga tiene una estructura interna adicional: contiene un sistema de archivos, que tiene información sobre qué directorios y archivos están almacenados y en qué lugar de esta cadena muy larga.
  • Al usar mount -t iso9660 /dev/cdrom /media/cdrom, le dice al sistema: "tome esta larga cadena de bytes que tiene /dev/cdrom, inténtela como un árbol de directorios en el formato iso9660 y permítame acceder a ella desde la ubicación /media/cdrom".
  • De hecho, esto también funciona para archivos normales. Puede crear un archivo normal que contenga una imagen de disco y luego usarlo mountpara acceder a él. Prueba esto:
dd if = / dev / zero of = fs-image bs = 1M count = 50
mke2fs fs-image
sudo mount fs-image / some / mount / point

(los dos primeros comandos solo se requieren la primera vez, al preparar el archivo de imagen).

Krzysztof Kosiński
fuente
¿Por qué lo necesitabas mke2fs?
ADTC
Para crear un sistema de archivos ext2 vacío dentro del archivo de imagen. Un sistema de archivos vacío no es todo ceros: tiene algunos metadatos y estructuras fijas, al igual que un documento vacío de Word o LibreOffice tiene un tamaño distinto de cero y contiene información sobre, por ejemplo, la fuente predeterminada y el tamaño de la página.
Krzysztof Kosiński
Oh, está bien, es una acción potencialmente destructiva. Sugiero que mencione que este comando es solo para la inicialización por primera vez. :)
ADTC
5

/dev/cdromse refiere a un archivo de dispositivo . Este no es el contenido de cualquier disco que desee insertar en su unidad óptica, sino que es una referencia al bit de hardware (y probablemente a los controladores de software) al que puede recurrir para mostrárselo. Cuando va mount /dev/cdroma alguna ruta en su árbol, adjunta su contenido a su sistema de archivos .

La cuestión es que realmente no puedo pensar en otra forma de hacerlo. Incluso en Windows, aunque no es tan evidente , todavía existe la abstracción del sistema de archivos \\?\volumename\. Me tomó un minuto recordar cómo se veía eso, y encontré esto buscando en Google :

... el nombre del volumen es solo un enlace simbólico que apunta a un dispositivo de volumen real, generalmente en forma de \Device\HarddiskVolume23. Hay otro ejemplo de un dispositivo MS-DOS que es la letra de la unidad. Si su volumen tiene la letra de unidad C:, tendrá un enlace simbólico llamado \\?\C: que apunta a un volumen real en el \Device\HarddiskVolumeXXformato.

Entonces, tal vez no sea tan diferente, aunque diría que es menos complicado , creo que es más obvio . No son el mismo sistema, pero tampoco son fundamentalmente diferentes.

Probablemente, la distinción más importante entre /dev/devicey /path/to/its/mountes que en la última ruta, un sistema de archivos, algún tipo de software destinado a manejar datos de manera organizada, está interpretando el contenido del primero. No puede simplemente leer un disco, alguien tiene que leerlo. El sistema de archivos interpreta el contenido del dispositivo.

mikeserv
fuente
Esto es algo engañoso. Si abre /dev/cdromen un editor hexadecimal, en realidad contiene el contenido sin formato del CD-ROM. Al usarlo mount, simplemente le dice al sistema operativo que interprete esos contenidos como un árbol de directorios.
Krzysztof Kosiński el
0

Además de los elementos mencionados anteriormente, un controlador u otro programa puede almacenar en caché los datos de un dispositivo. En un dispositivo de lectura y escritura, como un disco duro o una memoria USB, es posible que los datos escritos en el dispositivo aún no se hayan escrito. Los sistemas de archivos de registro en diario también pueden requerir vaciar el diario antes de que ya no vea el dispositivo. Luego tiene sistemas de archivos que se superponen a otros sistemas de archivos, como cryptfs, que necesitan saber cuándo el sistema de archivos subyacente ya no está disponible.

Por supuesto, para un dispositivo de solo lectura esto tiene menos sentido, pero aún se aplica.

Joe Sewell
fuente