Как программно смонтировать необработанный том iscsi в Windows и подготовить его к использованию? - PullRequest
2 голосов
/ 28 июня 2009

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

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

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Я сделал это из 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
2 голосов
/ 29 июня 2009

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

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

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

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

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

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

...