Outils pour utilisateurs

Outils du site


raspberry:dd_externe (lu 912 fois)

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
raspberry:dd_externe [23-05-2013 23:19]
edmc73
raspberry:dd_externe [01-10-2017 23:46] (Version actuelle)
edmc73
Ligne 40: Ligne 40:
 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** 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+>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.1369343975.txt.gz · Dernière modification: 23-05-2013 23:19 de edmc73