Отвечая на вопрос о сбое сервера, но не получил достаточного внимания, поэтому разместил здесь, с надеждой, что некоторые люди здесь знают ответ.
Есть еще один вопрос, касающийся размонтирования rbind mounts, но решение имеет нежелательный эффект. Рассмотрим следующую схему каталогов:
.
├── A_dir
│ └── mount_b
├── B_dir
│ └── mount_c
└── C_dir
Теперь я связываю C_dir
с B_dir/mount_c
и rbind B_dir
к A_dir/mount_b
:
[hidden]$ sudo mount --bind C_dir B_dir/mount_c
[hidden]$ sudo mount --rbind B_dir A_dir/mount_b
[hidden]$ mount | grep _dir | wc -l
3
Теперь не umount A_dir/mount_b
получится, что неудивительно. Согласно ответам повсюду в Интернете, мы должны umount A_dir/mount_b/mount_c
сначала тогда umount A_dir/mount_b
. Однако, umount A_dir/mount_b/mount_c
также будет размонтироваться B_dir/mount_c
, что нежелательно:
[hidden]$ sudo umount A_dir/mount_b/mount_c
[hidden]$ mount | grep _dir | wc -l
1
Теперь мой вопрос, как я могу отключить , A_dir/mount_b
но оставляя B_dir
неизменным, то есть еще привязка B_dir/mount_c
к C_dir
?
РЕДАКТИРОВАТЬ: эта проблема не появляется в Ubuntu. Точнее говоря, он отлично работает на моем Ubuntu 14.04, но не работает на Fedora 23 и CentOS 7. Почему есть разница и как обходятся Fedora и CentOS?
РЕДАКТИРОВАТЬ: еще немного информации о реальной проблеме, которую я пытаюсь решить. Я пытался создать песочницу и использовал --rbind
для монтирования /dev
и /proc
в песочницу. При уничтожении песочницы кажется, что я не могу полностью уничтожить ее, потому что размонтирование <sandbox-root>/dev/pts
в FC23 и CentOS7 размонтируется /dev/pts
, после чего мои оболочки и соединения SSH зависают, и я должен перезагрузить машину. Вот почему я спрашиваю, есть ли способ размонтировать монтирования --rbind, не затрагивая подмонтирования.
источник
Ответы:
Я нашел решение сам. Мне просто нужно использовать
--make-rslave
для внесения каких-либо изменений, чтобыA_dir/mount_b
не распространяться обратноB_dir
:См. Раздел man-страницы по монтированию Общие операции с поддеревом .
источник
mount --rbind src target --make-rslave
в одном вызове; некоторые системы раньше запрещали мне это.