我目前正在为 Hyper-V 2012 R2 编写一些编排软件。
整个编排平台还可以与 Xen 等其他 Hypervisor 对话。我正在引入新的 SAN 存储,并且由于存储级别存在一些理想的功能,我想在所有 Hypervisor 上使用 LUN 到 VM 的映射。
我在 Windows 上管理这个 iSCSI 连接量时遇到了真正的问题。但不是我想的那样...
我听说 Windows 和“大量 LUN”存在扩展问题,但我想自己检查一下。我没有看到其他人提到的问题。例如,我可以在一秒钟内通过 diskpart 枚举 500 多个 LUN。我可以用“get-disk”列出所有连接的磁盘,在一秒钟内,问题来自 iSCSI 扩展本身。
如果有人有时间继续阅读,也许他们可以解释为什么......
我以编程方式连接到 iSCSI 目标没有问题,但是当我开始尝试获取会话信息(我需要获取其他信息)时,我似乎遇到了真正的问题。
即似乎没有办法指定 iSCSI 目标在连接时接收的磁盘号\地址(除非我弄错了)。我可以通过 WMI 从 IQN 向后工作,通过调用
MSiSCSIInitiator_SessionClass
当您开始谈论 100 多个已连接的卷时,调用此类课程有时可能需要 10 多分钟才能返回。如果我通过 Powerhell 对其进行测试,例如:
$query = "Select * from MSiSCSIInitiator_SessionClass Where TargetName='$iqn'"
Get-WmiObject -Namespace "root\WMI" -Query $query
...您可以看到它在枚举卷的过程中卡住了。它会暂停。我没有计算出确切的数字,但每增加一卷似乎都会在查询返回的总时间上增加大约 3-4(或更多)秒。
它变得有点奇怪。Windows 2012 有一些内置的 iSCSI 命令。我可以在一秒钟内得到一个连接的 iSCSI 目标对象
Get-IscsiTarget –nodeaddress blah
我可以使用 iSCSI 连接对象
$iscsi_target_object | Get-IsciConnection
...在一秒钟内完成。这些必须以某种方式与 iSCSI 会话信息相关。
无论我如何打包,调用 Get-IscsiSession 大约需要 10 分钟才能返回。
Hyper-VM 管理器 GUI 在打开 VM 的设置页面时也非常慢,大概是因为它正在通过 iSCSI 会话枚举可能的直通磁盘。这也需要大约十分钟。
在根/虚拟化中对 Msvm_DiskDrive 的查询也需要一段时间才能返回。
同样,diskpart、Get-Disk 等都在几秒钟内返回。我可以在大约一分钟内刷新系统上的所有 iSCSI 目标,其中包含 500 多个目标。我认为这将是困难的一点。
所以,我有两个问题。
首先,这听起来对吗?有什么我做的事情可能会影响 WMI 调用返回的速度吗?我可以加速 WMI 吗?
其次,谁能想到除 MSiSCSIInitiator_SessionClass 之外的任何其他方式,我可以从 IQN 派生磁盘号?这可能会解决我的大部分问题。也许我可能错过了获取此信息的其他途径。
干杯。