Wie befestige ich programmatisch ein rohes iscsı Volumen in den Fenstern, und es bereit zu bedienen?

StackOverflow https://stackoverflow.com/questions/1053763

  •  20-08-2019
  •  | 
  •  

Frage

Die API ein neues Volume auf unserem SAN für die Erstellung von ziemlich geradlinig ist. Was ich nicht in der Lage gewesen, um herauszufinden, ist, wie man programmatisch den iSCSI-Initiator mit ihm zu verbinden, initialisieren den Raum (in dem Disk-Manager Sinne Fenster) und es schließlich zu formatieren und montieren ein Laufwerksbuchstabe ist.

Ich verwende derzeit win2k3 jedoch zu win2k8 bewegend ist eine Option, wenn es diese Implementierung vereinfachen würde.

War es hilfreich?

Lösung

Ich hatte Disk Initialisierung, Partitionierung und Formatierung für eine meiner Produkte des Unternehmens zu implementieren. Ich kann nicht den Code teilen, aber ich kann Ihnen in die richtige Richtung zeigen.

Die API Sie wollen, ist VDS genannt - Virtual Disk Service . Es ist ein COM-API, aber ich habe es erfolgreich von C ++ (mit ATL) verwendet und C # (COM-Interop).

Leider in der Dokumentation ganz fehlt; Sie nur sich selbst in das Objektmodell tauchen müssen, einige Code schreiben, und man allmählich ein Gefühl dafür bekommen.

Windows Server 2008 Schiffe mit einer undokumentierten aber durchaus brauchbar C # Wrapper um VDS. Suchen Sie nach einer DLL namens Microsoft.Storage.Vds.dll. Sie können Reflektor verwenden die verschiedenen Klassen und Methoden zu entdecken. Ich fand heraus, über das, wenn ich diese Blog-Post , in dem der Autor einen Datenträger aus Powershell versucht, unter Verwendung des oben genannten DLL zu initialisieren.

VDS umfasst APIs, die von SAN-Anbieter für die Bereitstellung einer LUN und tun andere SAN Dinge umgesetzt werden könnten; Sie schlagen vor, diese und konzentrieren sich auf die Basis-Software-Anbieter vermeiden, die (im Gegensatz zu dynamisch) Grund schaffen Partitionen entweder auf einem MBR oder GPT-Datenträger. Beachten Sie, dass der Microsoft-Wrapper erwähnte ich ein wenig Licht auf GPT-Unterstützung; Ich hatte es ein wenig zu modifizieren GPT-Datenträger zum Laufen zu bringen.

VDS ist eine komplexe und pingelig API, aber wenn Sie gerade schauen, um eine Festplatte zu initialisieren, eine Partition zu erstellen, formatieren und montieren Sie ihn zu einem Laufwerksbuchstaben, die meisten von dem, was man braucht, ist da und ziemlich einfach zu tun . Viel Glück.

Andere Tipps

Ich habe dies von Powershell getan mit Diskpart mit einem Skript.

So etwas wie:

$target    = ''    #Desired target IQN
$partition = 1     #Desired partition
$drvLetter = ''    #Desired drive letter

#get the disk device number from the iscsi session class (diskpart needs it)
$iscsiSsn = gwmi -namespace "root\wmi" -class MSiSCSIInitiator_SessionClass
$diskNum = ($($iscsiSsn | where { $_.targetname -eq $target}).devices).deviceNumber

#create the diskpart script on-the-fly then call the utility
$dskPrtScr = "$($env:temp)\diskpart.scr"
"sel disk $diskNum`nsel par 1`nassign letter=$drvLetter`nexit" | out-file $dskPrtScr -encoding ascii
diskpart /s $dskPrtScr
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top