简介:这份PDF文档围绕Cisco MDS9148 SAN交换机的初始化与配置展开,适合数据中心存储网络运维工程师以及刚接触MDS系列设备的技术人员。文档从串口控制台首次登录开始,逐一讲解admin管理员密码设置、基础系统配置向导中的选项含义、交换机命名、mgmt0管理接口IP与子网掩码配置、默认网关及高级IP选项、SSH/Telnet和HTTP服务的启停选择、时钟与NTP服务器同步,以及交换机端口默认状态、trunk模式、端口模式F和Zoning区域策略等核心设置项,并对每步常见选项给出推荐值或安全提示,如默认关闭SSH、设置zone policy为deny等。全文采用步骤式讲解,穿插实际命令行输出和Device Manager图形界面操作截图,方便读者对照练习;文末还提到可通过show zone active等命令验证Zoning是否生效。资源为单个PDF文件,压缩包约39KB,内容紧凑,节省下载时间。目前已有1817人学习下载,适合需要快速完成MDS9148初始化配置并对SAN基础配置项建立整体认知的读者,也可作为后续VLAN、FCoE、QoS等高级配置的起点。
1. MDS9148 配置到底难在哪:部署一台 FC 交换机最小要跨过四道坎
存储网络的运维岗,几乎没有人没被 FC 交换机折磨过。Cisco MDS9148 是一台 24 口到 48 口的光纤通道交换机,端口名从 fc1/1 排到 fc1/24 或 fc1/48,管理口叫 mgmt0,登录方式跟普通网络设备差不多。但真正上手配置的时候你会发现,它的思路跟以太网交换机完全不一样:没有 VLAN 只有 VSAN,没有 MAC 地址表只有 FLOGI 名称服务器,端口得显式分到 VSAN 里,Zone 配完还要激活否则一概不生效。这篇文章的目标是把从开机到 Zone 生效的最小路径完整走一遍,覆盖开局串口配置、管理 IP 上线、VSAN 划分、端口初始化、Zone 配置与激活、以及最常见的排查手段,适合第一次接触 MDS 的存储工程师,也适合之前配过但命令忘得差不多的熟手回来查。
2. 开局配置:从串口进 CLI 到管理口上线的完整流程
2.1 通过 console 口进 CLI:终端参数与出厂状态确认
拿到一台 MDS9148,第一步不是接光纤,而是接 console 线。MDS 的 console 口是标准的 RJ45,通常位于设备正面左下角,串口参数固定为 9600 波特率、8 位数据位、无校验、1 位停止位,这跟大多数思科网络设备一致,不需要额外装驱动。
在 Windows 上用 PuTTY 或 SecureCRT 新建一个 Serial 连接,选对 COM 口,把 Speed 设为 9600,流控全部关掉,回车后就能看到switch#提示符。如果回车没反应,大概率是 COM 口选错或者流控没关干净。
# PuTTY 配置参考 # Session -> Serial # Serial line: COM3 # Speed: 9600 # Connection -> Serial -> Flow control: None # 打开会话后直接回车,应该出现 switch# 提示符进入系统后第一件事是确认软件版本和硬件状态。新设备默认没有管理 IP,所有信息只能通过 console 查看。如果这是一台二手设备,还要确认它是否被清过配置,否则后面所有操作都叠在旧配置上,排障时会非常混乱。
switch# show version switch# show inventory # show version 查看系统软件版本、运行时长、序列号 # show inventory 查看各模块:FC端口、电源、风扇,确认硬件在位 # 如果是二手设备,序列号还能用来判断固件兼容范围从这一步开始就要养成的习惯:所有写操作之前,先看一遍当前状态。MDS 的 running-config 默认只存在内存里,一断电就丢,所以配置保存不是可选项。我见过不止一次,设备重启后所有配置全没了,才想起来从来没执行过 copy running-config startup-config。
2.2 配置管理 IP 与默认网关:第一次从 SSH 接管设备
console 口的操作只是开荒阶段。管理 IP 配置好之后,后续所有变更都应该走 SSH。MDS 默认启用 SSH 服务,不需要额外开启。管理口是 mgmt0,一个千兆以太网口,只能配一个 IPv4 地址,这些约束决定了管理网的规划方式。
switch# config t switch(config)# switchname SAN-SW-01 switch(config)# interface mgmt0 switch(config-if)# ip address 10.10.20.31 255.255.255.0 switch(config-if)# no shutdown switch(config-if)# exit switch(config)# ip default-gateway 10.10.20.1 switch(config)# end switch# copy running-config startup-config这段配置的逻辑很直白。switchname改的是设备主机名,改完提示符会跟着变成SAN-SW-01#,这样多台交换机登录时不容易搞混。mgmt0接口配了地址之后要显式no shutdown,虽然出厂默认管理口是启用的,但二手设备很可能被上一家 shutdown 过。ip default-gateway在 MDS 上是全局命令,没有 route 那套概念,管理口配完 IP 必须配网关,否则 SSH 只能在同一网段内访问。
参数说明:管理地址建议规划在独立网段,不要和服务器业务网段混用。MDS 的 mgmt0 不支持多 IP,如果要跨网段管理,就得依靠上联口做带内管理,这属于进阶用法,对新部署来说先把带外管理口配通才是最稳妥的路径。
2.3 基础参数:时区、NTP 与本地账号
基础参数里最容易忽略但影响最大的是时间。FC 交换机日志里大量记录端口抖动、FLOGI 失败、Zone 冲突这类事件,时间不准的话,事后追溯故障时间线会完全对不上。NTP 在所有存储网络设备上都是必配项。
switch(config)# clock timezone CST +8 0 switch(config)# ntp server 10.10.20.5 switch(config)# exit switch# show ntp status # 时区按部署地设置,国内通常是 +8 区 # ntp server 指向内网时间源,不要依赖外网 NTP # show ntp status 显示 clock is synchronized 才算生效如果 show ntp status 一直显示 unsynchronized,先检查管理口到 NTP 服务器的路由是否通,再确认 NTP 服务器本身的时间是否正确。NTP 服务器时间错了,交换机会跟着错,这个坑比不配 NTP 还坑。
用户认证方面,小规模环境不需要上 TACACS+ 或 RADIUS,本地账号就够用了。但出厂默认的 admin 账号没有密码,这是最直接的隐患。只要管理网段路由可达,任何人都能登进设备。
switch(config)# username admin password 0 MyP@ssw0rd switch(config)# username admin role network-admin switch(config)# username ops password 0 Ops@2024 switch(config)# username ops role network-operator switch# copy running-config startup-configrole字段控制权限级别。network-admin是超级管理员,network-operator是只读角色,适合日常巡检。给巡检同事单独建只读账号是存储机房的常规操作,我见过因为共享 admin 账号导致配置被误删的翻车案例,一条 no zone 命令就能让整个业务断掉。
3. VSAN 规划与端口初始化:一台 48 口交换机怎么当八台用
3.1 VSAN 的设计逻辑:为什么 FC 网络需要虚拟化
VSAN 是 MDS 的核心概念,可以理解成 FC 世界的 VLAN。出厂默认所有端口都在 VSAN 1 里,但实际部署中几乎没人用默认 VSAN,因为生产、备份、虚拟化环境需要互相隔离。
常见规划方式是每个业务单元一个 VSAN:VSAN 10 给数据库存储,VSAN 20 给虚拟化平台,VSAN 30 给备份系统。不同 VSAN 之间的设备互相不可见,名称服务器数据库也互相独立,这相当于在一台物理交换机上切出了多台逻辑独立的交换机。
switch# config t switch(config)# vsan database switch(config-vsan-db)# vsan 10 name DB-STORAGE switch(config-vsan-db)# vsan 20 name VIRT-STORAGE switch(config-vsan-db)# vsan 30 name BACKUP-STORAGE switch(config-vsan-db)# end switch# show vsan # 创建 VSAN 必须在 vsan database 模式下操作 # name 字段是标签,便于识别,不影响转发行为 # show vsan 查看 VSAN 编号、名称和成员端口为什么要做 VSAN 隔离而不是把所有设备放在一个大二层里?两个原因:一是故障域。某个 VSAN 里的环路或者异常流量不会影响到其他 VSAN。二是安全管理。存储网络里数据库和备份系统如果互通,数据被拷贝的风险就没法控制,VSAN 隔离是最底层的防线。
VSAN 编号范围是 1 到 4094,其中 1 是默认 VSAN、2 到 4094 可以自定义。和 VLAN 不同的是,MDS 的 VSAN 配置需要进入vsan database模式才能修改,普通的 config 模式下无法直接创建。
3.2 端口模式与速率协商:E、F、FL 的区别在哪里
FC 端口的工作模式决定了它连接的对象。最常见的是 F 口,用于连接服务器 HBA 卡或存储控制器端口,这种模式下交换机负责登录管理。E 口用于交换机之间的级联,两台 MDS 对连时需要把端口配成 E 口或 TE 口。FL 口现在很少用了,对应老的 arbitrated loop 设备。
问题在于 MDS 端口默认是自动模式,系统会自动协商成 F 口或 E 口。自动协商大多数场景下没问题,但如果对端是存储控制器而线序接错、或者对端是另一台交换机而两边配置不一致,链路就会一直起不来。
switch(config)# interface fc1/1 switch(config-if)# switchport mode F switch(config-if)# switchport speed 16000 switch(config-if)# switchport vsan 10 # F 口是终端设备接入的标准模式 # speed 16000 表示强制 16Gbps # 如果对端设备只支持 8G,这里必须改成 8000强制速率是一把双刃剑。如果存储设备和 HBA 卡都是近几年买的,支持 16G 甚至 32G,强制 16G 问题不大。但如果产线里还有老的 4G HBA 卡,强制 16G 会导致协商失败,端口状态显示 speed not supported。
我一般建议全部保持自动协商。FC 交换机的自动协商比以太网成熟得多,链路建立后通过show interface fc1/1就能看到实际的协商速率,不需要手动干预。
switch(config)# interface fc1/1 switch(config-if)# switchport mode F switch(config-if)# switchport vsan 10 # 不写 speed 字段,保持默认自动协商 # 等链路建立后,show interface 查看实际协商速率 # 自动协商失败时,再针对单一端口强制速率3.3 把端口放进 VSAN:端口成员配置的三种方式
VSAN 创建好之后,端口不会自动加入,必须手动分配。MDS 上有三种分配方式:在 interface 模式配置switchport vsan、在 vsan database 里配置 member、以及用 trunk 方式配置多 VSAN。
单端口或端口范围分配是最常用的方式:
switch(config)# interface fc1/1-8 switch(config-if)# switchport mode F switch(config-if)# switchport vsan 10 # fc1/1-8 表示端口范围,一次配置一组端口 # 批量配置强烈建议用范围语法,逐端口配置容易漏 # 配置完成后端口自动归属 VSAN 10另一种分配方式是从 VSAN 侧指定成员端口:
switch(config)# vsan database switch(config-vsan-db)# vsan 10 member fc1/1 switch(config-vsan-db)# vsan 10 member fc1/2 # 在 vsan database 模式下直接绑定端口 # 适合端口和 VSAN 映射关系非常固定的场景 # 如果某个端口需要换 VSAN,需要先把它从原 VSAN 移除第三种方式是 trunk 口。当一条 ISL 链路需要承载多个 VSAN 时,端口必须配置成 TE 模式并允许对应 VSAN 通过:
switch(config)# interface fc1/24 switch(config-if)# switchport mode TE switch(config-if)# switchport trunk allowed vsan 10-20 # TE 模式是 Trunking E,用于交换机级联 # allowed vsan 限制允许通过的 VSAN,避免广播泄漏 # 两侧交换机的 trunk 配置必须一致端口初始化完成后,最后一步是检查端口状态。FC 端口在没插线时显示 down,插线后如果模式不匹配会出现各种异常状态。用show interface看 State 和 Reason 是最快的排障路径。
switch# show interface fc1/1 # 关注 State 字段,up 表示链路正常 # down 时看 Reason:No signal 表示光纤没插好 # Port banned by VSAN 表示端口被 VSAN 配置限制 # Speed not supported 表示速率为强制配置且不匹配4. Zone 配置:存储网络落地的核心操作
4.1 基于 WWPN 的单对单 Zone:为什么不用端口号
FC 存储网络里,服务器能不能看到存储磁盘,完全取决于 Zone 配置。Zone 定义了哪些 WWPN 之间可以互相通信。生产环境的推荐做法是单服务器 HBA 对单存储控制器端口的一对一 Zone,这是最安全也最好排障的配置。
switch(config)# zone name ZONE_X_HOST1_DB1 vsan 10 switch(config-zone)# member pwwn 10:00:00:05:1e:aa:bb:cc switch(config-zone)# member pwwn 50:00:0e:1d:ab:cd:ef:01 switch(config-zone)# exit # 第一个 pwwn 是服务器 HBA 卡的 WWPN # 第二个 pwwn 是存储阵列控制器端口的 WWPN # Zone 成员只能写 WWPN,不能写端口号为什么不推荐用端口号做 Zone 成员?因为端口号是物理概念,换了线、换了交换机端口,Zone 就失效了。WWPN 是 HBA 卡的固化标识,类似以太网的 MAC 地址,只要不换卡就不会变。一个 Zone 里如果有多个服务器或者多个存储端口,广播域变大,排障时很难确定是谁在跟谁通信。
4.2 device-alias:用可读名字替代十六进制 WWPN
直接写 WWPN 的最大痛点是可读性。一长串十六进制数字,时间长了根本记不清哪个对应哪台服务器、哪个存储端口。MDS 的 device-alias 机制解决了这个问题,给每个 WWPN 起一个可读的名字,之后 Zone 配置直接用名字。
switch(config)# device-alias database switch(config-device-alias)# device-alias name HBA_HOST1 pwwn 10:00:00:05:1e:aa:bb:cc switch(config-device-alias)# device-alias name CTL_DB1_PORT1 pwwn 50:00:0e:1d:ab:cd:ef:01 switch(config-device-alias)# device-alias commit # device-alias 修改后必须 commit,否则只保存在临时状态 # commit 之前可以用 no device-alias name 撤销 # commit 之后别名正式生效,但还需要保存配置commit是一个容易忽略的关键动作。如果只输入 device-alias 但没 commit,别名虽然显示了,但不会生效。配置完成后用show device-alias database验证,确认两个别名都在且 WWPN 无误。
有了别名之后,Zone 配置就变成了这样:
switch(config)# zone name ZONE_X_HOST1_DB1 vsan 10 switch(config-zone)# member device-alias HBA_HOST1 switch(config-zone)# member device-alias CTL_DB1_PORT1 # 用别名代替裸 WWPN # 可读性大幅提升,排障时一眼看出哪端是服务器、哪端是存储 # 注意:别名必须在 device-alias 数据库里 commit 过,否则报错4.3 Zone set 激活:配置了但不激活等于零
Zone 配置完成后,还有一个最关键的最后一步:把 Zone 加进 Zone set,然后激活 Zone set。这一步是新手踩坑重灾区,很多 Zone 配完主机还是看不到盘,原因就是没激活。
switch(config)# zoneset name ZS_PROD_VSAN10 vsan 10 switch(config-zoneset)# member ZONE_X_HOST1_DB1 switch(config-zoneset)# member ZONE_X_HOST2_DB2 switch(config-zoneset)# exit switch(config)# zoneset activate name ZS_PROD_VSAN10 vsan 10 # 一个 VSAN 只能激活一个 zoneset # 激活操作会中断该 VSAN 下的所有已建立连接 # 生产环境做激活前必须确认变更窗口激活为什么会导致连接中断?因为 Zone 变化会触发 RSCN,所有涉及该 VSAN 的设备都会重新注册和登录,服务器的 HBA 会重新扫描,存储控制器的端口也会重新协商。这个过程通常是秒级的,但对生产环境影响很大,所以任何 Zone 变更都要按变更流程走,不能直接在生产上改。
激活后必须验证,否则不知道是否真正生效:
switch# show zoneset active vsan 10 switch# show zone status vsan 10 # show zoneset active 查看当前 VSAN 生效的 Zone 列表 # show zone status 查看 zoneset 状态,ACTIVE 表示已生效 # 如果状态是 EMPTY,说明激活没有成功最后一步是保存。MDS 保存的是 running-config,包括激活状态。如果不保存,重启后 Zone 配置还在但激活状态丢失,需要重新激活。
5. 避坑与排查:MDS9148 部署中最常见的 5 类问题
5.1 端口配好但链路起不来
现象是最直接的:show interface fc1/1看到 State 是 down,Reason 显示 No signal或 Speed not supported。原因是光纤线没插好、对端设备关机、或者端口速率被强制成对端不支持的值。
解决思路按顺序来:先检查物理线路,再看对端设备状态,最后检查速率配置。如果是自动协商仍然失败,把端口速率强制到对端支持的最低档再试。我处理过一个案例,存储控制器只支持 8G,交换机端口自动协商一直失败,强制改成 8000 后立刻 up,问题就出在线缆质量导致协商帧丢失。
5.2 Zone 配了但主机看不到磁盘
现象是最经典的:服务器发起 HBA 扫描,磁盘列表为空,但物理链路都是 up。原因通常是三个:Zone set 没激活、WWPN 写错、设备不在同一个 VSAN。
排障顺序应该是先看登录状态,再看 Zone 状态,最后看成员关系。
switch# show flogi database vsan 10 # 查看该 VSAN 下所有已登录设备的 WWPN # 服务器 HBA 和存储端口都出现在列表里,说明链路正常 # 如果缺了某个 WWPN,说明那个设备没有完成登录 switch# show zoneset active vsan 10 # 确认 Zone set 处于 ACTIVE 状态 # 如果显示为空,说明激活失败如果 FLOGI 列表里服务器和存储都在,但 Zone 里成员不匹配,那问题就是 WWPN 写错了。用show zone查看每个 Zone 的成员,然后和 HBA 卡、存储端口的实际 WWPN 比对。
5.3 交换机重启后配置全部丢失
现象:设备掉电重启后,所有 VSAN、Zone 配置全部回到出厂状态。原因只有一个——从来没执行过copy running-config startup-config。
MDS 的配置保存不是自动的,这是它和现代操作系统最大的区别。出厂状态下 running-config 在内存里,startup-config 是出厂默认。所有配置操作完成后,必须手动保存:
switch# copy running-config startup-config # 保存当前配置到启动配置文件 # 设备重启后会自动加载 startup-config # 良好的习惯是每次变更完成后立即保存这里有一个隐患:如果只保存不验证,可能保存的是一个坏配置。保存前用show running-config完整看一眼,确认 VSAN、Zone、zoneset 都在。
5.4 级联端口配错导致 fabric 振荡
现象:两台 MDS 级联后,fabric 里的设备时通时断,日志里大量端口抖动。原因通常是 ISL 两端配置不一致,或者一边是 E 口一边是 TE 口。
MDS 级联推荐用 TE 口并开启 trunking,一条 ISL 可以承载多个 VSAN。如果只是一个 VSAN,E 口也够用,但两端必须一致。检查级联端口状态用show interface fc1/24,State 显示 trunking 才算正常,如果显示 down 或者 isolated,需要比对两端的 VSAN 允许列表和端口模式。
5.5 固件升级后 device-alias 丢失
现象:升级 MDS 固件后,zone 配置还在但 device-alias 全部失效,Zone 成员变成裸 WWPN。原因是升级前没有导出 device-alias 数据库,版本跨度大时数据库格式可能不兼容。
解决方式是在升级前做完整备份:
switch# show device-alias database | redirect bootflash:///device-alias-backup.txt # 把别名库导出到 bootflash # 升级后如果别名丢失,用 device-alias import 命令恢复 # import 之后还需要 commit 和保存配置这个问题给我们的教训是:任何固件升级或维护窗口之前,必须做配置备份。MDS 的完整备份不只是 copy running-config,还包括 device-alias、zoneset 配置。运维规范应该把配置备份列为变更前置条件,而不是事后补救。
6. 验证与进阶:用 fcping 和 RSCN 日志确认链路与 Zone 真正可用
最后一章分享一个我每次变更后必做的验证方法,和一个进阶排障技巧,这两个习惯让我在存储网络故障处理上少走了很多弯路。
fcping 是 MDS 自带的诊断命令,它跟以太网的 ICMP ping 不同,是直接发送 FC 的 ELS 帧,可以从交换机侧验证到某个 WWPN 的 FC 路径是否可达。
switch# fcping vsan 10 pwwn 50:00:0e:1d:ab:cd:ef:01 # 从交换机向存储控制器端口发起 FC ping # 返回 success 说明 FC 路径可达 # 返回 timeout 说明路径有问题,需要进一步排查这个命令在 Zone 配置完成后的验证非常有用。主机能看到磁盘不代表交换机到存储路径最优,fcping 能验证交换机级别的转发能力。如果主机 IO 慢,先用 fcping 确认交换机到存储的路径正常,再排查上层链路。
进阶用法是指定端口发起 ping,专门用来验证某条物理链路:
switch# fcping vsan 10 interface fc1/1 # 从指定端口发起 FC ping # 输出显示 28 bytes from 10:00:00:05:1e:aa:bb:cc 说明端口到对端可达 # 适合单端口异常的场景另一个关键验证手段是看 RSCN 日志。Zone 激活、设备上下线都会产生 RSCN 事件,查看日志可以还原整个故障时间线:
switch# show logging logfile # 查看交换机日志,关注端口状态变化和 RSCN 事件 # 日志里记录了设备登录和注销的时间点 # 结合服务器和存储日志,可以准确定位故障发生时间我的一个收尾习惯是:每次变更结束后,把 running-config 完整拉一份存档,命名格式是日期加变更单号。MDS 存储网络平时不出问题,一出问题就是大事故,有配置留底,回滚才有后悔药。配置备份文件应该单独存放,不能只放交换机本地,因为交换机故障时 bootflash 也可能损坏。
希望帮到你。MDS9148 配置不复杂,按 VSAN → 端口 → Zone → 激活 → 保存这个顺序走,命令一条一条写清楚,基本不会翻车。
本文还有配套的精品资源,点击获取