[Fibre channel 实战之一] 驱动堆栈和创建target常见问题

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介:


Firbre channel由于其专用性,相较传统iSCSI网络,能极大地提高Fabric的传输效率和速度,因此在传统中

高端存储上得到广泛的应用。搭建基于Fibre channel的存储服务,要求对Fibre channel 底层传输协议有一

定了解,还要求熟悉Fibre channel的软件堆栈层次,此外还要求清楚一般存储服务管理中的hostLUN

host group之间的关系。


本文总结了实际使用过程中碰到的和驱动堆栈相关问题,加深了我们队Fibre channel的底层软件堆栈的

理解。


1. Fibre channel 的软件堆栈


根据Linux storage stack diagram中的描述,在最近linux系统上fibre channel的驱动堆栈如下面截图所示:


wKioL1kJacOx94kAAAF7unJVpqw890.png


其中target_core_pscsi驱动模块和SCSI mid layer 交互,入下面的层次图所示:


wKiom1kJadzD2NGvAAFf7b7Byj0215.png


下面在实际机器上看到的驱动依赖关系,也印证了上面的层次:


[root@localhost ~]# lsmod | grep scsi

scsi_transport_fc     59960  2 qla2xxx,tcm_qla2xxx

scsi_tgt              20027  1 scsi_transport_fc

target_core_pscsi     18810  0

iscsi_target_mod     296307  1

target_core_mod      312037  9 target_core_iblock,tcm_qla2xxx,target_core_pscsi,iscsi_target_mod,tcm_loop

scsi_transport_sas    41034  1 mpt3sas

[root@localhost ~]# lsmod | grep qla2xxx

tcm_qla2xxx           31370  3

qla2xxx              598010  1 tcm_qla2xxx

scsi_transport_fc     59960  2 qla2xxx,tcm_qla2xxx

target_core_mod      312037  9 target_core_iblock,tcm_qla2xxx,target_core_pscsi,iscsi_target_mod,tcm_loop

[root@localhost ~]# lsmod | grep core

target_core_iblock    18177  0

target_core_pscsi     18810  0

coretemp              13435  0

edac_core             57650  1 sb_edac

mfd_core              13435  1 lpc_ich

target_core_mod      312037  9 target_core_iblock,tcm_qla2xxx,target_core_pscsi,iscsi_target_mod,tcm_loop

i2c_core              40325  6 ast,drm,igb,i2c_i801,drm_kms_helper,i2c_algo_bit

pps_core              19106  1 ptp

[root@localhost ~]# lsmod | grep iblock

target_core_iblock    18177  0

target_core_mod      312037  9 target_core_iblock,tcm_qla2xxx,target_core_pscsi,iscsi_target_mod,tcm_loop

[root@localhost ~]#


2.使用过程中的常见问题


在尝试用targetcli创建target实例的过程中,会使用到上面驱动层次中的各个模块,因此如果在此过程中出

现任何问题,需要及时检查驱动加载状态和内核的输出信息,再结合targetcli命令运行失败的输出,就能

帮助我们快速定位问题。


2.1 Could not create Qla2xxxFabricModule in configFS.

Fabric module name: qla2xxx

ConfigFS path: /sys/kernel/config/target/qla2xxx

Allowed WWN types: naa

Allowed WWNs list: naa.2100000e1e1b0190, naa.2100000e1e1b0191

Fabric module features: acls

Corresponding kernel module: tcm_qla2xxxt

/qla2xxx> create 21:00:00:0e:1e:1b:01:90

Could not create Qla2xxxFabricModule in configFS.


原因没有加载:tcm_qla2xxx

解决办法:

modprobe tcm_qla2xxx


2.看不到FC fabric

Copyright 2011-2013 by Datera, Inc and others.

For help on commands, type 'help'.


/> ls

o- / ......................................................................................................................... [...]

o- backstores .............................................................................................................. [...]

| o- block .................................................................................................. [Storage Objects: 0]

