Pour qu’un disque dur (/dev/sdX) se mette en veille de manière automatique il faut que sa configuration de gestion de l’alimentation ait une certaine valeur. Vous pouvez récupérer cette valeur avec :
$ hdparm -B /dev/sdX
Dans le cas où ce n’est pas supporté (pas de chance) :
/dev/sdX: APM_level = not supported
Si c’est supporté :
/dev/sdX: APM_level = 128
En regardant le manuel de hdparm (man hdparm) :
-B Get/set Advanced Power Management feature, if the drive supports it. A low value means aggressive power management and a high value means better performance. Possible settings range from values 1 through 127 (which permit spin-down), and values 128 through 254 (which do not permit spin-down). The highest degree of power management is attained with a setting of 1, and the highest I/O performance with a setting of 254. A value of 255 tells hdparm to disable Advanced Power Management altogether on the drive (not all drives support disabling it, but most do).
Comme expliqué, une valeur comprise entre 128 et 254 interdit au disque dur de s’arrêter. Une valeur de 255 désactive cette gestion avancée de l’alimentation. Une valeur inférieure à 128 permet l’arrêt de la rotation des plateaux en cas d’inactivité. Pour ne pas sacrifier les performances je vous conseille de mettre une valeur de 127 si vous pouvez vous permettre une latence de quelques secondes lors d’un accès le temps que les disques se remettent en route.
$ hdparm -B 127 /dev/sdX /dev/sdX: setting Advanced Power Management level to 0x7f (127) APM_level = 127
Et voilà !
Bonus : smartmontools et smartd
smartd est un démon permettant la vérification périodique de l’état smart des disques. En cas d’erreur un mail est envoyé à root.
Vous pouvez modifier la configuration de smartd avec le fichier « /etc/smartd.conf » ou « /etc/smartmontools/smartd.conf ». Vous pouvez notamment décider de ne surveiller que certains disques et de ne relever que certaines erreurs SMART en particulier.
Voyons le status de smartd :
$ systemctl status smartd ● smartd.service - Self Monitoring and Reporting Technology (SMART) Daemon Loaded: loaded (/usr/lib/systemd/system/smartd.service; enabled; preset: enabled) Drop-In: /usr/lib/systemd/system/service.d └─10-timeout-abort.conf Active: active (running) since Sun 2023-04-23 07:37:55 CEST; 12h ago Docs: man:smartd(8) man:smartd.conf(5) Main PID: 1064 (smartd) Status: "Next check of 7 devices will start at 20:07:55" Tasks: 1 (limit: 38343) Memory: 4.1M CPU: 58ms CGroup: /system.slice/smartd.service └─1064 /usr/sbin/smartd -n -q never --capabilities=mail avril 23 07:37:55 lan smartd[1064]: Device: /dev/sdf, type changed from 'scsi' to 'sat' avril 23 07:37:55 lan smartd[1064]: Device: /dev/sdf [SAT], opened avril 23 07:37:55 an smartd[1064]: Device: /dev/sdf [SAT], ST500DM002-1BD142, S/N:REDACTED, WWN:REDACTED, FW:KC48, 500 GB avril 23 07:37:55 lan smartd[1064]: Device: /dev/sdf [SAT], found in smartd database 7.3/5417: Seagate Barracuda 7200.14 (AF) avril 23 07:37:55 lan smartd[1064]: Device: /dev/sdf [SAT], is SMART capable. Adding to "monitor" list. avril 23 07:37:55 lan smartd[1064]: Device: /dev/nvme0, opened avril 23 07:37:55 lan smartd[1064]: Device: /dev/nvme0, WDC WDS500G2B0C-00PXH0, S/N:REDACTED, FW:211070WD, 500 GB avril 23 07:37:55 lan smartd[1064]: Device: /dev/nvme0, is SMART capable. Adding to "monitor" list. avril 23 07:37:55 lan smartd[1064]: Monitoring 6 ATA/SATA, 0 SCSI/SAS and 1 NVMe devices avril 23 07:37:55 lan systemd[1]: Started smartd.service - Self Monitoring and Reporting Technology (SMART) Daemon.
On voit que sur ma machine 7 disques sont surveillés, 6 disques SATA et 1 disque NVMe. La ligne intéressante est « Status » en haut. Celle-ci indique que la prochaine vérification SMART démarrera à 20h07. Problème, cette vérification va redémarrer la rotation des disques, réveillant ainsi vos disques durs et va donc ruiner nos efforts précédents. Plusieurs solutions possibles : désactiver la monitoring de manière totale (systemctl disable –now smartd), partielle (avec smartd.conf) ou en allongeant les périodes de vérification de smartd. Il se trouve que dans la plupart des distributions (Debian, Fedora, …) le fichier smartd.conf est configuré avec l’option « -n standby » ce qui évite à smartd de vérifier les disques dans les états « sleep » ou « standby ». Les disques seront donc bien laissés tranquille car ils sont dans un état « standby » où les plateaux ne tournent plus mais le disque se tient prêt à démarrer.
Bonne chance ! On se retrouve dans un prochain mini tuto.