# ls d1
x y
Во втором примере выполняется связанное монтирование файла в другое местоположение. Показано, что изменения файла в одном каталоге становятся видны и в другой точке монтирования:
# cat > f1
Chance is always powerful. Let your hook be always cast.
# touch f2
# mount — bind f1 f2
# mount | egrep '(d1|f1)'
/testfs/d1 on /testfs/d2 type none (rw,bind)
/testfs/f1 on /testfs/f2 type none (rw,bind)
# cat >> f2
In the pool where you least expect it, will be a fish.
# cat f1
Chance is always powerful. Let your hook be always cast.
In the pool where you least expect it, will be a fish.
# rm f2
rm: cannot unlink `f2': Device or resource busy
# umount f2
# rm f2
Одним из примеров, в котором можно было бы использовать связанное монтирование, является создание «клетки» системного вызова chroot (см. раздел 18.12). Вместо репликации множества стандартных каталогов (таких как /lib) в «клетку», мы можем всего лишь создать связанные точки монтирования для этих каталогов (которые, возможно, смонтированы только для чтения) внутри данной «клетки».
14.9.5. Рекурсивное связанное монтирование
По умолчанию, если мы создаем связанную точку монтирования для какого-либо каталога с использованием флага MS_BIND, то в новом местоположении будет смонтирован только этот каталог; если в каталоге-источнике присутствуют вложенные точки монтирования, они не будут реплицированы в целевой точке монтирования target. В версии Linux 2.411 добавлен флаг MS_REC, который можно с помощью команды ИЛИ использовать вместе с флагом MS_BIND как часть аргумента flags системного вызова mount(), чтобы вложенные точки монтирования были реплицированы в целевой точке. Такой вариант называется
Начнем с создания дерева каталогов (src1), смонтированного в точке top. Это дерево содержит вложенную структуру (src2) в точке монтирования top/sub.
$ su
Password:
# mkdir top
# mkdir src1
# touch src1/aaa
# mount — bind src1 top
# mkdir top/sub
# mkdir src2
# touch src2/bbb
# mount — bind src2 top/sub
# find top
top
top/aaa
top/sub
top/sub/bbb
Теперь выполним еще одно связанное монтирование (dir1), использовав в качестве источника top. Поскольку это новое монтирование является нерекурсивным, вложенная точка монтирования не реплицируется.
# mkdir dir1
# mount — bind top dir1
# find dir1
dir1
dir1/aaa
dir1/sub
Отсутствие строки dir1/sub/bbb среди результатов работы команды find говорит о том, что вложенная точка монтирования top/sub не была реплицирована.
Выполним теперь рекурсивное связанное монтирование (dir2), используя точку top как источник.
# mkdir dir2
# mount — rbind top dir2
# find dir2
dir2
dir2/aaa
dir2/sub
dir2/sub/bbb
Наличие строки dir2/sub/bbb среди результатов работы команды find говорит о том, что вложенная точка монтирования top/sub была реплицирована.