De l'hibernation chez Synology...

Publié le 26 mars 2013 par Sid

C

omme je l'expliquais précédemment, j'ai fait l'acquisition d'un Synology DS413 pour remplacer mon précédent NAS en manque d'espace libre. Parmi les raisons ayant guidé ce choix se trouve sa faible consommation, en particulier quand il se trouve en hibernation.

Or, il se trouve que la mise en veille chez Synology ne manque pas de poser quelques soucis, au point qu'une section entière de leur forum y soit consacré. Le problème couramment rencontré par les utilisateurs se traduit par une sortie de veille quasi immédiate après hibernation, rendant l'utilisation de cette fonctionnalité complètement contre-productive du fait du redémarrage des disques...

Sur les NAS Synology, il y a deux niveaux de veille. Le premier consiste à arrêter les disques en maintenant le système sous tension, permettant de passer d'une consommation de 35W en fonctionnement normal à 13W. Le second niveau de veille est une hibernation du système qui fait tomber la consommation à moins de 4W. Une fois là, le système n'est censé se réveiller que suite à une sollicitation directe. Or, ce n'est pas toujours ce qu'on constate...

Quand on parcourt les différents threads et autres FAQ, on s'aperçoit très vite qu'il existe grosso modo deux catégories de facteurs empêchant le NAS de rester en hibernation. La première est l'utilisation d'un service, d'une application ou d'un réglage incompatible avec cette fonctionnalité. La seconde est la génération par l'environnement du NAS de sollicitations. Après moultes debug et quelques tests, il s'avère que je tombe dans la seconde catégorie. Et comme ça vient d'un équipement dont je ne peux pas changer le comportement, je ne peux compter que sur une action sur le NAS lui-même...

La solution immédiate quand on est dans ce genre de situation est de désactiver l'hibernation et de s'en tenir au premier niveau de veille. Si les disques sont à l'arrêt, il est dommage d'une part de ne pas pouvoir profiter à fond des économies d'énergie, et d'autre part de ne pas pouvoir jouir d'un système silencieux puisque les ventilateurs tournent. Car même au ralenti, ils font du bruit. Or, on aimerait bien pouvoir, au minimum, les désactiver. Problème auquel j'ai trouvé la solution au fond d'un thread sur l'hibernation : il existe un fichier de configuration répondant au doux nom de scemd.xml qui permet de contrôler la vitesse de rotation des ventilateurs.

On trouve le fichier en question à la fois dans /usr/syno/etc/ et /usr/syno/etc.defaults/. C'est apparemment cette dernière version qui contrôle effectivement les ventilateurs.
Ce fichier contient en particulier trois sections de ce type :

<fan_config period="20" threshold="6" type="DUAL_MODE_LOW" hibernation_speed="ULTRA_LOW">
    <disk_temperature fan_speed="12%40hz" action="NONE">0</disk_temperature>
    <disk_temperature fan_speed="21%40hz" action="NONE">44</disk_temperature>
    <disk_temperature fan_speed="35%40hz" action="NONE">48</disk_temperature>
    <disk_temperature fan_speed="60%40hz" action="NONE">54</disk_temperature>
    <disk_temperature fan_speed="99%40hz" action="NONE">58</disk_temperature>
    <disk_temperature fan_speed="99%40hz" action="SHUTDOWN">61</disk_temperature>

    <temperature fan_speed="12%40hz" action="NONE">0</temperature>
    <temperature fan_speed="60%40hz" action="NONE">46</temperature>
    <temperature fan_speed="99%40hz" action="NONE">58</temperature>
    <temperature fan_speed="99%40hz" action="SHUTDOWN">60</temperature>
</fan_config>

La section DUAL_MODE_HIGH concerne le mode frais du NAS, comprendre le mode pour lequel les ventilateurs tournent à fond... Les sections DUAL_MODE_LOW et DUAL_MODE_LOW_STOP correspondent respectivement aux modes calme et basse puissance.
La signification et l'impact des paramètres, à l'exception de la fréquence (40Hz ?), sont assez explicites. Utilisant mon DS413 en mode calme, j'ai donc modifié la DUAL_MODE_LOW comme suit en m'inspirant de quelques retours utilisateur :

<fan_config period="20" threshold="6" type="DUAL_MODE_LOW" hibernation_speed="0%20hz">
    <disk_temperature fan_speed="7%20hz" action="NONE">0</disk_temperature>
    <disk_temperature fan_speed="10%20hz" action="NONE">40</disk_temperature>
    <disk_temperature fan_speed="15%20hz" action="NONE">45</disk_temperature>
    <disk_temperature fan_speed="40%40hz" action="NONE">50</disk_temperature>
    <disk_temperature fan_speed="60%40hz" action="NONE">53</disk_temperature>
    <disk_temperature fan_speed="99%40hz" action="NONE">56</disk_temperature>
    <disk_temperature fan_speed="99%40hz" action="SHUTDOWN">61</disk_temperature>

    <temperature fan_speed="7%20hz" action="NONE">0</temperature>
    <temperature fan_speed="10%20hz" action="NONE">40</temperature>
    <temperature fan_speed="99%40hz" action="NONE">58</temperature>
    <temperature fan_speed="99%40hz" action="SHUTDOWN">60</temperature>
</fan_config>

Outre l'abaissement significatif des vitesses de rotation, le paramètre important est hibernation_speed qui, avec une valeur de 0%, provoque l'arrêt des ventilateurs dès le passage en veille. Après avoir rebooté la bête avec cette configuration, je n'ai pas constaté d'élèvement significatif de température sur mes quatre Seagate Barracuda à 7200tr/min qui dépassent rarement les 35°C.

Conclusion... Si je ne peux pas utiliser l'hibernation du système, je m'en tire avec une veille ventilateurs arrêtés qui ne fait plus de bruit, et qui tire un tout petit moins sur la prise. Il n'y a pas de petites économies ;)
Si ça vous tente de jouer, il ne vous reste qu'à déterminer les valeurs qui vous conviennent.

Et pendant que je cherchais des infos le fichiers scemd.xml, je suis tombé sur un billet discutant du changement des ventilateurs sur les Synology et de ce que ça implique. Lecture intéressante.