Домашня » як » Як можуть виникнути несподівані завершення роботи комп'ютера 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, здається, в змозі справлятися з аваріями досить добре.

    Стю пропонує розділити операційну систему і дані, а також додати резервну копію акумулятора:

    Щоб мінімізувати можливість пошкодження ОС, можливо, краще мати окремі розділи “system” та “data” на SD-карті. Таким чином ви можете монтувати розділ «системний» розділ «лише для читання» та використовувати високоеластичний FS на розділі «data».

    Крім того, більшість цих плат мають дуже низькі вимоги до потужності, тому можливе резервне копіювання акумулятора. Дошка "LiPo rider" для Raspberry Pi може бути використана в якості основного ДБЖ для забезпечення чистого відключення від втрати потужності.

    Нарешті, Jenny D розширює пропозицію файлової системи журналу:

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

    Як написав l0b0, використання файлової системи журналювання допоможе, оскільки вона зможе відслідковувати, що було зроблено. На додаток до wikipedia info, з яким пов'язаний l0b0, ви можете зацікавитись у гарантії Журнал файлових систем проти корупції після помилки живлення.

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


    Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.