2009-06-27 9 views
2

SANに新しいボリュームを作成するためのAPIはかなり簡単です。私が把握できなかったのは、iSCSIイニシエータをプログラム的に接続し、スペースを(Windowsディスクマネージャの意味で)初期化し、最終的にフォーマットしてドライブ文字にマウントする方法です。raw iscsiボリュームをプログラムでウィンドウにマウントして使用するにはどうすればよいですか?

私は現在win2k3を使用していますが、これを簡単にするにはwin2k8への移行がオプションです。

+0

、私は最終的に、このアプローチをあきらめました。私は生のボリュームの代わりにCIFSファイル共有を使ってシステムを実装しました。これは、netapp SANでスクリプトを作成するのはかなり簡単でした。 Windowsでボリュームを使用する際の最大の問題は、ボリュームが重複していても、前回の場所に自動的にマウントされる前にWindowsがボリュームを見た場合です。 –

答えて

2

私の会社の製品のディスク初期化、パーティショニング、フォーマットを実装する必要がありました。私はコードを共有することはできませんが、私は正しい方向にあなたを指すことができます。

必要なAPIはVDS-Virtual Disk Serviceと呼ばれます。これはCOM APIですが、C++(ATL)とC#(COM interop)から正常に使用しました。

悲しいことに、ドキュメントはかなり不足しています。オブジェクトモデルに自分自身を浸し、コードを書いて、徐々にそれを感じる必要があります。

Windows Server 2008には、文書化されていないものの、VDSの周りにはかなり使用可能なC#ラッパーが付属しています。 Microsoft.Storage.Vds.dllと呼ばれるDLLを探します。 Reflectorを使用して、さまざまなクラスとメソッドを検出できます。私はthis blog postと書いてあります。著者は、前述のDLLを使ってPowerShellからディスクを初期化しようとしています。

VDSには、SANベンダーがLUNをプロビジョニングして他のSANを実行するために実装できるAPIが含まれています。それらを避け、MBRまたはGPTディスクのいずれかで基本的な(動的ではなく)パーティションを作成する基本的なソフトウェアプロバイダに焦点を当てることをお勧めします。私が言及したマイクロソフトのラッパーは、GPTサポートについて少し明るいことに注意してください。 GPTディスクを動作させるために少し修正する必要がありました。

VDSは複雑で厄介なAPIですが、ディスクを初期化し、パーティションを作成し、フォーマットし、ドライブレターにマウントする場合は、必要なもののほとんどがそこにあり、かなり簡単です行う。がんばろう。

2

私はpowershellからスクリプトでdiskpartを使ってこれを行っています。以下のような

何か:

FYI
$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