Малина-логотип

Raspberry Pi робить більш стійким File система

Raspberry-Pi-Робить-Стійкіший-File-Система-продукт

Обсяг документа

Цей документ стосується таких продуктів Raspberry Pi:

Пі 0 Пі 1 Пі 2 Пі 3 Пі 4 Пі 400 CM1 CM3 CM4 CM 5 Піко
0 W H A B A B B всі всі всі всі всі всі всі
* * * * * * * * * * * * * *  

 

вступ

Пристрої Raspberry Pi Ltd часто використовуються як пристрої для зберігання даних і моніторингу, часто в місцях, де можуть статися раптові відключення живлення. Як і в будь-якому комп’ютерному пристрої, перебої живлення можуть спричинити пошкодження пам’яті. Цей офіційний документ містить деякі варіанти того, як запобігти пошкодженню даних за цих та інших обставин, вибравши відповідні file системи та налаштування для забезпечення цілісності даних. У цій технічній документації передбачається, що Raspberry Pi працює під управлінням операційної системи (ОС) Raspberry Pi (Linux) і повністю оновлено з найновішими мікропрограмами та ядрами.

Що таке пошкодження даних і чому це відбувається?
Пошкодження даних стосується ненавмисних змін у комп’ютерних даних, які відбуваються під час запису, читання, зберігання, передачі або обробки. У цьому документі ми маємо на увазі лише зберігання, а не передачу чи обробку. Пошкодження може виникнути, коли процес запису переривається до його завершення таким чином, що перешкоджає завершенню запису, наприкладample, якщо втрачено живлення. На цьому етапі варто коротко ознайомитися з тим, як ОС Linux (і, відповідно, ОС Raspberry Pi) записує дані в сховище. Linux зазвичай використовує кеші запису для зберігання даних, які потрібно записати в сховище. Вони кешують (тимчасово зберігають) дані в оперативній пам’яті (RAM), доки не буде досягнуто певного попередньо визначеного ліміту, після чого всі незавершені записи на носій даних виконуються в одній транзакції. Ці попередньо визначені обмеження можуть залежати від часу та/або розміру. наприкладampтобто, дані можуть кешуватися та записуватися в пам'ять лише кожні п'ять секунд або записуватися лише тоді, коли накопичиться певна кількість даних. Ці схеми використовуються для підвищення продуктивності: запис великого фрагмента даних за один раз відбувається швидше, ніж запис багатьох маленьких фрагментів даних.

