Cara benar-benar memaksa unmount sistem file (tanpa penyelidikan manual mengapa ini sibuk)

13

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 -ltentu saja bukan opsi. Misalnya, untuk cryptsetup remove(BTW cara memaksa cryptsetup remove? Perbarui :, cryptsetup luksSuspendtetapi Anda tidak akan dapat melakukannya cryptsetup luksResumejika 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 | grepdan usang non-kerja "badfs patch".

Vi.
sumber

Jawaban:

3

Gunakan kombo kunci SysRq Ajaib : Alt+ SysRq+u

Perhatikan bahwa Anda mungkin harus melakukan sinkronisasi darurat terlebih dahulu: Alt+ SysRq+s

Perhatikan juga bahwa pada beberapa keyboard (terutama yang lebih baru), Anda harus menggunakan PrtScdaripadaSysRq

sml
sumber
Tombol shift tidak diperlukan, cukup tombol Alt + SysRq +. Hal lain yang layak disebutkan (terutama untuk pengguna laptop) adalah Anda dapat menekan Alt, tekan dan lepaskan SysRq, lalu tekan dan lepaskan huruf / digit dan akhirnya lepaskan Alt. Yang paling penting, ini meng - remount semua filesystem sebagai read-only, jadi ini adalah hal terakhir sebelum secara paksa me-reboot, bukan cara umum remount dari filesystem read-only.
Gilles 'SO- berhenti bersikap jahat'
@Gilles: terima kasih atas tipnya tentang tombol shift. Saya sudah mengoreksi instruksi saya.
sml
1. Ini hanya remounts menjadi read-only. Bukan itu yang diinginkan. Misalnya, saya ingin melepasnya dan memasang kembali menggunakan FUSE. 2. Hal yang buruk adalah bahwa saya perlu "-o remount, rw" root filesystem dan yang lainnya setelah itu untuk kembali ke pekerjaan normal.
Vi.
3

umount --forceatau umount -f(setara)

Jika gagal, gunakan:

umount --lazyatau umount --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.

Freedom_Ben
sumber
Tentu --forcetidak berfungsi. Dan --lazytidak benar-benar unmount - tidak melepaskan LVM, loopback, atau cryptsetup.
Vi.
1
umount -f

dapat digunakan untuk memaksa unmount ketika sistem file sedang sibuk.

seperti jeruk nipis
sumber
1
Itu tidak pernah berhasil bagi saya: umount2: Device or resource busySatu-satunya keberhasilan parsial adalah ketika saya bereksperimen dengan tambalan badfs.
Vi.
Saya memiliki pesan "kesalahan" yang sama, tetapi tetap berfungsi. Sistem file tidak terpasang setelah umount -f
IanH
3
Coba "lazy umount", umount -l. Itu selalu berhasil tetapi dapat menghasilkan sistem file yang tidak stabil.
Jimmy Hedman
Saya pikir komentar Jimmy tentang jawaban ini sebenarnya adalah pilihan terbaik. Memang benar bahwa unmount "lazy" dapat menyebabkan ketidakstabilan, tetapi diasumsikan Anda sudah dalam keadaan tidak stabil jika Anda perlu memaksa-umount sistem file. Untuk tujuan ini, mengapa '-l' bukan opsi?
deesto
@deesto, Malas melepas tidak membuat perangkat blok undelying (volume LVM, wadah LUKS, loopback) tidak direferensikan.
Vi.
1

Saya khawatir tidak ada cara untuk melakukan ini pada satu perintah. umount -fbenar-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. :)

Janne Pikkarainen
sumber
1
Ini adalah kasus-kasus ketika saya tidak dapat meng-unmount bahkan secara manual: 1. proses-tidur yang tidak dapat terganggu yang tidak dapat dilanjutkan (driver macet dll.) 2. Penyimpanan gagal (yang juga menggantung setiap permintaan untuk itu). Saya ingin ini "unmount kotor" untuk menangani ini.
Vi.