Ich benutze seit Jahren dieses Script auf einem System mit 6 Platten ohne Probleme (eine SSD, eine Einzelplatte für Aufnahmen, vier Datengräber im RAID5). Über CRON regelmäßig angestossen (bei mir 15 min). hdparm.conf spindown_time funktioniert je nach Plattentyp anders, das ist mir zu unzuverlässig. Original mit kompletter Diskussion: http://zackreed.me/articles/85…hard-disks-without-hdparm.
Code
#! /bin/bash
# Check for idle disks and spin them down unless smartd is running tests
LC_MESSAGES=C
# Create a file on the ramdisk and cycle it to test for disk activity
( 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
# Loop through all array disks and spin down idle disks. Disks can also be written as {b..k}
for disk in {a..z}
do
# Check if drive exists and is a spinning disk
if [ -e /dev/sd$disk ] && [ $(cat /sys/block/sd$disk/queue/rotational) -eq 1 ]; then
# Check if drive is currently spinning
if [ "$(/sbin/hdparm -C /dev/sd$disk | grep state)" = " drive state is: active/idle" ]; then
# Check if smartctl is currently running a self test
if [ $(/usr/sbin/smartctl -a /dev/sd$disk | grep -c "Self-test routine in progress") -eq 0 ]; then
# Check if drive has been non idle since last run
sleep 1; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep sd$disk )" = "" ]; then echo $(date) $(/sbin/hdparm -y /dev/sd$disk 2>&1); fi
fi
fi
fi
done
Alles anzeigen