Назад | Перейти на главную страницу

Значение `mount --make-private /`

В настоящее время, / имеет общее распространение монтирования:

# 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.
  1. Почему / shared по умолчанию?

  2. Каковы последствия изменения / быть 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 для /. Таким образом, вы охватываете только те варианты использования, в которых люди не разобщаются. Вы нарушаете сценарий использования, когда люди хотят, чтобы распространение было размещено.