我希望通过两个独立的网络堆栈*在我的 Windows 2K8 Server 实验室系统和 NetApp 文件器之间传递 iSCSI 流量。
我的配置如下:
- 一台安装了iSCSI软件启动器、安装了MPIO组件的Win2K8服务器,以及两个网络接口:192.168.201.85/24和192.168.202.85/24
- 一个 NetApp 文件服务器,其 LUN 发布到 Windows 服务器的 IQN,以及两个接口:192.168.201.200/24 和 192.168.202.200/24
- 两个独立的交换机,一个用于 192.168.201.0/24,另一个用于 192.168.202.0/24。两者都是平面的(未 VLAN),并且不连接到任何其他网络设备(包括彼此)。
我已经配置了 MPIO 组件来注册 iSCSI 软件启动器“适配器”类。
然后我进入 iSCSI 启动器控制面板,将两个文件地址添加为“目标”,并针对它们运行发现。这显示了可用的单个 LUN。
然后我两次“登录”到该 LUN,为每个连接选择不同的“源”IP 地址。两个连接都选中了“启动时重新连接”和“MPIO”。
当我检查目标时,我看到与目标有两个连接,每个连接分别对应于 NetApp 正在使用的每个 IP 地址。
当我检查我的持久连接时,我看到两个连接,每个连接对应 NetApp 正在使用的每个 IP 地址。
(此时我应该提到,我已经通过演示与每个 IP 的单一连接、安装然后使用跨该 IP 的驱动器来测试了两个文件服务器 IP。)
然后我进入 Disk Mangler 并在 LUN 上设置分区,并将其标记为“在线”。磁盘按预期工作。
现在我进入新磁盘的属性,然后单击 MPIO 选项卡。我可以看到此磁盘正在使用两个连接。但是我不知道如何将我在此选项卡中看到的连接与我在 iSCSI 启动器屏幕中看到的连接关联起来——因此,虽然我假设 iSCSI 启动器屏幕中的每个连接都有一个连接,但我无法证明这一点。
在 MPIO 选项卡中,我有几个选项。
我已将计时器全部缩短至 1 秒,并启用了路径验证。因此,我对这些设置的理解意味着:
- Windows 服务器每秒都会验证路径是否有效,即远程目标 IP 是否正确响应;
- 检测到故障后,服务器只会重试一次,检测到故障后一秒;
- 发生故障一秒后,服务器将标记为无效并删除该路径。
关于冗余,我尝试了以下几种方法:
- 如果我将两个连接都设置为 Active/Active 并选择 Round Robin 使用,磁盘就可以正常工作。如果我在磁盘上设置复制操作并通过拔出其中一条网线来模拟网络故障,连接将停止约 30 秒,然后继续。
- 如果我通过将一个连接标记为待机/被动并选择仅故障转移来将连接设置为仅故障转移,则连接再次正常工作。(有趣的是,磁盘到磁盘的复制似乎始终以循环速度的两倍左右的速度流动,但无论如何。)如果我通过拔出备用电缆来模拟故障,连接将停止约 1 秒钟,然后继续。如果我通过拔出活动电缆来模拟故障,连接将停止 - 并且我无法通过任何一条线路 ping 文件管理器。最终,操作系统告诉我磁盘已发生故障。网络保持这种状态几个小时(之后我厌倦了等待并重新启动服务器)。
我做了一些研究,发现了 Microsoft KB 968287,其中提到由于 Win2K8 和 Vista 中的 MPIO.sys 驱动程序中的计数器错误导致故障转移无法完成,但安装此修补程序并没有改变我所看到的任何内容。
这一切让我怀疑我忽略了一些基本的东西。我做错了吗?
此处的真正目标是提供更可靠的 iSCSI 传输,以便在我的 Hyper-V 群集上运行虚拟机并安装 Exchange 存储。我们知道,如果检测到磁盘故障,Exchange 会非常快速地卸载信息存储,因此我们希望 MPIO 能够允许数据流动,即使一条路径发生故障。
*= 我们目前有一个 iSCSI 交换机,但当它开始出现故障时,我们不得不关闭整个网络,以便刷新一个交换机上的固件。因此,我们需要两条完全隔离的网络路径(NIC、交换机和另一端的接口),这样我们就可以随时让其中一半停止服务以进行维护,而不会导致整个网络瘫痪。
答案1
我的理解是,在 Netapp 的 7 模式下,每个 LUN 都会有一个首选路径,即使您通过两条路径发送 IO。您实际上所做的就是通过额外的跃点发送每个第二个 IO,而另一个控制器通过互连将其重定向到该 LUN 的主控制器。您观察到的 30 秒延迟很可能是完成硬集群节点接管所需的时间。
8 模式现在只不过是一个玩具(除非您想对 Netapp 进行 alpha 测试,否则 7 模式是唯一真正的选择),但可以通过虚拟化文件管理器的几个层(包括以太网接口)来解决此问题。
如果您想要一个真正活跃的 iSCSI 或任何其他块协议活动盒,您不需要 Netapp。接管时间没有保证,而且我过去曾见过接管时间远远超过 30 秒。