Как продлить срок службы SD-карты?

Я не так уж сильно желаю купить жесткий диск USB, но я знаю, что SD-карты не подходят для многих повторений чтения и записи.

Есть ли какие-то шаги, которые я могу предпринять, чтобы продлить срок службы моей SD-карты, пока она используется моей малиновой пи?

236 голосов | спросил Highly Irregular 13 J0000006Europe/Moscow 2012, 10:30:27

14 ответов


231

Эти методы должны увеличить срок службы SD-карты, минимизируя количество операций чтения /записи различными способами:

Отключить обмен

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

Отключить обмен с помощью команды swapoff:

sudo swapoff --all

Вы также должны помешать возврату после перезагрузки:

  • Для Raspbian, который использует dphys-swapfile для управления своп-файлом (вместо «обычный» раздел подкачки), вы можете просто sudo apt-get remove dphys-swapfile, чтобы удалить его навсегда. Лучше всего удалить, поскольку параметр CONF_SWAPSIZE равен 0, как описано в этом ответе , doesn Кажется, что он работает и по-прежнему создает файл подкачки в 100 Мбайт после перезагрузки.
  • Для других дистрибутивов, которые используют раздел подкачки вместо файла подкачки, удалите соответствующую строку из /etc/fstab

Отключение ведения журнала в файловой системе

Использование журналируемой файловой системы, такой как ext3 или ext4 БЕЗ журнала - это возможность уменьшить чтение /запись. Очевидным недостатком использования файловой системы с отключенным журналированием является потеря данных в результате несравнимого демонтажа (т. Е. После сбоя питания, блокировки ядра и т. Д.).

Вы можете отключить ведение журнала на ext3, установив его как ext2.

Вы можете отключить ведение журнала на ext4 на несмонтированном диске, например:

tune4fs -O ^has_journal /dev/sdaX
e4fsck –f /dev/sdaX
sudo reboot

Флаг отметки noatime

Назначьте флаг монтирования noatime для разделов, находящихся на SD-карте, добавив его в раздел параметров раздела в /etc/fstab.

  

Чтение доступа к файловой системе больше не приведет к обновлению информации atime, связанной с файлом. Важность настройки noatime заключается в том, что она устраняет необходимость в системе делать записи в файловую систему для файлов, которые просто читаются. Поскольку записи могут быть несколько дорогими, как упоминалось в предыдущем разделе, это может привести к измеримому повышению производительности. Обратите внимание, что информация о времени записи в файл будет продолжать обновляться в любое время, когда файл записывается с включенной опцией.

Каталоги в ОЗУ

Высоко используемые каталоги, такие как /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-хранилище. Вы можете найти более подробную информацию на этом вопросе , или это внешний пост в блоге .

ответил Jivings 13 J0000006Europe/Moscow 2012, 12:52:12
76

Если параметры, предоставленные Jivings , невозможно для вашего приложения, тогда еще один вариант продлить это жизнь существенно заключается в использовании SD-карты, которая намного больше , чем вам нужно.

Оставьте много свободного места

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

Одной из причин, по которой уровень износа настолько важен, является то, что некоторые файловые системы, такие как FAT (формат по умолчанию для многих SD-карт), забивать одни и те же сектора снова и снова.

Для получения дополнительной информации об этом см. ответы на вопрос Верно ли, что карта SD /MMC выполняет выравнивание с помощью его собственный контроллер? на Обмен электронных столов , особенно этот ответ .

Одна интересная статистика из этого ответа заключается в том, что

  

, взяв карту 2 ГБ и записывая ее, начинает заканчиваться снова и снова, в среднем около 10 ТБ до того, как карта мертва и больше не доступна для записи.

Но беспокойство заключается в том, что

  

Карты SD не сообщают вам, когда данные плохие, т. е. не возвращают ошибку ввода-вывода, как жесткий диск ПК.

Это может сделать ваш выбор файловой системы важным, если вам нужно гарантировать надежное хранение.

Последнее замечание: удвоение размера SD-карты может более чем удвоить долговечность.

т.е. если у вас есть 2-Гбайт SD-карта с 200 МБ, тогда переход на 4-гигабайтную карту даст вам 11-кратное свободное пространство, износоустойчивость и, следовательно, долговечность, а переход на 16-гигабайтную карту даст вам в 71 раз больше свободного места .

ответил Mark Booth 19 J0000006Europe/Moscow 2012, 15:23:43
24

Единственное, что я вижу, это НЕ менять на SD-карту.

Обмен на карте Sd, вероятно, может убить вашу SD-карту.

Если вам нужно больше ОЗУ, вы можете попробовать использовать zram, theres сообщение на http: //raspberry.pi.gw.gd/t50-Using-ZRAM.html , в котором приведены некоторые сведения об использовании ZRAM на малине pi

Дополнительная информация о zram на http://en.wikipedia.org/wiki/ZRam

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

ответил neofutur 13 J0000006Europe/Moscow 2012, 11:15:19
14

Вы можете попробовать запустить Puppy Linux, который полностью ram-резидент. Он очень мал и ослепляет быстро, так как он полностью загружается в память путем копирования образа хранилища (на SD-карте в вашем случае) в оперативную память при загрузке, а затем сбрасывание периодически меняется на память. Частота этого сохранения контролируется пользователем, включая вручную.

Puppy использует слоистую файловую систему aufs или old unionfs с любой из стандартных файловых систем Linux, таких как ext3 или ext4. Он также может находиться на разделах FAT или NTFS.

Есть, по крайней мере, несколько версий Puppy, специально предназначенных для RPi, один из которых создан «Puppy Master», Барри Каулер.

Для получения дополнительной информации перейдите на страницу http://puppylinux.org/wikka/Puppi

ответил DocSalvager 16 FebruaryEurope/MoscowbSat, 16 Feb 2013 09:16:15 +0400000000amSat, 16 Feb 2013 09:16:15 +040013 2013, 09:16:15
10

Я сравнил все решения утилиты TMPFS, и лучший ответ - это синтез скриптов prepare-dirs (см. http : //grenzdebiel.dyndns.org/wordpress/? p = 98 ) с правильным /etc /defaults /tmpfs ((см. http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/).

Необходимыми шагами для выполнения на raspbian являются:

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

Вот и все.

ответил user13222 2 MarpmSun, 02 Mar 2014 17:36:18 +04002014-03-02T17:36:18+04:0005 2014, 17:36:18
10

Большинство людей здесь говорят о своих предположениях, а не о личном опыте.

Я использую свой RaspberryPi с RasPBX в качестве коммутатора компании с 8 расширениями и факсом. У нас есть 3 ip-соединения и одна наземная линия через LinkSYS SPA3000. Для первоначальной Kingston 4 GB SDCard потребовалось всего 1 месяц, чтобы укусить пыль.

Я все еще экспериментировал и не имел резервной копии. BTW Pi подключается к ИБП APC. Затем я повторно настроил весь RasPBX с нуля, но на этот раз я перевел /var /log и /var /lib /mysql на наш корпоративный NAS. Этот SD был все еще в порядке через 3 месяца.

Тогда у нас было очень жаркое лето. В течение третьего месяца pi начал не обнаруживать ethernet из-под синего. Тогда однажды я нашел все, что Leds тускло, и он не загрузился.

Я заменил Pi свежим из коробки рабочим. Неисправность начала работать после охлаждения, но она работает довольно неустойчиво, и когда она загружается в RasPBX, видеорежим не переключается на графику, он остается в тексте 80 * 25. Это было действительно испорчено. С тех пор я заказал радиатор. Новый Pi работает с ним сейчас более 2 месяцев 7/24.

Итак, если вы будете использовать pi в среде 7/24, не стоит дешево - покупайте радиатор и избегайте использования /var /log и других загруженных каталогов по SD CARD.

ответил Kerem Ersoy 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 20 Sep 2014 08:11:55 +0400 2014, 08:11:55
7

Отключить файл подкачки:

  

sudo dphys-swapfile swapoff

Нет необходимости деинсталлировать, однако, если вы не используете его, и вам нужно пространство, вы можете безопасно его удалить. Альтернативная команда для удаления:

  

Удаление sudo dphys-swapfile

Использование: /sbin /dphys-swapfile {setup | swapon | swapoff | uninstall}

ответил Dave Henderson 15 MarpmFri, 15 Mar 2013 12:13:58 +04002013-03-15T12:13:58+04:0012 2013, 12:13:58
5

Выносливость флеш-камеры:

  • Для многоуровневой ячейки (MLC) Flash, до 10 000 циклов записи на физический сектор.
  • Для одноуровневой ячейки (SLC) Flash, до 100 000 циклов записи на физический сектор.
  • Новый SSD предлагает 1 миллион циклов записи на физический сектор.

Он чисто математичен по крупным картам и нормальному износу. Если вы должны были писать на флеш-карту типа MLC на 8 ГБ день и ночь снова и снова, потребуется около 30 дней, чтобы убить ее.

Эпизод 99 на Techsnap рассказывает об изнашивании SSD и Аллен объясняет, как невозможно изнашивать SSD в повседневном использовании, и нам не нужно беспокоиться о отключении swap, crons и всего этого. Сейчас это работает! Умное изнашивание износа заботится обо всем.

Нормальный износ, поскольку цитируемый за Кингстон должен дать вам 27 лет жизни на всю жизнь в профессиональной цифровой камере.

  

Что для обычных камер DSLR вы можете заполнить это раз в несколько   месяцев .. зависит, сколько вы путешествуете. Принимая во внимание Pi,   если вы часто экспериментируете с выделениями и повторными вспышками, тогда может потребоваться больше   Потери. Обычно, когда вы довольны дистрибутивом ... вы не переплетаете   это месяцами или годами. Поэтому, чтобы продлить срок службы SD, было бы хорошо   следуйте советам по сокращению IO на SD.

Цена вспышки упала, и технология намного лучше.

Большинство SD-карт переживут два или три поколения устройств, и к тому времени это будет считаться маленьким и слишком медленным для использования с гораздо лучшим и более дешевым обновлением!

ответил ppumkin 15 MarpmFri, 15 Mar 2013 12:30:19 +04002013-03-15T12:30:19+04:0012 2013, 12:30:19
4

Как упоминалось ранее, основной проблемой являются файлы и каталоги, которые не стоит сохранять между перезагрузками, но часто пишут, то есть файлы кеша, папки для загрузки и т. д.

Raspbian, а также Debian и Ubuntu имеют пакет под названием unburden-home-dir основная цель которого состоит в том, чтобы символизировать такие файлы в менее проблемное место, например, a tmpfs или внешний жесткий диск, который менее подвержен износу.

Обычно он запускается во время входа в систему под X и нацеливается на файлы кеша GUI-приложения, но может также вызываться из сценариев или таких и настраиваться для произвольных файлов в домашнем каталоге пользователя.

ответил Axel Beckert 2 Maypm16 2016, 17:54:26
2

Только небольшое сокращение циклов записи может быть достигнуто путем потоковой передачи вывода syslog на другой сервер. Конечно, наличие такого сервера с запуском syslogd является предварительным условием. Однако, поскольку Pi является игрушкой для энтузиастов Linux, это, вероятно, очень часто бывает. : -)

