Keep learning, keep living...

0%

VMware vSphere环境iSCSI配置多路径

VMware vSphere的很多高级特性都依赖于共享存储, 如vMotion, HA: High Availability, DRS: Distributed Resource Schedule等, 它们要生效都需要虚拟机的存储位于共享存储中. vSphere支持的共享存储除了自家的vSAN, 还包括: NFS, iSCSI, 光纤通道: Fibre Channel等.

iSCSI是一个标准协议, 全称为:Internet Small Computer System Interface, 它在以太网上基于TCP/IP协议来传输SCSI协议. SCSI协议是计算机上的I/O传输协议, SCSI控制器通过SCSI总线与硬盘等设备以块为单位传输数据. iSCSI服务器称为target, 客户端称为initiator. iSCSI initiator能够以纯软件实现运行在标准网络适配器上, 也可以以硬件形式实现为专用的HBA卡:(Host Bus Adaptor), 也有带有iSCSCI offload硬件支持的网卡可以来加速iSCSI协议处理.

iSCSI协议层次如图(来自: https://www.snia.org/education/what-is-iscsi):

几乎所有的企业级存储产品都支持iSCSI协议. 在WindowsLinux等操作系统上也都有成熟稳定的iSCSI实现. 在CentOS上配置iSCSI也非常简单, 有大量的文章介绍, 可以参考:

由于iSCSI存储数据是基于网络传输, 为了提升性能, 可以采用多路径: Multipathing机制来传输数据, 其中的一种实现方式是一个iSCSI session使用多个连接, 叫做MC/S: Multiple Connections per Session.

VMware vSphere支持iSCSI协议. 介绍在vSphere上配置iSCSI的文章也非常多, 可以参考:

VMware vSphereiSCSI initiator实现也支持Multipathing, 是基于端口绑定: Port Binding实现, 如图:

一般, 在vSphere上配置iSCSI时, 会建立专用的VMkernel接口和网络端口组. 但需要注意的是用于multipathing的端口组的uplink接口, 只能有一个活动上行链路, 并且没有备用上行链路. 如果虚拟交换机维度存在备用上行链路, 在iSCSI端口组上需要将该链路移动未使用的上行链路. 如图:

为了实现multipathing, 需要至少建立两个这样的VMkernel接口和网络端口组, 分别指定不同的上行链路, 然后全部添加到iSCSI software adaptor端口绑定中, 如图:

可以参考:

但是, 实际使用Port binding时是有一些注意事项的, 请参考VMware官方KB

Port binding本质上是指定使用哪个VMKernel建立iSCSI网络连接. 当多个VMKernel接口位于相同广播域时, 默认ESXi只会使用第一个接口的路由表, 当需要使用多个连接时, 需要配置Port binding.

参考链接里说, 当多个VMKernel位于不同子网时, 不需要配置Port binding, 但个人感觉, 如果想使用load balance模式去利用多条连接而不是fail over模式, 也是需要配置的. 后续有时间可以再实验一下.

参考: