TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #6676 1.9K
Тонкие настройки LXC. Монтирование

Еще одна часто встречающаяся задача – обмен файлами между контейнером и хостом, особенно когда надо передать большие объемы данных и сеть для этого не очень подходит.

Для этого можно воспользоваться монтированием, попробуем смонтировать файл с хоста в контейнер, это может быть архив с дистрибутивом некоторого ПО. Для этого в конфигурационный файл /etc/pve/lxc/nnn.conf (где nnn – ID контейнера) добавим:

lxc.mount.entry = /home/file1.tgz home/file1.tgz none bind,optional,create=file


Обратите внимание, что путь к файлу на хосте мы указываем от корня, а в контейнере без указания начального слеша.

Далее коротко пройдемся по опциям:

▫️none – тип файловой системы, в данном случае мы монтируем не ФС, а файл (аналогично и директориями).

▫️ bind – указывает на связывание, мы явно связываем файл в контейнере с файлом на хосте.

▫️ optional - необязательность монтирования, если файл на хосте отсутствует монтирование произведено не будет, блокировки загрузки контейнера не произойдет.

▫️ create – создать объект указанного типа (файл) в контейнере при его отсутствии.

Теперь примонтируем директорию, это также просто:

lxc.mount.entry = /home/dir1 home none bind,optional ,create=dir


А вот задача посложнее – смонтируем LVM раздел с файловой системой ext4:

lxc.mount.entry = /dev/mapper/ lvm-vg-myvolume1 home/myvolume1 ext4 defaults 0 0


Здесь мы вместо none указываем явно тип файловой системы и параметры монтирования также как мы это делаем в fstab.

А если нам нужно монтировать раздел блочного устройства, допустим у нас есть /dev/sda3 с типом файловой системы XFS. Здесь нам потребуется уже две строки:

lxc.mount.entry = /dev/sda3 home/volume3 xfs defaults 0 0
lxc.cgroup.devices.allow = b 8:3 rwm


Вторая строка разрешает доступ к устройству, где b 8:3 rwm означает:

▫️ b – блочное устройство

▫️ 8:3 – номер устройства, можно узнать командной ls -l /dev/sda3

▫️ rwm – набор прав: чтение, запись, создание специальных файлов устройства.

А теперь к несколько неожиданному, как мы помним в Linux все есть файл и если мы хотим поднять в контейнере сервис, который создает собственные сетевые устройства, скажем OpenVPN или WireGuard, то мы должны предоставить этим устройствам связь с внешним миром через хост. А для этого снова используем монтирование:

lxc.mount.entry: /dev/net dev/net none bind,create=dir
lxc.cgroup2.devices.allow: c 10:200 rwm


Мы смонтировали при помощи связывания специальную директорию /dev/net хоста в контейнер и выдали на нее права второй строкой. Единственное отличие с вместо b так как устройство у нас не блочное, а символьное.

Теперь мы можем создавать в контейнере собственные сетевые интерфейсы и они получат доступ во внешний мир через сетевую систему хоста.
  • 👍 17
More from @interface31
  1. Sep 23, 2026DarkHost — хостинг и VDS для ваших проектов Размещайте сайты, интернет-магазины, приложени…
  2. Sep 22, 2026Post #6781
  3. Sep 22, 2026Debian или Ubuntu Нам достаточно часто задают вопрос: какой именно из этих дистрибутивов и…
  4. Sep 22, 2026Девопсы, сисадмины, архитекторы, техлиды (и вообще все, кто принимает технические или бизн…
  5. Sep 22, 2026Прекращена поддержка Debian 11 31 августа 2026 года поддержка дистрибутива Debian 11 прекр…
  6. Sep 22, 2026🚀 AI-Driven Digital Q: прямая трансляция новой ИИ-версии экосистемы для команд разработки…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →