Apa yang dilakukan Linux dengan file yang ada di mount point?

52

Jika saya mencoba me-mount folder yang sudah memiliki file di dalamnya, apakah linux memberi saya pesan kesalahan atau melanjutkan dan memperlihatkan filesystem yang di-mount dan file yang sudah ada di folder?

ramping
sumber
2
Selalu bisa mencobanya dengan beberapa file uji, bukan?
Chris
Aku akan melakukannya jika aku bisa. Ternyata saya tidak punya apa-apa untuk diuji. Saya mencoba meng-unmount dan memasang drive yang dimaksud tetapi hasilnya tidak meyakinkan karena keduanya memiliki file yang sama.
langsing
Apakah ada cara untuk membuat folder tidak dapat ditulis sehingga file tidak bisa ada di sana?
endolith

Jawaban:

33

Itu hanya akan di-mount, dan file-file hilang, kembali ketika folder di-umount.

Azz
sumber
1
Apa yang Anda maksud dengan menghilang? Mereka terus ada di server dan tidak ditampilkan atau apakah dihapus?
langsing
Saya akan pergi memeriksa cepat, tetapi saya pikir mereka dihapus.
Azz
17
+1 File tidak terlihat saat direktori di-mount "di atas" mereka. Mereka tidak pernah benar-benar pergi, itu hanya tidak dapat diakses ...
sleske
10
Ini berfungsi seperti tumpukan, jika Anda me-mount sesuatu yang lain, itu menyembunyikan konten sebelumnya. Saat Anda melepas gunung, hal-hal sebelumnya menjadi terlihat lagi.
vtest
4
Saya bingung dengan bagaimana seseorang yang mengatakan "kembali ketika folder dilepas" dapat mengatakan 3 menit kemudian "Saya pikir mereka dihapus". Syukurlah untuk semua orang, yang pertama adalah kenyataan di sini.
underscore_d
111

Ketika Anda memasang sistem file pada direktori /mount-point, Anda tidak dapat lagi mengakses file di bawah /mount-pointsecara langsung. Mereka masih ada, tetapi /mount-pointsekarang merujuk ke root dari sistem file yang dipasang, bukan ke direktori yang berfungsi sebagai titik mount, sehingga isi direktori ini tidak dapat diakses, setidaknya dengan cara ini. Sebagai contoh:

# touch /mount-point/somefile
# ls /mount-point/somefile
/mount-point/somefile
# mount /dev/something /mount-point
# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory

Ada beberapa cara untuk mendapatkan tampilan gabungan dari sistem file yang terpasang dan data yang sudah ada, tetapi Anda membutuhkan lapisan tambahan yang disebut sistem file gabungan .

Di Linux, ada cara untuk melihat file yang tersembunyi. Anda dapat menggunakan mount --binduntuk mendapatkan tampilan lain dari sistem file di mana titik mount berada. Sebagai contoh

mount --bind / /other-root-view

Anda akan melihat semua file di sistem file root di bawah /other-root-view.

# cat /other-root-view/etc/hostname 
darkstar

Khususnya, /mount-pointsekarang akan dapat diakses sebagai /other-root-view/mount-point, dan karena /other-root-view/mount-pointbukan titik mount, Anda dapat melihat isinya di sana:

# ls /mount-point/somefile
ls: cannot access /mount-point/somefile: No such file or directory
# ls /other-root-view/mount-point/somefile
/other-root-view/mount-point/somefile
Gilles 'SANGAT berhenti menjadi jahat'
sumber
5
Gilles, jawaban ini baru saja menyelamatkanku ketika aku perlu mendapatkan beberapa rekaman asterisk yang disimpan di bawah titik mount NSF! Saya selalu berpikir --bind memiliki perspektif yang sama dengan pengguna. Terima kasih!
andyortlieb
Bagaimana dengan direktori? Jika saya melakukan mount /mount-point/1/kemudian menginstal filesystem lain /mount-point/, apakah saya masih bisa mengakses /mount-point/1/?
CMCDragonkai
@ CMCDragonkai Ya, secara tidak langsung dengan menggunakan bind mount seperti yang dijelaskan dalam jawaban saya.
Gilles 'SANGAT berhenti menjadi jahat'
Giles, ini adalah teknik yang brilian dan telah membantu saya menganalisis apa yang ada di sistem saya sendiri. Ini juga membantu dengan pertanyaan lain, yaitu bagaimana memeriksa penggunaan semua direktori root tanpa melewati titik mount. Solusi: mkdir /r; mount --bind / /r; du -sh /r/*. Terima kasih
Manngo
@Manngo untuk referensi di masa mendatang, ini tidak perlu. du -x(setara dengan du --one-file-system) akan melakukan itu tanpa perlu --bindshenanigans.
Darael