Prolonger la durée de vie de la carte SD (old)

Cet article est obsolète. Apres plusieurs essais, et lors de fortes charges liées, le raspberry plantait. Après recherche et réflexion, vous trouverez ma nouvelle gestion du swap ici: Prolonger la durée de vie de la carte SD

Le swap est un fichier d’échange qui intervient lorsque la RAM commence à être pleine ou qu’elle est sollicitée par un logiciel qui a besoin de ressource : le système va alors écrire sur le disque dur une partie de la RAM pour libérer de la place. C’est une zone d’échange, une sorte de RAM virtuelle qui augmente la taille de la RAM, mais qui est bien sur plus lente car elle passe par un accès disque. Le problème ici : le swap se trouve sur le disque, donc sur la carte SD du Raspberry.

On peut donc se passer de swap tant qu’on ne demande pas au Raspberry des taches trop gourmandes en RAM (ex : retouche d’images, …)

Pour désactiver le swamp manuellement

sudo dphys-swapfile swapoff

Et pour le réactiver

sudo dphys-swapfile swapon

Pour rendre la désactivation automatique au démarrage

sudo update-rc.d -f dphys-swapfile remove

Le système Linux est très bavard et il écrit pas mal de chose à tout bout de champ. Le problème est que la carte SD subit de nombreuses écritures, ce qui n’est pas bon pour elle. On va donc déplacer les fichiers log dans la RAM du Raspberry, on profitera pour faire pareil avec les fichiers temporaires. Le seul soucis est qu’on perd les fichiers log du système. Ce n’est pas gênant de manière générale, mais ça le devient en cas de serveur web.

Pour cela on va modifier un peu le fichier /etc/fstab. On l’édite par la commande :

sudo nano /etc/fstab

Puis on ajoute ces lignes à la fin :

# les fichiers de log et tempo passent en RAM
tmpfs   /tmp            tmpfs   defaults,noatime,mode=1777,size=10m     0       0
tmpfs   /var/spool      tmpfs   defaults,noatime,mode=1777              0       0
tmpfs   /var/tmp        tmpfs   defaults,noatime,mode=1777,size=10m     0       0
tmpfs   /var/log        tmpfs   defaults,noatime,mode=0755,size=10m     0       0

Attention toutefois avec le répertoire /var/spool. En effet ce répertoire contient le répertoire crontab qui gère tous les appelle à cron. Cron permet de définir des taches qui seront lancées à un instant donné, ou lancées périodiquement. Le fait que le répertoire crontab soit en ram détruira à chaque reboot du Raspberry la listes des taches programmées.

Donc si vous utilisez cron sur votre Raspberry, ne mettez pas /var/spool dans la ram.