web-dev-qa-db-fra.com

Comment puis-je contrôler le temps de rotation du disque dur?

J'ai 2 disques durs sur mon PC. Ubuntu éteint très rapidement le disque dur secondaire après environ 15 minutes, ce qui est court pour moi. J'ai besoin de contrôler ce moment. Comment puis-je le faire?

J'ai essayé la gestion de l'alimentation GNOME mais je ne l'ai pas trouvé utile.

70
user16295

Regardez hdparm.

De le manuel (man hdparm sur la ligne de commande):

-S Définit le délai d'attente pour le lecteur. Cette valeur est utilisée par le lecteur pour déterminer le délai d'attente (sans activité du disque) avant d'éteindre le moteur de la broche afin d'économiser de l'énergie. Dans de telles circonstances, le lecteur peut prendre jusqu'à 30 secondes pour répondre à un accès ultérieur au disque, bien que la plupart des lecteurs soient beaucoup plus rapides.

Le codage de la valeur de délai d'attente est un peu particulier. Une valeur de zéro signifie que "les délais d'attente sont désactivés": l'appareil ne passera pas automatiquement en mode veille. Les valeurs de 1 à 240 spécifient des multiples de 5 secondes, générant des délais d'attente de 5 secondes à 20 minutes. Les valeurs de 241 à 251 spécifient de 1 à 11 unités de 30 minutes, avec des délais d'attente de 30 minutes à 5,5 heures. Une valeur de 252 signifie un délai d'attente de 21 minutes. Une valeur de 253 définit un délai d'expiration défini par le fournisseur compris entre 8 et 12 heures, et la valeur 254 est réservée. 255 est interprété comme 21 minutes plus 15 secondes. Notez que certains lecteurs plus anciens peuvent avoir des interprétations très différentes de ces valeurs.

Donc Sudo hdparm -I /dev/sdb | grep level affichera la valeur actuelle de spindown, par exemple:

Advanced power management level: 254

D'après le manuel: 254 est réservé, donc je suppose qu'il s'agira du réglage par défaut d'Ubuntu (quelqu'un peut-il confirmer/développer ceci s'il vous plaît?)

Exemple:

Sudo hdparm -S 25 /dev/sdb = spindown après 25 * 5 secondes.

Sudo hdparm -S 245 /dev/sdb = spindown after (245-240) * 30 minutes.

65
Rinzwind

Utilitaire de disque -> sélectionnez le disque dur -> cliquez sur l’icône "Plus d’actions ..." dans le coin supérieur droit -> Paramètres du lecteur ...

Le mien est comme ça: screenshot

46
Ray

Si vous êtes intéressé à faire le paramètre persistant de hdparm entre les redémarrages, au lieu de l'ajouter à la crontab, vous pouvez utiliser le /etc/hdparm.conf . J'ai le suivant, notez l'utilisation de majuscule S, pas de minuscule:

command_line {
    hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215 
}

Ajoutez cette ligne en remplaçant l'UUID par la vôtre, ou vous pouvez également spécifier le périphérique au format /dev/sdX. Vous pouvez trouver l'UUID de votre disque avec la commande Sudo blkid.

27
sergio.hs84

Après avoir passé des heures et des heures, j'ai découvert que mon lecteur WDC ne prend pas en charge la commande hdparm -S, quelle que soit la valeur de l'attribut idle3 (google: idle3ctl). Et c'est un problème commun avec les disques WD. Mais je suis heureux d’annoncer que hd-idle ( http://hd-idle.sourceforge.net/ ) fonctionne parfaitement. S'il est installé à partir du paquetage construit par dpkg (voir Notes d'installation), il crée un démon à la fois sur Ubuntu et Debian (la configuration se trouve dans/etc/default/hd-idle). Fonctionne bien après la reprise de l'hibernation.

 mc default # ps aux | grep hd-idle | grep -v grep | couper -c 66-; pour f dans [a-d]; faire hdparm -C/dev/sd $ f | grep -v "^ $"; done 
/usr/sbin/hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log
/dev/sda : l'état du lecteur 
 est: actif/inactif 
/dev/sdb: l'état du lecteur 
 est: en attente 
/dev/sdc: 
 est: standby 
/dev/sdd: 
 état du lecteur est: standby 
 
8
user306935
  1. Trouvez l'UUID de votre disque .

    Sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
    
  2. Éditer /etc/hdparm.conf

    Sudo -H gedit /etc/hdparm.conf  # Be careful from now on
    
  3. Recherchez spindown-time ou la section des paramètres de votre disque.

    /dev/disk/by-label/4TB {
        spindown_time = 1200
    }
    
  4. Je préfère faire référence au disque par un UUID qui reste le même pour différentes installations (à moins que vous ne le changiez dans le HW lui-même).

    /dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
        spindown_time = 1200
    }
    
  5. Si le script init pose des problèmes de démarrage, vous pouvez passer nohdparmsur la ligne de commande du noyau. Le script ne sera pas exécuté.

