В настоящее время, /
имеет общее распространение монтирования:
# findmnt -o TARGET,PROPAGATION /
TARGET PROPAGATION
/ shared
Я подумываю изменить его на private
включить mount --move
для работы с файловыми системами, смонтированными под /mnt
и /media
.
(Я хочу использовать mount --move
а не небезопасный umount --lazy
)
Без /
будучи private
, mount --move
будет жаловаться на что-то вроде:
# mount --move /mnt/mountpoint /mnt/moved
mount: /mnt/moved: bad option; moving a mount residing under a shared mount is unsupported.
Почему /
shared
по умолчанию?
Каковы последствия изменения /
быть private
?
Флаг распространения изменяется на systemd
. Из man 7 mount_namespaces
:
systemd (1) автоматически перемонтирует все точки монтирования как MS_SHARED при запуске системы. Таким образом, в большинстве современных систем тип распространения по умолчанию на практике - MS_SHARED.
Из https://github.com/systemd/systemd/blob/master/src/core/mount-setup.c#L406
/* Mark the root directory as shared in regards to mount propagation. The kernel defaults to "private", but we
* think it makes more sense to have a default of "shared" so that nspawn and the container tools work out of
* the box. If specific setups need other settings they can reset the propagation mode to private if
* needed. Note that we set this only when we are invoked directly by the kernel. If we are invoked by a
* container manager we assume the container manager knows what it is doing (for example, because it set up
* some directories with different propagation modes). */
if (detect_container() <= 0)
if (mount(NULL, "/", NULL, MS_REC|MS_SHARED, NULL) < 0)
Последствия зависят от ваших конкретных вариантов использования. Думаю, что большинство программ продолжат работать. Однако ваше изменение будет перезаписано при перезагрузке.
Вы можете прочитать больше в комментарии Леннарта Поеттеринга в https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739593
Вот его часть:
б) Если вы исправите systemd, чтобы вернуться к MS_PRIVATE для корневого каталога, вы отключите распространение в контейнеры, и никто больше не сможет отказаться от него для своего конкретного пространства имен.
Преимущество: вам не нужно исправлять те несколько программ, которые в настоящее время предполагают, что корневой каталог - это MS_PRIVATE, и не разобщают вещи.
Недостаток: приложения все еще не работают для тех, кто переключается на MS_SHARED для /. Таким образом, вы охватываете только те варианты использования, в которых люди не разобщаются. Вы нарушаете сценарий использования, когда люди хотят, чтобы распространение было размещено.