![修复光纤 fc_host 端口状态“Linkdown”](https://linux22.com/image/939196/%E4%BF%AE%E5%A4%8D%E5%85%89%E7%BA%A4%20fc_host%20%E7%AB%AF%E5%8F%A3%E7%8A%B6%E6%80%81%E2%80%9CLinkdown%E2%80%9D.png)
我有两台旧服务器。它们已启动并运行 Ubuntu 20.04 LTS。现在我想将 HP 1040 SAN 存储连接到它。存储似乎不支持 TCP 网络上的 ISCSI,因此我尝试通过光纤连接。但服务器的 HBA 光纤端口似乎处于离线状态:
命令:
more /sys/class/fc_host/host?/port_state
结果:
::::::::::::::
/sys/class/fc_host/host3/port_state
::::::::::::::
Linkdown
::::::::::::::
/sys/class/fc_host/host4/port_state
::::::::::::::
Linkdown
它们已连接到存储设备,我多次切换端口。驱动程序在那里,似乎正在工作(系统报告如下)。我不知道它们为什么会关闭。我看到有些人有 QLogic 适配器的驱动程序:qla2xxx。我应该更改驱动程序吗?如果是,该怎么做?
我如何“激活” FC 连接?
问候 Ari
有关 HBA 的信息:
命令:
sudo lspci -v
结果:
0e:00.0 Fibre Channel: Cavium QLogic 425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA (rev 01)
Subsystem: Hewlett-Packard Company 82B 8Gbps dual port FC HBA
Physical Slot: 3
Flags: bus master, fast devsel, latency 0, IRQ 54
Memory at fbfe0000 (64-bit, non-prefetchable) [size=128K]
Memory at fbfd0000 (64-bit, non-prefetchable) [size=16K]
Expansion ROM at fbf00000 [virtual] [disabled] [size=512K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI-X: Enable+ Count=24 Masked-
Capabilities: [60] Express Endpoint, MSI 1e
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [180] Power Budgeting <?>
Kernel driver in use: bfa
Kernel modules: bfa
0e:00.1 Fibre Channel: Cavium QLogic 425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA (rev 01)
Subsystem: Hewlett-Packard Company 82B 8Gbps dual port FC HBA
Physical Slot: 3
Flags: bus master, fast devsel, latency 0, IRQ 68
Memory at fbfa0000 (64-bit, non-prefetchable) [size=128K]
Memory at fbf90000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI-X: Enable+ Count=24 Masked-
Capabilities: [60] Express Endpoint, MSI 1f
Capabilities: [100] Advanced Error Reporting
Capabilities: [180] Power Budgeting <?>
Kernel driver in use: bfa
Kernel modules: bfa
命令:
sudo systool -c fc_host -v
结果:
Class Device = "host3"
Class Device path = "/sys/devices/pci0000:00/0000:00:07.0/0000:0e:00.0/host3/fc_host/host3"
active_fc4s = "0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 "
dev_loss_tmo = "60"
fabric_name = "0x0"
issue_lip = <store method only>
max_npiv_vports = "255"
maxframe_size = "0 bytes"
node_name = "0x20000024ff887dde"
npiv_vports_inuse = "0"
port_id = "0x000000"
port_name = "0x21000024ff887dde"
port_state = "Linkdown"
port_type = "Unknown"
speed = "unknown"
supported_classes = "Class 3"
supported_fc4s = "0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 "
supported_speeds = "2 Gbit, 4 Gbit, 8 Gbit"
symbolic_name = "QLogic-825 | 3.2.25.1 | | | "
tgtid_bind_type = "wwpn (World Wide Port Name)"
uevent =
vport_create = <store method only>
vport_delete = <store method only>
Device = "host3"
Device path = "/sys/devices/pci0000:00/0000:00:07.0/0000:0e:00.0/host3"
uevent = "DEVTYPE=scsi_host"
Class Device = "host4"
Class Device path = "/sys/devices/pci0000:00/0000:00:07.0/0000:0e:00.1/host4/fc_host/host4"
active_fc4s = "0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 "
dev_loss_tmo = "60"
fabric_name = "0x0"
issue_lip = <store method only>
max_npiv_vports = "255"
maxframe_size = "0 bytes"
node_name = "0x20000024ff887ddf"
npiv_vports_inuse = "0"
port_id = "0x000000"
port_name = "0x21000024ff887ddf"
port_state = "Linkdown"
port_type = "Unknown"
speed = "unknown"
supported_classes = "Class 3"
supported_fc4s = "0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 "
supported_speeds = "2 Gbit, 4 Gbit, 8 Gbit"
symbolic_name = "QLogic-825 | 3.2.25.1 | | | "
tgtid_bind_type = "wwpn (World Wide Port Name)"
uevent =
vport_create = <store method only>
vport_delete = <store method only>
Device = "host4"
Device path = "/sys/devices/pci0000:00/0000:00:07.0/0000:0e:00.1/host4"
uevent = "DEVTYPE=scsi_host"
答案1
我曾经是一家存储供应商的存储工程师;如果您是我公司存储阵列硬件的存储管理员,那么公司就会派我来解决困扰存储管理员的任何问题。
链路断开意味着没有 FC 协议。 光可能会来回传输,但双方无法通信。
如果您有环回适配器,您可以在一分钟内快速测试接下来的几个项目。将环回适配器放在电缆的一端,另一端的设备应显示链接已建立。使用 HBA 和交换机/存储阵列进行测试。查看错误统计数据,它们不应增加;插入电缆时,您会在链接协商期间收到一连串错误,但它们应该会停止。如果没有,则说明您的电缆有问题。
如果没有环回适配器,则需要做更多工作。首先检查以下内容以开始故障排除:
- 警告:不要看 SFP 中的激光发射器。大多数光是不可见的;即使它不是明亮的可见光,也并不意味着它是无害的。
- HBA 是否已禁用?使用 HBA 配置实用程序进行验证。
- 交换机端口是否已禁用?检查交换机/存储阵列上的端口状态。
- 电缆极性正确吗?TX(发送)-> RX(接收)。
LC 电缆极性的良好参考是这里。
您需要一根 A 到 B 的直通电缆。命名听起来不太合理,但看一张图片会有所帮助:
看着激光会严重损害您的眼睛,尤其是因为您看不到大部分光线。用手电筒照射(仅适用于相对较短的电缆)或跟踪电缆或翻转一端。根据 SFP 类型,有足够的功率沿着光纤电缆传输 80 公里——您不希望任何接近该功率的物质进入您的眼睛。
- 对于 SFP 类型(SW 或 LW)和速度(8/4/2/1GB)来说,电缆是否太长?
查看小型单模光纤类型。SFP 模块使用黑色手柄/molding 来代表短波(SW)激光发射器。 蓝色的用于长波 (LW)。 双方必须是同一类型,否则无法互相通话。
谷歌搜索 SFP 的部件号。以太网 SFP 会不是为 FC 工作。
双方都在使用正确的激光,这意味着他们可以对话在彼此。当它们看到彼此的光时,它们会互相交谈并协商链接设置。通常,服务器端设置为“自动”速度协商,而交换机设置为固定速度。
在交换机/存储阵列上将链接速度设置为 2G,并将 HBA 置于自动模式。
检查电缆类型。电缆上写着62.5nm或50nm。 以下是这是 FC 电缆的极佳参考。记下来。
2G SW 使用 62.5nm 电缆可以达到近 500 英尺。使用 LW SFP 或 50nm 电缆,您将获得更长的距离。您已经将连接设置为 2G,除非您使用 500 英尺长的光纤电缆,否则电缆长度不再是问题。而且它跳过了填充字问题;4G 及更高版本需要两侧兼容的填充字设置。
现在,交换机和 HBA 将显示“正在同步”、“正在协商”或其他非“无链接”信息,协商失败后将返回到无链接状态。某些 FC 设备会尝试一次,如果协商失败,则不会再尝试,直到检测到光丢失。重置 HBA 将导致至少一次协商尝试,但更容易告诉和实习生拔下并插入电缆(更少的输入)。HBA 实用程序应该有一种重置方法,可以强制重新协商。
watch -n1 "sudo systool -c fc_host -v | grep port_"
现在观察一下,当其他人拔下并插入服务器 HBA 上的电缆时,是否有任何变化。如果发生变化,则说明电缆极性没有问题。如果没有变化,请反转电缆极性并重试。如果状态仍未改变,则电缆已损坏,请更换新电缆。
此时,物理链路兼容且正确插入。 某物应该会改变。如果没有任何变化,请换一根新电缆并重新开始。
另一个潜在问题是端口拓扑。HBA 将进行链路设置协商,但由于拓扑不兼容,可能无法连接。通常的选择是结构、环路和点对点(有时缩写为 P2P 或 PtP)。结构是与 FC 交换机的连接,环路是与 1G FC 集线器的连接(请勿使用,非常过时),而 PtP 是直接连接。不要选择环路;它在 2007 年很少见,应该在 2021 年消失。链路的两侧必须使用相同的拓扑。
这些步骤应该会使您的 HBA 进入连接状态。祝您好运!