2009-06-27 6 views
2

API для создания нового тома в нашей SAN довольно прямолинейный. То, что я не смог выяснить, - это как программно подключить к нему инициатор iSCSI, инициализировать пространство (в смысле диспетчера дисков Windows) и, наконец, отформатировать его и смонтировать, это буква диска.Как программно установить необработанный том iscsi в Windows и получить его в готовности?

В настоящее время я использую win2k3, однако переход на win2k8 является вариантом, если это упростит его реализацию.

+0

FYI, я в конце концов отказался от этого подхода. Я закончил внедрение системы с использованием файлов файлов CIFS вместо необработанных томов. Это было довольно легко с помощью скрипта netapp SAN. Самая большая проблема с использованием томов с окнами заключается в том, что если бы окна видели дубликат тома, прежде чем он автоматически установил его там, где он был ранее, даже если это не то, что я хотел. –

ответ

2

Мне пришлось реализовать инициализацию, разбиение и форматирование диска для одного из продуктов моей компании. Я не могу поделиться этим кодом, но могу указать вам в правильном направлении.

API, который вы хотите, называется VDS - Virtual Disk Service. Это COM API, но я успешно использовал его с C++ (с ATL) и C# (COM-взаимодействие).

К сожалению, документации недостаточно; вам просто нужно погрузиться в объектную модель, написать код, и постепенно вы почувствуете это.

Windows Server 2008 поставляется с незарегистрированной, но вполне пригодной для использования оболочкой C# вокруг VDS. Найдите DLL с именем Microsoft.Storage.Vds.dll. Вы можете использовать Reflector для обнаружения его различных классов и методов. Я узнал об этом, когда прочитал this blog post, в котором автор пытается инициализировать диск из PowerShell, используя вышеупомянутую DLL.

VDS включает в себя API, которые могут быть реализованы поставщиками SAN для предоставления LUN и других функций SAN; предлагайте вам избежать этих проблем и сосредоточиться на базовом поставщике программного обеспечения, который будет создавать базовые (в отличие от динамических) разделы на диске MBR или GPT. Обратите внимание, что обертка Microsoft, о которой я упоминал, немного освещает поддержку GPT; Мне пришлось немного изменить его, чтобы заставить GPT-диски работать.

VDS - сложный и тонкий API, но если вы просто хотите инициализировать диск, создать раздел, отформатировать его и установить на букву диска, большая часть того, что вам нужно, и довольно легко делать. Удачи.

2

Я сделал это из Powershell, используя diskpart со сценарием.

Что-то вроде:

$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 

 Смежные вопросы

  • Нет связанных вопросов^_^