Bagaimana meng-unmount sistem file di Linux tanpa menyelidiki mengapa ini sibuk?
Saya ingin melakukannya dalam satu perintah. Seharusnya menangani aplikasi menggunakan sistem file itu, submounts, wadah ( lxc-execute -n qqq <command>
) dan semua hal lainnya.
Hanya "unmount. Tidak keberatan!". Patch atau konfigurasi kernel khusus diperbolehkan.
Filesystem harus benar-benar dilepas, jadi umount -l
tentu saja bukan opsi. Misalnya, untuk cryptsetup remove
(BTW cara memaksa cryptsetup remove
? Perbarui :, cryptsetup luksSuspend
tetapi Anda tidak akan dapat melakukannya cryptsetup luksResume
jika bukan LUKS).
Bagaimana membuat semua penanganan file pada sistem file itu tidak valid?
Satu-satunya cara yang dapat diandalkan yang saya tahu adalah memasang filesystem melalui FUSE (biasanya tidak ada masalah untuk meng-unmount hal FUSE karena saya bisa mematikan prosesnya).
PS Sudah tahu me-mount fuser
, lsof | grep
, cat /proc/*/mounts | grep
dan usang non-kerja "badfs patch".
umount --force
atauumount -f
(setara)Jika gagal, gunakan:
umount --lazy
atauumount --l
(setara)Opsi " lazy " akan "melepaskan filesystem dari hirarki filesystem sekarang, dan membersihkan semua referensi ke filesystem segera setelah tidak lagi sibuk. (Membutuhkan kernel 2.4.11 atau lebih baru.)" Ini mungkin menyebabkan ketidakstabilan, tetapi itu akan mendapatkan hal yang tidak terpasang. Program apa pun yang menggunakan drive mungkin macet.
sumber
--force
tidak berfungsi. Dan--lazy
tidak benar-benar unmount - tidak melepaskan LVM, loopback, atau cryptsetup.dapat digunakan untuk memaksa unmount ketika sistem file sedang sibuk.
sumber
umount2: Device or resource busy
Satu-satunya keberhasilan parsial adalah ketika saya bereksperimen dengan tambalan badfs.Saya khawatir tidak ada cara untuk melakukan ini pada satu perintah.
umount -f
benar-benar tidak bekerja semulus yang diharapkan. Jika ada submount di bawah beberapa mount lain, Anda tidak bisa hanya meng-unmount mount itu dalam beberapa urutan acak dan berharap mereka akan turun.Tapi jangan khawatir, ada satu cara untuk membuat semua ini menjadi satu perintah: membuat skrip shell / Perl yang membunuh proses yang diinginkan, meng-unmount kontainer, mengirimkan dan akhirnya meng-unmount beberapa mount lainnya. Maka Anda bisa memanggil skrip Anda sesuai permintaan. Awalnya itu lebih bekerja untuk Anda tetapi setelah skrip bekerja, semuanya menjadi permainan anak-anak. :)
sumber