最近接了一个存储项目,客户机房的服务器要连磁盘阵列,方案定了走FC,网上很多教程讲得云里雾里,一个人一个说法,我干脆把整个流程拆开揉碎,从上电到跑满带宽,一步步跟你说清楚,这篇不扯理论,全是能落地的实操。
服务器通过FC接磁盘阵列,核心就四步:插好光纤线、配好HBA卡驱动、划好ZONE(如果走交换机)、存储侧映射LUN,做完这套,再处理多路径和文件系统,基本就通了。
硬件组网:直连还是走FC交换机
动手之前先想清楚拓扑,服务器和存储之间只有两种连法,各有各的适用场景。
直连拓扑:服务器HBA卡直接拉光纤到存储的前端端口,没有中间设备,时延最低,排错也最简单,适合单台服务器或小规模集群,成本上省了一台交换机,不过扩展性受限,一台存储端口就那么多,接不了太多服务器。
交换拓扑:HBA卡先进FC交换机,再统一接到存储,这是绝大多数生产环境的标配,好处很明显:可以接几十台服务器、做冗余链路、动态分配带宽。
接线的时候注意几点:
- 光纤跳线分LC-LC和LC-SC,现在基本全是LC,买之前确认一下接口别买错。
- 区分单模和多模光纤,多模光模块用OM3/OM4跳线,短距离传输,便宜,单模用OS2,传输距离远,但光模块贵不少,机房内部用多模就够。
- 光模块要跟交换机或HBA卡的速率匹配,8Gb、16Gb、32Gb是常见速率,速率向下兼容,但要确保两端噪音一致,别一个8Gb一个32Gb硬插。
接好后看HBA卡和存储前端端口的指示灯,Link灯亮绿基本物理链路就通了,如果灯不亮,先查光模块是不是插反了,再查飞线是不是插到同一台设备的收发端。
HBA卡驱动与固件:先让系统认到卡
物理线接好只是第一步,系统得认得出HBA卡,这一步很多人翻车,直接导致后面全乱套。
装驱动:去HBA卡厂商官网下载对应系统版本的驱动,比如Emulex的卡有专门的驱动包,QLogic的也有,装驱动时把卡上的WWN号记下来,后面划ZONE要用,用lspci | grep -i fibre(Linux)或者设备管理器(Windows)确认卡被正确识别。
刷固件:HBA卡固件版本很关键,尤其是新存储阵列,旧固件可能不兼容,拿到卡先去厂商官网比对固件版本,有更新就刷,刷固件有风险,确保电源稳定,最好接个UPS再刷。
确认链路速率:用厂商工具查看链路协商速率,Emulex的OneCommand Manager、QLogic的QConvergeConsole都能看,如果速率只有8Gb但光模块是16Gb的,大概率是线缆或模块质量问题。
FC交换机划ZONE:存储安全的命门
多台服务器共用一台FC交换机,不打ZONE就等于把所有存储端口裸奔给所有服务器,这是运维大忌。
ZONE的核心逻辑是:谁和谁能互相看到,不划ZONE时,任何一台服务器都能扫到存储上所有LUN,误操作格式化那真是哭都来不及。
划ZONE有两种方式:
- WWN方式:用服务器HBA卡的WWN号加上存储前端口的WWN号组成一个ZONE,这种方式换服务器时只要换卡就要重新划,但最精准。
- 端口方式:用交换机物理端口号来划,服务器接1号口,存储接10号口,那就在1和10之间建ZONE,换服务器不用变配置,但换端口就要改。
操作路径:登录FC交换机管理界面(Web或CLI),进入Zone Administration,创建Zone,把WWN或端口拖进去,然后创建Zone Config并激活,注意一定要点Enable Zone Config,否则配置不生效。
生产环境强烈建议按业务系统把ZONE划分好,每个业务一套ZONE,互不干扰,故障也在可控范围内。
磁盘阵列侧映射:LUN与主机组
存储侧配置同样繁琐,但理解起来并不复杂,先在存储上创建RAID组或存储池,然后在上面划分LUN,接下来就是最关键的主机映射。
以常见存储为例,逻辑是:
- 创建主机,录入服务器的HBA卡WWN号
- 创建主机组,把主机加进去
- 创建LUN组,把LUN放进去
- 建立映射关系,让主机组能看到LUN组
映射关系建好后,服务器侧需要重新扫描总线,Linux上用echo "- - -" > /sys/class/scsi_host/host0/scan,或者直接重启服务器最省事。
给LUN做映射时要注意:一台服务器只映射它需要的那几个LUN,别图省事把所有LUN都丢给一个主机组,多映射一个LUN就多一分误操作风险。
多路径软件:两条链路两条命
物理上做了冗余,一根光纤从服务器连到两台交换机再到存储两个控制器,但如果系统不做多路径,默认只走一条路径,另一条链路纯粹是摆设。
Linux下用device-mapper-multipath,Windows下用MPIO,装好后配置multipath.conf,把存储厂商的配置模板贴进去,服务起来后用multipath -ll查看,能看到两条active路径就证明多路径生效。
配置要点:
- 路径故障切换策略:默认failover就行,负载均衡策略在部分存储上反而会有性能问题
- 超时参数:适当调大path_checker的间隔时间,别太激进
很多运维不知道,多路径配置错误会导致系统重启后识别不到磁盘,排错时先看multipathd -k交互界面,再看journalctl -u multipathd,比自己瞎猜快得多。
服务器连存储有什么好处
搞清楚了怎么接,再说说为什么值得这么折腾,服务器通过FC连磁盘阵列,最直接的好处是存储资源池化和高可用。
以数据库场景为例,单机磁盘再快也受限于服务器本身,接了存储阵列后:
- 数据库文件放在阵列上,扩展容量不用关机,在线扩LUN就行
- 两台服务器可以做双机热备,存储作为共享资源,一台挂了另一台秒级接管
- 通过快照和复制功能做备份,对生产库性能影响几乎为零
行业里有个普遍观点:线上核心业务的数据必须落在共享存储上,这样才能做高可用,数据才能被保护,单机磁盘的数据,服务器一坏全完蛋。
FC组网选型与成本
最后说说怎么选型,这也是很多人在规划阶段纠结的地方。
单台数据库服务器
一套直连方案够用,一块双端口HBA卡,一台入门级双控存储,两根光纤线,成本最低,这类方案适合预算有限、规模不大的场景,具体价格因品牌和配置差异较大,16Gb的HBA卡加一台双控存储整体投入并不高,但得来问清楚,不同城市、不同代理渠道价格相差挺大的。
小型虚拟化集群
三四台物理机跑虚拟化,建议上FC交换机,一台24口交换机,两台存储,每台服务器配双口HBA卡,好处是后续加服务器不用动存储,插上交换机划个ZONE就能用。
核心生产环境
大几十台服务器的规模,建议双交换机组fabric,两台存储做双活,交换机之间做ISL链路,服务器每台配两块HBA卡分别接两台交换机,这套架构基本是金融、政务行业的标配。
选型时很多客户会问服务器连存储有什么好处,顺便打听下服务器通过fc接磁盘阵列价格,这里面的逻辑很清晰:共享存储带来的高可用和数据保护能力,远比硬件本身的成本更有价值,数据库跑在本地磁盘上,一旦硬盘故障,恢复时间用天算,跑在存储阵列上,控制器故障都无感知。
常见问题
问:服务器通过FC接磁盘阵列,速率上不去是怎么回事?
先看链路协商速率是否达标,把HBA卡管理软件调出来,查看每一条链路的速率,如果链路速率正常但IOPS还是上不去,就检查多路径是否真的把两条链路都用上了,最后再查存储侧控制器负载,看是不是热点盘导致性能瓶颈,这几步排查完,绝大多数性能问题都能定位出来。
问:FC组网和iSCSI组网怎么选?
只要是核心业务、数据库或者虚拟化平台,FC是更稳妥的选择,FC的时延更低,稳定性更好,总体运维成本其实更低,iSCSI便宜,走万兆以太网,灵活,但CPU开销稍高且性能波动更大,建议是:业务系统重要性高选FC,非常边缘的业务可以iSCSI,但生产环境别省这点钱。
问:FC交换机ZONE配置错误会导致什么后果?
最典型的是服务器扫不到盘,或者扫描到别的业务系统的盘,服务器扫不到盘还好说,把ZONE改回来就行,万一扫到了别人的盘还初始化了,那损失就大了,所以操作ZONE前务必做好配置备份,改完配置后立即验证。
FC存储这套东西,本身不复杂,但每一步都需要细心,从物理链路到HBA卡驱动,从ZONE到存储映射,哪里断了都连不通,掌握上面这些实操细节,按步骤来,基本一次就能跑通。
接好了之后,日常运维的重点就是看链路健康状态和容量使用趋势,定期更新HBA卡固件,保持ZONE配置的整洁规范,这些都是细致活,但对于维护数据安全很重要,用心做就能保持良好的存储环境。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/793484.html


