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

    Как неожиданные отключения могут повредить компьютер 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? Ознакомьтесь с полным обсуждением здесь.