¿Qué es / etc / mtab en Linux?


Respuestas:


51
% archivo / etc / mtab
/ etc / mtab: enlace simbólico a ../proc/self/mounts
% archivo / proc / montajes
/ proc / mounts: enlace simbólico a self / mounts
%

/etc/mtabEs un mecanismo de compatibilidad. Hace décadas, Unix no tenía una llamada al sistema para leer la información de montaje existente. En cambio, se esperaba que los programas que montaban sistemas de archivos mantuvieran una tabla cooperativa y voluntaria /etc/mtabde lo que estaba montado donde.

Por razones obvias, este no era un mecanismo ideal.

Linux adquirió la noción de un "procfs", y una de las cosas que obtuvo fue una versión de esta tabla mantenida por el núcleo, en forma de un mountsarchivo pseudo-regular. La "llamada al sistema" para leer la información de montaje del núcleo se convirtió en una secuencia de abrir-leer-cerrar contra ese archivo, seguida de analizar el resultado de la forma legible por humanos a la máquina (algo que tiene algunas capturas sutiles, como usted puede verse en los informes de errores de hace poco más de quince días).

/etc/mtabpor lo tanto, se ha convertido popularmente en un enlace simbólico /proc/mounts, lo que permite que los programas que han cableado ese nombre sigan leyendo una tabla de montaje de ese archivo, que los programas que montaron y desmontaron sistemas de archivos ya no tienen que hacer nada explícitamente para mantenerse actualizados. (Sin embargo, algunos de ellos todavía lo harán si /etc/mtabresulta ser un archivo normal grabable. Y hay algunos casos de esquina donde la información normalizada mountsque carece de todo lo que no es del núcleo no es lo que se necesita; aunque no superan los problemas generales con /etc/mtab)

En la actualidad, cada proceso puede tener su propia vista individual de lo que está montado y, como consecuencia, ahora hay mountsarchivos individuales para cada proceso en los procesos, pudiendo acceder a la propia tabla de cada proceso a través del selfenlace simbólico self/mounts, y ahora también/proc/mounts es una compatibilidad mecanismo. (Curiosamente, ni el proceso ni el formato están documentados en el doco de Linux actual, aunque el archivo pseudo-regular es similar ).mountsmountsmountinfo

SunOS / Solaris tiene un mecanismo similar. El /etc/mnttabarchivo es en realidad un sistema de archivos de un solo archivo, y además de leer la tabla, a través de un descriptor de archivo abierto a ese archivo, con la read()llamada al sistema, uno puede observar los cambios en el punto de montaje poll()y obtener varios datos adicionales ioctl().

En HP-UX, /etc/mnttabes también el nombre del archivo, pero a partir de la versión 11 todavía era un archivo normal cuyo contenido era mantenido cooperativamente por los programas de utilidad del sistema.

AIX no exporta una tabla de texto legible por humanos que los programas tienen que analizar, y no hay un archivo equivalente. Los BSD, de manera similar, tienen llamadas completas al sistema, getfsstat()en FreeBSD y OpenBSD, para que los programas obtengan la tabla de montaje del núcleo en forma legible por máquina sin ordenarla a través de una forma intermedia legible por humanos.

Otras lecturas


En complemento con mi comentario en la pregunta aquí está el mtab(5)de los viejos tiempos: man.cat-v.org/unix_8th/5/mtab .
Weijun Zhou

2
no solo /proc/mounts, sino que ahora /proc/self/mountses un mecanismo de compatibilidad; solo muestra un subconjunto de la información disponible en /proc/self/mountinfo. El formato de /proc/self/mountsestá documentado proc(5)como idéntico afstab(5)
mosvy

aunque es cierto, fstab (5) solo habla sobre espacios reemplazados por escapes octales, mientras que son espacios, pestañas, líneas nuevas y barras invertidas
mosvy

Conozco pseudo archivos y archivos regulares, pero ¿qué es un archivo pseudo regular?
Gerrit

@gerrit es un archivo normal que tiene tamaño 0 pero aún contiene datos ;-)
mosvy

12

De acuerdo a man mount:

Los programas mount y umount tradicionalmente mantenían una lista de los sistemas de archivos actualmente montados en el archivo / etc / mtab. Este archivo mtab real todavía es compatible, pero en los sistemas Linux actuales es mejor convertirlo en un enlace simbólico a / proc / mounts, porque un archivo mtab normal mantenido en el espacio de usuario no puede funcionar de manera confiable con espacios de nombres, contenedores y otras características avanzadas de Linux.

En montaje sin grabar en /etc/mtab:

-n, --no-mtab

Montar sin escribir en / etc / mtab. Esto es necesario, por ejemplo, cuando / etc está en un sistema de archivos de solo lectura.

Muchos más matices se dan en la página del manual.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.