Як реально змусити відключити файлову систему (без ручного дослідження, чому вона зайнята)


13

Як відключити файлову систему в Linux, не досліджуючи, чому вона зайнята?

Я хочу це зробити в одній команді. Він повинен обробляти програми, що використовують цю файлову систему, підменші, контейнери ( lxc-execute -n qqq <command>) та всі інші речі.

Просто "відключити. Заперечень немає!". Допускаються спеціальні патчі ядра або конфігурація.

Файлова система повинна бути дійсно відключена, тому umount -lце, звичайно, не є варіантом. Наприклад, для cryptsetup remove(BTW як насильно cryptsetup remove? Оновити:, cryptsetup luksSuspend але ви не зможете, cryptsetup luksResumeякщо це не LUKS).

Як зробити всі файлові файли в цій файловій системі недійсними?

Єдиний надійний спосіб, який я знаю, - це встановлення файлової системи через FUSE (зазвичай не існує проблеми, щоб відключити річ FUSE через те, що я можу просто вбити її процес).

PS Уже Паспарту fuser, lsof | grep, cat /proc/*/mounts | grepі застарілий неробочий «badfs патч».

Відповіді:


3

Використовуйте комбінацію клавіш Magic SysRq : Alt+ SysRq+u

Зауважте, що вам, мабуть, слід спочатку зробити екстрену синхронізацію: Alt+ SysRq+s

Також зауважте, що на деяких (особливо новіших) клавіатурах вам потрібно PrtScскоріше використовуватиSysRq


Клавіша Shift не потрібна, просто Alt + SysRq + клавіша. Ще одна річ, яку варто згадати (особливо для користувачів ноутбуків), - це те, що ви можете натиснути Alt, натиснути та відпустити SysRq, потім натиснути та відпустити літеру / цифру та нарешті відпустити Alt. Найголовніше, що це перекомпоновано всі файлові системи як лише для читання, тому це остання річ перед примусовою перезавантаженням, а не загальний спосіб перенастроювання файлових систем лише для читання.
Жил "ТАК - перестань бути злим"

@Gilles: дякую за пораду про клавішу shift. Я виправив свої вказівки.
sml

1. Він перераховується лише для читання. Це не те, що хотілося. Наприклад, я хочу його зняти та перезавантажити за допомогою FUSE. 2. Погано те, що мені потрібно «-o перерахувати, rw» кореневу файлову систему та інші після цього, щоб повернутися до нормальної роботи.
Ві.

3

umount --forceабо umount -f(еквівалент)

Якщо це не вдається, то використовуйте:

umount --lazyабо umount --l(еквівалент)

Параметр " ледачий " тепер "від'єднає файлову систему від ієрархії файлової системи та очистить усі посилання на файлову систему, як тільки вона більше не зайнята. (Потрібно ядро ​​2.4.11 або пізнішої версії.)" Це може спричинити нестабільність, але це отримає річ відірвана. Будь-які програми, що використовують накопичувач, можуть вийти з ладу.


Звичайно --force, не працює. І --lazyце не справжнє зняття - воно не випускає LVM, loopback або cryptsetup речі.
Ві.

1
umount -f

можна використовувати для примусового відключення, коли файлова система зайнята.


1
Це ніколи не працювало для мене: umount2: Device or resource busyЄдиний частковий успіх був тоді, коли я експериментував з патчем поганих значень.
Ві.

У мене було те саме повідомлення про помилку, але воно все-таки працювало. Файлова система відключена після umount -f
IanH

3
Спробуйте "лінивий umount", umount -l. Він завжди розміщується, але може створювати нестабільну файлову систему.
Джиммі Гедман

Я думаю, що коментар Джиммі щодо цієї відповіді насправді найкращий варіант. Це правда, що "ледачий" відключення може спричинити нестабільність, але передбачається, що ви вже в нестабільному стані, якщо вам потрібно змусити придумати файлову систему. З цією метою, чому "-l" не є варіантом?
деесто

@deesto, Lazy unmount не робить невідкладений блок блоку (об'єм LVM, контейнер LUKS, петля).
Ві.

1

Боюся, немає можливості зробити це за допомогою однієї команди. umount -fнасправді не працює так гладко, як можна було б сподіватися. Якщо під деяким іншим кріпленням є підпункти, ви не можете просто демонтувати ці кріплення в якомусь випадковому порядку і сподіватися, що вони знизяться.

Але не хвилюйтесь, є один спосіб зробити все це єдиною командою: створити оболонку / скрипт Perl, який вбиває потрібні процеси, відключає контейнери, підміняє і, нарешті, відключає інше кріплення. Тоді ви можете просто зателефонувати за своїм сценарієм. Спочатку це більше спрацьовує для вас, але після того, як сценарій запрацює, все грається дитиною. :)


1
Це випадки, коли я не можу відключити навіть вручну: 1. процеси безперебійного сну, які неможливо відновити (збої драйверів тощо) 2. Невдале зберігання (яке також висить кожен запит на нього). Я хочу, щоб це "брудне зняття" впоралося з цим.
Ві.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.