Aller au contenu
Sylvain Joffraud l4w
Retour

Un NAS aux petits oignons, comme un plat mijoté

Mon NAS Atom de 2010 (ReadyNAS Ultra 2 sous Debian + OpenMediaVault) tournait à plein régime 24/7. Disques qui pulsent en permanence, ventilateur à vitesse fixe, ~12W de dissipation continue pour… rien. Le NAS ne sert que pour les sauvegardes nocturnes et quelques accès rares.

J’ai voulu le mijoter. Feu doux, surveillance sur les côtés, on goûte régulièrement.

Étape 1 — Faire dormir les disques. smartctl --set=standby,240 (timer ATA 20 min) géré proprement par OMV (Stockage → Disques) plutôt qu’un /etc/hdparm.conf qui se ferait écraser au prochain salt deploy. Les disques se mettent en standby après 20 min sans I/O. Le pull rsync nocturne les réveille en 5-7s pour son job, puis ils se rendorment. Coût : un cycle Start_Stop par jour. Gain : ~5W et zéro vibration.

Étape 2 — Empêcher les loggers de réveiller le ballet. OpenMediaVault utilise folder2ram qui met /var/log, /var/tmp, /var/spool en tmpfs RAM. Sync RAM↔disque uniquement au boot/shutdown. Donc rsyslog peut écrire chaque seconde, ça ne touche jamais les plateaux. Sans ça, --set=standby,240 ne sert à rien.

Étape 3 — Le coup de génie : découpler le ventilo des disques. Mon premier réflexe était « disques en standby = ventilo off ». Mauvaise idée. Le CPU peut chauffer indépendamment (un cron python, un samba qui répond à un client, et hop). Le ventilo doit suivre les capteurs thermiques, pas l’état d’I/O.

Petit script qui pivote sur max(coretemp CPU, IT87 board − 15°C) (offset structurel sur cette puce). Courbe en paliers + hystérésis 5°C pour pas yo-yo aux frontières :

< 50°C → pwm=50   (~1256 RPM, valeur native du firmware, inaudible)
50-59  → pwm=120  (~2300 RPM)
60-69  → pwm=180  (~2800 RPM)
≥ 70°C → pwm=255  (full speed)

Subtilité : le firmware IT87 a une valeur native auto_start=50 qu’il respecte si on l’écrit (sans réécriture continue). Donc en idle on écrit pwm=50 une fois et basta. En palier chaud, on doit en revanche réécrire en boucle 1s pour que le firmware ne nous reset pas vers 50. Mode hybride.

Test thermique passif (4 min sans ventilo) montre que la temp monte de +13°C sans atteindre d’équilibre — sur ce boîtier confiné, l’arrêt total n’est pas viable. Mieux vaut une croisière douce qui dure 10 ans qu’un cycle stop/start qui fatigue les paliers. Pour cuire à feu doux, on laisse le rond allumé.

À la mesure : RPM stable 1254-1259 (delta 5, variation 0,4 %). Inaudible. Le firmware IT87 fait le travail tranquille tant qu’on lui parle dans son langage.

Étape 4 — Failsafe non négociable. Si le script meurt, trap SIGTERM/INT/HUP puis ExecStop systemd remettent pwm1_enable=2 (mode auto firmware IT87) et pwm1=255. Aucun chemin ne mène à « ventilo off + plus de surveillance thermique ». Sur un Atom en boîtier confiné, la prudence est un ingrédient.

Résultat : NAS quasi silencieux la majeure partie du temps, ventilo qui passe en accélération seulement quand il faut, disques qui dorment 23h/24. Conso à la louche divisée par deux. Et surtout : chaque sous-système suit sa propre logique — les disques dorment selon leur I/O, le ventilo respire selon la température, OMV reste source de vérité pour la conf disques. Pas de couplage artificiel qui marche aujourd’hui et pète demain quand un cron change.

Le bon tuning, c’est savoir ce qui doit être coordonné et ce qui doit rester séparé.


Partager cet article :

Article précédent
Le « protocole série propriétaire » qui n’en était pas un
Article suivant
WireGuard sur Coolify : 2 pièges en 30 minutes