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 -l
pewnością nie jest opcją. Na przykład dla cryptsetup remove
(BTW jak siłą cryptsetup remove
? Aktualizacja :, cryptsetup luksSuspend
ale nie będziesz w stanie, cryptsetup luksResume
jeś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 | grep
a przestarzałe nieprodukcyjnym „badfs łata”.
umount --force
lubumount -f
(odpowiednik)Jeśli to się nie powiedzie, użyj:
umount --lazy
lubumount --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.
źródło
--force
nie działa. I--lazy
nie jest naprawdę odmontowany - nie zwalnia LVM, sprzężenia zwrotnego ani szyfrowania.można użyć do wymuszenia odmontowania, gdy system plików jest zajęty.
źródło
umount2: Device or resource busy
jedynym częściowym sukcesem było eksperymentowanie z łatką badfs.Obawiam się, że nie da się tego zrobić jednym poleceniem.
umount -f
naprawdę 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. :)
źródło