/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.
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)
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.
man 5 mtab
falte.Respuestas:
/etc/mtab
Es 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/mtab
de 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
mounts
archivo 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/mtab
por 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/mtab
resulta ser un archivo normal grabable. Y hay algunos casos de esquina donde la información normalizadamounts
que 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
mounts
archivos individuales para cada proceso en los procesos, pudiendo acceder a la propia tabla de cada proceso a través delself
enlace simbólicoself/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 ).mounts
mounts
mountinfo
SunOS / Solaris tiene un mecanismo similar. El
/etc/mnttab
archivo 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 laread()
llamada al sistema, uno puede observar los cambios en el punto de montajepoll()
y obtener varios datos adicionalesioctl()
.En HP-UX,
/etc/mnttab
es 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
/proc/self/mountinfo
with \ r en la ruta de montaje . # 35137. Errores de GNU coreutils./proc/mounts
. Documentation / filesystems / proc.txt . Linux 5.1.fstab-decode
. Error # 567071. Debian bugs.getfsstat()
. Manual de llamadas al sistema FreeBSD . 2016-12-27.fuente
mtab(5)
de los viejos tiempos: man.cat-v.org/unix_8th/5/mtab ./proc/mounts
, sino que ahora/proc/self/mounts
es un mecanismo de compatibilidad; solo muestra un subconjunto de la información disponible en/proc/self/mountinfo
. El formato de/proc/self/mounts
está documentadoproc(5)
como idéntico afstab(5)
De acuerdo a
man mount
:En montaje sin grabar en
/etc/mtab
:Muchos más matices se dan en la página del manual.
fuente