Мені не все хочеться придбати жорсткий диск USB, але я знаю, що SD-карти не підходять для багатьох повторів читання та запису.
Чи є якісь дії, які я можу вжити, щоб продовжити термін служби моєї SD-карти під час використання її Raspberry Pi?
Мені не все хочеться придбати жорсткий диск USB, але я знаю, що SD-карти не підходять для багатьох повторів читання та запису.
Чи є якісь дії, які я можу вжити, щоб продовжити термін служби моєї SD-карти під час використання її Raspberry Pi?
Відповіді:
Ці методи повинні збільшити термін служби SD-карти за рахунок мінімізації кількості прочитаних / запису різними способами:
Заміна - це процес використання частини SD-карти як енергонезалежної пам'яті. Це збільшить об’єм оперативної пам’яті, але це призведе до великої кількості читання / запису. Навряд чи це значно підвищить продуктивність.
Вимкнути своп за допомогою swapoff
команди:
sudo swapoff --all
Ви також повинні запобігти його поверненню після перезавантаження:
sudo apt-get remove dphys-swapfile
видалити його назавжди. Найкраще видалити, оскільки встановлення значення CONF_SWAPSIZE
0, як пояснено в цій відповіді , не працює, і все ще створює файл обміну 100 Мб після перезавантаження./etc/fstab
Використання файлової системи журналу, такої як ext3
або ext4
БЕЗ журналу, - це можливість зменшити читання / запис. Очевидним недоліком використання файлової системи з вимкненням журналу є втрата даних внаслідок несамовитих відключень (тобто після відключення живлення, блокування ядра тощо).
Ви можете відключити ведення журналу ext3
, встановивши його як ext2
.
Ви можете відключити ведення журналу на ext4
відключеному диску таким чином:
tune4fs -O ^has_journal /dev/sdaX
e4fsck –f /dev/sdaX
sudo reboot
Призначте прапор монтажу у режимі сповіщення до розділів, розташованих на SD-картці, додавши його до розділу параметрів у розділі /etc/fstab
.
Читання доступу до файлової системи більше не призведе до оновлення інформації atime, пов'язаної з файлом. Важливість налаштування сповіщення полягає в тому, що він виключає необхідність системи робити записи у файловій системі для файлів, які просто читаються. Оскільки записи можуть бути дещо дорогими, як згадувалося в попередньому розділі, це може призвести до вимірних прибутків. Зауважте, що інформація про час запису у файл буде продовжувати оновлюватися будь-коли, коли файл записується, якщо ця опція включена.
Сильно використовувані каталоги, такі як /var/tmp/
і, можливо, /var/log
можуть бути переміщені до оперативної пам’яті /etc/fstab
так:
tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0
Це дозволить /var/tmp
використовувати 50 Мб оперативної пам’яті в якості дискового простору. Єдине питання при цьому полягає в тому, що будь-які диски, встановлені в оперативній пам'яті, не зберігатимуться після перезавантаження. Таким чином, якщо ви змонтуєтесь /var/log
і ваша система зіткнеться з помилкою, яка викликає її перезавантаження, ви не зможете з’ясувати, чому.
Ви також можете встановити деякі каталоги на стійкий жорсткий диск USB. Більш детально про це можна дізнатися з цього питання .
Raspberry Pi також може завантажувати кореневий розділ із зовнішнього диска. Це може бути через USB або Ethernet і означає, що SD-карта буде використовуватися лише для делегування на інший пристрій під час завантаження. Для цього потрібно трохи зламати ядро, оскільки я не думаю, що ядро за замовчуванням підтримує USB-накопичувач. Ви можете знайти більше інформації в цьому запитанні або в цьому зовнішньому дописі блогу .
noatime
має бути за замовчуванням.
noatime
не за замовчуванням, принаймні для Arch.
/var/tmp
на пам’ять. Можливо, ви його переплутали /tmp
.
noatime
вас виникають проблеми, ви також можете використовувати, relatime
що значно скорочує записи диска при читанні, а не видаляти їх повністю.
Якщо варіанти, надані Jivings , неможливі для вашої програми, тоді ще одним варіантом продовження терміну служби є використання SD-карти, яка значно більша, ніж вам потрібно.
Більшість гідних SD-карт використовують алгоритми вирівнювання зносу , щоб мінімізувати кількість записів кожного блоку, тому, якщо SD-карта більша, ніж вам потрібно, знос може бути розповсюджений на значно більшу площу вільного простору.
Частина причини вирівнювання зносу настільки важлива в тому, що деякі файлові системи, наприклад FAT (формат за замовчуванням для багатьох SD-карт), забивають одні і ті ж сектори знову і знову.
Для отримання додаткової інформації про це, дивіться відповіді на питання Чи правда, що карта SD / MMC має вирівнювання зносу з власним контролером? на Exchange Electronics Stack Exchange , особливо на цю відповідь .
Одна цікава інформація з цієї відповіді - це
взявши карту 2 Гб і записавши її, починаючи знов і знов, вона в середньому становить близько 10 ТБ до того, як карта загине і більше не можна писати.
Але хвилює те, що
SD-карти не дадуть вам знати, коли дані погані, тобто не повертатиметься помилка вводу-виводу, як і жорсткий диск ПК.
Це може зробити ваш вибір файлової системи важливим, якщо вам потрібно гарантувати надійне зберігання.
Останнє зауваження: подвоєння розміру SD-картки може більше ніж подвоїти довговічність цієї карти .
Тобто, якщо у вас є 2 Гб SD-карта з 200 Мб безкоштовно, то перемикання на 4 Гб-карту дасть вам в 11 разів більше місця, зношувальну здатність і, таким чином, довговічність, тоді як перехід на карту 16 ГБ дасть вам 71 раз безкоштовно простір.
MMC_ERASE
команда, визначена десь у стандарті MMC / SD, саме для цієї мети. Хоча з усіх SD-карток я спробував лише одну (- ту, яка поставляється разом із моїм Pi-), насправді це підтримує.
Єдине, що я бачу - НЕ поміняти місцями на SD-карту.
Заміна на SD-картці - це, мабуть, те, що може вбити вашу SD-карту.
Якщо вам потрібно більше оперативної пам’яті, ви можете спробувати використати zram, є публікація на http://raspberry.pi.gw.gd/t50-Using-ZRAM.html, давши детальну інформацію про використання ZRAM на малиновому пі
Більше інформації про zram на http://en.wikipedia.org/wiki/ZRam
Крім того, останні карти SD, як відомо, набагато міцніші, ніж старі, придбання абсолютно нової SD-карти 10 класу - це, мабуть, хороший варіант, якщо ви хочете, щоб вона тривала довго.
Ви можете спробувати запустити Puppy Linux, який повністю є реєстром. Це дуже мало і сліпуче швидко, оскільки він повністю працює в пам'яті, копіюючи зображення зберігання (на SD-картці у вашому випадку) в оперативну пам'ять під час завантаження, а потім періодично перемикаючи зміни назад у сховище. Частота цього збереження контролюється користувачем, включаючи вручну.
Щеня використовує багатошарові aufs або старі файлові системи unionfs з будь-якою зі стандартних файлових систем Linux, наприклад ext3 або ext4. Він також може знаходитися на FAT або NTFS-розділах.
Існує щонайменше пара версій Puppy, спеціально розроблених для RPi, одну з них створив "Puppy Master" Баррі Каулер.
Щоб отримати докладнішу інформацію, відвідайте сторінку http://puppylinux.org/wikka/Puppi
Більшість людей тут говорять про свої припущення, а не про особистий досвід.
Я використовую свій RaspberryPi з RasPBX як розподільний щит компанії з 8 розширеннями та факсом. У нас є 3 магістралі на базі ip та одна стаціонарна лінія через LinkSYS SPA3000. Потрібно було лише 1 місяць, щоб мої початкові картки SDCard Kingston 4 ГБ відкусили пил.
Я ще експериментував і не мав резервного копіювання. BTW Pi підключений до ДБЖ APC. Потім я повторно налаштував весь RasPBX з нуля, але цього разу я перемістив / var / log та / var / lib / mysql до нашого корпоративного NAS. Цей SD все ще був нормальний через 3 місяці.
Тоді у нас було дуже спекотне літо. Протягом третього місяця пі почав не виявляти мережу Ethernet із зовнішнього середовища. Тоді одного разу я виявив, що всі лідери тьмяні, і він не завантажиться.
Я замінив Пі на свіжий з коробки робочий. Позашляховик почав працювати після охолодження, але він працює досить нестабільно, і коли він завантажується на RasPBX, відео режим не перейде на графіку, він залишається в 80 * 25 Text. Це було справді заплутано. З того часу я замовив радіатор. Новий Pi працює з ним вже більше 2 місяців 7/24.
Тож якщо ви будете використовувати pi в середовищі 7/24, не будьте дешевими - купуйте радіатор і уникайте використання / var / log та інших зайнятих каталогів через карту SD.
Я порівнював усі рішення, утиліти TMPFS, і найкраща відповідь - це синтез сценаріїв підготовки сценаріїв (див. Http://grenzdebiel.dyndns.org/wordpress/?p=98 ) з належним / etc / defaults / tmpfs ( (див. http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/ ).
Необхідні кроки, які потрібно виконати на Rasbian:
1. відредагуйте /etc/default/tmpfs
та встановіть :
RAMLOCK=yes
RAMSHM=yes
RAMTMP=yes
Я рекомендую такі розміри:
TMPFS_SIZE=10%VM
RUN_SIZE=10M
LOCK_SIZE=5M
SHM_SIZE=10M
TMP_SIZE=25M
2. включити додаткові каталоги за допомогою / etc / fstab
tmpfs /var/log tmpfs size=20M,defaults,noatime,mode=0755 0 0
tmpfs /var/cache/apt/archives tmpfs size=100M,defaults,noexec,nosuid,nodev,mode=0755 0 0
tmpfs /var/spool/cups tmpfs size=100M,defaults,noatime,mode=0755 0 0
tmpfs /var/spool/cups/tmp tmpfs defaults,noatime,mode=0755 0 0
3. використовуйте сценарій /etc/init.d/prepare-dirs
для створення відсутніх каталогів, /var/log
щоб усі демони починалися
Дивіться наприкінці, що воно містить у моєму випадку.
4. Зробіть сценарій виконуваним chmod 755 /etc/initd/prepare-dirs
.
5. Переконайтеся, що сценарій буде запущений спочатку під час завантаження до запуску демонів:
update-rc.d prepare-dirs defaults 01 99
вміст /etc/init.d/prepare-dir
:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: prepare-dirs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create needed directories on /var/log/ for tmpfs at startup
# Description: Create needed directories on /var/log/ for tmpfs at startup
### END INIT INFO
# needed Dirs
DIR[0]=/var/log/lighttpd
DIR[1]=/var/log/cups
DIR[2]=/var/log/apt
DIR[3]=/var/log/ConsoleKit
DIR[4]=/var/log/fsck
DIR[5]=/var/log/news
DIR[6]=/var/log/ntpstats
DIR[7]=/var/log/samba
DIR[8]=/var/log/lastlog
DIR[9]=/var/log/exim
DIR[10]=/var/log/watchdog
case "${1:-''}" in
start)
typeset -i i=0 max=${#DIR[*]}
while (( i < max ))
do
mkdir ${DIR[$i]}
chmod 755 ${DIR[$i]}
i=i+1
done
# set rights
chown www-data.www-data ${DIR[0]}
;;
stop)
;;
restart)
;;
reload|force-reload)
;;
status)
;;
*)
echo "Usage: $SELF start"
exit 1
;;
esac
Це воно.
Вимкнути заміну файлу:
sudo dphys-swapfile swapoff
Немає необхідності видаляти, проте якщо ви не користуєтесь ним і не хочете місця, можете сміливо його видалити. Альтернативна команда для видалення:
видалити sudo dphys-swapfile
Використання: / sbin / dphys-swapfile {setup | swapon | swapoff | видалити}
Витривалість Flash Flash:
Це чисто математичний на великих картах і нормальному зносі. Якби ви писали на флеш-карту типу 8 Гб MLC вдень і вночі, то для її вбивства знадобиться близько 30 днів.
Епізод 99 у Techsnap розповідає про зношення SSD, і Аллен пояснює, як неможливо зношувати SSD у повсякденному використанні, і нам не потрібно турбуватися про відключення swap, crons і все таке. Це просто зараз працює! Розумне вирівнювання зносу забезпечує все.
Звичайний знос за Кінгстоном повинен дати вам 27 років життя на цифровому фотоапараті професіоналів.
Що для звичайних камер DSLR ви можете заповнювати один раз на кілька місяців. Беручи до уваги Pi, якщо експериментувати часто та повторно спалахувати, то це може зайняти більше плати. Зазвичай, коли ви щасливі з дистрибутивом ... ви не спалахуєте його місяцями чи роками. Тому для тривалого зносу SD було б добре дотримуватися деяких порад щодо зменшення IO на SD.
Ціна спалаху впала, а технологія набагато краща.
Більшість SD-карт переживатимуть два-три покоління пристроїв, і до цього часу вони вважатимуться маленькими та занадто повільними у користуванні із значно кращим та дешевшим оновленням!
Як згадувалося раніше, основна проблема - це файли та каталоги, які не варто зберігати між перезавантаженнями, але пишуться досить часто, тобто файли кешу, папки для завантаження тощо.
Raspbian, а також Debian і Ubuntu мають пакет під назвою unburden-home-dir , основною метою якого є передавання таких файлів у менш проблемне місце, наприклад, tmpfs
кріплення або зовнішній жорсткий диск, який менш схильний до зносу.
Зазвичай він запускається під час входу під X та орієнтований на кешові файли програми GUI, але також може викликатись із сценаріїв або таких сценаріїв і налаштовуватися на довільні файли в домашній каталог користувача.
Вони засновані на iotop -bktoqqq
і iostat -dzp 5
. Спершу слід запустити ці команди, щоб отримати уявлення про проблему та її рішення.
sudo systemctl disable dphys-swapfile
sudo rm /var/swap
Встановіть усі розділи на SD-картці за допомогою noatime,commit=1800
параметрів та встановіть наступні каталоги в ОЗУ з цими записами у вашому /etc/fstab/
:
/dev/mmcblk0p1 /boot vfat defaults,noatime,commit=1800 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime,commit=1800 0 1
tmpfs /tmp tmpfs size=50M,nodev,nosuid 0 0
tmpfs /var/tmp tmpfs size=10M,nodev,nosuid 0 0
tmpfs /var/cache/samba tmpfs size=5M,nodev,nosuid 0 0
Комітет затримає записи та збирає їх першими.
/var/tmp/log/
Дивіться мій опис Як можна зменшити запис у файли журналу .
Як виявляється, Хром пише дуже багато і його не можна зупинити (див. 176727 , 52663 ). Це впливає на кеш і каталог даних користувачів. У Chromium / Поради та хитрості пояснити , як це може бути переміщений в оперативну пам'ять. Оскільки в Raspberry не так багато оперативної пам’яті, запропонований підвіска Tab корисна для збереження оперативної пам'яті.
Обмежте розмір кешу і перемістіть його в ОЗУ, відредагувавши /etc/chromium-browser/customizations/00-rpi-vars
в
CHROMIUM_FLAGS="--disable-quic --enable-fast-unload --enable-tcp-fast-open --disk-cache-size=10000000 --media-cache-size=5000000"
Тепер кеш достатньо малий, щоб його можна було перемістити на диск ОЗУ, змінивши XDG_CACHE_HOME
запис /etc/security/pam_env.conf
на
XDG_CACHE_HOME DEFAULT=/tmp/@{PAM_USER}/cache
Тепер мої два користувачі мають невеликий кеш браузера в оперативній пам'яті. Якщо цього недостатньо, ви міняєте кеш або / tmp / розмір за необхідності.
Також дані користувача dir ( .config/chromium/
) відчувають важкі записи. Профіль синхронізації-демон рекомендований Chromium / Поради та хитрості . Він був розроблений для управління профілем вашого веб-переглядача в tmpfs і періодичної синхронізації його на фізичному диску. На жаль, пакет ще не є частиною дистрибуції Raspbian 8.0 (Jessie). Тому я ще цього не перевіряв.
Звільніть місце, видаляючи пакети та файли, які вам не потрібні. Це повинно рівномірно розподіляти носіння по ваших перегородках.
Тепер запустіть iotop -bktoqqq
і iostat -dzp 5
знову і побачити значне скорочення доступу до запису , коли система знаходиться в режимі очікування. Нічого не записується на мій диск протягом багатьох хвилин. І не турбуйтеся про те, що зелений індикатор ACT блимає . Мабуть, це не гарний показник доступу для запису.
Просто невелике скорочення циклів запису може бути досягнуте за допомогою потокового виводу syslog на інший сервер. Звичайно, наявність такого сервера з syslogd
запущеною умовою. Однак, якщо Pi є іграшкою для любителів Linux, це, мабуть, дуже часто. :-)
Щоб активувати цей потік, просто вставіть такий вигляд, як
*.* @myserver.mydomain
майже у верхній частині файлу /etc/rsyslog.conf
, прокоментуйте всі інші рядки та перезапустіть журнал, видавши service rsyslog restart
. Після цього повідомлення повинні надходити на вибраний сервер.
Одним із очевидних вигідних побічних ефектів цього є те, що ви можете легко контролювати ваш Pi спільно з іншими машинами на тому ж сервері. Одним із недоліків є те, що під час запуску та відключення системи ви можете втратити деякі повідомлення, коли мережеве з'єднання ще не встановлено або вже відключено.
journald
який зберігає їх у системному журналі. Вони також налаштовують journald
пересилати журнали в розетку syslog, на якій rsyslogd
прослуховується; що розміщує додаткові копії повідомлень у файлах журналу під /var/log
. Якщо вам зручно journalctl
переглядати свої журнали (і це працює набагато краще, ніж /var/log
колись ви знайомі з ним), ви можете повністю відключити rsyslog
та зберегти деякі записи.
Примітка. Обмеження 100 000 циклів - це гіпотеза, яка стосується кожного обчислювального пристрою, навіть клавіш на клавіатурі. Я вважаю, що запуск Pi в належних умовах охолодження та правильні цикли відключення / запуску дадуть кращі результати, а не вдаються до аналогій.
Також це може посилити мою вище думку.
Додайте нового користувача на додаток до користувача Pi [за замовчуванням]. Наведіть домашній каталог нового користувача на зовнішній диск [великий палець / жорсткий диск]. Надайте дозволу нового користувача, суперкористувача та почніть використовувати його як свій основний обліковий запис.
Я сподіваюся, що це допомагає ..
/var/log
та /var/tmp
. Крім того, мати докази досвіду про те, що правильне охолодження змінює набагато краще, ніж сказати "я вірю".
Використовуйте демона syslog зайнятої програми (в пакеті зайнятого-syslogd на Raspbian / Debian / Ubuntu) замість демона syslog за замовчуванням (зазвичай rsyslog). За замовчуванням на Raspbian / Debian / Ubuntu, syslogd zasedbox тільки входить у буфер дзвінків у пам'яті, а не на диск. Кільцевий буфер за замовчуванням має розмір 128 КБ, тобто старі записи журналу обертаються досить скоро і відпадають потім. Але ви можете налаштувати його для використання більшої кількості оперативної пам’яті.
Тим не менш, це набагато краще рішення, ніж взагалі не мати демона syslog, тобто ви все одно можете входити в систему і читати записи журналу приблизно ок. останні кілька годин або днів (залежно від налаштованого розміру буфера дзвінка) з командою logread
. Ви також можете використовувати , logread -f
щоб отримати tail -f
подібну поведінку, наприклад , зберігати тільки цікаві записи журналу з допомогою сценарію фільтра або пересилати записи журналу по мережі в іншому місці, наприклад , з використанням stunnel
або такими.
Пару речей, які я зробив:
chmod з dphys-swapfile (десь в / etc - наразі не поблизу PI):
sudo chmod a-x dphys-swapfile
Я отримую незначні помилки під час завантаження (не можу запустити службу dphys-swapfile) - Припустимо, є кращий спосіб ... rc-update ??
Крім того, я знімаю зображення з модуля камери, щоб врешті-решт розмістити на своєму веб-сервері (Pi). Я відформатував / dev / ram0 в ext2, монтував його як / media / ramdrive (я думаю, використовуючи /etc/init.rc). Це 4 мега, достатньо великий за один момент. Не пише в SD.
Сервер (oululife.dnsdynamic.com) експериментальний, але в Інтернеті. Щоб по-справжньому підкреслити це, я дозволю також передавати епізод MP4 "Heartbeat *". Він працює з lighttpd, Mysql, PHP, WordPress, і навіть коли я віддалено стрічаю по Інтернету, він навряд чи порушує піт, завантажуючи в середньому близько 0,2. Ніякого перенастроювання взагалі. Модель-B обр. 2, вгору 24/7. Отже, якщо я можу занести свої логіни в інші 15 / dev / ramX, я вважаю, що моя Micro-SD 16G карта триватиме років ....