B
beko
Guest
Moin,
wer sich einmal damit heurm geärgert hat wird wissen wovon ich rede. Ein interessantes Thema für Serversysteme und Laptops. Beide können von der Fähigkeit Platten auf Idle zu setzen profitieren. Hierbei wird Strom und vor allem Lebenszeit gespart.
Schnell wird man heraus bekommen dass "hdparm" die Festplatte in den Standby zu versetzen vermag. Wir probieren das ganze einmal aus:
Dieser unsinnige Wert 1, entspricht etwa 6 Sekunden, schaltet tatsächlich die Platte hda ab. Doch was ist das, die fährt sofort wieder hoch? Und nach 6 Sekunden wieder runter und sofort wieder hoch? Wir fürchten um das Leben unserer Platte.
Der Haken: Kaum ist die Platte im Standby greift demonstrativ entweder der syslog daemon, cron oder der kjournald auf die Platte zu. Das Abschalten der Systemplatte scheint unmöglich zu sein.
Als erstes verabschieden wir uns also von syslog. Natürlich können wir ohne auch nicht leben und so installieren wir uns eine Alternative. Ich entschied mich an dieser Stelle für metalog ( Hier gibts ein schickes Howto sogar auf Deutsch mit Beispielscript für /etc/init.d).
Metalog loggt alles fleissig in die RAM und speichert erst nach einer gewissen Zeitspanne usw. Natürlich gehen uns hierbei Echtzeitlogs auf der Festplatte verloren. Stürzt das System ab können die letzten Minuten im Log fehlen. Einen Tod muss man aber sterben, und zur Analyse kann man den Logger auch wieder auf Echtzeit umstellen.
So, wir haben also einen neuen syslogger, welcher die Platte nicht mehr im Sekundentakt belästigt. Kümmern wir uns um die Cron-Jobs. Entweder schalten wir Cron radikal ab, oder ändern alle Cronkjobs so ab, dass Intervalle nur noch stündlich aufgerufen werden oder gar Scripte nur noch zu bestimmten Uhrzeiten. So kann unsere Platte im Extremfall so ca. mindestens 50 Minuten ungestört schlafen.
Als letztes bleibt da der kjournald. Ich weiß nicht wie das unter reiserfs und Co läuft, aber wer ein ext3 besitzt dürfte das kennen. Per default wird alle 5 Sekunden geschaut ob sich auf der Platte etwas geändert hat. Diese "commit time" wird beim Booten des Systems ausgegeben. Ihr könnt sie in /var/log/boot.msg nachlesen. Ich kopiere hier einfach mal eine Erklärung von Jörg aus der BoLUG:
Hat alles geklappt probieren wir unser Spiel von vorhin mit hdparm noch einmal. Legt sich die Platte sauber schlafen haben wir unser Ziel erreicht. Sollte sie immer noch sofort wieder anspringen checkt mal was ihr noch so an Programmen laufen habt. Es ist z.b. ratsam den mp3-player an dieser Stelle auch mal zu deaktivieren
Musik könnt ihr auch nachher noch hören 
Hat alles geklappt fügen wir unser hdparm Kommando mit einem sinnvollen Zeitwert in ein Startscript ein, z.b. /etc/init.d/boot.local
Das Script sollte natürlich im default runlevel aufgerufen werden. Wir rufen es manuell auf um zu sehen ob alles funktioniert.
Hat alles geklappt legen sich unsere Platten artig schlafen und verbrennen nicht unnötige Lebenszeit wenn niemand sie unbedingt benötigt. Alles klar?
wer sich einmal damit heurm geärgert hat wird wissen wovon ich rede. Ein interessantes Thema für Serversysteme und Laptops. Beide können von der Fähigkeit Platten auf Idle zu setzen profitieren. Hierbei wird Strom und vor allem Lebenszeit gespart.
Schnell wird man heraus bekommen dass "hdparm" die Festplatte in den Standby zu versetzen vermag. Wir probieren das ganze einmal aus:
Code:
hdparm -S 1 /dev/hda
Der Haken: Kaum ist die Platte im Standby greift demonstrativ entweder der syslog daemon, cron oder der kjournald auf die Platte zu. Das Abschalten der Systemplatte scheint unmöglich zu sein.
Als erstes verabschieden wir uns also von syslog. Natürlich können wir ohne auch nicht leben und so installieren wir uns eine Alternative. Ich entschied mich an dieser Stelle für metalog ( Hier gibts ein schickes Howto sogar auf Deutsch mit Beispielscript für /etc/init.d).
Metalog loggt alles fleissig in die RAM und speichert erst nach einer gewissen Zeitspanne usw. Natürlich gehen uns hierbei Echtzeitlogs auf der Festplatte verloren. Stürzt das System ab können die letzten Minuten im Log fehlen. Einen Tod muss man aber sterben, und zur Analyse kann man den Logger auch wieder auf Echtzeit umstellen.
So, wir haben also einen neuen syslogger, welcher die Platte nicht mehr im Sekundentakt belästigt. Kümmern wir uns um die Cron-Jobs. Entweder schalten wir Cron radikal ab, oder ändern alle Cronkjobs so ab, dass Intervalle nur noch stündlich aufgerufen werden oder gar Scripte nur noch zu bestimmten Uhrzeiten. So kann unsere Platte im Extremfall so ca. mindestens 50 Minuten ungestört schlafen.
Als letztes bleibt da der kjournald. Ich weiß nicht wie das unter reiserfs und Co läuft, aber wer ein ext3 besitzt dürfte das kennen. Per default wird alle 5 Sekunden geschaut ob sich auf der Platte etwas geändert hat. Diese "commit time" wird beim Booten des Systems ausgegeben. Ihr könnt sie in /var/log/boot.msg nachlesen. Ich kopiere hier einfach mal eine Erklärung von Jörg aus der BoLUG:
Wir übernehmen diese vorgeschlagenen Werte in unsere eigene fstab für ext3 formatierte Partitionen und booten die Maschine komplett neu. Die beim Bootvorgang angegebene commit-time sollte sich nun verändert haben.Nur alle 5 Sekunden wird geschaut, ob sich ein
Dateizugriff abgespielt hat. Wenn ja ändert sich die atime (access time),
diese wird dann im Journal aus Sicherheitsgründen alle 5 Sekunden mitgezogen.
Auf *jeden Fall*, auch wenn sich nichts geändert hat, sendet der
Kernel-Daemon kjournald ein flush, ähnlich wie die Eingabe von 'sync' dies
tut. Dies führt zu einem Superblockzugriff.
Den Commit-Wert kann man durch einen Kernel-Patch ändern oder durch Einsatz
des Kernel 2.4.20
http://www.ussg.iu.edu/hypermail/linux/kernel/0208.1/0464.html
Z.B. für eine Stunde
mount -t ext3 -o commit=3600,noatime /dev/hda1 /mnt/whatever
Hat alles geklappt probieren wir unser Spiel von vorhin mit hdparm noch einmal. Legt sich die Platte sauber schlafen haben wir unser Ziel erreicht. Sollte sie immer noch sofort wieder anspringen checkt mal was ihr noch so an Programmen laufen habt. Es ist z.b. ratsam den mp3-player an dieser Stelle auch mal zu deaktivieren
Hat alles geklappt fügen wir unser hdparm Kommando mit einem sinnvollen Zeitwert in ein Startscript ein, z.b. /etc/init.d/boot.local
Code:
#tell our hdd to sleep aber 5 minutes of inactivity
/sbin/hdparm -S 60 /dev/hda
/sbin/hdparm -S 60 /dev/hdb
#add more hdds here...
Hat alles geklappt legen sich unsere Platten artig schlafen und verbrennen nicht unnötige Lebenszeit wenn niemand sie unbedingt benötigt. Alles klar?