Aus aktuellem Anlass bin ich wohl auf eine wohl seit 2010 bekannte Weisheit gestoßen, die mir so bisher noch nicht aufgefallen war.
Ich habe ein paar WD Greens für meinen Fileserver gebraucht gekauft. Nach ein paar Wochen bin ich über einen Artikel zu Intellipark gestoßen und habe mich etwas eingelesen. Daher an dieser Stelle möchte ich ebenfalls darauf aufmerksam machen, dass diese Platten unter Linux wohl ein gravierendes Problem bereiten, besonders in meinem Szenario:
Statt WD Reds nutze ich WD Greens im Fileserver. Der Fileserver ist eine virtuelle Maschine, bekommt die Platten aber direkt durchgereicht. Die verwendeten Dateisysteme EXT4 bzw. BTRFS schreiben immer mal wieder kleine Informationen weg. D.h. die Platte sofern sie nicht schläft, wird diese Information ganz easy auf den Plattern runterschreiben. ABER, die WD Greens parken ihre Köpfe um Strom zu sparen, bereits nach 8 Sekunden weg. Kommt jetzt wieder ein Schreibzugriff, muss der Kopf wieder in Position gebracht werden. In Summe sind das dann zigtausend Vorgänge, die für den Verschleis an der Mechanik sorgen.
Gut nachsehen kann man das, wenn man die Smartwerte ausliest, und sich den Parameter „Load_Cycle_Count“ ansieht:
[root@somehost ~]# smartctl -A /dev/sdc | egrep "ID|Load|Power" ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 9 Power_On_Hours 0x0032 078 078 000 Old_age Always - 16635 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 47 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 18 193 Load_Cycle_Count 0x0032 151 151 000 Old_age Always - 147254
Mein persönlicher Extremfall:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 3 Spin_Up_Time 0x0027 182 175 021 Pre-fail Always - 7900 9 Power_On_Hours 0x0032 076 076 000 Old_age Always - 18114 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 57 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 24 193 Load_Cycle_Count 0x0032 133 133 000 Old_age Always - 202816
Zum Vergleich – hier die Werte einer nicht so abgenutzten Platte:
[root@somehost ~]# smartctl -A /dev/sdl | egrep "ID|Load|Power" ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 9 Power_On_Hours 0x0032 090 090 000 Old_age Always - 7385 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 260 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 94 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 776
Ich muss zugeben, bevor ich die entsprechenden Artikel dazu gelesen hatte, habe ich das auf die leichte Schulter genommen und dachte es wäre ein komischer RAW Wert, der nicht viel zu melden hat. Aber normal wären wohl nur ein paar tausend, nicht knapp 150.000 oder bei einer anderen Platte schon fast 203.000.
Idletime setzen mit Idle3-tools oder WDidle3
Idle3-tools:
Um die Sache zu beheben, braucht man unter Windows das Tool WDidle3 und unter Linux das Paket „idle3-tools“. Unter Arch ist das schon im Repository.
Idletime Auslesen: idle3ctl -g /dev/sdX
Beispielausgabe:
[root@somehost ~]# idle3ctl -g /dev/sdk Idle3 timer set to 255 (0xff)
Idletime setzen: idle3ctl -s 158 /dev/sdX
Dabei der Hinweis aus der Manpage:
-s<value>
set idle3 timer raw value. Value must be an integer between 1 and 255. The idle3 timer is set in 0.1s for the 1-128 range, and in 30s for
the 129-255 range.
Recht easy als kleine Formel:
Werte für X bis 128:
Warzeit in Sekunden = (0.1 * X)
Werte für X zwischen 129 bis 255:
Wartezeit in Sekunden = (X-128) * 30
D.h. also 128 -> wären 12,8 Sekunden
129 -> 30 Sekunden
130 -> 60 Sekunden
158 -> 900 Sekunden -> 15 Minuten
Beispielausgabe:
[root@somehost ~]# idle3ctl -s 250 /dev/sdk Idle3 timer set to 250 (0xfa) Please power cycle your drive off and on for the new setting to be taken into account. A reboot will not be enough!
Idletime deaktivieren: idle3ctl -d /dev/sdX
Das wird z.B. von Skully in seinem Blog empfohlen.
Beispielausgabe:
root@Virtking ~]# idle3ctl -d /dev/sdk Idle3 timer disabled Please power cycle your drive off and on for the new setting to be taken into account. A reboot will not be enough!
Unter Windows/Freedos: WDidle3
Da ich die Sache ja mit Linux erledigen konnte möchte ich hier auf den Eintrag bei Danny & Eliza verweisen. Unter http://www.dannyandeliza.com/V2/index.php/component/content/article/302-tivo-hd-upgrade kann man dazu einfach Step1 bis Step3a befolgen und hat das gleiche Ergebnis.
Etwas einfacher geht´s vielleicht mit der Ultimate Boot CD (http://www.ultimatebootcd.com), da ist das Tool gleich mit drauf . Ich bin darauf gestoßen, als ich mal einen Download von WDidle3.exe gesucht habe.
Fazit
Nach meiner Überlegung sollte es hier nicht nur beim Fileserver bleiben, sondern man sollte sich auch Gedanken machen, ob man die Platten nicht mal kurz aus einem NAS wie z.B. einer Synology oder Zyxel herausnimmt und den Timer einstellt, wenn man WD Green statt z.B. WD Red verbaut hat.
Wenn man bei Linux den Laptop Modus aktiviert, dann macht er die meisten Sachen im RAM, um die Festplatte möglichst lang schlafen zu lassen.
Wie man das genau macht hab ich vergessen. Mir war so als wäre das mit „sysctl“ und/oder „powertop“ zu bewerkstelligen.
(Bei „powertop“ ist übrigens der Parameter „–auto-tune“ recht interessant.)
Also ich habe wdidle3-tools aus den Debian Repos installiert, nur beim Aufruf von idle3ctl mit beliebigen Parametern kommt die Meldung idle3ctl:unknown command…Nie wieder WD Platten….