Ditanyakan pada serverfault tetapi tidak mendapatkan perhatian yang cukup, jadi mem-posting ulang di sini, dengan harapan beberapa orang di sini tahu jawabannya.
Ada pertanyaan lain yang membahas tentang umounting rbind mounts, tetapi solusinya memiliki efek yang tidak diinginkan. Pertimbangkan tata letak direktori berikut:
.
├── A_dir
│ └── mount_b
├── B_dir
│ └── mount_c
└── C_dir
Sekarang saya ikat C_dir
ke B_dir/mount_c
dan ikat B_dir
ke 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
Sekarang umount A_dir/mount_b
akan gagal, yang tidak mengejutkan. Menurut jawaban di mana-mana di web, kita harus umount A_dir/mount_b/mount_c
terlebih dahulu umount A_dir/mount_b
. Namun, umount A_dir/mount_b/mount_c
juga akan melepas B_dir/mount_c
, yang tidak diinginkan:
[hidden]$ sudo umount A_dir/mount_b/mount_c
[hidden]$ mount | grep _dir | wc -l
1
Sekarang pertanyaan saya adalah, bagaimana cara unmount A_dir/mount_b
tetapi meninggalkan B_dir
terpengaruh, yaitu masih mengikat B_dir/mount_c
ke C_dir
?
EDIT: masalah ini tampaknya tidak muncul di Ubuntu. Lebih khusus, ini berfungsi dengan baik pada Ubuntu 14.04 saya tetapi tidak bekerja pada Fedora 23 dan CentOS 7. Mengapa ada perbedaan dan apa yang bekerja untuk Fedora dan CentOS?
EDIT: beberapa informasi lebih lanjut tentang masalah aktual yang saya coba selesaikan. Saya mencoba membuat kotak pasir dan digunakan --rbind
untuk memasang /dev
dan /proc
ke kotak pasir. Saat menghancurkan kotak pasir, sepertinya saya tidak bisa menghancurkannya dengan bersih karena <sandbox-root>/dev/pts
melepas di FC23 dan CentOS7 akan melepas /dev/pts
, setelah itu koneksi shell dan SSH saya hang dan saya harus me-reboot mesin. Itu sebabnya saya bertanya apakah ada cara untuk meng-unmount mount --rbind tanpa memengaruhi submount.
sumber
Jawaban:
Saya menemukan solusinya sendiri. Saya hanya perlu menggunakan
--make-rslave
untuk membuat perubahanA_dir/mount_b
tidak menyebar kembali keB_dir
:Lihat bagian man mount page Operasi subtree bersama .
sumber
mount --rbind src target --make-rslave
dalam satu panggilan; beberapa sistem digunakan untuk melarang ini untuk saya.