Zapytany o błąd serwera, ale nie otrzymał wystarczającej uwagi, więc opublikowano go tutaj z nadzieją, że niektórzy ludzie znają odpowiedź.
Jest jeszcze jedno pytanie dotyczące umountowania mocowań rbind, ale rozwiązanie ma niepożądany efekt. Rozważ następujący układ katalogu:
.
├── A_dir
│ └── mount_b
├── B_dir
│ └── mount_c
└── C_dir
Teraz wiążę C_dir
się B_dir/mount_c
i rbind B_dir
do 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
Teraz umount A_dir/mount_b
zawiedzie, co nie jest zaskakujące. Zgodnie z odpowiedziami wszędzie w sieci musimy umount A_dir/mount_b/mount_c
najpierw umount A_dir/mount_b
. Jednak umount A_dir/mount_b/mount_c
również odmontuje B_dir/mount_c
, co jest niepożądane:
[hidden]$ sudo umount A_dir/mount_b/mount_c
[hidden]$ mount | grep _dir | wc -l
1
Teraz moje pytanie brzmi, jak mogę odmontować A_dir/mount_b
ale pozostawiając B_dir
nienaruszone, czyli nadal istnieje wiążą B_dir/mount_c
się C_dir
?
EDYCJA: ten problem nie pojawia się w Ubuntu. Mówiąc dokładniej, działa dobrze na moim Ubuntu 14.04, ale nie działa na Fedorze 23 i CentOS 7. Dlaczego jest taka różnica i na czym polega praca w Fedorze i CentOS?
EDYCJA: trochę więcej informacji na temat rzeczywistego problemu, który próbuję rozwiązać. Próbowałem stworzyć piaskownicę i użyłem --rbind
do zamontowania /dev
i /proc
do piaskownicy. Podczas niszczenia piaskownicy wydaje się, że nie mogę go <sandbox-root>/dev/pts
całkowicie zniszczyć, ponieważ odmontowanie w FC23 i CentOS7 zostanie odmontowane /dev/pts
, po czym zawiesią się moje połączenia shell i SSH i muszę ponownie uruchomić komputer. Dlatego pytam, czy istnieje sposób odmontowania montowań --rbind bez wpływu na submounty.
źródło
Odpowiedzi:
Sam znalazłem rozwiązanie. Po prostu muszę użyć,
--make-rslave
aby wprowadzić wszelkie zmiany, któreA_dir/mount_b
nie będą propagowane z powrotem doB_dir
:Zobacz sekcję strony podręcznika montowania Operacje udostępnionego poddrzewa .
źródło
mount --rbind src target --make-rslave
w jedno połączenie; niektóre systemy kiedyś mi to uniemożliwiały.