Raspberry-логотип

Raspberry Pi делает более устойчивым File Система

Raspberry-Pi-Создание-более-устойчивого-File-Системный продукт

Объем документа

Этот документ относится к следующим продуктам Raspberry Pi:

Пи 0Пи 1Пи 2Пи 3Пи 4Пи 400CM1CM3CM4CM 5Пико
0WHABABBВсеВсеВсеВсеВсеВсеВсе
************** 

 

Введение

Устройства Raspberry Pi Ltd часто используются в качестве устройств хранения и мониторинга данных, часто в местах, где могут происходить внезапные отключения питания. Как и в случае с любым вычислительным устройством, отключение питания может привести к повреждению хранилища. В этом документе представлены некоторые варианты предотвращения повреждения данных при этих и других обстоятельствах путем выбора соответствующих file системы и настройки для обеспечения целостности данных. В этом документе предполагается, что Raspberry Pi работает под управлением операционной системы (ОС) Raspberry Pi (Linux) и полностью обновлен до последних версий прошивки и ядер.

Что такое повреждение данных и почему оно происходит?
Повреждение данных относится к непреднамеренным изменениям в компьютерных данных, которые происходят во время записи, чтения, хранения, передачи или обработки. В этом документе мы имеем в виду только хранение, а не передачу или обработку. Повреждение может произойти, когда процесс записи прерывается до его завершения, таким образом, что запись не может быть завершена, напримерample, если питание отключено. На этом этапе стоит дать краткое введение в то, как ОС Linux (и, соответственно, ОС Raspberry Pi) записывает данные в хранилище. Linux обычно использует кэши записи для хранения данных, которые должны быть записаны в хранилище. Они кэшируют (временно хранят) данные в оперативной памяти (ОЗУ) до тех пор, пока не будет достигнут определенный предопределенный предел, после чего все ожидающие записи на носитель данных будут выполнены в одной транзакции. Эти предопределенные пределы могут быть связаны со временем и/или размером. Напримерample, данные могут кэшироваться и записываться в хранилище только каждые пять секунд или записываться только после накопления определенного объема данных. Эти схемы используются для повышения производительности: запись большого объема данных за один раз происходит быстрее, чем запись множества небольших объемов данных.

Однако, если питание пропадает между сохранением данных в кэше и их записью, эти данные теряются. Другие возможные проблемы возникают далее в процессе записи, во время физической записи данных на носитель. После того, как часть оборудования (например,ample, интерфейсу карты 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-карты) из-за их ограниченного жизненного цикла записи.
  • Изменение времени фиксации
    Время фиксации для file system — это количество времени, в течение которого она кэширует данные, прежде чем скопирует их все в хранилище. Увеличение этого времени повышает производительность за счет пакетирования большого количества записей, но может привести к потере данных, если произойдет повреждение до того, как данные будут записаны. Сокращение времени фиксации будет означать меньшую вероятность повреждения, приводящего к потере данных, хотя и не предотвращает ее полностью.
    Чтобы изменить время фиксации для основного EXT4 file система на Raspberry Pi OS, вам необходимо отредактировать \etc\fstab file который определяет, как file Системы монтируются при запуске.
  • $sudo nano /etc/fstab

Добавьте следующее в запись EXT4 для root file система:

  • совершить=

Итак, fstab может выглядеть примерно так, где время фиксации установлено на три секунды. Время фиксации по умолчанию будет равно пяти секундам, если не указано иное.

Raspberry-Pi-Создание-более-устойчивого-File-Система-

 

Временный file системы

