2

SAN 上に新しいボリュームを作成するための API は非常に単純です。私が理解できなかったのは、プログラムでiSCSIイニシエーターをそれに接続し、スペースを初期化し(Windowsディスクマネージャーの意味で)、最後にフォーマットしてドライブ文字であるマウントする方法です。

私は現在 win2k3 を使用していますが、実装が簡単になる場合は win2k8 に移行することも選択肢の 1 つです。

4

2 に答える 2

2

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

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

悲しいことに、ドキュメントはかなり不足しています。オブジェクト モデルに没頭し、コードを記述すれば、徐々にその感覚をつかむことができます。

Windows Server 2008 には、文書化されていませんが、非常に使いやすい VDS の C# ラッパーが同梱されています。Microsoft.Storage.Vds.dll という DLL を探します。Reflector を使用して、そのさまざまなクラスとメソッドを見つけることができます。このブログ記事を読んだときに、このことを知りました。この記事では、著者が前述の DLL を使用して PowerShell からディスクを初期化しようとしています。

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

VDS は複雑で扱いにくい API ですが、ディスクの初期化、パーティションの作成、フォーマット、ドライブ文字へのマウントだけを行う場合は、必要なもののほとんどがそこにあり、かなり簡単に実行できます。幸運を。

于 2009-06-29T16:33:02.543 に答える
2

スクリプトでdiskpartを使用して、Powershellからこれを行いました。

何かのようなもの:

$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
于 2010-07-29T13:43:40.647 に答える