Solution de secours pour pi4

Salut.

Pour ceux qui veulent un secours sur leur jeedom je vous propose ma solution qui fonctionne bien chez moi sur un pi4 en cas de crash du ssd.
Ca consiste à synchroniser régulièrement son ssd sur une microSD qui pourra temporairement prendre le relais en attendant le remplacement du disque et à envoyer une alerte signalant le problème.
Couplé à une prise commandée par internet sur l’alim du pi c’est beaucoup plus efficace (pour faire un reboot forcé à distance si plantage).

*D’abord j’ai modifié l’ordre de boot avec (attention ne fonctionne pas si la sd est insérée)

sudo -E rpi-eeprom-config --edit

j’ai rajouté (je n’avais pas la ligne)

BOOT_ORDER=0xf14

pour démmarage ssd puis microSD

Mais d’autres ont l’option pour modifier l’ordre de boot dans raspi-config apparement, pas moi.

*Rebootez

*Insérer une microSD de capacité suffisante pour contenir jeedom (pas besoin qu’elle soit de la taille du ssd).

*Rebootez

*J’ai fait un script qui m’envoie une alerte si ce n’est pas sda1 qui est montée sous /boot:

sudo nano /usr/sbin/sdMontee.sh

y coller:

#!/bin/bash
if [ $(lsblk | grep /boot | cut -c 7-11) != "sda1" ]
then
    sleep 120
    python /home/pi/pushover.py
fi

Je vous laisse voir pour le moyen de vous alerter, vous aurez remarqué que j’utilise pushover qui est très bien mais remplacez la ligne par ce que vous voulez.
Les 120 secondes d’attente c’est pour la connection internet au boot.

*Pour ceux qui n’ont pas rpi-clone:

git clone https://github.com/billw2/rpi-clone.git
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin

*Le script clonage:

sudo nano /usr/bin/clonage.sh

y coller:

#/bin/bash
sudo service mysql stop
sudo service cron stop
sudo service apache2 stop
sudo rpi-clone mmcblk0 -q
sudo reboot

Nb: si vous ne souhaitez pas rebooter mais seulement relancer les services, remplacez la ligne :

sudo reboot

par:

sudo service mysql start
sudo service cron start
sudo service apache2 start

*Les droits:

sudo chmod +x /usr/sbin/sdMontee.sh
sudo chmod +x /usr/bin/clonage.sh

*Modif du cron pour contrôle des partitions au reboot et synchronisation du ssd sur la microSD toutes les nuits à 03h00:

crontab -e

rajouter en bas les lignes

@reboot bash /usr/sbin/sdMontee.sh
0 3 * * * sudo bash /usr/bin/clonage.sh

*le clonage à faire une seule fois (par la suite ça synchronisera uniquement):

sudo service mysql stop
sudo service cron stop
sudo service apache2 stop
sudo rpi-clone mmcblk0 -f

(il faut arrêter les services le temps de cloner sur un jeedom)

*reboot pour relancer les services

Voilà maintenant si vous rebootez sans ssd la microSD prend le relais et vous envoie une alerte :wink:

7 « J'aime »

Hello,

Intéressant mais quelques remarques/questions :

  • Indisponibilité de Jeedom le temps de la sauvegarde. Même si c’est court et même si tu indiques que les services vont être coupés, peut-être le préciser dans le tuto pour les débutants (même si c’est très clair pour les personnes ayant un minimum de connaissances) car s’il y a une tâche prévu en même temps…
  • Pourquoi un reboot de la machine (sudo reboot) et pas uniquement un reboot des services? Le temps d’indisponibilité de Jeedom sera bien plus long, surtout avec les contrôleurs Z-Wave par exemple.
    Et si reboot des services uniquement, il serait intéressant de rajouter un test pour voir si les services sont bien relancés.
  • Le tuto est terminé?

Pourquoi l’option -f ?
Tu n’indiques pas quoi faire avec ce dernier script.

C’est le clonage, l’option -f le force, ce n’est pas un script mais des commandes à lancer une fois.
Il faut le faire la première fois, après dans le script le -f est retiré et ça fait une simple synchro rapide qui évite de fatiguer la microSD.

Pourquoi arrêter les services ? bonne question, j’ai mis cette procédure parce que certains plus calés que moi ont dit dans le passé qu’il fallait faire ainsi…
Perso je ne les arrête pas, à vous de voir… (je n’ai jamais eu aucune erreur d’ailleurs)

Oui, l’arrêt de services est nécessaire car si une écriture est réalisé dans la BDD en même temps qu’un backup, il y a un risque de soucis.
Je ne sais pas si ce point a évolué d’ailleurs.

Par contre, dans ton script clonage.sh, tu fais un reboot de la machine :

Pourquoi ne pas simplement restart les services que tu as stop ?

Pour plus de sûreté mais tu peux aussi les restart

Bonjour
Merci pour cette solution.
Par contre est il possible de l’appliquer sur un PI 3B+ ?
Bien cordialement à tous

Il faut que ton pi boote dans l’ordre ssd puis SD. Ca dépend des modèles.
Pour le pi4 pas de problème tu peux choisir, pour les autres il faut faire l’essai.
Mets un ssd et une SD en même temps et regarde sur quoi ça boote, si c’est le ssd c’est bon.
Si c’est bon tu peux suivre le tuto mais ne fais pas ces lignes réservées au pi4 :

Bonjour
J’ai appliqué la solution sur mon pi4. J’ai changé ```
BOOT_ORDER=0xf41 par BOOT_ORDER=0xf14.
Tout fonctionne sauf que le PI4 boote prioritairement sur la sd card et non sur le ssd msata !
J’ai vérifié mon boot order qui est bien sur 0xf14.
Où est l’erreur ?
Merci de votre aide

Que répond la commande lsblk ?