Некоторые другие респонденты уже ответили, как настроить монтирование с использованием устройства loopback, но вы специально спросили о bind
монтировках, которые немного отличаются. Если вы хотите использовать связывание, вы просто указываете --bind
в команде монтирования. Например:
mount --bind /original/path /new/path
Это сделает расположение файловой системы доступным на /original/path
, а также доступным на /new/path
. Обратите внимание, что не будет соответствовать следующим точкам монтирования! Например, предположим, что у меня есть следующие точки монтирования:
/something
/something/underneath/that
Теперь предположим, что я сделал bind
крепление для /something
:
mount --bind /something /new_something
Я смогу получить доступ к файлам, таким как /something/myfile
, по пути /new_something/myfile
. Но я не смогу получить доступ к файлам типа /something/underneath/that/otherfile
по пути /new_something/underneath/that/otherfile
. Вы должны установить отдельное bind
mount для каждой файловой системы; или если у вас относительно новое ядро, вы можете использовать rbind
mounts, которые do следуют за точками монтирования:
mount --rbind /something /new_something
Одно предупреждение о rbind
монтировании: они не обрабатывают случай, когда файловая система монтируется после установки rbind
. То есть предположим, что у меня есть крепление, подобное этому:
/something
Затем я настраиваю rbind
, как указано выше, и , затем , я монтирую /something/underneath/that
: rbind
волшебным образом не сделает новое крепление видимым через местоположение rbind
. Также имейте в виду, что, очевидно, из-за ошибки в ядре вы не можете размонтировать rbind
mount.
Кроме того, на всякий случай вы имели в виду «Как мне настроить bind mounts с помощью системного вызова mount (2)?»: Вы должны указать флаг MS_BIND
(определенный в mount.h
) при вызове mount(2)
для обычного bind
крепления. Для монтирования rbind
необходимо указать MS_BIND
и флаг недокументирования MS_REC
(определенный в linux/fs.h
).
Надеюсь, это поможет,
Эрик Мелски