Думаю, что большинство пользователей Linux знакомы с командой mount. В сборках ядра Linux до версии 2.4 точку монтирования возможно было использовать только один раз. Т.е. если вы сделали mount в определенное место, то повторно туда же ничего примонтировать не получится. Начиная с версии ядра 2.4, Linux позволяет осуществлять стековое монтирование — это означает, что можно выполнить монтирование одно поверх другого в одну точку монтирования. Каждое новое монтирование скрывает поддерево директорий, которое было видимым до этого. Когда выполняется размонтирование, то поддерево директорий скрытое вершиной стека (последний успешно выполненный mount) становится снова видимым. Продемонстрируем это на примере:
Необходимы права суперпользователя для выполнения mount(8)$ su Password:
Выполняем первый mount в /testfs# mount /dev/sda12 /testfs
Создаем файл в поддереве# touch /testfs/myfile
Выполняем монтирование в /testfs еще раз# mount /dev/sda13 /testfs
Проверяем, что действительно два устройства примонтированы в /testfs# mount | grep testfs /dev/sda12 on /testfs type ext3 (rw) /dev/sda13 on /testfs type reiserfs (rw)
Видим сначала утерянный и теперь снова видный наш myfile# touch /testfs/newfile # ls /testfs newfile # umount /testfs # mount | grep testfs /dev/sda12 on /testfs type ext3 (rw) # ls /testfs myfile
Возникает вопрос "А зачем это нужно?". Использование стекового монтирования может пригодится в случае, когда запущенный процесс chroot-jailed, или когда запущенный процесс держит дескриптор на файл, который находится в старой точке монтирования. В этом случае стековое монтирование позволит работать этому уже запущенному процессу со своими файлами и директориями, а новым процессам позволит получить доступ к файлам на вершине стека монтирования.
Комментариев нет:
Отправить комментарий