LINUX.ORG.RU

Переименовать netns

 , ,


0

1

Доброго времени суток господа! Кто нибудь может подсказать как можно переименовать существующий netns?

Slackware 14.2, 64bit, ядро 4.4.186 В инетике нашел инструкцию с mount --move, или mount --bind, umount, но оба варианта не работают.

--move - говорит что непонтная fs. --bind - после того как отмонтирую старую netns вместо нее отмонтируется новая.

P.S. Вариант с созданием новой и переносом, я думаю не сработает, т.к. там бридж с воткнутыми в него интерфейсами, и останавливать эту кухню нельзя.

Ответ на: комментарий от vel

Так не работает:

root@gavein:/var/run/netns#mv test4 test6 
mv: невозможно переместить 'test4' в 'test6': Устройство или ресурс занято
root@gavein:/var/run/netns#

Еще пробовал жесткую ссылку сделать но тоже не дает.
root@gavein:/var/run/netns#ln test4 test6
ln: не удалось создать жёсткую ссылку 'test6' => 'test4': Неверная ссылка между устройствами
root@gavein:/var/run/netns#
kovalev_94 ()
Ответ на: комментарий от kovalev_94

Подождите, вы хотели без остановки «останавливать эту кухню нельзя» ну какой-то такой вариант только в голову приходит. Ну а когда можно будет остановить то и поменяете на новый.

anc ★★★★★ ()
Ответ на: комментарий от anc

Что-то в новых ядрах изменилось.

ip netns add xxx делает

mount("", "/var/run/netns", "none", MS_REC|MS_SHARED, NULL) = 0
open("/var/run/netns/xxx", O_RDONLY|O_CREAT|O_EXCL, 0) = 5
close(5)                                = 0
unshare(CLONE_NEWNET)                   = 0
mount("/proc/self/ns/net", "/var/run/netns/xxx", 0x4647eb, MS_BIND, NULL) = 0

Раньше там симлинк был.

vel ★★★★★ ()
Ответ на: комментарий от kovalev_94

Переименование точки монтирования?

IMHO напрямую это не сделать.

Что сильно напрягает, что оно создает _файл_ и в него монтирует nsfs. С такой магией бороться бессмысленно.

Можно продублировать netns сделав симлинк, но оригинальное имя не освободить

root@ls-gw-r2:/var/run/netns# ln -s vv1 vv3
root@ls-gw-r2:/var/run/netns# ip netns   
vv1
vv3
правда «ip netns delete vv3» удаляет оригинальный netns vv1.

Чем-то напоминает первые симлинки в ntfs, когда по удалению линка удалялся оригинал, а не симлинк :)

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от anc

mount тут причем что файл в /var/run/netns является точкой монтирования в сам netns. Вроде как то так.

Работаю в одной телеком компании(название наверное не буду говорить). С помощью netns(в котором висят vlan и bridge) предостовляем l2 и l3 vpn клиентам.

kovalev_94 ()
Ответ на: комментарий от iliyap

Так же писал - не работает.

root@gavein:/var/run/netns#touch test6                                                                                                                                                                                                       
root@gavein:/var/run/netns#mount --move test4 test6                                                                                                                                                                                          
mount: wrong fs type, bad option, bad superblock on /var/run/netns/test4,                                                                                                                                                                    
       missing codepage or helper program, or other error                                                                                                                                                                                    
                                                                                                                                                                                                                                             
       In some cases useful info is found in syslog - try                                                                                                                                                                                    
       dmesg | tail or so.                                                                                                                                                                                                                   
root@gavein:/var/run/netns#                    

kovalev_94 ()
Ответ на: комментарий от kovalev_94

Работает. Я проверял. Вот побольше деталей, может поможет найти, где возникают отличия.

root@loom:~# ip netns add test4
root@loom:~# ls /var/run/netns/
test4
root@loom:~# touch /var/run/netns/test6
root@loom:~# mount --bind /var/run/netns/test4 /var/run/netns/test6
root@loom:~# ip netns
test6
test4
root@loom:~# ip netns exec test4 bash
root@loom:~# ls -l /proc/self/ns/net
lrwxrwxrwx 1 root root 0 авг 23 01:00 /proc/self/ns/net -> net:[4026532422]
root@loom:~# exit
root@loom:~# ip netns del test4
root@loom:~# ip netns
test6
root@loom:~# ip netns exec test6 bash
root@loom:~# ls -l /proc/self/ns/net
lrwxrwxrwx 1 root root 0 авг 23 01:01 /proc/self/ns/net -> net:[4026532422]
root@loom:~# exit
root@loom:~# uname -a
Linux loom 4.18.0-0.bpo.1-amd64 #1 SMP Debian 4.18.6-1~bpo9+1 (2018-09-13) x86_64 GNU/Linux
root@loom:~# ip -V
ip utility, iproute2-ss180813
root@loom:~# mount -V
mount from util-linux 2.29.2 (libmount 2.29.2: selinux, btrfs, assert, debug)

unterwulf ()
Ответ на: комментарий от kovalev_94

mount тут причем что файл в /var/run/netns является точкой монтирования в сам netns. Вроде как то так.

Да, выше уже vel пояснил.

Работаю в одной телеком компании(название наверное не буду говорить). С помощью netns(в котором висят vlan и bridge) предостовляем l2 и l3 vpn клиентам.

Я не про зачем сам netns у вас используется. Интересно стало зачем его переименовывать потребовалось?

anc ★★★★★ ()