Abfrage ob Festplatte in standby?

Hallo zusammen,
habe derzeit mehrere Platten im Rechner. Jetzt hätte ich gerne gewusst, welche Platten gerade im Standby sind oder sich drehen. Bei der (Status-)Abfrage sollen die Platten natürlich nicht aus dem Schlaf geweckt werden :slight_smile:

Habe im Netz noch nichts gefunden. Hat jemand einen Tipp, wie ich das möglicherweise per PHP abfragen kann?

Danke.

Unter Linux gibt es ja hdparm um das abzufragen.
Es gibt einen WINdows Port darfür:
http://hdparm-win32.dyndns.org/hdparm/

hab’s grad ausprobiert auf meinem Server WHS 2011.
Funktioniert
mit hdparm -y /dev/hda lässt sich die Festplatte in den Standby schicken.
mit hdparm -C /dev/hda kann man den status abfragen.

Also für Dich:
HDParm installieren
mit Exec aus php aufrufen und ergebnis entsprechend auswerten.

Viele Erfolg

Hier mal kurz ein Script, kann man per Timer alle paar Minuten laufen lassen, oder man führt es manuell aus.
Festplattenstatus kann man optional in eine Variable schreiben.


 <?
/* Script Info:
  Dieses script prüft mittels hdparm für Windows den Zustand der Festplatten
  Anpassungen zb. um diese in den Standby zu schicken sind natürlcih auch
  möglich.
*/

 /* ++++++++++ CONFIG ++++++++++++++++++++++++*/
 $disks[] ="/dev/hda";
 $disks[] ="/dev/hdb";
 $disks[] ="/dev/hdc";
 $disks[] ="/dev/hdd";
 
 $command = "hdparm -C <disk>";
  // Please install hdparm for windows first!
 // http://hdparm-win32.dyndns.org/hdparm/
 
 // Create variables for diks status
 $c_diskvar = true; // false if not
  /* ++++++++++ END CONFIG ++++++++++++++++++++++++*/
  
  
 echo "Prüfe Laufwerksstatus:

";
 
 foreach ($disks as $disk){
   $e_cmd = str_replace("<disk>",$disk,$command);
   unset($output);
	exec($e_cmd,$output);
	if(strpos(implode($output, " "),"standby")>0){
	  $status = "Standby";
	  $status_b = false;
	} else {
		$status = "Aktiv";
	  $status_b = true;
	}
	echo "Laufwerk $disk Status: $status
";
	
	if ($c_diskvar){
		setValue(CreateVariableByName($_IPS['SELF'],$disk,0,"~Switch"),$status_b);
	}
 }

function CreateVariableByName($id, $name, $type, $profile = "")
{
	# type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}


?>

Hi Stele99,
super - Danke :slight_smile:
Kannte ich nicht und werde das direkt heute oder Morgen testen.

Muss ich mir mal in stiller Stunde ansehen, da ich nämlich Samsung HD204UI Platten verbaut habe…

Sollte doch trotzdem gehen -warum nicht mit dem Samsungs?

Vielleicht weil da ne Warnung auf der Seite ist :wink: :eek:

WARNING: Do not use hdparm with SAMSUNG HD204UI, see this page for details.

Gruß
Bruno

Korrekt stimmt

Hallo,

ich bin mir nicht sicher ob das bei mir Funktioniert, ich bekomme immer „Aktiv“.
von hda - hdz.
OS ist Windows 7 64bit.

Schöne Grüße
Thomas

Hallo,

probier mal eine Platte direkt in den Standby -y zu schicken.
oder auch einen Timeout zu setzen -S 241 (30min)

Ein Problem von windows bzw. derm Server ist, dass fast immer irgenwelche Disk-Activitiies laufen.
Vom Indexer, über die Rückmeldung and Microsoft über Benutzerzufriedenheit etc.
Einiges kann man deaktivieren - manuell.
Aber erstmal muss man rausfinden was so läuft: hier hilft das ProcMON Tool von Mircosoft.
Man kann hier filter setzen zb. D:\ E:\ etc.

VG

Hi,
nachdem ich nun die Daten gesichert und die neue Firmware der Samsung aufgespielt habe, habe ich getestet…
Leider sind bei mir die „schlafenden“ Platten nach der Abfrage des Status wieder angelaufen. Das wollte ich natürlich nicht. :confused:

Ist das ein Fehler meinerseits, eine Einstellungssache oder ist das so?

mhhh… gute frage. da bin ich jetzt auch was überfragt.
das hängt alles halt auch sehr stark vom fabrikat ab.

Ich weiss nicht, ob das eine Windows-Eigenart ist, aber normal sollten die nicht anlaufen, da ja die Abfrage an den Plattenkontroller geht und nicht an die „Mechanik“.

Unter Linux geht das problemlos:

root@SERVER:~# hdparm -C /dev/sdb

/dev/sdb:
drive state is: standby

Ändert man allerdings z.b. den Timer, so läuft die Platte auch an.