Если приложение требует временного file хранилище, т. е. данные используются только во время работы приложения и не требуют сохранения при завершении работы, то хорошим вариантом для предотвращения физической записи в хранилище является использование временного file система, tmpfs. Потому что эти file Системы работают на основе оперативной памяти (фактически, в виртуальной памяти), любые данные, записанные в tmpfs, никогда не записываются на физическое хранилище и, следовательно, не влияют на срок службы флэш-памяти и не могут быть повреждены в результате повреждения.
Создание одного или нескольких расположений tmpfs требует редактирования файла /etc/fstab file, который контролирует все file системы под управлением Raspberry Pi OS. Следующий примерample заменяет хранилища /tmp и /var/log на временные file Расположение системы. Второй эксample, который заменяет стандартную папку журналирования, ограничивает общий размер file система до 16 МБ.

  • tmpfs /tmp tmpfs по умолчанию,noatime 0 0
  • tmpfs /var/log tmpfs по умолчанию,noatime,size=16m 0 0

Также есть сторонний скрипт, который помогает настроить логирование в RAM, его можно найти на GitHub. Он имеет дополнительную функцию дампа логов RAM на диск с предопределенным интервалом.

Корень только для чтения file системы

Корень file система (rootfs) - это file система на разделе диска, на котором расположен корневой каталог, и это file система, на которой все остальные file системы монтируются по мере загрузки системы. На Raspberry Pi это /, и по умолчанию он расположен на SD-карте как полностью доступный для чтения/записи раздел EXT4. Также есть папка загрузки, которая монтируется как /boot и является разделом FAT для чтения/записи. Если сделать rootfs ТОЛЬКО для чтения, то это предотвратит любые попытки записи в нее, что сделает ее гораздо более устойчивой к повреждениям. Однако, если не будут предприняты другие действия, это означает, что ничто не сможет записать в file system вообще, поэтому сохранение данных любого рода из вашего приложения в rootfs отключено. Если вам нужно сохранить данные из вашего приложения, но вы хотите rootfs только для чтения, распространенным методом является добавление USB-накопителя или чего-то подобного, который предназначен только для хранения пользовательских данных.

ПРИМЕЧАНИЕ
Если вы используете своп file при использовании только для чтения file системе, вам нужно будет переместить файл подкачки file на раздел чтения/записи.

Наложение file система

Наложение file система (overlayfs) объединяет два file системы, верхняя file система и более низкая file система. Когда имя существует в обоих file системы, объект в верхней части file система видна, пока объект в нижней части file system либо скрыта, либо, в случае каталогов, объединена с верхним объектом. Raspberry Pi предоставляет опцию в raspi-config для включения overlayfs. Это делает rootfs (нижнюю) доступной только для чтения и создает верхнюю часть на основе RAM file система. Это дает очень похожий результат на read-only file система, при этом все пользовательские изменения будут потеряны при перезагрузке. Вы можете включить overlayfs, используя либо командную строку raspi-config, либо приложение Raspberry Pi Configuration на рабочем столе в меню Preferences.

Существуют также другие реализации оверлеев, которые могут синхронизировать требуемые изменения из верхнего в нижний. 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 как Enhanced User Area (также известная как Enhanced storage). Фактическая реализация Enhanced User Area не определена в стандарте MMC, но обычно это pSLC.

  • Расширенная область пользователя — это концепция, тогда как pSLC — это реализация.
  • pSLC — один из способов реализации расширенной пользовательской зоны.
  • На момент написания статьи eMMC, используемый в вычислительных модулях Raspberry Pi, реализует расширенную пользовательскую область с использованием pSLC.
  • Нет необходимости настраивать всю пользовательскую область eMMC как расширенную пользовательскую область.
  • Программирование региона памяти в качестве Расширенной пользовательской области — это одноразовая операция. Это значит, что ее нельзя отменить.

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

  • sudo apt install mmc-utils