Для активации этой потоковой передачи просто вставьте инструкцию типа

*.*    @myserver.mydomain

в значительной степени в верхней части файла /etc/rsyslog.conf, закомментируйте все остальные строки и перезапустите журнал, выпуская service rsyslog restart , После этого сообщения должны появляться на выбранном сервере.

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

ответил Marcus Rickert 5 22013vEurope/Moscow11bEurope/MoscowTue, 05 Nov 2013 04:10:32 +0400 2013, 04:10:32
2

Это мои рекомендации для Debian 8.0 (Jessie)

Они основаны на iotop -bktoqqq и iostat -dzp 5. Сначала вы должны запустить эти команды, чтобы получить представление о проблеме и ее решении.

1. Отключить обмен

sudo systemctl disable dphys-swapfile
sudo rm /var/swap

2. Используйте опции монтирования и RAM

Подключите все разделы на 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

Commit задерживает записи и собирает их в первую очередь.

3. Зарегистрируйте наиболее часто используемые файлы журнала в /var/tmp/log/

См. мое описание Как уменьшить запись в файлы журнала .

4. Остановить Хром от удара SD-карты

Как выясняется, Хром пишет сильно и не может быть остановлен (см. 176727 , 52663 ). Это влияет на кеш и каталог данных пользователя. Chromium /Tips and tricks объясняют, как это можно перенести в ОЗУ. Так как у малины не так много оперативной памяти, предложите Tab Suspender полезен для сохранения ОЗУ.

a) Кэш

Ограничьте размер кеша и переместите его в ОЗУ, отредактировав /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"

Теперь кеш достаточно мал для перемещения на RAM-диск, изменив запись XDG_CACHE_HOME в /etc/security/pam_env.conf на

XDG_CACHE_HOME  DEFAULT=/tmp/@{PAM_USER}/cache

Теперь у моих двух пользователей есть небольшой кеш браузера в ОЗУ. Если этого недостаточно для изменения кеша или /tmp /size при необходимости.

