Jak naprawdę wymusić odmontowanie systemu plików (bez ręcznego sprawdzenia, dlaczego jest zajęty)

13

Jak odmontować system plików w systemie Linux bez sprawdzania, dlaczego jest zajęty?

Chcę to zrobić jednym poleceniem. Powinien obsługiwać aplikacje korzystające z tego systemu plików, submountów, pojemników ( lxc-execute -n qqq <command>) i wszystkich innych rzeczy.

Po prostu „odmontuj. Bez zastrzeżeń!”. Dozwolone są specjalne łaty lub konfiguracja jądra.

System plików powinien być naprawdę odmontowany, więc z umount -lpewnością nie jest opcją. Na przykład dla cryptsetup remove(BTW jak siłą cryptsetup remove? Aktualizacja :, cryptsetup luksSuspendale nie będziesz w stanie, cryptsetup luksResumejeśli nie jest to LUKS).

Jak unieważnić wszystkie uchwyty plików w tym systemie plików?

Jedyny niezawodny sposób, jaki znam, to montowanie systemu plików za pomocą FUSE (zwykle nie ma problemu z odmontowaniem FUSE, ponieważ mogę po prostu zabić jego proces).

PS już wiem montażu fuser, lsof | grep, cat /proc/*/mounts | grepa przestarzałe nieprodukcyjnym „badfs łata”.

Vi.
źródło

Odpowiedzi:

3

Użyj kombinacji klawiszy Magic SysRq : Alt+ SysRq+u

Pamiętaj, że prawdopodobnie powinieneś najpierw wykonać synchronizację awaryjną: Alt+ SysRq+s

Pamiętaj też, że na niektórych (szczególnie nowszych) klawiaturach musisz PrtScraczej używać niżSysRq

sml
źródło
Klawisz Shift nie jest konieczny, wystarczy klawisz Alt + SysRq +. Kolejną rzeczą wartą wspomnienia (szczególnie dla użytkowników laptopów) jest to, że możesz nacisnąć Alt, nacisnąć i zwolnić SysRq, następnie nacisnąć i zwolnić literę / cyfrę, a na końcu zwolnić Alt. Co najważniejsze, powoduje to ponowne zamontowanie wszystkich systemów plików jako tylko do odczytu, więc jest to ostatnia sprawa przed wymuszonym ponownym uruchomieniem, a nie ogólny sposób ponownego montowania systemów plików tylko do odczytu.
Gilles „SO- przestań być zły”
@Gilles: dzięki za wskazówkę na temat klawisza Shift. Poprawiłem instrukcje.
sml
1. Ponownie podłącza się tylko do odczytu. To nie jest tak potrzebne. Na przykład chcę go odmontować i zamontować ponownie za pomocą FUSE. 2. Złą rzeczą jest to, że muszę "-o ponownie zamontować, system plików rw" root systemu plików i inne, aby potem wrócić do normalnej pracy.
Vi.
3

umount --forcelub umount -f(odpowiednik)

Jeśli to się nie powiedzie, użyj:

umount --lazylub umount --l(odpowiednik)

Opcja „ leniwa ” odłączy teraz system plików od hierarchii systemu plików i wyczyści wszystkie odniesienia do systemu plików, gdy tylko nie będzie on już zajęty. (Wymaga jądra 2.4.11 lub nowszego.) „Może to powodować niestabilność, ale sprawi, że rzecz zostanie odmontowana. Wszystkie programy korzystające z napędu mogą ulec awarii.

Freedom_Ben
źródło
Oczywiście --forcenie działa. I --lazynie jest naprawdę odmontowany - nie zwalnia LVM, sprzężenia zwrotnego ani szyfrowania.
Vi.
1
umount -f

można użyć do wymuszenia odmontowania, gdy system plików jest zajęty.

limonkowy
źródło
1
Nigdy mi się to nie udało: umount2: Device or resource busyjedynym częściowym sukcesem było eksperymentowanie z łatką badfs.
Vi.
Miałem ten sam komunikat „błąd”, ale i tak działał. System plików został odmontowany po umount -f
IanH
3
Spróbuj „leniwy umount”, umount -l. Zawsze się unosi, ale może wytworzyć niestabilny system plików.
Jimmy Hedman
Myślę, że komentarz Jimmy'ego do tej odpowiedzi jest właściwie najlepszą opcją. To prawda, że ​​„leniwy” odmontowanie może spowodować niestabilność, ale zakłada się, że jesteś już w niestabilnym stanie, jeśli musisz wymusić zamontowanie systemu plików. W tym celu dlaczego „-l” nie jest opcją?
deesto
@deesto, Lazy unmount nie powoduje, że niezablokowane urządzenie blokowe (wolumin LVM, kontener LUKS, pętla zwrotna) nie jest odesłane.
Vi.
1

Obawiam się, że nie da się tego zrobić jednym poleceniem. umount -fnaprawdę nie działa tak płynnie, jak można by się spodziewać. Jeśli pod jakimś innym wierzchowcem są podwieszone, nie można po prostu odmontować tych wierzchowców w losowej kolejności i mieć nadzieję, że upadną.

Ale nie martw się, istnieje jeden sposób, aby uczynić to wszystko jednym poleceniem: utwórz skrypt powłoki / Perla, który zabija pożądane procesy, odmontowuje kontenery, submounty i wreszcie odmontowuje inne montowanie. Następnie możesz po prostu wywołać skrypt na żądanie. Początkowo jest to dla ciebie więcej pracy, ale po uruchomieniu skryptu wszystko jest dziecinnie proste. :)

Janne Pikkarainen
źródło
1
Są to przypadki, w których nie mogę odmontować nawet ręcznie: 1. nieprzerwane procesy uśpienia, których nie można wznowić (sterowniki uległy awarii itp.) 2. Nieudane przechowywanie (które również zawiesza każde żądanie). Chcę, aby ten „brudny odmontować” to załatwił.
Vi.