Présentation
Par défaut le moteur du disque dur connecté au Slug tourne constamment.
Afin d’économiser le disque, il est possible de le mettre en veille.
Dans ce cas, le disque s’arrête et redémarrera au prochain accès disque.
Méthode
La première chose à faire est de modifier la méthode de montage des partitions et d’ajouter l’option noatime.
Extrait d’un fichier /etc/fstab
/dev/sda1 / ext3 defaults,noatime 0 1
/dev/sda4 /1data ext3 defaults,noatime 0 2
Explication de ce paramètre noatime
Sur les systèmes de fichiers journalisés (ext3, reiserfs), il existe un attribut sur le fichier qui correspond au dernier accès en lecture.
L’option noatime désactive la mise à jour de cet attribut pour un simple accès en lecture à un fichier.
L’outil qui permet de mettre le disque en veille est sdparm : http://sg.torque.net/sg/sdparm.html
Compiler la dernière version disponible : ./configure, make, make install
Pour DebianSlug, installer le paquet
apt-get install sdparm
- Commande pour mettre le disque en veille :
sdparm –command=stop /dev/sda
Malheureusement, on peut s’apercevoir que cette mise en veille n’est que temporaire.
Le disque redémarre dès qu’un processus accède au disque.
Il va donc falloir partir à la chasse au processus.
Les premiers démons à désactiver au démarrage du slug sont :
update-rc.d -f sysklogd remove
update-rc.d -f klogd remove
update-rc.d -f courier-authdaemon remove
update-rc.d -f courier-mta remove
update-rc.d -f exim4 remove
update-rc.d -f cron remove
ATTENTION : Les mises à jour (via apt-get update) peuvent restaurer le démarrage automatique de ces démons.
Si le spinup intempestif persiste :
- Activer le mode debug du noyau sur les accès disque :
echo 1 > /proc/sys/vm/block_dump
- Le log du noyau est accessible par la commande
dmesg
Ou en mode dynamique :
cat /proc/kmsg
Il nous faut donc maintenant mettre en veille le disque
sdparm --command=stop /dev/sda
Et attendre que le disque se réveille…
Et là, la commande dmesg trahira le processus fautif :
atop(720): dirtied inode 468512 (atop.log) on sda1 : le processus atop a accédé au disque
Le démon cron exécute régulièrement certaines tâches de maintenance, notamment sur les logs.
On doit pouvoir supprimer certains scripts dans les répertoires /etc/cron.*.
Certaines tâches sont lancées une fois par heure (/etc/cron.hourly). On doit pouvoir ne les lancer qu’une fois par semaine en déplaçant les scripts dans /etc/cron/weekly.
Sur mon slug, j’ai supprimé les scripts suivants :
/etc/cron.monthly/standard
/etc/cron.daily/apt
/etc/cron.daily/aptitude
/etc/cron.daily/bsdmainutils
/etc/cron.daily/find
/etc/cron.daily/sysklogd
/etc/cron.daily/logrotate déplacé vers /etc/cron.weekly
/etc/cron.daily/man-db déplacé vers /etc/cron.weekly
/etc/cron.daily/netkit-inetd.dpkg-new déplacé vers /etc/cron.weekly
/etc/cron.daily/standard déplacé vers /etc/cron.weekly
Je ne m’y connais pas, j’ai peut être fait des erreurs. On peut peut être faire encore plus de ménage.
Il reste ensuite à mettre en oeuvre un script surveillant les accès disque et activant le spindown en cas d’inactivité du disque.
Exemple de script :
while true
do
MyDiskStatsNow=`cat /proc/diskstats | grep "sda "`
MyDiskStatsPrev="MyDiskStatsNow"
echo "diskstats : $MyDiskStatsNow"
while [ "$MyDiskStatsNow" != "$MyDiskStatsPrev" ]
do
echo "Activite disque detectee : $MyDiskStatsNow "
MyDiskStatsPrev=$MyDiskStatsNow
sleep 60
MyDiskStatsNow=`cat /proc/diskstats | grep "sda "`
done
echo "Pas d activite detectee! - Spindown actif "
/usr/local/bin/sdparm --command=stop /dev/sda
MyDiskStatsPrev=$MyDiskStatsNow
while [ "$MyDiskStatsNow" == "$MyDiskStatsPrev" ]
do
sleep 60
MyDiskStatsNow=`cat /proc/diskstats | grep "sda "`
done
echo "Prev : $MyDiskStatsPrev"
echo "Now : $MyDiskStatsNow"
echo "Activite disque detectee"
done
Disques pour lesquels cette procédure à été testée
Lacie Porsche USB 2.0 200Go (Western Digital inside)
Tuning
Pour optimiser le spindown, il faut limiter l’accès disque de certains process.
OpenVPN
Editer le fichier /etc/init.d/openvpn
Remplacer la ligne
STATUSREFRESH=10
par
STATUSREFRESH=0
Références
http://linuxfr.org/forums/10/16819.html
http://www.xs4all.nl/~bsamwel/laptop_mode/tools/faq.html
http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks
http://www.faqs.org/docs/securing/chap6sec73.html
http://jfontain.free.fr/diskstats/diskstats.htm
Je suis toujours à la recherche de la source de cet article.
Si vous êtes l’auteur de cet article n’hésitez pas à vous manifester.
Follow Me!