WHY?
虽然市场上超融合的兴起,Openstack / 公有云 / 容器化热词不断,企业IT也引入了越来越多的新产品和新架构,但在较多的中小企业,尤其是制造行业,还是有着众多的企业使用本地虚拟化部署来支持核心业务,故在此简述一下光纤通道(FC)存储在VMware虚拟化环境的连接。
本文旨在抛砖引玉,从基础部分说起,在后续大家的反馈下不断改进未来文章的内容吧。
说到存储技术之前,先给大家介绍下存储连接相关的协议。
01
SCSI标准与协议
SCSI(Small Computer System Interface, 小型计算机系统接口)是在电脑和SCSI外设之间传输和连接的标准,由SCSI标准定义了相关的命令和协议。
SCSI-2和SCSI-3标准最初由T10 进行管理,官网地址为: http://t10.org ;
SCSI-2是二代标准,SCSI-3则指第三代SCSI标准。但是,后续的标准去掉了数字“-3”。在修订SCSI-3架构模型(SCSI Architecture Model, SAM)时,它变成了SCSI架构模型-2 (SAM-2)。那么现在就不存在SCSI-4标准,取而代之的是SAM修订号,后续各代称为SAM-2、SAM-4等等。下图来源于 T10 SCSI-3标准架构,展示了相关的架构和协议。
图1. SCSI-3标准架构
02
光纤通道协议(FC协议)
光纤通道协议(Fibre Channel Protocol, FCP)是由T11负责管理的,官方地址为 http://t11.org
FCP用于不同线速的光纤通道网络(目前速率常见为32-64Gbps,但根据FCIA的Roadmap (https://fibrechannel.org/roadmap/) ,T11正在酝酿更高的速率,如2025年计划实现256Gbps的FCP)
图2.FCP发展路线图
光纤通道连接的基本单元是帧(frame)。下图展示 了FC帧的结构。这和以太网帧或者IP封包有些类似。
图3.FC帧结构
每个帧包含2KB传输数据,并由一些保证完整性的字段,以及帮助目标和发起方(来源)在连接的两端重新装配数据的信息封装。这些字段如下:
² 帧开始标志(4字节)
² 帧结束标志(4字节)
² 帧首标 (24字节) 【CTL控制字段、源地址、目标地址、类型、序列计数、序列ID和交换ID】
FC网络中不同实体之间的通信称作“交换”,这就是一些序列。每个序列是一些帧。为了传输信息,FC协议按照如下过程进行:
01
检查目标端口地址
02
通过登录(login)检查源和目标端口连接的可能性
03
将协议信息(交换)分解为信息单元(序列)
04
将序列分解为适合FC帧的部分
05
用如下信息标记每个帧:
a) 源端口信息
b) 目标端口信息
c) 序列号
d) 协议
e) 交换ID等等
06
将帧的序列发送到目标端口
07
在目标端口进行如下操作:
a) 根据帧的标记,重新组合帧数据,建立信息单元(也称为序列)
b) 根据协议,将序列组合在一起重建协议信息(也称为交换)
因此,存储的基本要素就分为发起方、目标和连接它们的网络。网络在一些术语中也称作网络架构(Fabric)。这些要素根据使用的存储协议而有所不同。
我们今天要讨论的是光纤通道(FC)存储在VMware虚拟化环境的连接,所以,我们先了解基于FC协议下的存储三要素的概念:
针对以上FC协议下的几个存储要素定义,接下来简要说明VMware环境下VMware vSphere支持的光纤存储连接:
首先是FC发起方,先要了解其涉及的有两个核心的标识概念:
01.FC端口标识
FC端口有唯一的标识符,称作全球端口号(World Wide Port Number, WWPN)。它是一个在网络架构 中保证唯一的ID,基于美国电子电气工程组织(IEEE)注册机构分配的组织唯一标识符(Organizationally Unique Identifier,OUI)。 每一个FC HBA制造商都会在此注册自己的OUI,并且根据OUI生成WWPN。
WWPN示例: 20:00:00:25:b5:01:a9:5e
如上突出显示的数字就是制造商的OUI,我们可以通过IEEE的官网 http://standards-oui.ieee.org/oui/oui.csv 得到公布出来的OUI.CSV文件,以搜索OUI来识别OUI注册的所有者。在这个例子中我们可以通过搜索0025b5 ,找出对应的硬件制造商是思科。
02.FC节点标识
FC节点也有唯一的标识符,称作全球端口号(World Wide Node Number, WWNN)。这些ID由HBA制造商按照上述相同的方法,利用OUI生成。
WWNN示例: 20:00:00:24:ff:1c:2b:f9
搜索0024FF 可知,这块HBA卡为Qlogic厂商制造的。
在存储区域网(Storage Area Network, SAN)的故障检修过程中或者映射存储单元时,需要识别已经安装的HBA卡的WWPN和WWNN,以匹配光纤交换机端口/主机端口和存储端口是否一致。下面分别介绍在常见vSphere环境中如何获得这些信息。
01
VMware ESXi GUI模式下如何获取?
使用据有相应权限的账号登入vSphere web Client,浏览到“主机与群集”菜单,并选择左边一台ESXI主机——选择右侧“配置”——“存储”——“存储适配器“,即可以看到如下图。
图4. vSphere Web Client 显示WWN
02
使用ESXi CLi模式如何获取?
通过SSH ESXI主机或利用vMA统一管理ESXI主机或者通过ESXI PowerCLI工具SSH至ESXI主机,执行 esxcfg-mpath -b |grep WWNN | sed 's/.*fc //;s/Target.*$//' 命令,以查看本机的HBA卡相关信息,执行结果如下。
图5. ESX CLI 显示WWN
通过执行 esxcli storage san fc list 命令,可获得详细的HBA信息,包括速率驱动版本等等。
图6. ESX CLI 显示HBA详细信息
接下来,我们讲讲第二个元素:FC目标。
FC目标常见是在一个或多个存储阵列控制器上的FC端口,这些端口具有前面讨论的全局唯一标识符WWNN和WWPN,在大部分的配置中,一个存储阵列使用一个WWNN,而不同的SP端口都有唯一的WWPN。下图以当前环境现有一台Netapp存储为例。
图7. NetApp WWNN 示例
各厂家在定义WWNN和WWPN都有自已不同的规则,下面以Netapp和EMC两家厂商产品为例,
OUI | WWNN/WWPN | 存储厂商 |
00:A0:98 | 20:xx:00:A0:98 | NetApp |
00:A0:B8 | 20:xx:00:A0:B8 | NetApp |
D0:39:EA | 20:xx:D0:39:EA | NetApp |
00:60:16 | 50:06:01:6x:xxxx | DELL EMC Clariion |
00:60:48 | 50:06:04:8x:xxxx | DELL EMC |
00:12:48 | 50:01:24:8x:xxxx | DELL EMC |
可见在存储的WWPN中除了厂商的OUI还有用于标识和填充的“5” (EMC产品开始)和“20”NetApp产品开始,此外还会包含控制器编号,端口号以及存储系统序列号等信息:
下面以EMC存储的一个WWPN作为讲解,这有助于说明WWPN的组成。
图8. EMC WWPN分解
EMC Unity控制器端口的WWPN从5006016开始, 因为EMC的OUI是006016。上图中将第一层从十六进制到第二层的二进制转换后,例如,OUI之后的第一位数字是2,转换为二进制的“0010”。第1位标记为“CPU编号第2位“的一位数用于确定该端口是使用存储控制器上的哪个CPU,通常存储为双控,每控2个CPU,而控制器上的端口总数可能根据型号不同可能为4个或8个。
01
VMware ESXi GUI模式下如何获取?
使用据有相应权限的账号登入vSphere web Client,浏览到“主机与群集”菜单,并选择左边一台ESXI主机——选择右侧“配置”——“存储”——“存储设备“——选择一个列出的存储设备,即可以看到如下图。
图9. vSphere web Client获取存储设备WWPN
图中可以查看到Netapp存储挂载到esxi主机上的WWPN和WWNN, 图中“运行时名称“(Runtime Name)是以 vmbax:C0:Ty:Lz 的格式显示在路径中,其中x表示hba卡的编号 ,y表示目标号,z代表的存储上为此主机指定的LUN ID。
02
使用ESXi CLi模式如何获取?
通过SSH ESXI主机或利用vMA统一管理ESXI主机或者通过ESXI PowerCLI工具SSH至ESXI主机,执行 esxcli storage core path list 命令,以查看本机所连接的存储目标WWPN相关信息,执行结果如下。
图10. ESX CLLI获取存储设备WWPN
最后,我们讲讲FC网络。
FC网络是由相应各层组成:
FC端口根据其在FC网络中的功能不同而不同。它们可能是下表中的某种类型:
端口类型 | 扩展名 | 描述 |
N | 节点端口(Node Port) | 用于点对点连接,通过FC交换端口将对象连接到存储网络中,大部分服务器的HBA卡都是这样的端口类型,类似于PC机上的网卡口。 |
NL | 节点回路端口(Node Loop Port) | 通过仲裁回路(FC-AL)拓朴连接的节点端口 |
F | 网络架构端口(Fabric Port) | 在点对点拓朴中连接到节点N端口的交换机端口,大部分存储交换机上都是这样的端口类型,类似于网络交换机的Access口 |
FL | 网络架构回路端口(Fabric Loop Port) | 通过仲裁回路(FC-AL)拓朴连接的交换端口,对端为NL类型 |
E | 扩展端口(Expansion Port) | 用于FC交换机互联,组成ISL(inter-switch Link) |
TE | 聚合扩展端口(Trunk E-Port) | 只用在思科的光纤交换机上,用于连接vSAN间的交换机和路由 |
NPIV | 虚拟节点端口(N-PortID Virtualization) | 虚拟化场景常见的接口类型,一个端口下可能有多个N节点,在刀片服务器/存储虚拟化/服务器虚拟化上应用广范。 |
随着MINI SAS的发展,现在市面上很少见到FA-AL架构的连接方式,只有在较早之前一些存储厂商使用这种连接拓朴,利用回环交换机将存储控制器与存储磁盘柜连接在一起。而且随着光纤网络成本的降低,一般企业主机与存储点对点直连也比较少了,这里给出两种拓扑组网方式,方便大家理解上表。
图11. FC拓扑示例
FC网络架构是由一个或者多个互连的FC交换机构成,它们共享交换机网络架构操作系统(Fabric OS)提供的一组服务。这些服务包括名称服务、RSCN、FDMI和FLOGI等。
² 名称服务:维护当前或过去网络中曾经连接到它并且已经注册端口信息的所有主机和存储设备的属性列表。名称服务的一些属性包括WWPN、WWNN和端口别名(alisa)等等。
² 注册状态更改通知:注册状态更改通知(Registered State Change Notification,RSCN)是一种光纤通道服务,它向主机通知网络架构的变化。它把状态更改通知发送到所有注册的节点(同一个分区当中),如果是重大的网络架构更改,还将发送到可达的网络架构交换机。这种通知刷新了节点对网络架构的认知,使它们能对这些变化做出反应。RSCN在网络架构交换机上实现,这是光纤通道模型第2层(网络层)的一部分,具体触发RSCN的事件有:
n 节点加入或离开网络架构
n 交换机加入或离开网络架构
n 交换机更名
n 创建新的分区(zone)
n 交换机IP变更
² 网络架构设备管理接口:(Fabric-Device Management Interface, FDMI)是一种光纤通道服务,它可以通过存储网络管理光纤通道HBA等设备。 此服务补充了网络架构交换机的名称服务和管理服务功能,它从连接的节点提取信息并将其存储在一个持久数据库中。这些信息包括:制造商、型号和序列号;节点名称;硬件驱动程序和固件版本;操作系统名称和版本号;常见HBA卡的管理程序或者存储厂商的系统软件中所显示和识别的对端信息都是通过FDMI来实现。
² 网络架构登录:(Fabric Login,FLOGI)服务接受和执行来自连接到光纤区域网架构中的节点的登录请求。
光纤通道网络中可能会有很多对象,在运行过程中也会产生很多事件,为了让这些事件不扰乱与此无关的对象时,存储区域网设计的安全性就突显出来了。常见FC SAN的安全手段有分区(zoning)和LUN掩蔽(LUN Masking)。
分区可以将FC网络架构分成较小的子集,以提供更好的安全性并且更容易管理。此外,发生在一个分区的网络架构事件仅影响该分区,其它的分区不会受到类似噪音的干扰。
分区有两种类型,分别是:硬分区和软分区。
一个分区通常包含:名称、端口或WWPN
光纤交换机可以将多个分区定义整合为一个或者多个”分区集”,以配置文件方式呈现,但同一时刻只有一个分区集处于活动状态。下图展示了两个具有不同成员的分区逻辑表示方式。在这个例子中,节点1和节点2只能访问存储阵列中的SPA,而节点3和节点4只能访问存储阵列中的SPB。
图12. FC分区示例1
根据组成分区定义的实体,分区可以分类为软分区或硬分区。
软区分
01
网络架构名称服务允许每个设备查询所有其它设备的地址。软件分区限制网络架构名称分区,使其只显示允许的设备子集。实际上,当软分区的一个成员节点查看网络架构内容时,它只能访问属于该软分区的设备。
软分区中列出的地址如下:
发起方的WWPN
目标方的WWPN
由别名代表的发起方或目标方的WWPN
别名的使用为复杂的WWPN提供了一个描述性的名称,使得SAN管理员更容易选择正确的分区号,从而简化了不同WWPN的识别工作。
如果一个交换机端口故障,将受到影响的节点重新连接到交换机上或者网络架构中的另一个端口,软分区允许该节点重新连接到剩下成员的分区;但是如果成员的HBA卡失效,则替换它需要修改分区的配置,用新的HBA卡的WWPN代替失效的HBA卡。下图是一个软分区的逻辑表示方式,该分区的成员分配是以发起方和目标方的端口WWPN或别名来组成的。
图13. FC软分区示例
硬区分
02
硬分区与软分区的概念类似,不同之处在于,硬分区是以交换机端口作为分区内的成员,代替节点的WWPN。这意味着,连接到给定分区交换机端口的任意节点都可以访问连接到该分区任何端口的设备。将该节点从交换机端口上断开,将不同的节点连接到这个端口,就可以使用后一个了点访问该分区的所有端口,不需要做任何分区修改。下图显示了硬分区的逻辑表示方式。
图13. FC硬分区示例
和多发起方分区
根据包含在分区内的对象,可以分为以下几类:
单发起方分区
01
单发起方——单目标分区:
分区内只包含两个节点,一个为发起方,另一个为目标方。这是最受局限性的类型,它要求更多的管理工作。这类分区的优势是将RSCN局限于单个目标和单个发起方,由于事件来源于分区成员,因此这样的分区方式对于其它发起方的干扰最小,大部分的VMware存储合作伙伴都推荐此类分区方式。
单发起方——多目标分区:
这种分区类型与单发起方单目标分区类似,但是分区中有更多的目标,某些VMware存储合作伙伴推荐这类分区形式。
多发起方分区
02
多发起方分区:这类分区包含多个发起方和多个目标,VMware不建议使用这种分区,因为它将分区中的所有节点都暴露给RSCN,分区中的任何节点都可能产生其他的事件。尽管这在管理上最不费力,但是最容易引起混乱的配置,在生产环境建设时应尽力避免此类分区形式。
基于博科光纤交换机的配置示例:
命令 | 说明 |
alicreate UCS1B4_P1,"20:00:00:25:B5:D1:00:0D" alicreate StorageA_P1,"50:01:24:85:B5:D1:00:0F" | 创建服务器HBA卡和存储A控端口的WWPN别名 |
zonecreate UCS1B4_StorageA_P1,"UCS1B4_P1;StorageA_P1" | 将服务器与存储放在同一个分区,分区名为UCS1B4_StorageA_P1 |
cfgcreate idccfg1,”UCS1B4_StorageA_P1” | 创建一个光纤交换机的配置文件 |
cfgenable idccfg1 | 在交换机上激活以上创建的配置文件 |
存储系统是企业计算系统中的重要组成部分,如果它不可用,上面存储的所有虚拟机或数据都会失效,这对于一个企业的业务来说代价极高。为了避免计划外的停机,我们必须在建设之初就考虑到避免存储系统的单点故障。
我们会在再一篇文章里来具体讲述企业可以如何设计存储系统。