Как неожиданные выключения могут повредить компьютер Linux?

Являются ли неожиданные отключения столь же вредными для Linux, как и для других операционных систем? Читайте дальше, пока мы исследуем последствия катастрофического отключения системы в файловых системах Linux.

Сегодняшняя сессия вопросов и ответов приходит к нам благодаря SuperUser — подразделению Stack Exchange, группы веб-сайтов вопросов и ответов, управляемой сообществом.

Вопрос

Читатель SuperUser User208554 интересуется структурой файлов Linux и интересуется приложением/установкой, над которой он работает:

Я занимаюсь разработкой приложения на встроенной плате Linux (работает под управлением Debian), например. Raspberry Pi, Beagle Board/Bone или olimex. Платы работают в условиях, когда электричество неожиданно отключается (слишком сложно разместить блок питания и т. Д.), И это будет происходить каждый день пару раз. Интересно, могут ли неожиданные отключения питания вызвать проблемы в операционной системе Linux? Если это то, о чем мне следует беспокоиться, что бы вы предложили, чтобы предотвратить повреждения ОС от неожиданных отключений питания?

PS. Приложению необходимо записать некоторые данные на носитель (SD-карту), я думаю, что он не подходит для монтирования его только для чтения.

Так каков приговор?

Ответ

Участник SuperUser l0b0 предлагает некоторое представление о файловых системах журналирования/отсутствия журналирования:

Это будет зависеть от

  1. используете ли вы файловую систему журналирования и
  2. насколько хорошо приложения могут обрабатывать прерванную обработку.

Рассмотрим, например, приложение, которое обрабатывает файл и записывает результаты по мере их вычисления (одна строка вывода на строку ввода) в другой файл. Если во время обработки отключается питание, и то же приложение запускается после перезапуска, оно не может просто перезапустить обработку с начала входного файла — это будет означать, что выходной файл будет содержать дублирующую информацию.

Может быть очень сложно сказать что-то определенное о гипотетической сложной системе, но наиболее стабильное программное обеспечение Linux, похоже, способно справляться со сбоями довольно хорошо.

Stu предлагает разделить операционную систему и данные, а также добавить резервную батарею:

Чтобы свести к минимуму вероятность повреждения ОС, вероятно, лучше иметь отдельные разделы «системы» и «данных» на SD-карте. Таким образом, вы можете смонтировать «системный» раздел только для чтения и использовать высокоэластичную ФС в разделе «данных».

Кроме того, большинство из этих плат имеют очень низкие требования к питанию, поэтому возможна резервная батарея. Плата «LiPo rider» для Raspberry Pi может использоваться в качестве базового ИБП для обеспечения полного отключения при отключении питания.

Наконец, Дженни Д. расширяет предложение по файловой системе журналирования:

Неожиданные отключения питания могут привести к повреждению данных файловой системы — например, если процесс начал запись в файл, но еще не закончил запись, файл может закончиться только наполовину записанным. Теперь представьте, происходит ли отключение питания, когда вы на полпути к обновлению ядра …

Как пишет l0b0, использование файловой системы журналирования поможет, так как она сможет отслеживать, что на самом деле было сделано. В дополнение к информации из Википедии, на которую ссылается l0b0, вас может заинтересовать также «Обеспечить журналирование файловой системы от коррупции после сбоя питания».

Вам, как программисту, очевидно, нужно тщательно продумать, как обрабатывать запись в файлы, чтобы она стала атомарным процессом (т. Е. Он либо полностью выполнен, либо вообще не выполнен, но никогда не выполняется наполовину). Это довольно сложный вопрос.

Есть что добавить к объяснению? Звук выключен в комментариях. Хотите узнать больше ответов от других опытных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь.

Оцените статью
TutoryBird.Ru
Добавить комментарий