2 Stimmen

Wie montiere ich programmgesteuert ein raw iSCSI-Volume in Windows und mache es betriebsbereit?

Die API zum Erstellen eines neuen Volumes auf unserem SAN ist ziemlich einfach. Was ich bisher nicht herausfinden konnte, ist wie man den iSCSI-Initiator programmgesteuert damit verbindet, den Speicher initialisiert (im Sinne des Windows-Datenträgerverwaltungs-Managers) und ihn schließlich formatiert und als Laufwerksbuchstaben einbindet.

Derzeit verwende ich Win2k3, aber ein Umstieg auf Win2k8 ist eine Option, wenn dies die Implementierung vereinfachen würde.

2voto

Tom Punkte 1

Ich habe dies von Powershell aus mit diskpart und einem Skript gemacht.

Etwas wie:

$target    = ''    #Gewünschte Ziel-IQN
$partition = 1     #Gewünschte Partition
$drvLetter = ''    #Gewünschter Laufwerksbuchstabe

#Die Gerätenummer der Festplatte aus der iSCSI-Sitzungsklasse abrufen (diskpart benötigt diese)
$iscsiSsn = gwmi -namespace "root\wmi" -class MSiSCSIInitiator_SessionClass
$diskNum = ($($iscsiSsn | where { $_.targetname -eq $target}).devices).deviceNumber

#Das diskpart-Skript on-the-fly erstellen und das Dienstprogramm aufrufen
$dskPrtScr = "$($env:temp)\diskpart.scr"
"sel disk $diskNum`nsel par 1`nassign letter=$drvLetter`nexit" | out-file $dskPrtScr -encoding ascii
diskpart /s $dskPrtScr

2voto

anelson Punkte 2549

Ich musste die Festplatteninitialisierung, Partitionierung und Formatierung für eines der Produkte meines Unternehmens implementieren. Den Code kann ich nicht teilen, aber ich kann Ihnen in die richtige Richtung zeigen.

Die von Ihnen benötigte API heißt VDS - Virtual Disk Service. Es handelt sich um eine COM-API, die ich erfolgreich aus C++ (mit ATL) und C# (COM Interop) verwendet habe.

Leider ist die Dokumentation ziemlich lückenhaft; man muss sich einfach in das Objektmodell vertiefen, etwas Code schreiben und sich allmählich damit vertraut machen.

Windows Server 2008 wird mit einem nicht dokumentierten, aber ziemlich brauchbaren C#-Wrapper für VDS ausgeliefert. Suchen Sie nach einer DLL namens Microsoft.Storage.Vds.dll. Mit Reflector können Sie deren verschiedene Klassen und Methoden entdecken. Ich habe davon erfahren, als ich diesen Blog-Beitrag gelesen habe, in dem der Autor versucht, eine Festplatte über PowerShell mithilfe der genannten DLL zu initialisieren.

Der VDS enthält APIs, die von SAN-Anbietern implementiert werden könnten, um eine LUN bereitzustellen und andere SAN-Vorgänge durchzuführen; ich empfehle Ihnen, diese zu vermeiden und sich auf den grundlegenden Softwareanbieter zu konzentrieren, der grundlegende (im Gegensatz zu dynamischen) Partitionen auf entweder einer MBR- oder GPT-Festplatte erstellen wird. Beachten Sie, dass der erwähnte Microsoft-Wrapper etwas wenig Unterstützung für GPT bietet; ich musste ihn ein wenig anpassen, um GPT-Festplatten zum Laufen zu bringen.

Der VDS ist eine komplexe und zickige API, aber wenn Sie nur eine Festplatte initialisieren, eine Partition erstellen, sie formatieren und einem Laufwerksbuchstaben zuweisen möchten, haben Sie das meiste, was Sie brauchen, da und recht einfach zu erledigen. Viel Glück.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X