Однак, якщо живлення втрачається між зберіганням даних у кеші та їх записом, ці дані втрачаються. Інші можливі проблеми виникають далі в процесі запису, під час фізичного запису даних на носій інформації. Після того, як апаратний елемент (наприкладampтобто інтерфейс картки Secure Digital (SD) отримує команду на запис даних, для фізичного зберігання цих даних все одно потрібен обмежений час. Знову ж таки, якщо протягом цього надзвичайно короткого періоду трапляється збій живлення, записувані дані можуть бути пошкоджені. Під час вимкнення комп'ютерної системи, включаючи Raspberry Pi, найкраще використовувати опцію вимкнення. Це гарантує, що всі кешовані дані будуть записані, і що обладнання мало час фактично записати дані на носій інформації. SD-карти, що використовуються більшістю пристроїв Raspberry Pi, чудово підходять як дешева заміна жорстких дисків, але з часом схильні до збоїв, залежно від того, як вони використовуються. Флеш-пам'ять, що використовується в SD-картах, має обмежений термін служби циклу запису, і коли картки наближаються до цієї межі, вони можуть стати ненадійними. Більшість SD-карт використовують процедуру, яка називається вирівнюванням зносу, щоб забезпечити якомога довше термін служби, але зрештою вони можуть вийти з ладу. Це може тривати від місяців до років, залежно від того, скільки даних було записано на картку або (що ще важливіше) стерто з неї. Цей термін служби може суттєво відрізнятися між картами. Збій SD-карти зазвичай сигналізується випадковими file пошкодження, оскільки частини SD-карти стають непридатними для використання.

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

Що може викликати операцію запису?
Більшість програм виконують певний запис у сховище, наприкладampконфігураційну інформацію, оновлення бази даних тощо. Деякі з них files може бути навіть тимчасовим, тобто використовуватися лише під час роботи програми, і не потребує підтримки протягом циклу живлення; однак вони все одно призводять до записів на носій даних. Навіть якщо ваша програма насправді не записує жодних даних, у фоновому режимі Linux постійно виконуватиме записи в пам’ять, переважно записуючи інформацію про журнал.

Апаратні рішення

Варто зазначити, що запобігання неочікуваним відключенням живлення є загальновживаним і добре зрозумілим засобом пом’якшення втрати даних, хоча це й не входить у сферу дії цього технічного документу. Такі пристрої, як джерела безперебійного живлення (ДБЖ), забезпечують безперебійне живлення, і якщо джерело безперебійного живлення втрачено під час живлення від батареї, це може повідомити комп’ютерній системі про неминучу втрату живлення, щоб завершити роботу безперервно, перш ніж розрядиться резервне джерело живлення. Оскільки SD-карти мають обмежений термін служби, може бути корисним мати режим заміни, який гарантує, що SD-карти будуть замінені до того, як вони матимуть можливість закінчити термін служби.

Міцний file системи

Існують різні способи захисту пристрою Raspberry Pi від пошкоджень. Вони відрізняються за своєю здатністю запобігати корупції, при цьому кожна дія зменшує ймовірність її виникнення.

  • Зменшення записів
    Просте зменшення кількості записів, які виконують ваші програми та ОС Linux, може мати позитивний ефект. Якщо ви ведете багато журналів, то ймовірність того, що записи відбуватимуться під час пошкодження, зростає. Зменшення реєстрації у вашій програмі залежить від кінцевого користувача, але вхід у Linux також можна зменшити. Це особливо важливо, якщо ви використовуєте флеш-пам’ять (наприклад, eMMC, SD-карти) через обмежений життєвий цикл запису.
  • Зміна часу фіксації
    Час фіксації для a file system — це кількість часу, протягом якого вона кешує дані, перш ніж скопіювати їх у сховище. Збільшення цього часу покращує продуктивність завдяки пакетному об’єднанню великої кількості записів, але може призвести до втрати даних, якщо перед записом даних виникне пошкодження. Зменшення часу фіксації означатиме меншу ймовірність події пошкодження, що призведе до втрати даних, хоча це не запобігає їй повністю.
    Щоб змінити час фіксації для основного EXT4 file система на Raspberry Pi OS, вам потрібно відредагувати файл \etc\fstab file який визначає, як file системи монтуються під час запуску.
  • $sudo nano /etc/fstab

Додайте наступне до запису EXT4 для кореневого каталогу file система:

  • commit=

Отже, fstab може виглядати приблизно так, де час фіксації встановлено на три секунди. Час фіксації за замовчуванням становитиме п’ять секунд, якщо не встановлено спеціально.

Raspberry-Pi-Робить-Стійкіший-File-Система-

 

Тимчасовий file системи

Якщо заявка потребує тимчасового file сховище, тобто дані, які використовуються лише під час роботи програми, і їх не потрібно зберігати після завершення роботи, тоді хорошим варіантом для запобігання фізичному запису в сховище є використання тимчасового file система, tmpfs. Тому що ці file системи базуються на оперативній пам’яті (насправді у віртуальній пам’яті), будь-які дані, записані в tmpfs, ніколи не записуються у фізичну пам’ять, і тому не впливають на тривалість життя флеш-пам’яті та не можуть бути пошкоджені через подію пошкодження.
Створення одного чи кількох розташувань tmpfs потребує редагування /etc/fstab file, який контролює всі file системи під управлінням ОС Raspberry Pi. Наступний прикладample замінює місця зберігання на основі /tmp і /var/log на тимчасові file розташування системи. Другий ексample, який замінює стандартну папку журналювання, обмежує загальний розмір файлу file системи до 16 Мб.

  • tmpfs /tmp значення tmpfs за замовчуванням, без часу 0 0
  • tmpfs /var/log значення tmpfs за замовчуванням, час без змін, розмір=16м 0 0

Існує також сценарій стороннього виробника, який допомагає налаштувати журналювання в оперативну пам’ять, який можна знайти на GitHub. Це має додаткову функцію скидання журналів з оперативної пам’яті на диск із попередньо визначеним інтервалом.

Корінь лише для читання file системи

Корінь file система (rootfs) є file системи на розділі диска, на якому розташований кореневий каталог, і це file система, на якій усі ін file системи монтуються під час завантаження системи. На Raspberry Pi це /, і за замовчуванням він розташований на SD-карті як розділ EXT4 для повного читання/запису. Існує також папка завантаження, яка монтується як /boot і є розділом FAT для читання/запису. Зробити rootfs доступом ЛИШЕ для читання запобігає будь-якому доступу до нього для запису, що робить його більш стійким до подій пошкодження. Однак, якщо не вжити інших дій, це означає, що нічого не можна писати на адресу file система взагалі, тому збереження будь-яких даних із вашої програми в rootfs буде вимкнено. Якщо вам потрібно зберігати дані з вашої програми, але потрібна rootfs лише для читання, поширеною технікою є додавання USB-накопичувачу чи подібного, призначеного лише для зберігання даних користувача.

ПРИМІТКА
Якщо ви використовуєте своп file при використанні тільки для читання file системи, вам потрібно буде перемістити swap file до розділу читання/запису.

Накладання file система

Накладка file система (overlayfs) поєднує два file системи, верхній file системи та нижч file система. Коли ім’я існує в обох file системи, об’єкт у верх file системи видно, поки об’єкт знаходиться в нижній частині file Система або прихована, або, у випадку каталогів, об'єднана з верхнім об'єктом. Raspberry Pi надає опцію в raspi-config для ввімкнення overlayfs. Це робить кореневу файлову систему (нижню) доступною лише для читання та створює верхню файлову систему на основі оперативної пам'яті. file система. Це дає дуже схожий результат лише для читання file система, при цьому всі зміни користувача втрачаються після перезавантаження. Ви можете ввімкнути overlayfs за допомогою командного рядка raspi-config або за допомогою програми конфігурації Raspberry Pi для робочого столу в меню «Налаштування».

Існують також інші реалізації overlayfs, які можуть синхронізувати необхідні зміни від верхнього до нижнього file системи за заздалегідь визначеним графіком. наприкладampНаприклад, ви можете копіювати вміст домашньої папки користувача з верхнього каталогу в нижній кожні дванадцять годин. Це обмежує процес запису дуже коротким проміжком часу, а це означає, що пошкодження набагато менш ймовірне, але це означає, що якщо живлення втрачається до синхронізації, будь-які дані, згенеровані з моменту останньої, будуть втрачені. pSLC на обчислювальних модулях Пам'ять eMMC, яка використовується на пристроях Raspberry Pi Compute Module, - це MLC (багаторівнева комірка), де кожна комірка пам'яті представляє 2 біти. pSLC, або псевдо-однорівнева комірка, - це тип технології флеш-пам'яті NAND, яку можна ввімкнути в сумісних пристроях зберігання даних MLC, де кожна комірка представляє лише 1 біт. Вона розроблена для забезпечення балансу між продуктивністю та довговічністю флеш-пам'яті SLC та економічною ефективністю та більшою ємністю флеш-пам'яті MLC. pSLC має вищу довговічність запису, ніж MLC, оскільки рідший запис даних у комірки зменшує знос. Хоча MLC може запропонувати від 3,000 до 10,000 XNUMX циклів запису, pSLC може досягати значно вищих показників, наближаючись до рівнів довговічності SLC. Ця підвищена витривалість призводить до довший термін служби пристроїв, що використовують технологію pSLC, порівняно з тими, що використовують стандартну MLC.

MLC є економічно ефективнішим, ніж пам'ять SLC, але хоча pSLC пропонує кращу продуктивність і витривалість, ніж чистий MLC, це відбувається за рахунок ємності. Пристрій MLC, налаштований для pSLC, матиме половину (або менше) ємності, ніж стандартний пристрій MLC, оскільки кожна комірка зберігає лише один біт замість двох або більше.

Деталі реалізації

pSLC реалізовано на eMMC як розширена область користувача (також відома як розширене сховище). Фактична реалізація розширеної області користувача не визначена у стандарті MMC, але зазвичай це pSLC.

  • Розширена зона користувача – це концепція, тоді як pSLC – це реалізація.
  • pSLC – це один із способів впровадження розширеної зони користувача.
  • На момент написання статті, eMMC, що використовується на обчислювальних модулях Raspberry Pi, реалізує розширену область користувача за допомогою pSLC.
  • Немає потреби налаштовувати всю область користувача eMMC як розширену область користувача.
  • Програмування області пам'яті як розширеної області користувача – це одноразова операція. Це означає, що її не можна скасувати.

Вмикаємо його
Linux надає набір команд для керування розділами eMMC у пакеті mmc-utils. Установіть стандартну ОС Linux на пристрій CM і встановіть інструменти, як описано нижче:

  • sudo apt інсталювати mmc-utils

Щоб отримати інформацію про eMMC (ця команда переходить у менше, оскільки потрібно відобразити досить багато інформації):

  • sudo mmc extcsd прочитати /dev/mmcblk0 | менше

 УВАГА
Наступні операції є одноразовими – ви можете виконати їх один раз і їх не можна скасувати. Ви також повинні запустити їх перед використанням Compute Module, оскільки вони зітруть усі дані. Ємність eMMC буде зменшено до половини попереднього значення.

Для ввімкнення pSLC використовується команда mmc enh_area_set, яка потребує кількох параметрів, які вказують, на якій області пам’яті має бути активовано pSLC. Наступний прикладample використовує всю площу. Будь ласка, зверніться до довідки команд mmc (man mmc), щоб дізнатися, як використовувати підмножину eMMC.

Raspberry-Pi-Робить-Стійкіший-File-Система-

Після перезавантаження пристрою вам НЕОБХІДНО буде перевстановити операційну систему, оскільки ввімкнення pSLC видалить вміст eMMC.

Програмне забезпечення Raspberry Pi CM Provisioner має опцію налаштування pSLC під час процесу підготовки. Цю опцію можна знайти на GitHub за адресою https://github.com/raspberrypi/cmprovision.

  • Поза пристроєм file системи / мережеве завантаження
    Raspberry Pi може завантажуватися через мережеве з’єднання, наприкладample за допомогою мережі File Система (NFS). Це означає, що як тільки пристрій завершить свої перші stage boot, замість того, щоб завантажувати його ядро ​​та root file система з SD-карти, вона завантажується з мережевого сервера. Раз бігає, все file операції діють на сервері, а не на локальній SD-карті, яка більше не бере участі в розгляді.
  • Хмарні рішення
    Сьогодні багато офісних завдань виконуються в браузері, а всі дані зберігаються онлайн у хмарі. Зберігання даних поза картою SD, очевидно, може підвищити надійність за рахунок необхідності постійного з’єднання з Інтернетом, а також можливих зборів від хмарних провайдерів. Користувач може використовувати повномасштабну інсталяцію ОС Raspberry Pi з оптимізованим браузером Raspberry Pi для доступу до будь-якої хмарної служби від таких постачальників, як Google, Microsoft, Amazon тощо. Альтернативою є один із постачальників тонкого клієнта, який замінює ОС Raspberry Pi ОС/додатком, який працює з ресурсів, що зберігаються на центральному сервері замість SD-карти. Тонкі клієнти працюють шляхом віддаленого підключення до обчислювального середовища на основі сервера, де зберігається більшість програм, конфіденційних даних і пам’яті.

Висновки

За умови дотримання правильних процедур вимкнення, сховище Raspberry Pi на SD-карті є надзвичайно надійним. Це добре працює в домашньому або офісному середовищі, де вимкнення можна контролювати, але під час використання пристроїв Raspberry Pi в промислових випадках або в районах з ненадійним джерелом живлення додаткові запобіжні заходи можуть підвищити надійність.

Коротко кажучи, варіанти підвищення надійності можна перерахувати наступним чином:

  • Використовуйте добре відому та надійну SD-карту.
  • Зменште кількість записів, використовуючи довший час фіксації та тимчасові file системи, використовуючи overlayfs або подібний.
  • Використовуйте зовнішнє сховище, таке як мережеве завантаження або хмарне сховище.
  • Впроваджуйте режим заміни SD-карт до закінчення терміну їхнього служби.
  • Використовуйте ДБЖ.

Raspberry Pi є торговою маркою Raspberry Pi Ltd
Raspberry Pi Ltd

Колофон
© 2020-2023 Raspberry Pi Ltd (раніше Raspberry Pi (Trading) Ltd.)
Ця документація ліцензована за ліцензією Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND).

  • дата складання: 2024
  • версія збірки: githash: 3e4dad9-clean