8
Ondra Žižka

J'ai découvert que le comportement spindown du Samsung HD204UI dépend du niveau APM (hdparm -B). Si le niveau APM est égal à 127, le délai d’apparition est de 10 s. Si le niveau APM est 150, le délai d'expiration est défini par l'option -S.

5
beroal

J'ajoute quelque chose comme:

@reboot Sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e  > /dev/null 2> /dev/null

root crontab. Il est préférable d'utiliser uuid car je pense que sdaname __/sdbetc. semble changer à chaque redémarrage.

5
vidar uslingsen

Dans Ubuntu 14.04

Disques> mettre en surbrillance le lecteur> cliquez sur l'engrenage dans le coin supérieur droit> Paramètres du lecteur> les paramètres de veille, APM, AAM et de cache d'écriture sont désormais disponibles dans une interface graphique conviviale!

3
user245219

Je n'ai pas eu de chance avec hdparm sur un disque dur externe monté dans un boîtier USB, que j'utilise pour servir les médias avec minidlna.

Je suis tombé sur une idée d’ici: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted

Les meilleurs résultats proviennent de l'utilisation de l'uuid du disque, que vous pouvez trouver avec:

Sudo blkid

La méthode suivante nécessite un accès root, mais hdparm aussi. Cela utilise crontab pour lire un bloc aléatoire du lecteur toutes les 5 minutes et ignore tous les messages. Pour vous assurer que vous avez le bon UUID, testez-le sur la ligne de commande comme ceci (assurez-vous d'utiliser votre UUID souhaité, pas celui-ci):

Sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM

Vous devriez voir la sortie comme ceci:

1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`

Pour supprimer ce message, qui pourrait éventuellement finir par être écrit quelque part, potentiellement le système de fichiers/(qui se trouve sur un disque SSD dans mon cas), voici ce que j'utilise dans la crontab racine. Vous y arrivez avec

Sudo crontab -e

Puis, sous les commentaires:

*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1

J'espère que cela aide quelqu'un d'autre avec des problèmes similaires. Malheureusement, ceci est toujours écrit dans le syslog, mais il existe potentiellement des moyens de le supprimer. voir cet article ServerFault .

[modifier] 2017-01-07 09:02:

J'ai pu supprimer ces messages en modifiant /etc/rsyslog.d/50-default.conf pour changer cette ligne:

*.*;auth,authpriv.none -/var/log/syslog

pour ça:

*.*;cron,auth,authpriv.none -/var/log/syslog

Malheureusement, cela supprime tous les messages cron; Je ne pouvais pas obtenir que cron redirige la journalisation à partir du système de fichiers racine (qui est sur un disque SSD vieillissant, donc je veux limiter les écritures), mais comme il ne s'agit que d'un serveur domestique, je ne manque probablement pas beaucoup. ne recommanderais certainement pas cette stratégie à une machine de production.

1
LawyerOnLinux

Sur Debian, avec les lecteurs WD, je trouve que le réglage d’un niveau quelconque avec hdparm -S a pour résultat que le lecteur renvoie un niveau 254 lors de la prochaine (hdparm -I. Donc, je ne suis vraiment pas sûr si elles sont en train de s'effondrer ou non. Je pense qu'ils sont encore en train de tourner.

Ces disques se trouvent sur un groupe de serveurs et je ne veux vraiment pas qu’ils disparaissent. Dans le passé, j’avais déjà fait cela en configurant un travail cron pour mettre à jour un fichier toutes les quelques minutes.

1
dwasifar