Unmount yang malas menciptakan mount kucing Schrödinger
- Anda tidak dapat mengetahui apakah perangkat ini benar-benar dilepas atau tidak
- Sistem file "unmount" tetap dapat diakses dalam beberapa keadaan
- Sistem file "unmount" tidak dapat diakses dalam beberapa keadaan
Ada rasa aman yang keliru : tampaknya sistem file telah di-unmount, tetapi pada kenyataannya itu hanya disembunyikan dari file namespace / heirarchy.
- Proses masih dapat menulis melalui deskriptor file terbuka
- File baru atau yang sudah ada dapat dibuka untuk ditulis oleh proses dengan direktori yang berfungsi di dalam mountpoint melalui nama path relatif
Ini berarti bahwa jika Anda umount -l /media/hdd
tidak dapat lagi mengakses /media/hdd/dir/file
(pathname absolut) tetapi jika Anda memiliki proses dengan direktori kerja, /media/hdd
ia masih dapat membuat proses baru yang dapat membaca / menulis ./dir/file
(relatif pathname).
Jika Anda mencoba melepas perangkat, Anda akan mendapat pesan yang membingungkan:
# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted
Ini membuatnya tampak seperti perangkat telah diurungkan, tetapi masih ada proses menulis ke disk.
Karena ada berbagai situasi yang tidak jelas yang dapat menyebabkan umount diblokir , sistem file mungkin masih belum dilepas meskipun lsof +f -- /dev/device
tidak menunjukkan apa-apa.
Anda tidak akan pernah tahu apakah sistem file benar-benar dilepas. Tidak ada cara untuk mengetahuinya.
Perangkat yang dapat dilepas
Jika Anda melakukan umount -l
removable disk, Anda berada di daratan: Anda tidak dapat memastikan bahwa semua data yang tertunda telah ditulis ke disk.
Yang terbaik yang dapat Anda lakukan setelah a umount -l
adalah untuk memastikan semua penulisan selesai dan mencegah penulisan di masa depan , tetapi Anda masih tidak dapat menjamin bahwa itu telah dilepas.
Dengan perangkat yang dapat dilepas, jika perangkat tidak terpasang dengan benar, perilaku aneh dapat terjadi saat berikutnya dicolokkan:
Perangkat akan mendapatkan nama perangkat yang ditambahkan, yaitu /dev/sdb
menjadi /dev/sdc
. Pesan-pesan log kernel mungkin masih merujuk /dev/sdb
meskipun perangkat itu tidak ada lagi sebagai file di bawah /dev
. (Satu-satunya cara saya tahu untuk menyelesaikan ini adalah reboot.)
korupsi btrf dapat terjadi. btrfs mengharapkan bahwa hanya satu sistem file dengan UUID yang diberikan hadir pada satu waktu. Kernel masih melihat UUID yang sama yang tersedia pada perangkat phantom dan perangkat baru. (Saya harus membangun kembali HDD cadangan btrfs saya).
systemd
Gotchas
umount(2)
beberapa kali baru-baru ini. Dikatakan hanya "Lakukan unmount malas: membuat titik mount tidak tersedia untuk akses baru, segera lepaskan sistem file dan semua sistem file yang dipasang di bawah satu sama lain dan dari tabel mount, dan benar-benar melakukan unmount ketika titik mount berhenti sibuk. . " Namun sayangnya ini kurang detail bahkan dari apa yang Anda berikan.umount(8)
mengatakan bahwa sistem file sedang sibuk "misalnya, ketika ada file yang terbuka di atasnya, atau ketika beberapa proses memiliki direktori kerjanya di sana, atau ketika file swap di dalamnya sedang digunakan." Itu kedengarannya bukan daftar yang pasti, tetapi mungkin sebaik yang bisa saya temukan.