Почему Linux не перезагружается после сбоя питания, например, на Raspberry

Если у вашего grep есть опция -P, что означает PCRE , вы можете сделать это:

grep -P "^\Q$1\E"

Обратитесь к этому вопросу и см. подробности в PCRE doc .

0
22.04.2021, 14:43
2 ответа

Некоторые примечания, о которых следует знать:

Защита SD-карты от записи может привести к тому, что вся система просто не запустится. Некоторые файлы являются временными/динамическими, и их необходимо записывать во время работы ОС (или программ в ОС ). Конечно, есть решения, такие как создание поддельного дисковода в ОЗУ для хранения этих временных файлов (, являющихся временными файлами, нет проблем, если сбой питания привел к исчезновению ОЗУ ). Современные ядра Linux уже делают это или подобное; Каталоги /run и /sys создаются в оперативной памяти и фактически не записываются на какой-либо физический диск. Другие,например, некоторые файлы/каталоги в /dev создаются по мере необходимости.

Что касается того, как и почему происходит повреждение. Учтите, что чтение/запись на SD-карту происходит очень медленно по сравнению со скоростью ЦП и ОЗУ. Когда ЦП выполняет миллиарды инструкций в секунду, а ОЗУ аналогичным образом обращается к ячейкам памяти, все в порядке. Но что происходит, когда вам нужно читать или писать с/на SD-карту? Он может читать/записывать только несколько тысяч ячеек памяти в секунду.

Вы не хотите, чтобы ОС просто останавливала все и ждала завершения чтения/записи. Представьте, что вы загрузили веб-страницу, загрузка которой заняла целую минуту. Но пока он загружался, вам приходилось ждать, пока он будет сделан! Вы не могли выпить свой кофе, вы не могли переключиться на другую веб-страницу, вы даже не могли сказать ей, чтобы она перестала загружаться, потому что вы нетерпеливы.

Итак, что делает ОС, так это кэширует определенные данные в ОЗУ, чтобы ей не приходилось постоянно ждать, чтобы снова прочитать их с SD. Он делает это и при записи на SD-карту :Вместо фактической записи на SD-карту он сохраняет данные в ОЗУ и планирует их фактическую запись на SD в более позднее время, когда ЦП/ОС не загружены. так занят, и возвращается к другим делам, например, к выполнению ваших желаний.

Повреждение происходит, когда эти данные находятся только в ОЗУ, но отключается питание. Нет возможности поддерживать оперативную память в свежем виде, поэтому она не может записывать кэшированные данные на SD-карту. Его больше нет. Значит данные на сд карте сейчас устарели --У меня нет тех данных что были в ОЗУ. Иногда вам везет, и это не беда; потерянные данные тривиальны и могут быть созданы снова. В других случаях потерянные данные являются критически важными и приводят к повреждению.

Даже небольшое изменение может вызвать большую проблему. Если файл стал больше только на один байт, ОС должна обновить данные диска :. Как один байт, добавленный к файлу, так и данные на диске, которые сообщают ОС, насколько велик файл.Я должен обновить это, чтобы узнать, что файл теперь на 1 байт больше. Однако опять же, эта информация кэшируется в ОЗУ и позже планируется записать на SD-карту.

Если сбой питания произойдет до того, как будет записан новый размер, SD-карта будет «думать», что файл все еще имеет старый размер. Это новое свидание полностью утрачено --порчей.

Большинство операционных систем предпринимают шаги, чтобы попытаться минимизировать риск, но полностью устранить его невозможно. Даже защита SD-карты от записи не идеальна; SD-карта со временем изнашивается до тех пор, пока она больше не может хранить данные, хранящиеся на ней.

ЭМИ (Электромагнитный импульс )аналогичен --он вызывает короткое замыкание и перегорание электрических устройств. Таким образом, ваша SD-карта все еще может быть уничтожена, если она подверглась достаточно сильному ЭМИ. И так далее.

2
28.04.2021, 22:51

Это не ограничивается SD-картами.

Linux, как и все операционные системы -общего назначения, использует буферный кэш файловой системы. Когда процесс записывает файл, измененные данные файла и метаданные сохраняются в буферном кеше. Сбой питания во время записи метаданных на носитель данных может привести к тому, что метаданные будут записаны только частично. В результате структуры файловой системы на SD-карте несовместимы. Это часто называют «поврежденной» файловой системой.

1
28.04.2021, 22:51

Теги

Похожие вопросы