Outils pour utilisateurs

Outils du site


raspberry:dd_externe (lu 909 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
raspberry:dd_externe [19-05-2013 12:00]
edmc73 créée
raspberry:dd_externe [01-10-2017 23:46] (Version actuelle)
edmc73
Ligne 1: Ligne 1:
-====== Gestion disque dur externe ======+====== hdparm - Gestion disque dur ======
  
 ===== Mise en veille avec hdparm ===== ===== Mise en veille avec hdparm =====
Ligne 33: Ligne 33:
 root@edmchome:/media# root@edmchome:/media#
 </code> </code>
 +
 +Programmer une veille pour dans 20min
 +  hdparm -S 240 /dev/sda
 +240 car la valeur est un multiple de 5 sec
 +
 +Pour que tous ces paramètres soient actifs au redémarrage de la machine, il faut écrire dans le fichier de config **/etc/hdparm.conf**
 +
 +>Plus d'info sur http://doc.ubuntu-fr.org/hdparm
 +>Man en français http://www.delafond.org/traducmanfr/man/man8/hdparm.8.html
 +
 +
 +===== Configuration =====
 +
 +Ouvrez le fichier de config et rajoutez les lignes suivantes pour automatiser cette tâche au démarrage de la machine
 +  vi /etc/hdparm.conf
 +  
 +  /dev/sda {
 +    spindown_time = 120
 +  }
 +
 +  service hdparm restart
 +  
 +===== Utiliser l'ID du disque dur =====
 +
 +Si vous voulez être certain qu'au redémarrage de la machine cette config s'applique au bon disque dur, utilisé l'id plutôt que le chemin standard.
 +
 +Tapez la commande
 +  ls -l /dev/disk/by-id/
 +  total 0
 +  lrwxrwxrwx 1 root root  9 janv.  1  1970 ata-ST3120022A_3JT2JDW8 -> ../../sda
 +  lrwxrwxrwx 1 root root 10 janv.  1  1970 ata-ST3120022A_3JT2JDW8-part1 -> ../../sda1
 +  lrwxrwxrwx 1 root root 13 janv.  1  1970 memstick-SD02G_0xa9baae34 -> ../../mmcblk0
 +  lrwxrwxrwx 1 root root 15 janv.  1  1970 memstick-SD02G_0xa9baae34-part1 -> ../../mmcblk0p1
 +  lrwxrwxrwx 1 root root 15 juin  20 07:17 memstick-SD02G_0xa9baae34-part2 -> ../../mmcblk0p2
 +  lrwxrwxrwx 1 root root  9 janv.  1  1970 scsi-SST3120022A_J32TDJ8W -> ../../sda
 +  lrwxrwxrwx 1 root root 10 janv.  1  1970 scsi-SST3120022A_J32TDJ8W-part1 -> ../../sda1
 +
 +Dans mon cas, je remplacerai
 +  /dev/sda
 +par
 +  /dev/disk/by-id/ata-ST3120022A_3JT2JDW8
 +  
 +===== Particularité =====
 +
 +J'ai pu remarquer que sur certain disque, la commande de mise en veille fonctionne mais la commande de timeout ne fonctionne pas. Il y a aurai apparemment un timeout minimum sur certain disque.
 +
 +  * 10min pour les disques de 1To **hdparm -S 60 /dev/...**
 +  * 20min pour les disques de 2To **hdparm -S 120 /dev/...**
 +
 +===== Si ça ne marche pas =====
 +
 +Dans mon cas, le disque se met bien en veille lorsque je lance la commande de mise en veille mais rien ne se passe avec la commande de timeout.
 +
 +J'ai donc créé un petit script qui détecte l'activité du disque et lance la commande à notre place au bout d'un temps défini.
 +
 +Repérez votre le nom de votre disque
 +<code>
 +[root]# blkid 
 +/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="C522-EA52" TYPE="vfat" 
 +/dev/mmcblk0p2: UUID="62ba9ec9-47d9-4421-aaee-71dd6c0f3707" TYPE="ext4" 
 +/dev/sda1: UUID="489f7c23-38e0-442f-abaa-10c569e48b0d" UUID_SUB="51e04e91-847f-4158-aeaf-4b9d3ab057b6" TYPE="btrfs" 
 +[root]# ls -l /dev/disk/by-uuid
 +total 0
 +lrwxrwxrwx 1 root root  9 oct.   1 17:05 336ec491-71d3-4a7b-8a1c-9f3ec44a9ef7 -> ../../sda
 +lrwxrwxrwx 1 root root 10 oct.   1 17:05 489f7c23-38e0-442f-abaa-10c569e48b0d -> ../../sda1
 +lrwxrwxrwx 1 root root 15 oct.   1 17:04 62ba9ec9-47d9-4421-aaee-71dd6c0f3707 -> ../../mmcblk0p2
 +lrwxrwxrwx 1 root root 15 janv.  1  1970 C522-EA52 -> ../../mmcblk0p1
 +
 +[root@edmchome:~]# readlink -f /dev/disk/by-uuid/489f7c23-38e0-442f-abaa-10c569e48b0d 
 +/dev/sda1
 +
 +</code>
 +
 +Maintenant que vous avez trouvé votre uuid, vous pouvez renseigner le script suivant.
 +
 +<file bash sd-standby>
 +#!/bin/bash
 +
 +##############################################################################
 +# sd-standby
 +# permet de mettre en standby un disque dur après une durée défini en seconde
 +# fait par edmc73 le 23-09-2014
 +##############################################################################
 +
 +# définissez le device (hda, hdb, sda, sda1, sdb...)
 +DEV=`readlink -f /dev/disk/by-uuid/89f7c23-38e0-442f-abaa-10c569e48b0d |  cut -d/ -f3`
 +
 +# définissez le temps en seconde après lequel le disque doit se mettre en standby
 +TIMEOUT=600
 +
 +##############################################################################
 +# Main
 +STATS=`cat /proc/diskstats | grep " $DEV "`
 +
 +# Boucle
 +while true; do
 +        sleep $TIMEOUT
 +        NEWSTATS=`cat /proc/diskstats | grep " $DEV "`
 +
 +        if [[ $STATS == $NEWSTATS ]]
 +        then
 +                #Aucune activité
 +                hdparm -y /dev/$DEV
 +        else
 +                #Activité sur le disque
 +                STATS=$NEWSTATS
 +        fi
 +done
 +</file>
 +
 +Copiez ce fichier, ajoutez les permissions d'exécution
 +  chmod +x hd-standby
 +
 +Pensez à ajuster les 2 premières variables 
 +>DEV : le disque à traiter sda, sdb, hda, hdb etc..
 +>TIMEOUT : le temps en seconde avant déclenchement de la mise en veille
 +
 +Lancez le script en tache de fond
 +  ./hd-standby &
 +  
 +__Amélioration prévu__
 +  * Lancer le script comme un service
 +  * Pouvoir renseigner un disk via son id
raspberry/dd_externe.1368957642.txt.gz · Dernière modification: 19-05-2013 12:00 de edmc73