Я разрабатываю приложение на встроенной плате Linux (работает на Debian), например, Raspberry Pi, Beagle Board / Bone или olimex. Доски работают в условиях, когда электричество неожиданно отключается (размещение БП и т. Д. Намного сложнее), и это будет происходить каждый день пару раз. Интересно, могут ли неожиданные отключения питания вызвать сбой / проблему в операционной системе Linux? Если это то, что я должен волновать, что бы вы предложили, чтобы предотвратить повреждения ОС от неожиданного отключения электроэнергии?
PS. Приложению необходимо записать некоторые данные на носитель (SD-карту), я думаю, что он не подходит для монтирования его только для чтения.
Ответы:
Неожиданные отключения питания могут привести к повреждению данных файловой системы - например, если процесс начал запись в файл, но еще не закончил его запись, файл может закончиться только наполовину записанным. Теперь представьте, если отключение питания происходит, когда вы на полпути к обновлению ядра ...
Как пишет l0b0, использование файловой системы журналирования поможет, так как она сможет отслеживать, что на самом деле было сделано. В дополнение к информации в википедии , что l0b0 связаны, вы можете быть заинтересованы в /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure , а также ,
Вам, как программисту, очевидно, нужно тщательно продумать, как обрабатывать запись в файлы, чтобы она стала атомарным процессом (т.е. это либо полностью выполнено, либо не выполнено вообще, но никогда не выполняется наполовину). Это довольно сложный вопрос.
источник
Чтобы свести к минимуму вероятность повреждения ОС, вероятно, лучше иметь отдельные разделы «системы» и «данных» на SD-карте. Таким образом, вы можете смонтировать «системный» раздел только для чтения и использовать высокоэластичную ФС в разделе «данных».
Кроме того, большинство из этих плат имеют очень низкое энергопотребление, поэтому возможна резервная батарея. Плата «LiPo rider» для Raspberry Pi может использоваться в качестве базового ИБП для обеспечения полного отключения при отключении питания.
источник
Это будет зависеть от
Рассмотрим, например, приложение, которое обрабатывает файл и записывает результаты по мере их вычисления (одна строка вывода на строку ввода) в другой файл. Если во время обработки отключается питание, и то же приложение запускается после перезапуска, оно не может просто перезапустить обработку с начала входного файла - это будет означать, что выходной файл будет содержать дублирующую информацию.
Может быть очень сложно сказать что-то определенное о гипотетической сложной системе, но наиболее стабильное программное обеспечение Linux, похоже, способно справляться со сбоями довольно хорошо.
источник
Поскольку никто не упомянул какие-либо конкретные файловые системы: более современные файловые системы (ext3, ext4, ntfs) способны обрабатывать сбои намного лучше, чем старые файловые системы (ext2, ext, fat32) из-за журналирования .
Предполагая, что жесткий диск не выходит из строя и не лежит , полный сбой питания не должен повредить файловую систему. Отдельные файлы, которые были записаны, могут все еще быть повреждены, поэтому, если вы были в процессе обновления ОС, когда произошел сбой питания, все еще возможно отключить ОС.
источник