| o- fileio ................................................................................................. [Storage Objects: 0]

| o- pscsi .................................................................................................. [Storage Objects: 0]

| o- ramdisk ................................................................................................ [Storage Objects: 0]

o- iscsi ............................................................................................................ [Targets: 0]

o- loopback ......................................................................................................... [Targets: 0]

/> quit

Command not found quit

/> exit

Global pref auto_save_on_exit=true

Last 10 configs saved in /etc/target/backup.

Configuration saved to /etc/target/saveconfig.json

原因:tcm_qla2xxx没加载:


[root@localhost myfc]# lsmod | grep qla2xxx

qla2xxx              614431  0

scsi_transport_fc     68189  1 qla2xxx

[root@localhost myfc]# lsmod | grep tcm_qla2xxx


3.target里面不能创建configFS


现象如下图所示:


wKiom1kJamHgT0RmAAA4ySnobyk390.png


检查驱动,发现tcm_qla2xxx.koqla2xxx.ko都已经加载,问题是qla2xxx.ko支持target模式和initiator模式,在存储服务器上必须根据target模式加载,可以参考下面的命令重新加载:

modprobe -r qla2xxx

modprobe qla2xxx qlini_mode=”disabled”























本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1921488 ,如需转载请自行联系原作者




相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
8月前
|
移动开发 API Android开发
mPaaS常见问题之初始化异常如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
132 0
|
8月前
|
移动开发 监控 开发工具
mPaaS常见问题之pod里使用abstract_target后会报错如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
132 0
|
6月前
|
域名解析 网络协议 Serverless
函数计算操作报错合集之遇到“connection errored out”的错误,该怎么办
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
240 2
|
6月前
|
NoSQL 开发工具 数据库
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
|
7月前
|
监控 Serverless API
函数计算操作报错合集之 agent start之后,调接口是404,该如何解决
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
Windows
win11出现:终止代码:SYSTEM SERVICE EXCEPTION解决方案实列(不懂请私信up主)
终止代码解释:SYSTEM_SERVICE_EXCEPTION,又称为异常处理程序,是一种常见的蓝屏错误码,代表Windows系统检测到内核代码发生错误,无法响应某些系统服务,而且无法继续运行。它特别容易发生在许多设备驱动程序中,如显示驱动程序和音频驱动程序,因为他们成为Windows系统的必要组成部分。
2044 0
|
IDE 编译器 开发工具
【RT-Thread】env工具学习(更新中)
【RT-Thread】env工具学习(更新中)
504 0
实例演示相机的OnImageRender和Clear Flags清理标识(Unity3D)
无论多基础、简单的知识,只要不会,就是难。。 这次的总结主要与相机上的Clear Flags及OnImageRender函数有关Clear Flags对于这个选项,我是这么理解的:每一个相机在开始绘制时,都需要对当前RenderBuffer中的颜色缓冲区(ColorBuffer)和深度缓冲区(Z-Buffer)进行是否清除的操作,这个选项控制了清除及清除后的内容。
|
关系型数据库 MySQL Java
dbvis 数据库连接工具-更新数据库驱动方法示例演示,驱动与数据库版本不匹配问题:Unknown system variable ‘query_cache_size‘解决方法
dbvis 数据库连接工具-更新数据库驱动方法示例演示,驱动与数据库版本不匹配问题:Unknown system variable ‘query_cache_size‘解决方法
586 0
dbvis 数据库连接工具-更新数据库驱动方法示例演示,驱动与数据库版本不匹配问题:Unknown system variable ‘query_cache_size‘解决方法
|
数据中心
Infrastractor As Code中Code与物理资源同步的原理分析
上篇文章讲到《企业应用如何解决Multi-Cloud的基础设施管理及应用部署问题》,其核心是使用Terraform的模板管理基础设施,虽然Terraform的中文资料较少,好在Aliyun官方仓库的Example目录中提供了大量的模板参考,参考这些模板将能够管理常用的云服务。 什么是Infrast
9282 0