Юридичне повідомлення про відмову від відповідальності
ТЕХНІЧНІ ДАНІ ТА ДАНІ ПРО НАДІЙНІСТЬ ПРОДУКЦІЇ RASPBERRY PI (ВКЛЮЧАЮЧИ ТЕХНІЧНІ ТАБЛИЦІ) З ЧАСОМ МОДИфікованими («РЕСУРСИ») НАДАЮТЬСЯ КОМПАНІЄЮ RASPBERRY PI LTD («RPL») «ЯК Є», ТА БУДЬ-ЯКІ ПРЯМІ АБО НЕПРЯМІ ГАРАНТІЇ, ВКЛЮЧАЮЧИ, АЛЕ НЕ ОБМЕЖУЮЧИСЬ. TO, НЕПРЯМІ ГАРАНТІЇ ПРИДАТНОСТІ ДЛЯ ПРОДАЖУ ТА ПРИДАТНОСТІ ДЛЯ КОНКРЕТНОЇ МЕТИ ВІДМОВЛЯЮТЬСЯ. У МАКСИМАЛЬНОМУ МІРІ, ДОЗВОЛЕНОМУ ЧИННИМ ЗАКОНОДАВСТВОМ, КОМПАНІЯ RPL НЕ НЕСЕ ВІДПОВІДАЛЬНОСТІ ЗА БУДЬ-ЯКІ ПРЯМІ, НЕПРЯМІ, ВИПАДКОВІ, СПЕЦІАЛЬНІ, ПРИКЛІВНІ АБО НЕПРЯМІ ЗБИТКИ (ЗОКРЕМА, АЛЕ НЕ ОБМЕЖУЮЧИСЬ, ЗАКУПІВЛЮ ТОВАРІВ-ЗАМІННИКІВ АБО ПІДПРИЄМСТВА ПОСЛУГИ; ВТРАТА КОРИСТУВАННЯ, ДАНИХ , АБО ПРИБУТОК; АБО ПЕРЕРВА У ДІЯЛЬНОСТІ), НЕЗАЛЕЖНО ВИЧИСЛЕНО І НА БУДЬ-ЯКІЙ ТЕОРІЇ ВІДПОВІДАЛЬНОСТІ, ЧИ В КОНТРАКТІ, СУВОРОЇ ВІДПОВІДАЛЬНОСТІ АБО ПРАВОМІННОСТІ (ВКЛЮЧАЮЧИ НЕДБАЛІСТЬ АБО ІНШИМ СПОСОБОМ), ЩО ВИНИКАЮТЬ БУДЬ-ЯКИМ ШЛЯХОМ ВИКОРИСТАННЯ РЕСУРСІВ, НАВІТЬ ЯКЩО БУЛО ПОВІДОМЛЕНО ПРО МОЖЛИВІСТЬ ITY ТАКОГО ПОШКОДЖЕННЯ.