Чтобы получить информацию о eMMC (эта команда передается в less, поскольку требуется отобразить довольно много информации):

  • 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 может загружаться через сетевое соединение, напримерampле с использованием сети File Система (NFS). Это означает, что как только устройство завершит свою первуюtage boot, вместо загрузки ядра и корня file система с SD карты, она загружается с сетевого сервера. После запуска все file операции выполняются на сервере, а не на локальной SD-карте, которая не принимает дальнейшего участия в процессе.
  • Облачные решения
    В настоящее время многие офисные задачи выполняются в браузере, а все данные хранятся в облаке онлайн. Хранение данных вне SD-карты, очевидно, может повысить надежность за счет необходимости постоянного подключения к Интернету, а также возможных расходов от облачных провайдеров. Пользователь может использовать полнофункциональную установку Raspberry Pi OS с оптимизированным для Raspberry Pi браузером для доступа к любым облачным сервисам от таких поставщиков, как Google, Microsoft, Amazon и т. д. Альтернативой является один из поставщиков тонких клиентов, который заменяет Raspberry Pi OS на ОС/приложение, которое работает с ресурсами, хранящимися на центральном сервере, а не на SD-карте. Тонкие клиенты работают путем удаленного подключения к серверной вычислительной среде, где хранится большинство приложений, конфиденциальных данных и памяти.

Выводы

При соблюдении правильных процедур выключения SD-карта Raspberry Pi чрезвычайно надежна. Это хорошо работает в домашней или офисной среде, где выключение можно контролировать, но при использовании устройств Raspberry Pi в промышленных целях или в зонах с ненадежным электроснабжением дополнительные меры предосторожности могут повысить надежность.

Вкратце, варианты повышения надежности можно перечислить следующим образом:

  • Используйте известную и надежную SD-карту.
  • Уменьшите количество записей, используя более длительное время фиксации, используя временные file системы, использующие overlayfs или аналогичные.
  • Используйте внешнее хранилище, например сетевое загрузочное устройство или облачное хранилище.
  • Внедрите режим замены SD-карт до окончания срока их службы.
  • Используйте ИБП.

Raspberry Pi является торговой маркой Raspberry Pi Ltd.
Малина Пи ООО

Колофон
© 2020-2023 Raspberry Pi Ltd (ранее Raspberry Pi (Trading) Ltd.)
Данная документация распространяется по лицензии Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND).

  • дата сборки: 2024-06-25
  • версия сборки: githash: 3e4dad9-clean

Юридическое уведомление об отказе от ответственности
ТЕХНИЧЕСКИЕ ДАННЫЕ И НАДЕЖНОСТЬ ПРОДУКТОВ RASPBERRY PI (ВКЛЮЧАЯ ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ), ИЗМЕНЯЕМЫЕ ВРЕМЯ ОТ ВРЕМЕНИ («РЕСУРСЫ») ПРЕДОСТАВЛЯЮТСЯ КОМПАНИЕЙ RASPBERRY PI LTD («RPL») «КАК ЕСТЬ» И С ЛЮБЫМИ ЯВНЫМИ ИЛИ ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ TO, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ НЕ ПРЕДОСТАВЛЯЮТСЯ. В МАКСИМАЛЬНОЙ СТЕПЕНИ, РАЗРЕШЕННОЙ ПРИМЕНИМЫМ ЗАКОНОДАТЕЛЬСТВОМ, RPL НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СЛУЧАЙНЫЙ, ОСОБЫЙ, ПРИМЕРНЫЙ ИЛИ ПОСЛЕДУЮЩИЙ УЩЕРБ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПРИОБРЕТЕНИЕМ ЗАМЕНЯЮЩИХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ , ИЛИ ПРИБЫЛЬ; ИЛИ ПЕРЕРЫВ В ДЕЛОВОЙ ДЕЯТЕЛЬНОСТИ), ОДНАКО ПРИЧИНЕННЫЙ И НА ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО ПО ДОГОВОРУ, СТРОГОй ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛИКТУ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ ИНЫМ ОБРАЗОМ), ВОЗНИКАЮЩИМ ЛЮБЫМ СПОСОБОМ ИЗ ИСПОЛЬЗОВАНИЯ РЕСУРСОВ, ДАЖЕ ЕСЛИ УВЕДОМЛЕНО О ВОЗМОЖНОСТИ ТАКОГО ПОВРЕЖДЕНИЯ.

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] Руководство пользователя
Пи 0, Пи 1, делая более устойчивым File Система, более устойчивая File Система, устойчивая File Система, File Система

Ссылки

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *