RaspFR :: Forum

Forum de la communauté francophone de Raspberry PI.

Vous n'êtes pas identifié(e).

Annonce

Attention !!! Le serveur sera migré d'ici la fin de l'année, une coupure du forum est donc à prévoir dans les semaines à venir.

#1 14-04-2016 00:17:33

Hawkeye
Membre
Inscription : 07-01-2014
Messages : 147

Faire tourner un projet dans la RAM ?

Bonjour à tous,

Pour un de mes projets, je vais avoir besoin de nouveau d'une BDD.

Lorsque j'ai réalisé il y a 1 ou 2 ans maintenant une petite station météo, la multitude des enregistrements des capteurs (6 sondes DHT et 4 BMP) toutes les 30 secondes sont très rapidement venus à bout de ma carte SD (remplacée 4 fois depuis quand même...).

Pour mon prochain projet, je vais également devoir récupérer beaucoup d'enregistrements à intervalles courts (sûrement toutes les 30 secondes encore pour 4 capteurs).
Je vais également gérer 1 ou 2 moteurs ainsi que la PiCam (pour de la capture instantanée et/ou du stream sur une page web).

Côté matériel, je m'autohéberge, j'ai donc de "vrais" serveurs (physiques ou virtuels) pour des services sollicités et pour isoler les fonctions : j'ai entre autre 1 VM dédiée pour mon serveur de BDD MySQL qui centralise l'intégralité de mes différents services et 1 VM pour mon serveur web.
Je suis partisan de MySQL (oui je sais certains me diront MariaDB), mais l'habitude... et puis qu'Oracle l'ait repris n'est pas en soi forcément une mauvaise chose... quant à la licence... au final, pour nous ça ne change pas grand chose.
Bref, c'est un autre débat...

Avant, sur mes RPi, à chaque "intervalle", mes scripts déclenchaient différents contrôles de dispo du serveur de BDD, effectuaient la connexion au BDD, enregistraient les données, et écrivaient également des fichiers (images, .txt), des logs au niveau de mon "appli" sur le RPi.
Du coup, la carte SD était énormément sollicitée en lecture/écriture, causant son usure prématurée comme évoqué plus haut.

Aujourd'hui, sachant que je vais stocker mes data dans une BDD extérieure et mettre en forme ces données dans des pages web sur un serveur web externe, je ne vais pas avoir besoin de stocker grand chose sur le RPi, à l'exception des scripts à proprement parler, et peut être des captures/flux de la PiCam.
J'ai lu que l'on pouvait faire tourner tout cela dans la RAM, ce qui ne solliciterait plus la carte SD, mais je me pose plusieurs questions :

  1. quel type de système de fichiers : ramfs ou tmpfs ?

  2. comment concrètement mettre cela en place ? (dans /etc/fstab OK, mais ensuite...)

  3. y-a-t-il un moyen pour ponctuellement sauvegarder/décharger les données ? (dans le cas de captures PiCam par exemple, au lieu d'écrire l'image toutes les minutes sur la carte SD par exemple, y-a-t-il un moyen de dire : je stocke les images prises toutes les minutes dans la RAM et j'écris le contenu sur la carte SD toutes les 10 minutes, ne faisant qu'une seule écriture au lieu de 10 ?)

Quel(s) conseil(s) me donneriez-vous ?
Vous remerciant par avance de vos éventuelles contributions.
:-)

Hors ligne

#2 14-04-2016 09:46:15

Claudius
Membre
Lieu : 78 - Yvelines
Inscription : 06-05-2015
Messages : 160
Site Web

Re : Faire tourner un projet dans la RAM ?

Bonjour,

Tout d'abord, je pense que ton problème est avant tout l'utilisation de la carte SD en tant que périphérique de sauvegarde et d'écriture permanente car les programmes "tournent" déjà en RAM au swap près si ceux-ci occupent beaucoup de place ou manipulent de grandes quantités de données (à confirmer / infirmer).

Il va de soit que la carte SD n'est pas faite pour cela et il y a des solutions qui permettent d'attaquer des disques externes comme les NAS ou en autre ces 2 infos:
- X300 une carte d’extension pour votre Raspberry Pi avec un port SATA
- RAID Pi – Raspberry Pi as a RAID file server sans aller jusqu'au RAID dans ton cas, encore que cela garantit l'intégrité des données écrites...

Dernière modification par Claudius (14-04-2016 10:23:00)

Hors ligne

#3 14-04-2016 20:46:33

chris57100
Chris
Lieu : Thionville
Inscription : 23-06-2013
Messages : 1 407
Site Web

Re : Faire tourner un projet dans la RAM ?

De mon coté je travaille avec une base de données "chronologique" avec aussi des écritures régulières. Je suis passé dans un premier temps dans un répertoire tmpfs (donc montage dans fstab ce qui rend le répertoire disponible pour les applications de manière transparente). Maintenant j'envisage le PiDrive de 314Go ca permettra d'économiser la carte SD. Et je vais régler mon collecteur pour des écritures toutes les minutes (donc en cas de crash je pers 1 minute de collecte)


Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot

Hors ligne

#4 15-04-2016 00:13:10

Hawkeye
Membre
Inscription : 07-01-2014
Messages : 147

Re : Faire tourner un projet dans la RAM ?

Merci à vous pour vos retours.
Je pense que je vais déjà monter un tmpfs, ça ne mangera pas de pain.
Mon but est de solliciter la carte SD le moins possible (d'où ma question pour ponctuellement déclencher les écritures) mais aussi d'embarquer le moins de choses possibles (donc éviter les DD supplémentaires). Au pire, une petite clé USB fera l'affaire si vraiment je ne peux pas faire autrement.

chris57000, qu'entends-tu exactement par BDD "chronologique" ? une BDD MySQL optimisée pour les données de temps, ou bien une BDD dans le style d'InfluxDB ?

Merci encore.

Hors ligne

#5 15-04-2016 07:11:40

chris57100
Chris
Lieu : Thionville
Inscription : 23-06-2013
Messages : 1 407
Site Web

Re : Faire tourner un projet dans la RAM ?

Une db InfluxDb avec Telegraf comme collecteur


Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot

Hors ligne

#6 15-04-2016 19:03:53

Hawkeye
Membre
Inscription : 07-01-2014
Messages : 147

Re : Faire tourner un projet dans la RAM ?

D'accord, merci pour ces informations.
Je vais jeter un œil du côté d'InfluxDB pour mes données temporelles.

Hors ligne

Pied de page des forums