bind mounts удаляются с сетевыми пространствами имен?

Демон Strongswan помещает свои файлы .pid и .ctl в / var / run, чтобы определить, запущены ли они уже.

Я хочу запустить несколько таких демонов на одном компьютере в разных сетевых пространствах имен.Я пытаюсь добиться этого путем привязки монтирования разных каталогов (скажем, / etc / namespace1 к пространству имен 1 / var / run и / etc / namespace2 к пространству имен 2 / var / run). / var / run - это символическая ссылка на / run, поэтому я привязываю mount к / run, как показано ниже.

Я почти могу добиться этого следующим образом:

"" В пространстве имен по умолчанию ""

$:~ sudo echo "red" >> /etc/red/run/pidfile
$:~ sudo echo "blue" >> /etc/blue/run/pidfile
$:~ sudo ip netns exec red

"" В красном пространстве имен ""

$:~ mount --bind /etc/red/run/ /run/
$:~ cat /var/run/pidfile

red

"" В синем пространстве имен ""

 $:~ mount --bind /etc/blue/run/ /run/
 $:~ cat /var/run/pidfile

blue

Так что это нормально работает. Таким образом, демон, когда он создает /var/run/charon.pid внутри красного цвета, не будет путать его с синим пространством имен /var/run/charon.pid, и могут запуститься два экземпляра.

Однако вот в чем проблема: если я «выхожу» из красного пространства имен, а затем снова вхожу через «ip netns exec red bash», то монтирования больше не существует. То есть / var / run / redfile нет вообще.

Итак, вопрос в том, как я могу сделать это липким? Нужны ли мне изменения в / etc / fstab? Но не работает. Если спросят, я могу предоставить подробную информацию о том, что «это не работает».

Я заблудился. Буду признателен за помощь.

Спасибо!

0
29.04.2017, 01:54
2 ответа

Простым решением было бы указать каждому экземпляру strongswan использовать разные каталоги для хранения файла PID, установив правильное значение переменной средыIPSEC_PIDDIRв сценарии запуска и остановки.

2
28.01.2020, 02:46

ip netns execуже привязывает монтирование /etc/netns/<netns name>/*к соответствующему файлу/каталогу в /etc. Таким образом, вы можете скомпилировать strongSwan, например. --with-piddir=/etc/ipsec.d/run, а затем создайте необходимые каталоги, чтобы каждый экземпляр создавал свои файлы PID в отдельных каталогах:

# mkdir -p /etc/ipsec.d/run
# mkdir -p /etc/netns/<netns name 1>/ipsec.d/run
# mkdir -p /etc/netns/<netns name 2>/ipsec.d/run

Более подробную информацию можно найти на вики strongSwan .

1
28.01.2020, 02:46

Теги

Похожие вопросы