Описание

среда, 17 апреля 2013 г.

Стековое монтирование в Linux

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

Возникает вопрос "А зачем это нужно?". Использование стекового монтирования может пригодится в случае, когда запущенный процесс chroot-jailed, или когда запущенный процесс держит дескриптор на файл, который находится в старой точке монтирования. В этом случае стековое монтирование позволит работать этому уже запущенному процессу со своими файлами и директориями, а новым процессам позволит получить доступ к файлам на вершине стека монтирования.


Комментариев нет:

Отправить комментарий