ถอนติดตั้งเมานด์ rbind โดยไม่มีผลกับเมานต์ดั้งเดิม


11

ถามถึงข้อผิดพลาดของเซิร์ฟเวอร์แต่ไม่ได้รับความสนใจเพียงพอจึงโพสต์ที่นี่อีกครั้งด้วยความหวังว่าบางคนที่นี่รู้คำตอบ

มีคำถามอีกข้อหนึ่งที่พูดถึงการติดตั้ง 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 ทำงานอย่างไร

แก้ไข: ข้อมูลเพิ่มเติมเกี่ยวกับปัญหาจริงที่ฉันพยายามแก้ไข ฉันพยายามสร้าง Sandbox และใช้--rbindเมานท์/devและ/procกับ Sandbox เมื่อทำลายแซนด์บ็อกซ์ดูเหมือนว่าฉันไม่สามารถทำลายมันได้อย่างหมดจดเพราะการ<sandbox-root>/dev/ptsยกเลิก/dev/ptsการต่อเชื่อมใน FC23 และ CentOS7 จะยกเลิกการต่อเชื่อมหลังจากที่การเชื่อมต่อเชลล์และ SSH ของฉันหยุดทำงานและฉันต้องรีบูตเครื่อง นั่นเป็นเหตุผลที่ฉันถามว่ามีวิธีในการเลิกเมานท์ --rbind mounts หรือไม่


ปัญหานี้ยังได้รับการหยิบยกมาที่bugs.launchpad.net/ubuntu/+source/util-linux/+bug/759394
imz - Ivan Zakharyaschev

คำตอบ:


9

ฉันพบวิธีแก้ปัญหาด้วยตัวเอง ฉันเพียงแค่ต้องใช้--make-rslaveเพื่อทำการเปลี่ยนแปลงใด ๆ ที่A_dir/mount_bไม่เผยแพร่กลับไปที่B_dir:

sudo mount --make-rslave A_dir/mount_b
sudo umount -R A_dir/mount_b

ดูติดส่วนหน้าคนการดำเนินงานทรีย่อยที่ใช้ร่วมกัน


1
ในบางระบบเราสามารถรวมกันmount --rbind src target --make-rslaveในการโทรเดียว บางระบบใช้เพื่อไม่อนุญาตสิ่งนี้สำหรับฉัน
imz - Ivan Zakharyaschev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.