如何在vSphere环境下使用iSCSI存储(上)

说到VMware vSphere的某些高级特性,比如VMotion、fault tolerance(容错)、high availability(高可用)以及VMware DRS(Distributed Resource Scheduler,分布式资源调度)。vSphere的专利技术–“VMFS文件系统”——具有一种特殊的锁机制,允许多台物理主机连接到同一个共享的存储卷,其上的虚拟机也可以共享存储空间。不过,从传统的角度来说,实现共享存储卷意味着必须使用昂贵的光纤通道网络基础架构, 不过现在,iSCSI和NFS网络存储设备已经成为了一种更经济的选择。 

在本文中,我们将为您介绍如何在vSphere环境中正确的安装、配置iSCSI存储,我们会对要点做相应的提示,并提供一些最佳实践供您参考。此外,我们在不同的配置环境下做了性能测试,通过比较这些测试结果,能够分析出各类配置对性能的影响。

VMware的流行促进了iSCSI的普及

第一个支持iSCSI网络存储的VMware版本是 ESX 3.0。它的内部集成了一个叫做initiatior(发起端)的客户端程序,通过局域网将SCSI命令发送到存储装置中的Target(目标端)SCSI设备。与光纤通道技术不同,iSCSI使用传统的网络元件和标准的TCP/IP协议,因此它不需要特殊的线缆和交换机设备。

目前iSCSI的initiator(发起端)可以是软件程序,也可以基于硬件。软件initiator 通过使用内建于VMkernel的设备驱动,利用网络适配器和以太网协议将数据写到远端的iSCSI Target(目标端)。因此软件initiator 的一些重要特征是:

使用以太网卡和本地VMkernel iSCSI堆栈

对于刀片服务器,或者扩展槽有限的服务器来说是一个好的选择

比硬件initiator便宜

CPU密集运算,因为协议的处理会增加CPU的开销

ESX server不支持基于软件initiator的boot(启动)模式;ESXi可以使用iSCSI Boot Firmware Table(iBFT)。

硬件initiator则使用专用的iSCSI HBA卡,它可以帮助服务器提升性能。它包括网络适配器、TCP/IP协议卸载引擎(TOE,TCP/IP offload engine)、以及SCSI总线控制器等组件。硬件initiator的特征包括:

I/O性能比软件initiator好

消耗更少的ESX server主机资源,特别是CPU资源

ESX server能够从硬件initiator启动

对于正在使用光纤通道存储的用户来说,iSCSI是个不错的替代方案,因为iSCSI不但可以降低部署成本,还可以保证良好的性能。vSphere目前已经能够支持10Gbps以太网协议,性能大大超过1Gbps以太网技术。当然,使用iSCSI也存在一个大的风险,如果采用的是软件initiator,难免会给CPU带来额外的开销,不过换成硬件initiator之后,这个问题就可以避免。使用硬件initiator还有一个好处就是可以将iSCSI数据流与其他网络流量完全隔离,而各种数据流的混合会让网络环境变得脆弱且容易波动。

出于优化vSphere的目的,VMware公司将软件iSCSI initiator的堆栈代码完全重写了一遍,就是为了更有效的利用CPU时钟周期。结果,与VMware的上一个版本Infrastructure 3相比,vSphere的效率和吞吐量明显提升。这个结果的实现主要是通过改进VMkernel的TCP/IP堆栈,优化相关缓存,以及通过提高内部锁的效率达成的。vSphere还增加了对双向CHAP(Challenge-Handshake Authentication Protocol)的支持,无论是initiator(发起端)还是Target(目标端)都需要经过相互的认证,这种认证机制提供了更好的安全保护。

在vSphere环境中,如何规划iSCSI的实施

在我们计划将iSCSI存储用于vSphere环境之前,必须做好几个决策。让我们先来看看iSCSI存储设备。

我们可以在vSphere环境中随心所欲的使用任何类型的iSCSI存储设备,因为主机端连接使用的是标准的网络适配器、标准的initiator以及通用的协议。但是我们必须注意两件事。首先,vSphere官方宣称支持的iSCSI存储设备仅限于某些厂商的特定型号(具体参见vSphere硬件兼容性指南),这就意味着如果我们打电话向VMware咨询一个与存储设备相关的问题,他有可能让我们去拨打存储供应商的支持电话。其次,我们需要注意的是,不同的iSCSI存储系统性能也有较大的差异。通常,对性能要求越高,所需的成本也越高。所以,针对虚拟机环境,我们要谨慎的选择iSCSI设备,确保它的性能能够满足应用程序对磁盘I/O的要求。

关于网络,也有一些需要注意的事项。如果要优化iSCSI的性能,最好创建一个独立的网络环境。这是为了确保iSCSI数据流不被其他网络流量干扰,同时对确保iSCSI的信息安全也有帮助。在虚拟机环境下,不能用100兆网卡承载iSCSI应用,那会非常的慢,甚至于完全不可用。所以,至少要用到千兆网络环境,如果预算充足的话,推荐使用万兆以太网。如果担心服务器资源开销过大,则可以考虑使用硬件initiator(TOE适配器),前提是确保我们选择的这个TOE适配器在VMware的硬件兼容列表中。如果我们使用了一个VMware不支持的TOE适配器,vSphere会将视其为一个标准的网卡,那也就无从发挥TOE的好处了。最后,如果为了获得最高的系统可用性而使用多路径的话,至少要用到两块网卡(不能是桥接或者多端口)分别连接到两台物理交换机,这一点与我们在光纤通道环境中配置多路径是一样的。

下一篇文章 如何在vSphere环境下使用iSCSI存储(下)