В proc
руководстве 4-й столбец назван mountinfo
"корневым" и описан как "путь к каталогу в файловой системе, который образует корень этого монтирования". Но как это понимать?
Я думал, что основными элементами монтирования являются исходный и целевой пути, поскольку «исходный монтирование» находится в 10-м столбце, а цель — в 5-м столбце, то для чего тогда используется корень?
Для большинства сведений о монтировании корень — это просто /
, кажется, бессмысленно. Я обнаружил, что только монтирования bind имеют корень, отличный от /
, поэтому это полезно только в монтированиях bind? И в случае bind, почему бы не показать абсолютный путь в root? Например, когда bind to /run/test_dir/a
, /run/test_dir/b
столбец root показывает /test_dir/a
, зачем скрывать /run
часть?
решение1
Трудно объяснить это с помощью языковых элементов (по крайней мере, с моим знанием английского), поэтому я решил дать ответ на основе примера:
Корневой каталог часто называютнаибольшийилисамый высшийкаталог. Это верно лишь отчасти. Этот каталогпредполагаетсякакнаибольшийкаталог. Вы могли бы описать это так: «с этого каталога я начну — я предполагаю, что это самый высокий каталог и выше ничего нет».
Несколько примеров, поясняющих значение слова «root»:
- Представьте, что вы запустили веб-сервер и установили корневой каталог домена
example.com
на/var/www/html/example.com
. Теперь вы создаете файл/var/www/html/example.com/test.html
. Если вы откроете егоhttps://example.com/test.html
в браузере. вы получите содержимое созданного файла. Если вы установили его/var/www/html
как root, вы должны открытьhttps://example.com/example.com/test.html
- Если вы
chroot
в каталоге/home/test/testSystem/
. Корень этой среды будет/home/test/testSystem
. Если вы сделаетеls
внутри chrooted среды,ls /
вы получите содержимое/home/test/testSystem/
Точка монтирования с правами root/
Например, USB-накопитель содержит:
/
├── dir1
│ ├── subfile1
│ └── subfile2
├── file1
├── file2
└── file3
Если вы смонтируете этот USB-накопитель, то /mnt
получите ожидаемый нормальный вывод, поскольку вы используете каталог /
USB-накопителя в качестве корневого:
531 137 0:52 / /mnt rw,nosuid,nodev shared:75 - /dev/sdb [...]
Таким образом, в большинстве случаев корнем точек монтирования действительно будет /
.
Точка монтирования с корнем, отличным от/
Вы можете попробовать это самостоятельно: свяжите два каталога в вашей файловой системе вместе с помощью
$ mount --bind /var/test1 /var/test2
Вывод mountinfo
будет примерно таким:
564 29 0:26 /var/test1 /var/test2 rw,relatime shared:1 - ext4 /dev/sda rw [...]
Корень точки монтирования находится под /var/test2
. /var/test1
Источник монтирования (то, что вы смонтировали) находится/dev/sda
Возвращаясь к примеру с USB: если вы теперь смонтируете содержимое /mnt/dir1
во что-то другое, вы получите корень монтирования /dir1
, а источником монтирования будет /dev/sdb
(USB). /mnt
Часть сбрасывается здесь.
«Зачем скрывать часть /run»
Короче говоря: /run
удалено, потому что это раздел tmpfs. Почему эти части удалены?
В примере с USB мы монтировали dir1
в . Вывод будет следующим /dev/sdb
:/home/test/usbmnt/
564 29 0:26 /dir1 /home/test/usbmnt/ rw,relatime shared:1 - ext4 /dev/sdb rw [...]
Видите ли, мы смонтировали содержимое /dir1 (с USB, а НЕ с вашего жесткого диска) в каталог usbmnt. Возможно, будет полезно прочитать его как /dev/sdb/dir1
.
Если бы root был указан, так как /mnt/usb/dir1
мы не могли бы знать, каково реальное местоположение на USB: Это могло бы быть /dir1
, /usb/dir1
или, может быть,/mnt/usb/dir1