Перейти к содержанию
    

Как избежать проблем с SD Картой на Raspberry PI 2?

Привет.

Такая ситуация - в моей системе Распберри работает в режиме 24/7. Управляет всякими девайсами через инет и USB, пишет логи на SD-карту. На этой же самой SD карте хранится операционка и конфигурация. Из того, что я прочитал в инете, ресурс этой самой SD карты в таком режиме не безграничен и рано или поздно она откажет.

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

 

В общем какие посоветуете решения?

Например, как вариант вместо карты использовать USB винчестер. Но не знаю можно ли загрузить Расперри с него. Или использовать сетевую загрузку. Также логи, наверное желательно писать на NAS, или USB, а карту чделать Read-only.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А поставить Windows 10 на Raspberry?

Я использую планшеты с Windows 10, они отлично работают с внешними дисками.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделать SD-карту Read-Only.

Для этого настраиваете демон логгирования rsyslogd (или используете другой, если настройки не позволяют), чтобы он писал логи на ваш NAS.

Отключаете swap файл или перенаправляете его на NAS.

В общем, все, что должно писать на SD-карту или отключаете или перенаправляете на NAS.

Делаете карту read-only.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Управляет всякими девайсами через инет и USB, пишет логи на SD-карту. На этой же самой SD карте хранится операционка и конфигурация

 

Может все-таки логи писать только при ошибках или перезагрузках? Если система работает нормально, то и записей на сд будет немного :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может все-таки логи писать только при ошибках или перезагрузках? Если система работает нормально, то и записей на сд будет немного :laughing:

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

 

По поводу Read-only, спасибо, буду смотреть, но надо бы, чтобы было как можно меньше возни с конфигурацией и потом не было проблем с системой.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да разные есть варианты.

Можно с сети загризить ядро по TFTP и смонтировать файловую систему с NFS. Это по поводу вашего вопроса как загрузить с сети. Но для этого нужен работающий компьютер с которого все по сети берется.

 

Если не с сети грузиться:

SWAP скоее всего не включен, а если включен то быстро добьет ваш диск. Логи легко перенаправить на другой компьютер и уже там писать..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если ваша система работает стабильно, то такие логи можно сбрасывать на RAM disk например. Или на внешний усб-винт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте

 

если сетевой диск:

mkdir /mnt/netdsk
mount -t cifs -o username='user',password='password' //<IP>/<path> /mnt/netdsk
chmod 777 /mnt/netdsk

и сохраняйте данные в /mnt/netdsk

 

просто USB диск:

mkdir /mnt/disk
mount /dev/sda1 /mnt/disk
chmod  777 /mnt/disk

где /dev/sda1 ваш USB диск (может быть и sdaN, sdbN, sdc и т.д.

и сохраняйте данные в примонтированное устройство /mnt/disk

 

или накапливайте данные в RAM диске

и время от времени делайте бекап в примонтированное устройство

 

ну а автобекап примерно так:

#!/bin/bash

_ps="/home/user/file"   #пусть к вашему файлу
_pd="/mnt/disk/file" #пуст к вашему примонтированному устройству и файлу

((work = 1))
while ( ((work > 0)) )
do
  cp $_ps $_pd
  sleep 100  #интервал бекапа в секундах
done

запустие подобный скрипт и будет счастье

Изменено пользователем Paramon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Paramon, спасибо, буду пробовать.

 

Как я уже говорил в сети есть NAS в режиме 24/7, который бекапится в облако. То есть логи я на него перекинуть могу. А вот можно ли загружаться с него, если там только файловый доступ организован?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Paramon, спасибо, буду пробовать.

 

Как я уже говорил в сети есть NAS в режиме 24/7, который бекапится в облако. То есть логи я на него перекинуть могу. А вот можно ли загружаться с него, если там только файловый доступ организован?

 

Debian (Raspbian) "считает", что примонтированное устройство это его личное и входит в его файловую систему. И он будет в него писать и читать из него - ему до лампочки. Главное чтобы были физические возможности работы с ним и права доступа к этому устройству той программе (пользователю) на чтение и запись.

 

Про загрузку - это не потребуется! Будете грузиться с SD карты как и ранее. Выключите SWAP (swapoff -a). Для работы вам 1 гиг озу вполне хватит да и на APACHE+PHP+MySQL c видео останется. Сам испытывал.

Да а если SWAP необходим то настройте также на примонтированном диске, желательно HDD.

Изменено пользователем Paramon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Debian (Raspbian) "считает", что примонтированное устройство это его личное и входит в его файловую систему. И он будет в него писать и читать из него - ему до лампочки. Главное чтобы были физические возможности работы с ним и права доступа к этому устройству той программе (пользователю) на чтение и запись.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Конкретно не испытывал на Raspberry, но на Moxa UC7112LX-plus я подменял родную (встроенную) директорию /home на дубликат на SD карте (SD не жалко было по сравнению с впаянной)

1) коприровал /home на SD, которая была в /mnt (в этой папке все пользователи) не забудьте про принадлежность пользователям и разрешениях

2) делал автомонтирование в /etc/rc.local наподобие о чём писал - команда mount

3) при запуске была подмена, но учтите что исходная /home не будет изменяться - будет в "тени" и при неудачном монтировании всплывёт и будет не очень гуд.

Попробуйте сначала просто в "ручном" режиме - понятное дело, что с ROOT правами. Да и все манипуляции с монтированием, о чём говорилось выше, тоже с ROOT.

 

В общем загружать программу если она не в /usr или /lib и не в /bin а где-то в /home (/home/<user>) получиться. А подмена этих путей по моему перебор. Проще настроить (да и правильнее) запуск необходимого софта. Как правило запущенный код "мусорит" в папке пользователя - того кто запустил. Если это не /var - где все оставляют логи.

 

И ещё я не испытывал, но люди говорят про запуск с (USB)Flash/HDD:

посмотрите тут

Но всё равно начальный старт (загрузчик) с SD карты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно сделать так, чтобы сетевой диск как-то "подменил" SD карту?

 

Поднимите на NASe NFS сервер, создайте экспорт для корневой системы, залейте туда копию карточки. Затем на RPI поправьте /boot/cmdline.txt:

 

root=/dev/nfs
rootfstype=nfs
nfsroot=nas-ip:/nfs/rootfs/raspberry
ip=rpi-ip:def-gw:broadcast:netmask

 

nas-ip, rpi-ip, def-gw, broadcast и netmask замените на нужные вам значения. После этого карточка будет жить долго и счастливо, а систему можно обновлять хоть 10 раз в сутки. (это рецепт из давно живущей системы, поменялось ли что-то в новых версиях - не знаю).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поднимите на NASe NFS сервер, создайте экспорт для корневой системы, залейте туда копию карточки. Затем на RPI поправьте /boot/cmdline.txt:

Выглядит достаточно просто, спасибо. Еще б подсказали, что означает создать экспорт для корневой системы, но помоему я совсем обленился :-)

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...