schaki84
Goto Top

Ermitteln von SAN Speicher in Windows

Hallo,

ich habe mich eben neu im Forum angemeldet und freue mich auf eine gute Zusammenarbeit.


Folgendes Problem lässt mir keine Ruhe mehr. Ich soll via Skript SAN Speicher (von IBM) auf Windows Servern ermitteln. Ausgabe soll in etwa so aussehen:

"Laufwerk f: san Speicher"
"Laufwerk g: kein san Speicher"

Zusätzlich soll bei Sanspeicher noch die Größe und der noch verfügbare Speicher angezeigt werden.


Wollte dies zuerst mit VBScript und WMI lösen. Hier ein Auszug aus meinen Skript:

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk", "WQL")
For Each objItem In colItems
If objitem.DriveType=5 then
else
file.Write (hostname & ";" & timestamp & ";")
file.Write (objItem.Name & ";")
file.Write (Int(objItem.Size/1024^2) & ";")
file.Write (Int(objItem.FreeSpace/1024^2) & ";")

Set colItems2 = objWMIService.ExecQuery("SELECT * FROM Win32_SCSIControllerDevice", "WQL")
For Each objItem2 In colItems2
objitem2.dependent = sanstring
If instr(sanstring) = "1742" OR "1815" OR "2105" OR "2107" OR "4700" then
file.write (sanstring) &vbcrlf

end if
Next
end if
next


Kurze Erklärung:

Am Anfang scannt er jeden Laufwerksbuchstaben und sieht nach ob es eine Festplatte ist.
Danach gibt er den Laufwerksbuchstaben, größe und freien Speicher aus.
Danach sollte er eigentlich genau von diesem Laufwerksbuchstaben die "dependent" vom SCSI controller ausgeben. Somit wollte ich dann in dem String nachsehen, ob einer der oben aufgeführten Zahlen im String sind, da es bei uns ein Teil der SAN-Bezeichnung ist (IBM SAN). Nur leider gibt er so unter jeden Laufwerksbuchstaben jeden SCSI Controller aus.

Jemand eine Idee? Oder gibt es einfachere Wege SAN-Speicher auszulesen?


Ich hoffe ihr konntet mir folgen ;)


MfG
Marcel

Content-Key: 111661

Url: https://administrator.de/contentid/111661

Printed on: April 26, 2024 at 01:04 o'clock

Member: AndreasHoster
AndreasHoster Mar 17, 2009 at 17:04:10 (UTC)
Goto Top
Ich würde auf WIN32_DiskDrive gehen, um das zu ermitteln.
Unter der Property Model melden sich bei uns die NetApp Luns mit "NETAPP LUN Multi-Path Disk Device", da müsste man halt bei Dir schauen wie sich die IBM da meldet.
Unter dem Property Name kommt \\.\PHYSICALDRIVEx was man über Win32_DiskDrivetoDiskPartition und Win32_LogicalDisktoPartition einem Laufwerksbuchstaben zuordnen kann.
Member: schaki84
schaki84 Mar 18, 2009 at 07:29:18 (UTC)
Goto Top
Hallo,

werde ich gleich mal heute vormittag probieren, danke


EDIT 10:01: Scheint zu funktionieren, werde nun mein Skript danach anpassen, danke für die schnelle Hilfe!
Member: schaki84
schaki84 Jun 04, 2009 at 14:43:16 (UTC)
Goto Top
Hallo,

es ist zwar schon einiges her, aber ich konnte leider an dem Skript nicht weiter arbeiten. Leider funktioniert das doch nicht auf den beschriebenen Weg.


Es hinkt momentan bei mir an folgendes:

Ob es SAN ist oder nicht, bekomme ich aus folgendem: Win32_SCSIControllerDevice -> obj.dependent.

Nur leider kann ich keine Verbindung zu den normalen Laufwerken finden und somit nicht den Speicher ermitteln.

Weiß einer eine Lösung?
Member: AndreasHoster
AndreasHoster Jun 04, 2009 at 15:54:36 (UTC)
Goto Top
Von der Seite wirds aufwendig, geht aber auch.
Aus dem Win32_SCSIControllerDevice bekommt man die PNPDeviceID (bei mir muß ich die MPIO Version nehmen, da sich die Fail Over Software noch einklinkt):
Bsp: MPIO\\DISK&VEN_NETAPP&PROD_LUN&REV_0.2_\\1&7F6AC24&0&486E5761676F47734A4D6A59
Die findet sich unter Win32_DiskDrive wieder. Wenn ich das Objekt habe, bekomme ich über das Attribut Name folgendes: \\.\PHYSICALDRIVE8
Das findet sich wieder unter Win32_DiskDriveToPartition unter Antecedent. Unter Dependent findet sich dann: Disk #8, Partition
Dieses finde ich wieder unter Win32_LogicalDiskToPartition als Antecedent und unter Dependent finde ich meinen Laufwerksbuchstaben: Dependent: \\WN07\root\cimv2:Win32_LogicalDisk.DeviceID="H:"

Das zu Codieren habe ich jetzt aber gerade keine Lust, aber mit genügend Abfragen sollte man da durchkommen.
Member: schaki84
schaki84 Jun 04, 2009 at 18:15:40 (UTC)
Goto Top
klingt super,

ich werde das gleich Morgen in der Firma testen und werde dann Rückmeldung geben.

Schonmal danke im voraus
Member: schaki84
schaki84 Jun 05, 2009 at 06:51:01 (UTC)
Goto Top
Hallo,

habe das mal im San nachvollzogen, müsste so funktionieren face-smile

Danke dir, werde das mal anfangen zu coden.
Member: schaki84
schaki84 Jun 08, 2009 at 11:30:41 (UTC)
Goto Top
hallo,

ich habe alles soweit programmiert und bin auf folgenden Fehler gestoßen:


Win32_SCSIControllerDevice:
Antecedent \\SAS02020\root\cimv2:Win32_SCSIController.DeviceID="PCI\\VEN_1077&DEV_2422&SUBSYS_01331077&REV_02\\5&90902E2&0&080220"
Dependent \\SAS02020\root\cimv2:Win32_PnPEntity.DeviceID="SCSI\\DISK&VEN_IBM&PROD_1742-900&REV_0520\\6&18A032B8&0&000000"

Win32_DiskDrive:
PNPDeviceID SCSI\DISK&MPP_VIRTUAL_DISK\1&38579E46&0&0
PNPDeviceID SCSI\DISK&VEN_LSILOGIC&PROD_1030_IM&REV_1000\6&366BC513&0&000



Wie kann ich diese beiden Klassen verbinden, oder eine Beziehung zwischen den beiden herstellen?