¿Qué significa la cuarta columna (raíz) en /proc/.../mountinfo?

¿Qué significa la cuarta columna (raíz) en /proc/.../mountinfo?

En el procmanual, nombra la cuarta columna mountinfocomo "raíz" y la describe como "la ruta del directorio en el sistema de archivos que forma la raíz de este montaje". ¿Pero cómo entenderlo?

Pensé que los elementos básicos de un montaje son la ruta de origen y de destino, ya que el "origen de montaje" es la décima columna y el destino en la quinta columna, entonces, ¿para qué se usa la raíz?

Para la mayoría de la información de montaje, la raíz es simplemente /, parece no tener sentido. Solo encuentro que los montajes de enlace tienen una raíz diferente /, por lo que solo es útil en montajes de enlace. Y en caso de enlace, ¿por qué no mostrar la ruta absoluta en la raíz? Por ejemplo, cuando se vincula a /run/test_dir/a, /run/test_dir/bla columna raíz muestra /test_dir/a, ¿por qué ocultar la /runparte?

Respuesta1

Es difícil explicarlo con elementos del lenguaje (al menos con mis habilidades en inglés), así que decidí dar una respuesta basada en un ejemplo:

El directorio raíz a menudo se denominamás altoomás altodirectorio. Esto sólo es parcialmente cierto. este directoriose suponecomo elmás altodirectorio. Podría describirlo con "comenzaré desde este directorio; supongo que este es el directorio más alto y no hay nada arriba".

Algunos ejemplos para aclarar qué significa "raíz":

  • Imagine que ejecuta un servidor web y configura la raíz de un dominio example.comen /var/www/html/example.com. Ahora creas un archivo /var/www/html/example.com/test.html. Si abres https://example.com/test.htmlen tu navegador. obtienes el contenido del archivo creado. Si lo configura /var/www/htmlcomo root, debe abrirhttps://example.com/example.com/test.html
  • Si chrootingresa al directorio /home/test/testSystem/. La raíz de este entorno sería /home/test/testSystem. Si lo haces lsdentro del entorno chroot, ls /obtendrás el contenido de/home/test/testSystem/

Punto de montaje con raíz/

Por ejemplo un USB contiene:

/
├── dir1
│   ├── subfile1
│   └── subfile2
├── file1
├── file2
└── file3

Si monta este USB, /mntobtendrá el resultado normal que espera porque usa el /directorio del USB como raíz:

531 137 0:52 / /mnt rw,nosuid,nodev shared:75 - /dev/sdb [...]

Entonces, en la mayoría de los casos, la raíz de los puntos de montaje sería efectivamente /.

Punto de montaje con raíz diferente a la/

Puede intentar esto usted mismo: vincule dos directorios en su sistema de archivos junto con

$ mount --bind /var/test1 /var/test2

La salida de mountinfosería algo como:

564 29 0:26 /var/test1 /var/test2 rw,relatime shared:1 - ext4 /dev/sda rw [...]

La raíz del punto de montaje ubicado debajo /var/test2es /var/test1. La fuente de montaje (lo que has montado) es/dev/sda

Volviendo al ejemplo del USB: si ahora monta el contenido /mnt/dir1en otra cosa, obtendrá la raíz del montaje /dir1y la fuente del montaje sería /dev/sdb(el USB). La /mntparte se deja caer aquí.

"¿Por qué ocultar la parte /run?"

En resumen: /runse elimina porque es una partición tmpfs. ¿Por qué se eliminan esas partes?

En el ejemplo de USB montamos dir1en /dev/sdb. /home/test/usbmnt/La salida sería:

564 29 0:26 /dir1 /home/test/usbmnt/ rw,relatime shared:1 - ext4 /dev/sdb rw [...]

Verá, montamos el contenido de /dir1 (desde el USB y NO desde su disco duro) en un directorio llamado usbmnt. Quizás sea útil leerlo como /dev/sdb/dir1.

Si se proporcionara la raíz porque /mnt/usb/dir1no podemos saber cuál es la ubicación real en el USB: podría ser /dir1, /usb/dir1o tal vez/mnt/usb/dir1

información relacionada