简介:针对SAN存储网络中的光纤交换机配置需求,这份PDF整理文档面向存储网络管理员、系统工程师及数据中心运维人员,重点解决ZONE规划混乱、端口未激活、配置信息难以收集等实际痛点。资源仅包含1个PDF文件,压缩包大小约1.74MB,内容紧凑,适合作为快速查阅和实操对照的手册。文档系统地介绍了SAN结构存储区域(ZONE)的规划原则,并分别演示了通过CLI命令与图形化界面两种方式进行Zoning,同时涵盖激活端口、收集总体信息与Zone配置信息等常用操作。文中还结合具体项目环境,给出以一块HBA卡对应一个控制器的ZONE划分原则、配置命令和校验步骤,对于降低SAN网络部署风险、提升日常运维与排障效率有较高的参考价值。目前已有207人学习下载,值得中高级存储技术人员借鉴。
1. 光纤交换机配置,到底在调什么
数据库集群切换失败,存储团队查了两个小时,最后发现是光纤交换机上一个 Zone 没被激活。这类事故在 SAN 环境里比物理故障常见得多:线缆光模块都正常,命令也「敲进去了」,但配置存的是定义区还是生效区、有没有真正保存到 flash,结果完全不同。
光纤交换机配置的核心对象不是 IP 路由,而是 FC 协议下的端口角色、WWN 标识和 Zone 数据库。它解决的是「服务器 HBA 与存储控制器端口之间,谁允许和谁通信」的问题,配错的后果往往不是慢,而是直接不可达,报错看起来像光链路故障,实际是配置层面的问题。
下面按一线排障顺序展开:先立概念、对比两种主流 CLI,再带命令做初始化,拆开 Zoning 下发流程,最后落排错命令链和备份固件清单。存储、数据库、主机运维以及需要和存储团队对接的网络工程师,都能顺着这套命令集在一台测试交换机上完整复现。
2. 配置光纤交换机之前必须理清的 FC 基础
把命令记住不难,真正让配置出错的是对 FC 协议对象理解含糊:WWN 改一位就失效、端口角色反了交换机不给你 login、Zone 定义和生效是两套数据。这一章先把这些概念钉死,后面的命令才有地方落。
2.1 端口角色、WWN 与 Domain ID:光纤交换机配置的操作对象
FC 网络里的设备分三类角色:服务器或存储阵列上的端口叫 N_Port;光纤交换机面向主机和存储的端口叫 F_Port,面向另一台交换机的端口叫 E_Port,多条 E_Port 聚合后构成 ISL Trunk。配置命令里的 port 指的就是交换机的物理口,F/E 角色决定了对端会话怎么建立:F_Port 上执行 fabric login(FLOGI),E_Port 上执行交换链路初始化(ELP/ESC)。常见的误判是「插上就有」,但角色不对时端口状态能到 Online,协议状态却不起来。
WWN 是 8 字节、冒号分隔的十六进制标识,平时看到的是 WWPN(端口级)和 WWNN(节点级)。经验判断可以直接用:多数服务器 HBA 的 WWPN 从 10:00 或 21:00 开头,存储阵列控制器端口从 50:00 或 50:06 开头。Zoning 里配的是 WWPN 而不是 IP,这是它和以太网配置最不同的地方。另一个要理解的是 Domain ID(1-239),它决定交换机在 fabric 里的身份,也参与 FCID 的生成。两台交换机直接对接时 Domain ID 冲突,fabric 会拒绝 merge,这是「交换机对接交换机」起不来最常见的原因之一。
2.2 两种主流的 CLI 命令对照:FOS 与 MDS
国内存量环境里最常见的是博科系 FOS 和思科 MDS 的 NX-OS,两个体系配置思路一致,命令动词差异很大。FOS 的特点是有一堆独立的命令,比如 alicreate、zonecreate、cfgenable;MDS 走的是思科风格的 config 模式,zone 配置在配置模式下逐行输入。下面这张对照表按操作目的给,记住「目的」这一列,具体命令可以现场查。
| 操作目的 | FOS 命令 | MDS 命令 |
|---|---|---|
| 查看交换机与端口状态 | switchshow | show interface |
| 查看 fabric 内所有交换机 | fabricshow | show fabric / show fcdomain |
| 查看设备注册表 | nsshow | show fcns database |
| 创建 zone | zonecreate | zone name + member |
| 创建配置集并激活 | cfgcreate + cfgenable | zoneset name + zoneset activate |
| 查看 zone 配置 | cfgshow | show zoneset / show zone |
两条命令体系在细节上有差异:FOS 的 Zone 配置有「定义、激活、保存」三个动作,MDS 的 zoneset activate 把定义和激活合并成一步,但它没有独立的保存动作,重启后是否保留取决于有没有执行 copy running-config startup-config。下面小节说的两段式逻辑主要针对 FOS,MDS 工程师理解后也能平移。
2.3 两段式 Zone 数据库:定义区与生效区
光纤交换机配置里最容易被忽视的是 Zone 数据库内部有 defined config 和 effective config 两份数据。定义区反映你「想做成什么样」,生效区才是交换机转发和 name server 实际使用的规则。cfgenable 把定义区内容复制为生效区,cfgsave 把它写进 flash;只敲了 zonecreate 不 enable,主机什么都访问不了;enable 了不 save,重启后回到旧配置。
另一层是 hard zoning 与 soft zoning 的区别。支持硬件隔离的机型上,zone 由 ASIC 在转发时强制过滤,而不是只在 name server 查询阶段过滤,这才是常说的高安全性硬分区。调试时不要用「看不到对方就不通」来反推配置,因为不同平台默认机制不同。下面这段 switchshow 的部分输出能同时看到端口角色和登录设备的 WWPN,是把概念落到实处的第一张图:
Port Address Media Speed State Proto =============================================== 0 010f00 id 8G Online F-Port 10:00:00:00:c9:2f:3a:01 8 011000 id 8G Online E-Port第 0 口是 F_Port,登录端 WWPN 显示在端口行下面;第 8 口是 E_Port,说明这台交换机和另一台交换机之间有 ISL。配置落点先分清这两类端口,才不至于把 fabric login 失败当成普通链路故障。
3. 光纤交换机初始化配置:从连串口到建 ISL 链路
这一章走的是一个空交换机最少要完成的流程:登录、看状态、改基础参数、检查端口链路。任何一个环节做错,后面 Zoning 配得再漂亮都不会生效。
3.1 登录后的第一组 show 命令:确认光纤交换机当前状态
拿到交换机以后,第一件事不是找业务配置,而是回答三个问题:固件版本、端口拓扑、fabric 里还有谁。串口线或 SSH 登进去之后,依次执行下面三条:
switchadmin@FC_SW1> version switchadmin@FC_SW1> switchshow switchadmin@FC_SW1> fabricshowversion返回机型、序列号和固件版本,升级前必须核对这里。switchshow是日常使用频率最高的命令,一次输出包含 Switch ID(Domain 号)、交换机运行状态,以及每个端口的媒体类型、协商速率、FC 协议状态和登录的 WWPN。fabricshow列出 fabric 里每台交换机的 domain、IP 和运行状态,用来确认 merge 是否成功。
参数上要养成两个习惯:一是 State 和 Proto 同时看,State 是物理层状态,Proto 是协议层状态,F_Port 下 Proto 才是 Online 表示 FLOGI 已完成;二是对输出里的 WWPN 保持敏感,记不住可以用nsshow交叉比对。新交换机出厂默认管理 IP 在机身标签上,多数为 10.77.77.77/24,用ipaddrset修改管理地址后要 ping 一下确认可达再继续。
3.2 改名、Domain ID 与时间同步:影响排障的接口配置
交换机名、Domain ID、时钟三项看起来基础得不用讲,实际排障时最拖时间。交换机名出现在 switchshow 和其他命令的所有输出里,两台交换机的名字都叫 switch 时,fabricshow 的输出没有任何区分度;时钟不对则日志时间戳全部错位,事后对不上故障时间点。下面一组命令演示标准做法:
FC_SW1:admin> switchname FC_STOR_A FC_STOR_A:admin> configure Fabric parameters (yes, y, no, n) [no]: y Domain (1..239) [1]: 2 FC_STOR_A:admin> tsclockserver "192.168.10.10" FC_STOR_A:admin> uptimeswitchname立即生效,不需要重启。configure是交互式命令,进入 Fabric parameters 后修改 Domain。改 Domain 前要确认 fabric 内没有其他交换机占用该 ID,否则 merge 失败;域内有多台交换机时,建议在维护窗口内逐台修改。tsclockserver后面跟 NTP 服务器地址,IPv4 地址建议加双引号。uptime看的是本次启动时长,运维交接时用它对「有没有人偷偷重启过」很有用。
3.3 端口模式、速率与 ISL 对接:交换机对接交换机的配置点
把主机和存储的线缆接上之后,回到switchshow看端口是否以预期模式 up。F_Port 面向服务器和阵列,E_Port 面向交换机,大多数情况下端口会自动协商角色,但速率需要人为确认。用portcfgspeed固定端口速率可以避免反复协商:
FC_STOR_A:admin> portcfgspeed 0/16 8 FC_STOR_A:admin> portcfgpersistentenable 0/16 FC_STOR_A:admin> switchshow不同机型的portcfgspeed语法有差异,敲命令前先用portcfgspeed --help确认当前固件的参数格式。速率命令背后有两个要点:一是交换机与对端必须在公共速率上达成一致,两端口跨代时自动协商很容易失败,表现为端口在 No_Sync 和 Online 之间抖动;二是部分机型在命令末尾加 lock 参数可以把速率固定住,防止链路 flap 时重新协商。第三行的portcfgpersistentenable确保端口在交换机重启后保持启用状态,很多「重启后端口不见了」的案例,就是只用了临时 enable 而没做持久化。
「交换机对接交换机」时,ISL 的配置重点在长距离和聚合两层:单条 E_Port 只解决连通,多条 E_Port 需要配置 trunking(FOS 里基于端口索引自动感知,MDS 里称为 port-channel)来提升带宽和故障收敛速度。这个概念和以太网的 Eth-Trunk/LACP 相似,但 FC trunk 没有 LACP 报文交互,而是靠 ELP 交换交换机的域信息,两端参数不一致时不会协商出 trunk,只会退化成多条独立 ISL。对接完成后用trunkshow查看 trunk 是否建立,比盯着 switchshow 更直观。
| switchshow 状态 | 含义 | 常见原因 |
|---|---|---|
| Online | 链路建立,协议正常 | 正常状态 |
| No_Light | 端口收不到光 | 线缆松动、光模块故障、对端端口未启用 |
| No_Sync | 收到光但无法同步 | 速率协商不一致、跨代光模块兼容问题 |
| Mod_Inv | 光模块不被识别 | 非原厂或损坏模块、厂商锁定 |
4. 光纤交换机 Zoning 实战:别名、Zone 与有效配置下发
Zoning 是光纤交换机配置里改动最频繁、事故率最高的部分。它决定主机 HBA 能看到存储阵列的哪些端口,也决定了多路径软件能不能正常工作。这一章按「别名 → Zone → 配置集 → 激活 → 验证」的顺序走完整条链。
4.1 用别名管理 WWPN:别在 Zone 里直接写十六进制
很多新手喜欢直接拿 WWPN 塞进 zone,等配置了几十个 zone 之后,日志里出现一个 WWPN 根本不知道对应哪台主机,排障时只能对着十六进制字符串猜。标准做法是先把 WWPN 收敛成语义化的别名:
FC_STOR_A:admin> alicreate "hba_app1", "10:00:00:00:c9:2f:3a:01" FC_STOR_A:admin> aliadd "hba_app1", "10:00:00:00:c9:2f:3a:02" FC_STOR_A:admin> alicreate "storage_ctrl0", "50:06:01:60:3f:0a:01:01" FC_STOR_A:admin> alishowalicreate的别名建议用「角色_主机名_序号」的命名方式。第二行的aliadd给同一个别名追加第二个 WWPN,适合把双口 HBA 的两个端口都收进一个别名。别名不参与 ASIC 的转发过滤,它只是 Zone 成员的逻辑符号,所以可以放心用它组织命名。alishow不带参数列出全部别名,带别名名则只查那一个。收集 WWPN 最常见的方式是nsshow,或者从主机侧工具读取 HBA 卡属性,存储阵列控制器的 WWPN 一般在存储管理界面里直接能看到。
4.2 创建 Zone 并激活:光纤交换机配置里最常出错的四条命令
Zone 的成员是别名或 WWPN,多个成员用分号分隔;Zone 必须先加入配置集(Configuration),再执行cfgenable,最后cfgsave,四步缺一不可。下面是一台双口 HBA 主机访问存储控制器端口的标准最小配置:
FC_STOR_A:admin> zonecreate "za_app1_ctrl0", "hba_app1; storage_ctrl0" # 定义 zone 成员 FC_STOR_A:admin> cfgcreate "cfg_online", "za_app1_ctrl0" # 把 zone 加入配置集 FC_STOR_A:admin> cfgenable "cfg_online" # 切换为生效配置 FC_STOR_A:admin> cfgsave # 持久化到 flash FC_STOR_A:admin> cfgshow # 验证 defined 与 effectivezonecreate里成员顺序可以随意,但建议把主机别名放在前面,便于日志审计时快速识别访问方向。cfgcreate创建的配置集是定义态,cfgenable之后进入生效态,cfgsave才做持久化。四条命令里最容易漏的是最后一条cfgsave:实验室环境重启一次无感,生产交换机一旦重启,未保存的 zone 全部回到 enable 之前的状态。
注意:如果现场多人同时改了 zone,执行
cfgenable前先cfgshow确认当前定义区内容,防止把别人的修改一起带进生效区。
MDS 平台的等价做法是进配置模式逐条输入:
switch(config)# zone name za_app1_ctrl0 switch(config-zone)# member pwwn 10:00:00:00:c9:2f:3a:01 switch(config)# zoneset name cfg_online switch(config-zoneset)# member za_app1_ctrl0 switch(config)# zoneset activate name cfg_onlineMDS 的member直接写 WWPN 时必须带pwwn前缀,写别名则直接写别名。zoneset activate立即生效,但它没有独立的保存步骤,重启后是否保留取决于有没有执行copy running-config startup-config。双活场景的 zone 设计通常是「一块双口 HBA 的两个 WWPN 加阵列两个控制器端口」放进同一个 zone,单链路故障时多路径软件可以无缝切换。每个 zone 的成员控制在 2 到 8 个以内,成员膨胀会让 zone 失去隔离意义。
4.3 配置验证、回滚与双机一致性:让配置可审计
配置下发后必须验证,验证不是看一眼没有红字,而是把定义和生效两段对比一遍。cfgshow会分两段显示 defined 和 effective config,要确认当前生效的配置集名字和预期一致;zoneshow "zone名"查看单个 zone 的成员明细。改错场景下,如果只是未保存的状态,可以用cfgtransabort放弃本次事务;如果已经 enable 并且引入了错误 zone,回滚思路是重建旧配置集重新 enable,而不是直接用cfgdisable:
FC_STOR_A:admin> cfgshow FC_STOR_A:admin> zoneshow "za_app1_ctrl0" FC_STOR_A:admin> cfgtransabortcfgtransabort只在 zone 数据库被事务锁占用时有用,它相当于放弃未提交的修改,适合多人同时维护交换机的场景。cfgdisable则是把整个 zoning 关闭,所有端口互相可见,生产环境下等于裸奔,除非明确知道自己在做什么,否则不要用。两台交换机组成的双机环境里,zone 数据库会通过 fabric 自动同步,改 zone 时只需在一台上执行,但要注意维护前对两台交换机各做一次cfgshow存档,防止 merge 时把历史遗留 zone 一起带进来。
| 命令 | 作用 | 注意点 |
|---|---|---|
| alicreate / aliadd / alidelete | 管理别名成员 | 别名改名要先从 zone 里移除旧名 |
| zonecreate / zoneadd | 创建、扩充 zone | 成员以分号分隔,别名或 WWPN 均可 |
| cfgcreate / cfgadd | 创建配置集、加入 zone | 一个 zone 可加入多个配置集 |
| cfgenable / cfgdisable | 切换生效配置 | cfgdisable 会让所有端口互通 |
| cfgsave | 保存到 flash | 漏掉它,重启丢配置 |
| cfgtransabort | 放弃未提交事务 | 有人占着事务锁时用它清理 |
5. 端口起不来与应用异常时的排错命令链
配置完成不等于链路可用。主机报「无法访问存储」时,按物理层 → 协议层 → zone 层的顺序查,不要一上来就猜配置。下面这组命令链大部分情况下一轮就能定位。
5.1 用 switchshow 和 porterrshow 先读光纤交换机的状态和计数
FC_STOR_A:admin> switchshow FC_STOR_A:admin> porterrshow FC_STOR_A:admin> errshowswitchshow看当前状态,porterrshow看历史累计错误计数,两者配合能区分「一直就没通」和「通了之后又断」。porterrshow输出里 CRC 错误多指向光模块或线缆质量,Link Failures 高说明物理链路反复 down/up,Signal Loss 和 Sync Loss 则要回到速率协商和连接器清洁度去查。errshow显示交换机自身的错误日志,能看到带时间戳的事件记录,这时候基础配置里同步的时钟就派上用场了。
| 计数器 | 含义 | 排查方向 |
|---|---|---|
| CRC Err | 帧校验错误 | 光模块收发功率、线缆长度与弯曲半径 |
| Link Failures | 链路复位次数 | 对端端口重启、电源闪断 |
| Sync Loss | 同步丢失 | 速率不一致、跨代兼容、长距离光预算不足 |
| Signal Loss | 信号丢失 | 收光异常、线缆与光模块故障 |
5.2 用 nsshow 验证设备是否注册进光纤交换机 fabric
物理层没问题但业务不通时,下一步确认设备的 WWPN 是否成功完成 fabric login。nsshow列出 FC name server 数据库里的全部登录设备,比对主机 HBA 和存储端口的 WWPN 是否都在其中:
FC_STOR_A:admin> nsshow FC_STOR_A:admin> fcping 0x011a00nsshow输出里能看到 WWPN、WWNN 和 FCID。注意 FCID 前两位十六进制换算成十进制就是 Domain ID,0x011a00 表示 Domain 1 上的设备。fcping是部分 FOS 版本提供的 FC 层连通性工具,参数是目标 FCID,它通过 fabric 向目标发起测试,目标不在同一个 zone 里时通常不通,所以也能反向验证 zone 边界。如果nsshow里根本没有主机 WWPN,问题在链路或 HBA 驱动;如果有但互通失败,问题在 zone 成员关系;两个都有还不通,才需要看多路径软件和存储侧配置。没有 fcping 的机型,改用portlogdump导出发端口的日志,看 PLOGI 是否被交换机接受。
5.3 三处最容易被忽略的配置现场
第一处:固定速率没加 lock。端口刚起来时正常,环境温度变化或对端插拔后重新协商失败,现象是 No_Sync 抖动,解决是用portcfgspeed加 lock 固定。第二处:zone 配了但没 save。业务高峰期交换机意外重启后部分主机掉线,原因就是 cfgenable 后忘了 cfgsave,恢复流程是重新 enable 正确配置集并保存。第三处:双机 zone 库两侧不一致。一台交换机离线维护期间另一台新增了 zone,重新对接时 merge 把两边配置合并,可能出现重复 zone 或意外的互通关系,解决是维护前对两台交换机各做一次cfgshow存档,对接后再完整核对一遍。
6. 收尾动作:配置备份与固件升级的落地清单
6.1 configupload 备份与 configdownload 恢复
把跑通的交换机配置固化下来,靠的不是截图,而是 configupload。它会备份交换机配置和 zone 数据库,但不会备份固件与 license。推荐的命令写法:
FC_STOR_A:admin> configupload -p ftp -h 192.168.10.2 \ -u sanbackup -pw 'Xx#2024' -f fc_stor_a_cfg_20240115.txt FC_STOR_A:admin> configdownload -p ftp -h 192.168.10.2 \ -u sanbackup -pw 'Xx#2024' -f fc_stor_a_cfg_20240115.txt-p指定传输协议(ftp、scp 等),-h是文件服务器地址,-f是备份文件名,注意密码参数在脚本里会出现在进程列表,落脚本时要改成运行时输入或密钥方式。恢复操作的坑在于目标交换机的 WWN 等身份信息也会被覆盖,所以只应在同一台交换机或厂商确认的替代设备上执行,并且先switchdisable再下载。
提示:备份文件建议按「每次 zone 变更后、固件升级前」各存一份,文件名带日期,和变更记录放一起。
6.2 固件升级前后的检查清单
升级前先跑firmwareshow确认当前版本和可用版本,用fabricshow检查所有交换机状态是 Online 且无告警,然后做一次 configupload。升级过程中不要同时做 zone 变更,不要拔管理网线。升级完成后,第一件事不是看版本号,而是跑一遍switchshow核对所有业务端口状态,再用nsshow确认关键设备重新注册,和升级前的记录比对设备数量,少了任何一台都说明注册被重置且没有自动恢复。确认无误后补一次 configupload,让固件和配置归档保持同一时间点。
本文还有配套的精品资源,点击获取