Есть ли способ сохранить пространство имен mnt?

Вопрос или проблема

как “ip netns add”, это монтирует файл “/proc/*/ns/net” куда-то еще, когда нужно использовать сетевое пространство имен, вы можете использовать смонтированный файл, но когда монтируете с помощью –bind файл пространства имен mnt, это сообщает об этом

# mount --bind /proc/5656/ns/mnt test
mount: неверный тип файловой системы, неправильный параметр, неправильный суперблок на /proc/5656/ns/mnt,
       отсутствует кодовая страница или вспомогальная программа, или другая ошибка

       В некоторых случаях полезная информация находится в syslog - попробуйте
       dmesg | tail или подобное.

есть ли способ смонтировать файл /proc/*/ns/mnt или какой-либо другой способ сохранить пространство имен mnt

решение

после того как я задал этот вопрос, я нашел этот вопрос привязанные монтирования удаляются вместе с сетевыми пространствами имен?, это помогло мне придумать решение

#  mkdir /run/mntns \
        && mount --bind --make-private /run/mntns /run/mntns
# touch /run/mntns/persistent-namespace \
        && mount --bind /proc/5656/ns/mnt /run/mntns/persistent-namespace

монтаж прошел успешно, и я могу использовать пространство имен mnt через файл “/run/mntns/persistent-namespace”.

но есть еще кое-что, что я не понимаю:

  1. почему это сработало после “mount –bind –make-private”;
  2. почему я не могу смонтировать pid 1 (/usr/lib/systemd/systemd);

Ответ или решение

Способы сохранения пространства имен монтирования в Linux

Вопрос о том, возможно ли сохранить пространство имен монтирования (mnt namespace) в Linux, является актуальным для системных администраторов и разработчиков, работающих с контейнерами и виртуализацией. Основная проблема заключается в том, что пространство имен монтирования нельзя смонтировать напрямую из /proc/*/ns/mnt, как это делается с сетевыми пространствами имен. Это приводит к ошибкам, таким как:

# mount --bind /proc/5656/ns/mnt test
mount: wrong fs type, bad option, bad superblock on /proc/5656/ns/mnt,
       missing codepage or helper program, or other error

К счастью, вы нашли рабочее решение, которое включает создание специальной директории и использование механизма привязки:

# mkdir /run/mntns \
&& mount --bind --make-private /run/mntns
# touch /run/mntns/persistent-namespace \
&& mount --bind /proc/5656/ns/mnt /run/mntns/persistent-namespace

Такой подход действительно позволяет сохранить пространство имен монтирования и использовать его через файл /run/mntns/persistent-namespace.

Ответы на ваши вопросы

  1. Почему это работает после mount --bind --make-private?

    Опция --make-private обозначает, что точка монтирования обладает приватной семантикой. В этом контексте это значит, что изменения в пространстве имен (например, изменения в связанных монтированиях) не будут распространяться на другие пространства имен. Это позволяет гарантировать, что ваше новое пространство имен монтирования будет независимым и персистентным, что важно для нормальной работы с изолированными пространствами. Когда вы монтируете пространство имен в приватную точку монтирования, оно сохраняет свою целостность и не подвержено удалению при изменениях в других пространствах имен.

  2. Почему нельзя монтировать привязку PID 1 (например, /usr/lib/systemd/systemd)?

    Основной причиной является то, что процесс с PID 1 в Linux (обычно это systemd или другой инициализационный процесс) контролирует состояние системы и ее ресурсов. Он работает в своей собственной изолированной среде, и любые попытки изменения пространства имен (включая операцию монтирования) могут привести к нестабильности системы или конфликтам. Кроме того, пространство имен монтирования привязано к другим ресурсам, и эти операции могут быть защищены от изменений для предотвращения потенциальных сбоев.

Заключение

Таким образом, для успешного сохранения пространства имен монтирования в Linux необходимо использовать комбинацию команд для создания приватных точек монтирования и правильного связывания с монтированием пространства имен. Это позволяет эффективно управлять изолированными средами и поддерживать стабильность системы.

Если у вас есть дополнительные вопросы или потребности в углубленных технологиях управления пространством имен в Linux, не стесняйтесь их задавать!

Оцените материал
Добавить комментарий

Капча загружается...