現在、Hyper-V 2012 R2 用のオーケストレーション ソフトウェアを作成しています。
オーケストレーション プラットフォームは全体として、Xen などの他のハイパーバイザーとも通信します。現在、新しい SAN ストレージの導入を進めています。ストレージ レベルにいくつかの望ましい機能が存在するため、すべてのハイパーバイザーで LUN から VM へのマッピングを使用したいと考えています。
Windows でこのボリュームの iSCSI 接続を管理する際に、実際に問題が発生しています。しかし、私が思っていた方法ではありません...
Windows と「たくさんの LUN」にスケーリングの問題があると聞いていましたが、自分で確認したいと思いました。他の人が言及した問題は見当たりません。たとえば、diskpart を介して 1 秒で 500 以上の LUN を列挙できます。「get-disk」を使用して、接続されているすべてのディスクを 1 秒以内に一覧表示できます。この問題は、iSCSI スケーリング自体に起因しています。
誰かが読む時間があれば、おそらく理由を明らかにすることができます...
iSCSI ターゲットへのプログラムによる接続に問題はありませんが、セッション情報 (他の情報を取得する必要がある) を取得しようとすると、実際に問題が発生するようです。
つまり、iSCSI ターゲットが接続された時点で受け取るディスク番号\アドレスを指定する方法はないようです (私が間違っていない限り)。への呼び出しを介して、WMI 経由で IQN から逆方向に作業できます。
MSiSCSIInitiator_SessionClass
100 以上の接続されたボリュームについて話し始めると、このクラスへの呼び出しが返されるまでに 10 分以上かかることがあります。次のようなものを使用して Powerhel 経由でテストすると、次のようになります。
$query = "Select * from MSiSCSIInitiator_SessionClass Where TargetName='$iqn'"
Get-WmiObject -Namespace "root\WMI" -Query $query
...ボリュームの列挙の途中で動かなくなることがわかります。一時停止します。正確な数値は調べていませんが、追加のボリュームごとに、クエリが返されるまでの合計時間が約 3 ~ 4 (またはそれ以上) かかるようです。
少し奇妙になります。Windows 2012 には、組み込みの iSCSI コマンドがいくつかあります。接続された iSCSI ターゲット オブジェクトを 1 秒以内に取得できます
Get-IscsiTarget –nodeaddress blah
を使用して iSCSI 接続オブジェクトを取得できます
$iscsi_target_object | Get-IsciConnection
... 1 秒以内に完了します。これらは、何らかの方法で iSCSI セッション情報に関連している必要があります。
どのようにパッケージ化したとしても、Get-IscsiSession を呼び出すと、戻るまでに約 10 分かかります。
VM の設定ページを開くと、Hyper-VM マネージャー GUI も非常に遅くなります。おそらく、iSCSI セッションを介して可能なパススルー ディスクを列挙しているためです。これにも約10分かかります。
root/virtualisation の Msvm_DiskDrive へのクエリも、返されるまでに時間がかかります。
ここでも、diskpart、Get-Disk などはすべて数秒で返されます。システム上のすべての iSCSI ターゲットを 500 以上のターゲットで約 1 分で更新できます。それはそれで大変なことになると思いました。
それで、私は2つの質問があります。
まず、これでいいでしょうか?WMI 呼び出しが返される速度に影響を与える可能性のある何かを行っていることはありますか? WMI を高速化できますか?
次に、MSiSCSIInitiator_SessionClass 以外に、IQN からディスク番号を取得できる方法を思い付く人はいますか? これは私の問題の大部分を解決するかもしれません。おそらく、私が見逃したかもしれないこの情報への他のルートがあります。
乾杯。