Mettre les disques durs en veille après X minutes en utilisant hdparm ne fonctionne pas

11

J'utilise Ubuntu 12.04 sur un serveur domestique. Il y a 5 disques durs: un SSD avec le système d'exploitation et 4 disques durs (Samsung HD204UI) configurés en RAID5 à l'aide de mdadm.

Je n'ai pas besoin du RAID très souvent (disons environ une fois par jour en moyenne); il contient des données multimédias et quelques sauvegardes, j'ai donc décidé de mettre les disques en veille la plupart du temps.

J'ai configuré les disques pour qu'ils tournent automatiquement après 20 minutes en utilisant hdparm, ici à /dev/sdatitre d'exemple:

hdparm -S 240 /dev/sda

La sortie de la commande a confirmé ceci:

/dev/sdb:
 setting standby to 240 (20 minutes)

Mais le problème est que le disque tourne après environ 5 secondes (au lieu de 20 minutes) après le dernier accès, et

hdparm -C /dev/sdb

affiche:

/dev/sdb:
 drive state is:  standby

Pourquoi le lecteur n'attend-il pas les 20 minutes comme configuré? Cela a-t-il quelque chose à voir avec la configuration RAID? (Je ne pense pas ...)

Ce délai très court est problématique car il s'agit d'un RAID5 et lorsque j'accède à un fichier, il est réparti par bloc autour des quatre disques. Étant donné que le lecteur 1 n'est pas nécessaire lors de la lecture du lecteur 2, il s'est endormi lorsqu'il sera utilisé la prochaine fois (après la lecture du lecteur 3). Les disques tournent donc de haut en bas tout le temps, ce qui entraîne un débit proche de zéro.

Pour les personnes préoccupées par la durée de vie de mes disques: ce ne sera pas un problème que les disques tournent de haut en bas une fois par jour en moyenne car je préfère économiser l'énergie et la chaleur plutôt que la santé des disques (j'utilise RAID5 et le contenu n'est pas pas très important).

leèmes
la source
2
Heureux que vous ayez obtenu votre réponse ici. Dommage que les gars de ServerFault étaient si pointilleux. J'aurais pensé que les techniques d'économie d'énergie seraient assez importantes dans n'importe quel scénario d'entreprise avant-gardiste. Au lieu de cela, ils vont manquer.
tomfanning
1
@tomfanning Eh bien, je suppose que ServerFault est destiné aux serveurs à grande échelle comme dans un centre de données uniquement. Mais je ne savais pas, et je m'attendais à ce qu'un serveur domestique compte également comme un serveur. Sinon, je devrais mettre mon serveur dans mon jardin, donc il n'est plus chez moi. Ce que je ne comprends vraiment pas, c'est pourquoi ils ne me vivent pas avec ce que je veux et ne répondent à la question que s'ils ont des réponses constructives à ma question, mais veulent plutôt que je laisse ce que je veux faire. [pour les autres personnes ne sachant pas de quoi nous parlons: serverfault.com/q/389222/116951]
leemes

Réponses:

11

L'AHCI est-il activé dans votre BIOS? Sinon, essayez de l'allumer et de réessayer.

Si cela ne fonctionne toujours pas, vous devrez peut-être essayer quelque chose d'un peu plus compliqué, car hdparmil ne joue pas toujours bien avec les disques SATA, ce que je suppose que vous avez.

Consultez cette page pour la solution relativement simple suivante qui utilise crontab:

sudo apt-get install sg3-utils
crontab -e

Maintenant, ajoutez ceci au bas de votre crontab (remplacez sdx par le lecteur que vous souhaitez mettre en veille):

0-59/15 * * * * ( if [ ! -f /dev/shm/1 ] ; then touch /dev/shm/1 /dev/shm/2; fi ; mv /dev/shm/1 /dev/shm/2; cat /proc/diskstats > /dev/shm/1 ) >/dev/null 2>&1
0-59/15 * * * * ( export HD="sdx "; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" =  "" ] ; then /usr/bin/sg_start --stop /dev/$HD; fi ) >/dev/null 2>&1

Bien sûr, avant de tenter quoi que ce soit, il est fortement conseillé d'effectuer une sauvegarde complète du contenu de vos disques durs.

SirCharlo
la source
A fonctionné comme un charme. J'ai activé AHCI dans le BIOS. Le mode SATA a été réglé sur RAID (ma carte mère a un contrôleur RAID à bord que je n'utilise pas). Je ne savais pas que l'AHCI était nécessaire pour un contrôle SMART approprié des disques SATA ou quoi que hdparm fasse ici. Merci!
leemes
Monsieur @SirCharlo, quelle est la commande de base pour faire hdd en mode veille (en utilisant cela sg3-utils)? C'est ça /usr/bin/sg_start --stop /dev/sdx?
Oki Erie Rinaldi
1

Peut-être qu'une meilleure façon pourrait être:

hdparm -B 1 -Y / dev / device
hdparm -B 255 / dev / device

Le premier hdparm a immédiatement mis l'appareil en veille. Le second désactive APM, de sorte que le disque reste en mode veille jusqu'au prochain accès au disque.

tapis
la source
Bonne suggestion, mais il convient de préciser que ces commandes doivent être utilisées avec un script qui chronomètre les actions.
Rucent88