Я хочу заставить раздел диска работать только в режиме чтения и держать его только для чтения более 30 минут.
Что я пробовал:
mount -o remount,ro (partition-identifier) (mount-point) -t (filesystem)
Проблема : это приводило к ошибке «занято устройство», так как некоторые процессы использовали раздел. Я не хочу убивать процессы с помощью диска. Я хочу смоделировать диск, внезапно становящийся доступным только для чтения, когда процессы все еще используют его.
Используется волшебный ключ sysrq, как показано ниже
echo u > /proc/sysrq-trigger
Проблема : это сделает все разделы диска доступными только для чтения (хотя устройство занято). Но через 20-30 минут машина сама перезагружается. Некоторые машины перезагружаются сразу после выполнения этой команды. Не уверен, что вызывает эту перезагрузку еще. Я не хочу, чтобы машина сама по себе перезагружалась, и мне нужно держать диск в режиме «только чтение» более 30 минут.
Вопрос : Есть ли какой-нибудь лучший способ заставить один раздел диска работать только для чтения, поддерживать его в таком состоянии в течение получаса и переводить его в режим чтения-записи, не вызывая перезагрузки в процессе?
источник
fsfreeze -f
? Он точно не перемонтирует файловую систему только для чтения. Вместо этого он блокирует всех авторов доfsfreeze -u
. Но это похоже ...fsfreeze -f
и в моем случае это было больше "заморозить ОС". Может быть, потому что записи были заблокированы, а не отклонены?fsfreeze
сделал мою систему недоступной, и я не мог ввести команду разморозки, не имея возможности переключиться обратно на терминал, и пришлось перезагрузить компьютер. Так что будьте осторожны ! :)Ответы:
Обычно вы не можете перемонтировать файловую систему как доступную только для чтения, если у процессов есть файл, который открыт для записи, или если он содержит файл, который удален, но все еще открыт. Точно так же вы не можете размонтировать файловую систему, в которой открыт какой-либо файл (или использовать подобные файлы, такие как процесс, в котором находится его текущий каталог, исполняемый файл и т. Д.).
Вы можете использовать,
umount -l
чтобы освободить точку монтирования и предотвратить открытие других файлов, но оставьте файловую систему смонтированной и оставьте процессы, которые уже открыли файлы, работающими в обычном режиме.Я не могу придумать общий способ заставить файловую систему перемонтироваться только для чтения, когда этого не должно быть. Однако, если файловая система поддерживается блочным устройством, вы можете сделать блочное устройство доступным только для чтения , например:
echo u > /proc/sysrq-trigger
это довольно экстремальный способ принудительного перемонтирования только для чтения, поскольку он затрагивает все файловые системы. Он предназначен как последний способ оставить файловую систему в чистом состоянии перед перезагрузкой.Повторная установка файловой системы только для чтения не приводит к перезагрузке. Все, что вызывает перезагрузку, не имеет прямого отношения к перемонтированию раздела только для чтения. Может быть, это совершенно не связано, или, может быть, это вызывает ошибку в приложении, которая вызывает его вращение и перегрев процессора, а ваш процессор неисправен или разогнан и в конечном итоге перезагружается. Вам необходимо отследить причину перезагрузки.
источник
echo 1 | sudo tee /sys/block/mmcblk0/mmcblk0p2/ro
echo u > /proc/sysrq-trigger
это не только экстремально, но также может заставить вас перезагрузиться, если вы хотите перемонтировать обратно RW. Когда я попробовал это, а затем перемонтировал (сmount..
),dmesg
сказал: «Не удалось перемонтировать RDWR из-за необработанного списка инодов-сирот. Пожалуйста, перемонтируйте / перемонтируйте вместо этого»Используйте
mount
опцию Force (при условии, что у вашего монтирования есть; у GNUmount
нет, но, например, у BSD и macOS):Конечно, ваш пробег может варьироваться в зависимости от фактической файловой системы, версии ядра и ситуации , так что это просто вариант более высокого уровня, пробующий другие приемы более низкого уровня, как, например, упомянуто @Gilles.
источник
/
раздел ext4 .umount -f
, но я только что попробовал перемонтировать в ro, и хотя -f заставляет команду не возвращать ошибку, файловая система фактически не сделана только для чтения.-f
есть--fake
. Цитата: «Заставляет делать все, кроме самого системного вызова; если это не очевидно, это« подделка », монтирующая файловую систему. Этот параметр полезен в сочетании с флагом -v, чтобы определить, что пытается выполнить команда mount do. Его также можно использовать для добавления записей для устройств, которые были смонтированы ранее с параметром -n. Параметр -f проверяет существующую запись в / etc / mtab и завершается ошибкой, когда запись уже существует (при обычном не поддельном монтировании, эта проверка выполняется ядром). "-f
действительно означает «сила».