b) Данные пользователя dir

Кроме того, данные пользователя dir (.config/chromium/) испытывают тяжелые записи. Profile-sync-daemon рекомендуется Chromium /Советы и рекомендации . Он был разработан для управления профилем вашего браузера в tmpfs и периодической синхронизацией его с вашим физическим диском. К сожалению, пакет еще не входит в дистрибутив Raspbian 8.0 (Jessie). Поэтому я еще не тестировал это.

5. Свободное место на SD-карте

Свободное пространство, удаляя пакеты и файлы, которые вам не нужны. Это должно распространять ношение более равномерно по вашим разделам.

Готово!

Теперь запустите iotop -bktoqqq и iostat -dzp 5 и увидите значительное сокращение доступа к записи, когда система находится в режиме ожидания. Ничто не записывается на мой диск в течение нескольких минут. И не беспокойтесь о мигающем зеленом светодиоде ACT . По-видимому, это не хороший индикатор доступа для записи.

ответил Frank Breitling 26 FebruaryEurope/MoscowbSun, 26 Feb 2017 20:31:03 +0300000000pmSun, 26 Feb 2017 20:31:03 +030017 2017, 20:31:03
1

Примечание: предел в 100 000 циклов - это гипотеза, применимая к каждому вычислительному устройству, даже к клавишам на клавиатуре. Я считаю, что запуск Pi в надлежащих условиях охлаждения и правильные циклы остановки /запуска приведут к лучшим результатам, а не к аналогии .

Также это может увеличить мое мнение выше.

Добавить пользователя в дополнение к пользователю Pi [по умолчанию]. Направьте домашний каталог нового пользователя на внешний диск [thumb /hard drive]. Предоставьте новым пользователям разрешения суперпользователя и начните использовать его в качестве основной учетной записи.

Я надеюсь, что это поможет.

ответил touchStone 30 J0000006Europe/Moscow 2013, 14:27:44
0

Использовать демона syslog busybox (в пакете busybox-syslogd на Raspbian /Debian /Ubuntu ) вместо демона syslog по умолчанию (обычно rsyslog). По умолчанию на Raspbian /Debian /Ubuntu syslogd busybox только регистрируется в кольцевом буфере в памяти, а не на диске. По умолчанию буфер буфера имеет размер 128 КБ, то есть старые записи журналов вращаются довольно быстро и исчезают. Но вы можете настроить его для использования большего количества ОЗУ.

Тем не менее это гораздо лучшее решение, чем вообще отсутствие демона syslog, т. е. вы все равно можете войти в систему и прочитать записи журнала ок. последние несколько часов или дней (в зависимости от настроенного размера кольцевого буфера) с помощью команды logread. Вы также можете использовать logread -f, чтобы получить поведение tail -f, например, например. хранить только интересные записи журнала, используя сценарий фильтра или пересылать записи журнала по сети в другом месте, например. используя stunnel или таковую.

ответил Axel Beckert 2 Maypm16 2016, 18:04:31
-1

Несколько вещей, которые я сделал:

chmod файла dphys-swap (где-то в /etc - не рядом с PI на данный момент):

sudo chmod a-x dphys-swapfile

Я получаю небольшие ошибки при загрузке (не могу запустить служебный файл dphys-swapfile). Предположим, что есть лучший способ ... rc-update ??

Кроме того, я захватываю изображения из модуля камеры, чтобы в конечном итоге надеть свой веб-сервер (Pi). Я отформатировал /dev /ram0 до ext2, установил его как /media /ramdrive (используя /etc/init.rc, я думаю). Это 4megs, достаточно большой для одной привязки. Нет записи в SD.

Сервер (oululife.dnsdynamic.com) является экспериментальным, но в Интернете. Чтобы действительно подчеркнуть это, я позволил этому потоку эпизода MP4 «Heartbeat». Он запускает lighttpd, Mysql, PHP, WordPress, и даже когда я удаленно перетекаю через Интернет, он едва ломает пот, загружает в среднем около 0,2. Никаких перегрузок вообще. Модель-B rev. 2, вверх по 24/7. Итак, если я могу получить свои файлы журналов в другой 15 /dev /ramX, я считаю, что моя карта Micro-SD 16G будет длиться годами ....

ответил user10419 31 TueEurope/Moscow2013-12-31T01:23:35+04:00Europe/Moscow12bEurope/MoscowTue, 31 Dec 2013 01:23:35 +0400 2013, 01:23:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132