自从六年前出道以来,iSCSI已经以疾风暴雨之势占领了存储世界。其支持者通常都专注于其卓越的性价比,但是其成功的秘密却是广为人知的一些实施技巧:iSCSI使用标准的TCP/IP网络连接来传输“块级”数据,所以即使几乎没有存储经验的网络管理员也感到十分轻松。
事实上,iSCSI易于建立,也容易在建立时出错。根据具体情况的不同,这种差错可导致性能不良或可靠性不高或这两种问题兼而有之。构建一个可以交付企业级性能和可靠性的iSCSI SAN需要进行一些规划,还需要深入了解你选择的SAN平台是如何运行的。
低级配置带来的灾难
假设你为一家中小型企业工作,并且有几台Windows服务器,你想将其连接到iSCSI SAN上。这些服务器都是全新的,并拥有四个板载的1Gbps网卡,但是仅有一个网卡连接到了一台交换机,一台低端的不可管理的的千兆交换机。
乍一看,似乎你能够将SAN插入到交换机中,并为其分配IP地址,在服务器上安装微软的iSCSI initiator,并配置它使其连接到SAN,好象可以高枕无忧了。实际上,你能够从服务器上加载SAN存储器,而且它还可以凑合着运行—只要你并不设法调整它。然而,如果你将实际的负载加到SAN卷上,很快就会发现这种设计的不足之处。
以这种方式连接iSCSI存储器存在着几个问题。你将没有交换机或网卡的冗余,SAN上没有负载均衡,也没有需要用来优化iSCSI通信流(通过交换机的)的特性,而且,最糟的可能是,存储器将会与前端的客户端通信争夺带宽。
正确建立iSCSI
在上面的情形中,缺失的元素是很明显的:一台象样的交换机。一台优良的交换机是iSCSI SAN的关键部分。确实,任何千兆交换机都可用于iSCSI,但是采用低廉的不可管理的交换机会使你遗漏一些重要的特性。
首先,你需要交换机的畅通而非闭塞,即交换机需要能够在其所有的端口上同时处理全速率的输入和输出;并非所有的交换机都能这样;甚至有些企业级交换机都要在邻近的端口组之间共享带宽(特别是机架式交换机,如思科的Catalyst 4500,当然还有其它种类。)
其次,你需要能够支持流控制。流控制是一个第二层的以太网协议,它准许一台正在接收的主机向正在发送的主机发出减缓发送数据量的请求。这会防止服务器或SAN发送的数据超过了另一方设备能够接收的能力,这会导致大量的低效TCP重发,并从总体上导致性能降低。
第三,你希望交换机支持巨型帧,即jumbo framing。典型的以太网交换机仅限于1500字节在,而巨型帧jumbo framing扩展到了9000个字节。这很重要,因为这样做减少了需要通过电缆的数据包的数量,并导致更高的链路效率和更低的延迟。多数现代的交换机都支持此特性,但并非所有的都支持。
最后一点,你需要一台支持VLAN的交换机。你希望将iSCSI通信隔离到它自己的VLAN上,当然部分原因是因为性能,但最主要地是为了以一种快捷简易的方式确保未授权的主机无法连接到SAN。
一旦你选择了很不错的交换机,如果你买得起就买两台吧。拥有两台交换机不会增加性能,但是却可以在一台发生故障时让你避免难堪。一个双核心的网络架构终归是一个好主意。当块级存储器在你的网络上运行时,这就更重要了。
为什么呢?可以这样看:如果你将一台普通的服务器从一个普通的网络上拨下来,在多数情况下,最糟糕的事情就是所有的用户会断开连接,直至你重新插入。不过,如果你运行的是块级存储器的话,断开对存储器的访问会潜在地导致不稳定并导致服务崩溃。虽然从这种事件中恢复几乎总是很快的,并且不会发生数据损失,但是如果可能,要尽量避免。准备两台交换机的做法就可以使你更接近此目标。
在挑选出交换机之后,你可以将服务器和SAN连接上。在服务器端,你要在每个服务器中使用两个网卡连接到其中的一台交换机。同样,在SAN上,将SAN的接口在两台交换机之间进行划分。这就给了用户一个通向存储器的完全冗余性的专用路径。服务器的前端客户端就不必与后端的存储器争夺带宽了。
你需要做的下一步是配置服务器使其连接到SAN上。这就比较轻松了。微软的iSCSI initiator使我们配置iSCSI入口时相当轻松,也很容易达到iSCSI目标(卷或卷集)。然而,你需要研究一下MPIO(多路径的I/O)如何运行以保障其安装的正确性。
理想情况下,你将为每块网卡的每个iSCSI目标建立至少一个连接。这会给你提供路径冗余(防止你的网卡或交换机故障),但还准许SAN在不同的SAN接口之间对进入的连接实现负载的平衡。并非所有的SAN平台都能这样做,但对于能这样做的SAN,这绝对值得。
许多SAN厂商都发布可以安装iSCSI initiator和路径管理DSM(设备专用模块)的软件包,可以用最适合你的SAN的方式智能地构建MPIO连接。(Dell EqualLogic的Host Integration Toolkit 就是一个很好的例子。)如果你的厂商提供了其中之一,就要确保利用之,因为这会提供更好的性能,并且在配置和维护时要容易得多。
享受平稳运行
在以上述方式配置了iSCSI网络连接之后,实际的iSCSI互联将很少或绝不会成为性能或可靠性问题的一个因素。在多数入门级的SAN环境中,拥有两个1Gbps的链路的几台服务器,其每个链路都能完全满足SAN磁盘的机械能力,在iSCSI的互联成为一个限制因素之前,能够持续良好地运行。
如果你正在运维一个大得多的服务器或SAN环境,这里的设计细节有可能会改变,也许你要在服务器中使用10Gbps的以太网和iSCSI HBA/CNA(主机总线适配器/融合网络适配器)来发送一些iSCSI数据包。然而,由高质量的交换机和正确实施的MPIO组成的双核心网络仍然有效。
虽然构建iSCSI很“简单”,但又可以变得相当复杂,因为我们可以用不同的方式来配置它。如果你是刚开始接触iSCSI,就要保障自己认真规划,并且在将其投入实际使用之前测试自己的配置。