Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

09.10.2013, 00:11

fesplatten spindwon in einem zfs mirror pool

hi,

ich versuche gerade verzweifelt meine 2 festplatten, welche ich zu einem zfs mirror pool zusammengeschlossen habe, mittels hdparm -S 60 in den standby mode zu versetzen.
dies klappt leider nicht, obwohl kein datenzugriff auf die platten stattfindet. setze ich die platten mittels hdparm -C manuell in den standby modus, dann bleiben sie auch in diesem.
die atime=off option habe ich bei meinem zfs pool schon angewendet.
die platten sind in meinem fernsehrechner verbaut und werden höchstens 1 mal am tag zur datensicherung benutzt und ab und zu wird mittels samba auf die platten zugegriffen.
ich habe auch mal samba deaktiviert.
ein lsof /dev/sdx bringt auch keine aufschluss.
die platten werden ausschlließlich von samba und ssh zugriffen genutzt.
find / -mtime -1 brignt auch keine erleuchtung.
Ich bin ja kurz davor die platten mittels cronjob in den standby zu versetzen. ist natürlich blöd wenn dabei gerade auf die Daten zugriffen wird....
meine hardware baut auf einer normalen haswell cpu und board auf.
genutzt wird natürlich gentoo :)

2

09.10.2013, 21:46

Da habe ich was für Dich ;)
Ich habe das selbe Problem mit USB-Festplatten, da dort hdparm nicht zieht. Für sdparm gibt es jedoch keinen "Timer". Also schrieb ich mir ein Skript der die Festplatten-Aktivität überwacht und die Festplatte schlafen legt.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
$ cat /scripts/sdparm-idle 
#!/bin/sh

if [ -z "$1" ]; then
 echo "DISK angeben"
 exit 0
fi
disk="$1"
interval=300
step=30
#debug=yes

l_debug(){
if [ "$debug" = "yes" ]; then
   logger "sdparm-idle debug: $@"
fi

}

state=`cat /sys/block/$(basename $disk)/stat`
count=$interval
up=1

while [ true ]; do
   sleep $step
   newstate=`cat /sys/block/$(basename $disk)/stat`

   l_debug count $count / up $up / state $state / $newstate
   if [ "$state" = "$newstate" ]; then
      if [ $count -gt 0 ]; then
         count=$(($count-$step))
      else
         count=$interval
         if [ $up = 1 ]; then
            logger "sdparm-idle: Festplatte wird angehalten"
            sync
            state="$newstate"
            sdparm --command=stop $disk
            up=0
         fi
      fi
   else
      logger "sdparm-idle: Festplatte ist aktiv, warte $interval Sekunden"
      count=$interval
      state="$newstate"
      up=1
   fi
done &
Das Skript prüft alle 30 Sekunden ob es eine Aktivität gab. Wenn nach 300 sekunden immer noch nichts passierte, wird die Platte schlafen gelegt.

Das Skript wird beim Hochfahren gestartet:

Quellcode

1
2
3
4
$ cat /etc/local.d/20-sdparm-idle.start 
nohup /scripts/sdparm-idle /dev/sdb  &>/dev/null &
nohup /scripts/sdparm-idle /dev/sdc  &>/dev/null &
sleep 2
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

3

13.10.2013, 14:32

danke,
funktioniert genauso wie ich es will.