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) и е напълно актуализиран с най-новия фърмуер и ядра.
Какво е корупция на данни и защо се случва?
Повредата на данните се отнася до непреднамерени промени в компютърните данни, които възникват по време на запис, четене, съхранение, предаване или обработка. В този документ говорим само за съхранение, а не за предаване или обработка. Повреда може да възникне, когато процесът на запис бъде прекъснат преди да завърши, по начин, който предотвратява завършването на записа, напримерampако захранването се загуби. В този момент е полезно да се направи кратко въведение в това как операционната система Linux (и, в по-широк смисъл, Raspberry Pi OS) записва данни в паметта. Linux обикновено използва кешове за запис, за да съхранява данни, които трябва да бъдат записани в паметта. Те кешират (временно съхраняват) данните в паметта с произволен достъп (RAM), докато се достигне определен предварително определен лимит, като в този момент всички неизпълнени записи в носителя за съхранение се извършват в една транзакция. Тези предварително определени лимити могат да бъдат свързани с времето и/или размера. Напримерampт.е., данните могат да бъдат кеширани и записвани в хранилището само на всеки пет секунди или да се записват само когато се натрупа определено количество данни. Тези схеми се използват за подобряване на производителността: записването на голям обем данни наведнъж е по-бързо от записването на много малки обеми данни.
Ако обаче захранването се загуби между съхраняването на данни в кеша и записването им, тези данни се губят. Други възможни проблеми възникват по-нататък в процеса на запис, по време на физическото записване на данни върху носителя за съхранение. След като хардуер (напримерampт.е. интерфейсът на Secure Digital (SD) картата е инструктиран да записва данни, все пак е необходимо ограничено време, за да се съхранят физически тези данни. Отново, ако през този изключително кратък период възникне прекъсване на захранването, е възможно записваните данни да се повредят. Когато изключвате компютърна система, включително Raspberry Pi, най-добрата практика е да използвате опцията за изключване. Това ще гарантира, че всички кеширани данни са записани и че хардуерът е имал време действително да запише данните на носителя за съхранение. SD картите, използвани от по-голямата част от гамата устройства Raspberry Pi, са чудесни като евтини заместители на твърди дискове, но са податливи на повреди с течение на времето, в зависимост от това как се използват. Флаш паметта, използвана в SD картите, има ограничен цикъл на запис и когато картите се приближат до този лимит, те могат да станат ненадеждни. Повечето SD карти използват процедура, наречена изравняване на износването, за да се гарантира, че издържат възможно най-дълго, но в крайна сметка могат да се повредят. Това може да бъде от месеци до години, в зависимост от това колко данни са записани на картата или (по-важното) изтрити от нея. Този живот може да варира драстично между картите. Повредата на SD картата обикновено се индикира от произволни file повреди, тъй като части от SD картата стават неизползваеми.
Има и други начини за повреда на данните, включително, но не само, дефектен носител за съхранение, грешки в софтуера за запис в паметта (драйвери) или грешки в самите приложения. За целите на този документ всеки процес, чрез който може да възникне загуба на данни, се определя като събитие на повреда.
Какво може да причини операция за запис?
Повечето приложения извършват някакъв вид запис в паметта, напримерampинформация за конфигурацията на файла, актуализации на базата данни и други подобни. Някои от тях fileТези данни могат дори да бъдат временни, т.е. използвани само докато програмата работи, и не е необходимо да се поддържат по време на цикъл на изключване и изключване; въпреки това, те все пак водят до записи в носителя за съхранение. Дори ако приложението ви всъщност не записва никакви данни, във фонов режим Linux постоянно ще записва в паметта, най-вече записвайки информация за логване.
Хардуерни решения
Въпреки че не е изцяло в обхвата на този документ, заслужава да се спомене, че предотвратяването на неочаквани прекъсвания на захранването е често използвана и добре разбираема мярка срещу загуба на данни. Устройства като непрекъсваеми захранвания (UPS) гарантират, че захранването остава стабилно и, ако захранването на UPS се загуби, докато е на батерия, той може да каже на компютърната система, че е предстояща загуба на захранване, така че изключването да може да продължи плавно, преди резервното захранване да се изчерпи. Тъй като SD картите имат ограничен живот, може да е полезно да има режим на подмяна, който гарантира, че SD картите се подменят, преди да достигнат края на жизнения си цикъл.
Здрав file системи
Има различни начини, по които устройството Raspberry Pi може да бъде защитено срещу корупция. Те се различават по способността си да предотвратяват корупция, като всяко действие намалява вероятността тя да се случи.
- Намаляване на записите
Простото намаляване на количеството запис, което вашите приложения и Linux операционната система извършват, може да има благоприятен ефект. Ако извършвате много записи в лог, тогава шансовете за записи по време на събитие за повреда се увеличават. Намаляването на записа в приложението ви зависи от крайния потребител, но записът в Linux също може да бъде намален. Това е особено важно, ако използвате флаш-базирано съхранение (напр. eMMC, SD карти) поради ограничения им жизнен цикъл на запис. - Промяна на времената за комити
Времето за ангажиране на file Системата е времето, през което кешира данните, преди да ги копира всички в хранилището. Увеличаването на това време подобрява производителността чрез групиране на много записи, но може да доведе до загуба на данни, ако има събитие за повреда, преди данните да бъдат записани. Намаляването на времето за запис ще означава по-малка вероятност събитие за повреда, водещо до загуба на данни, въпреки че не я предотвратява напълно.
За да промените времето за commit за основния EXT4 file система на Raspberry Pi OS, трябва да редактирате \etc\fstab file което определя как file Системите се монтират при стартиране. - $sudo nano /etc/fstab
Добавете следното към записа EXT4 за root-а file система:
- commit=
Така че, fstab може да изглежда по следния начин, където времето за commit е зададено на три секунди. Времето за commit по подразбиране ще бъде пет секунди, ако не е зададено изрично.
Временно file системи
Ако заявлението изисква временно file съхранение, т.е. данни, използвани само докато приложението работи и не е необходимо да се запазват при изключване, тогава добър вариант за предотвратяване на физически записи в хранилището е използването на временно file система, tmpfs. Защото тези file Системите са базирани на RAM памет (всъщност във виртуална памет), всички данни, записани в tmpfs, никога не се записват във физическо хранилище и следователно не влияят на живота на флаш паметта и не могат да бъдат повредени при инцидент.
Създаването на едно или повече местоположения на tmpfs изисква редактиране на /etc/fstab file, който контролира всички file системи под Raspberry Pi OS. Следните примериample замества местоположенията за съхранение /tmp и /var/log с временни file системни местоположения. Вторият примерample, който замества стандартната папка за регистриране, ограничава общия размер на file система до 16MB.
- tmpfs /tmp tmpfs по подразбиране, noatime 0 0
- tmpfs /var/log tmpfs по подразбиране, време за зареждане, размер=16m 0 0
Съществува и скрипт на трета страна, който помага за настройване на регистриране в RAM паметта и може да бъде намерен в GitHub. Той има допълнителната функция за записване на регистрационните файлове от RAM паметта на диска през предварително зададен интервал.
Корен само за четене file системи
Коренът file системата (rootfs) е file система на дисковия дял, на който се намира главната директория, и тя е file система, на която всички останали file Системите се монтират при зареждане на системата. На Raspberry Pi това е / и по подразбиране се намира на SD картата като изцяло четещ/записващ EXT4 дял. Има и папка за зареждане, която е монтирана като /boot и е FAT дял за четене/запис. Задаването на rootfs на САМО за четене предотвратява всякакъв вид достъп за запис в него, което го прави много по-устойчив на събития на повреда. Въпреки това, освен ако не се предприемат други действия, това означава, че нищо не може да записва в file система изобщо, така че запазването на данни от всякакъв вид от вашето приложение в rootfs е деактивирано. Ако трябва да съхранявате данни от вашето приложение, но искате rootfs само за четене, често срещана техника е да добавите USB памет или подобно устройство, което е само за съхранение на потребителски данни.
ЗАБЕЛЕЖКА
Ако използвате суап file при използване на само за четене file система, ще трябва да преместите суапа file към дял за четене/запис.
Наслагване file система
Наслагване file система (overlayfs) комбинира две file системи, горна част file система и по-ниска file система. Когато име съществува и в двете file системи, обектът в горната част file системата е видима, докато обектът в долната file Системата е или скрита, или, в случай на директории, е слята с горния обект. Raspberry Pi предоставя опция в raspi-config за активиране на overlayfs. Това прави rootfs (долната) само за четене и създава RAM-базирана горна система. file система. Това дава много подобен резултат на този само за четене file система, като всички потребителски промени се губят при рестартиране. Можете да активирате overlayfs, като използвате или командния ред raspi-config, или като използвате настолното приложение за конфигуриране на Raspberry Pi от менюто „Предпочитания“.
Съществуват и други реализации на overlayfs, които могат да синхронизират необходимите промени от горния към долния етаж. file система по предварително определен график. Напримерampт.е., можете да копирате съдържанието на домашната папка на потребителя от горната към долната на всеки дванадесет часа. Това ограничава процеса на запис до много кратък период от време, което означава, че повредата е много по-малка, но означава, че ако захранването се загуби преди синхронизацията, всички данни, генерирани след последната, се губят. pSLC на изчислителни модули eMMC паметта, използвана в устройствата Raspberry Pi Compute Module, е MLC (Multi-Level Cell), където всяка клетка от паметта представлява 2 бита. pSLC, или псевдо-Single Level Cell, е вид 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 инсталира mmc-utils
За да получите информация за eMMC (тази команда се прехвърля в less, тъй като има доста информация за показване):
- sudo mmc extcsd четене /dev/mmcblk0 | less
ПРЕДУПРЕЖДЕНИЕ
Следните операции са еднократни – можете да ги изпълните веднъж и не могат да бъдат отменени. Трябва също да ги изпълните, преди да е бил използван изчислителният модул, тъй като те ще изтрият всички данни. Капацитетът на eMMC ще бъде намален наполовина от предишната стойност.
Командата, използвана за включване на pSLC, е mmc enh_area_set, която изисква няколко параметъра, които ѝ указват колко памет да бъде активирана за pSLC. Следният примерample използва цялата област. Моля, вижте помощта за командата mmc (man mmc) за подробности относно използването на подмножество от eMMC.
След като устройството се рестартира, ЩЕ трябва да преинсталирате операционната система, тъй като активирането на pSLC ще изтрие съдържанието на eMMC.
Софтуерът Raspberry Pi CM Provisioner има опция за задаване на pSLC по време на процеса на осигуряване. Това може да се намери в GitHub на адрес https://github.com/raspberrypi/cmprovision.
- Извън устройството file системи / мрежово зареждане
Raspberry Pi може да се стартира през мрежова връзка, напримерampизползване на мрежата File Система (NFS). Това означава, че след като устройството е завършило първата сиtage boot, вместо да зарежда ядрото и root-а си file системата от SD картата, тя се зарежда от мрежов сървър. След като се стартира, всички file Операциите се извършват на сървъра, а не на локалната SD карта, която не играе допълнителна роля в процеса. - Облачни решения
В днешно време много офис задачи се извършват в браузъра, като всички данни се съхраняват онлайн в облака. Съхранението на данни извън SD картата очевидно може да подобри надеждността, за сметка на необходимостта от постоянна интернет връзка, както и на евентуални такси от доставчиците на облачни услуги. Потребителят може да използва пълноценна инсталация на Raspberry Pi OS с оптимизиран за Raspberry Pi браузър, за да получи достъп до някоя от облачните услуги от доставчици като Google, Microsoft, Amazon и др. Алтернатива е някой от доставчиците на тънки клиенти, които заместват Raspberry Pi OS с операционна система/приложение, което работи от ресурси, съхранявани на централен сървър, вместо от SD картата. Тънките клиенти работят, като се свързват дистанционно със сървърна изчислителна среда, където се съхраняват повечето приложения, чувствителни данни и памет.
Изводи
Когато се спазват правилните процедури за изключване, SD картата за съхранение на Raspberry Pi е изключително надеждна. Това работи добре в домашна или офис среда, където изключването може да се контролира, но когато използвате Raspberry Pi устройства в индустриални случаи или в райони с ненадеждно захранване, допълнителните предпазни мерки могат да подобрят надеждността.
Накратко, възможностите за подобряване на надеждността могат да бъдат изброени, както следва:
- Използвайте добре позната и надеждна SD карта.
- Намалете записите, като използвате по-дълги времена за commit, използвайки временни file системи, използващи overlayfs или подобен.
- Използвайте място за съхранение извън устройството, като например мрежово зареждане или облачно съхранение.
- Въведете режим за подмяна на SD картите, преди да достигнат края на жизнения им цикъл.
- Използвайте UPS.
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“) „КАКТО Е“ И ВСЯКАКВИ ИЗРИЧНИ ИЛИ КОСВЕНИ ГАРАНЦИИ, ВКЛЮЧИТЕЛНО, НО НЕ ОГРАНИЧЕНО КЪМ, ПОДРАЗБИРАЩИТЕ СЕ ГАРАНЦИИ ЗА ПРОДАВАЕМОСТ И ПРИГОДНОСТ ЗА ОПРЕДЕЛЕНА ЦЕЛ СЕ ОТХВЪРЛЯТ. ДО МАКСИМАЛНАТА СТЕПЕН, ПОЗВОЛЕНА ОТ ПРИЛОЖИМОТО ЗАКОНОДАТЕЛСТВО, RPL НЕ НОСИ ОТГОВОРНОСТ ЗА НИКАКВИ ПРЕКИ, КОСЕНИ, СЛУЧАЙНИ, СПЕЦИАЛНИ, ПРИМЕРНИ ИЛИ ПОСЛЕДВАЩИ ЩЕТИ (ВКЛЮЧИТЕЛНО, НО НЕ ОГРАНИЧАВАЩО СЕ ДО, ПОЛУЧАВАНЕ НА ЗАМЕНЯЩИ СТОКИ ИЛИ УСЛУГИ). ICES; ЗАГУБА НА УПОТРЕБА, ДАННИ , OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE RESOURCES, EVEN IF ADVISED OF THE POSSIBILITY НА ТАКАВА ЩЕТА.
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: Можете да намалите повредата на данните, като минимизирате операциите по запис, особено дейностите по регистриране, и коригирате времената за commit за file система, както е описано в този документ.
Документи / Ресурси
![]() |
Raspberry Pi прави по-устойчив File система [pdf] Ръководство за потребителя Пи 0, Пи 1, Повишаване на устойчивостта File Система, по-устойчива File Система, устойчива File система, File система |