RPL залишає за собою право вносити будь-які покращення, вдосконалення, виправлення або будь-які інші зміни до РЕСУРСІВ або будь-яких продуктів, описаних у них, у будь-який час та без додаткового повідомлення. РЕСУРСИ призначені для кваліфікованих користувачів з відповідним рівнем знань у галузі проектування. Користувачі несуть повну відповідальність за свій вибір та використання РЕСУРСІВ, а також за будь-яке застосування продуктів, описаних у них. Користувач погоджується відшкодувати збитки та звільнити RPL від відповідальності за будь-яку відповідальність, витрати, збитки чи інші втрати, що виникають внаслідок використання ними РЕСУРСІВ. RPL надає користувачам дозвіл використовувати РЕСУРСИ виключно разом з продуктами Raspberry Pi. Будь-яке інше використання РЕСУРСІВ заборонено. Жодна ліцензія не надається на жодне інше право інтелектуальної власності RPL або інше право інтелектуальної власності третіх осіб.

ДІЯЛЬНІСТЬ З ВИСОКИМ РИЗИКОМ. Продукти Raspberry Pi не розроблені, не виготовлені та не призначені для використання в небезпечних середовищах, що вимагають безвідмовної роботи, таких як експлуатація ядерних установок, навігаційні або комунікаційні системи літаків, управління повітряним рухом, системи озброєння або критично важливі для безпеки застосування (включаючи системи життєзабезпечення та інші медичні пристрої), в яких відмова продуктів може призвести безпосередньо до смерті, травм або серйозної фізичної чи екологічної шкоди («Діяльність з високим ризиком»). RPL спеціально відмовляється від будь-яких явних або неявних гарантій придатності для діяльності з високим ризиком та не несе відповідальності за використання або включення продуктів Raspberry Pi до діяльності з високим ризиком. Продукти Raspberry Pi надаються відповідно до Стандартних умов RPL. Надання RPL РЕСУРСІВ не розширює та іншим чином не змінює Стандартні умови RPL, включаючи, але не обмежуючись, відмову від відповідальності та гарантії, викладені в них.

Часті запитання

  • З: Які продукти Raspberry Pi підтримуються цим документом?
    A: Цей документ стосується різних продуктів Raspberry Pi, включаючи Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 та Pico.
  • З: Як я можу зменшити ймовірність пошкодження даних на своєму пристрої Raspberry Pi?
    A: Ви можете зменшити пошкодження даних, мінімізуючи операції запису, особливо дії з реєстрації, та налаштувавши час фіксації для file системи, як описано в цьому документі.

Документи / Ресурси

Raspberry Pi робить більш стійким File система [pdfПосібник користувача
Pi 0, Pi 1, підвищення стійкості File Система, більш стійка File Система, стійка File система, File система

Список літератури

Залиште коментар

Ваша електронна адреса не буде опублікована. Обов'язкові поля позначені *