[Fibre Channle 实战之四]centos7中如何添加tcm_qla2xxx支持

简介:

centos7中自带的有qla2xxx驱动,但是没有tcm_qla2xxx驱动,这会创建一些HBA卡的target的时候失败。为此,需要保证tcm_qla2xxx.ko驱动能生成并自动执行。那么该如何解决这个问题呢?

1.选择tcm_qla2xxx模块

首先,进入和当前centos内核版本和配置选项一致的源代码的build目录:

cd/lib/modules/3.10.0-229.el7.x86_64/build

make menuconfig

加上对tcm_qla2xxx的支持:


wKioL1l-g-aABxLAAABHF3xNMzI868.png


wKiom1l-hBWDBqpzAACNljKt5Zo027.png

2.编译tcm_qla2xxx驱动

保存上面的选择,然后退出。接着cd /home/qbaq/qla2xxx:

make -C /lib/modules/3.10.0-229.el7.x86_64/build M=`pwd` modules

会看到下面的提示:

Building modules, stage 2.

MODPOST 2 modules

WARNING: "btree_init" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_insert" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_update" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_lookup" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_destroy" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_get_prev" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_remove" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_last" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

WARNING: "btree_geo32" [/home/qbaq/qla2xxx/tcm_qla2xxx.ko] undefined!

CC     /home/qbaq/qla2xxx/qla2xxx.mod.o

LD [M]  /home/qbaq/qla2xxx/qla2xxx.ko

CC     /home/qbaq/qla2xxx/tcm_qla2xxx.mod.o

LD [M]  /home/qbaq/qla2xxx/tcm_qla2xxx.ko

make: Leaving directory `/usr/src/kernels/3.10.0-229.el7.x86_64'

[root@localhost qla2xxx]# insmod ./tcm_qla2xxx.ko

insmod: ERROR: could not insert module ./tcm_qla2xxx.ko: Unknown symbol in module

[root@localhost qla2xxx]# dmesg | tail -n 10

[ 3907.642678] tcm_qla2xxx: Unknown symbol btree_get_prev (err 0)

[ 3935.279739] tcm_qla2xxx: Unknown symbol btree_last (err 0)

[ 3935.279763] tcm_qla2xxx: Unknown symbol btree_insert (err 0)

[ 3935.279884] tcm_qla2xxx: Unknown symbol btree_remove (err 0)

[ 3935.279911] tcm_qla2xxx: Unknown symbol btree_geo32 (err 0)

[ 3935.279946] tcm_qla2xxx: Unknown symbol btree_lookup (err 0)

[ 3935.279960] tcm_qla2xxx: Unknown symbol btree_init (err 0)

[ 3935.280066] tcm_qla2xxx: Unknown symbol btree_destroy (err 0)

[ 3935.280080] tcm_qla2xxx: Unknown symbol btree_update (err 0)

[ 3935.280142] tcm_qla2xxx: Unknown symbol btree_get_prev (err 0)

可以看大上面tcm_qla2xxx的一些符合依赖于btree这个模块。为此,需要继续解决对btree的依赖。尝试和上面同样的方法,重新进入build/:

make menuconfig



不过这次,在本地编译就会产生问题:

[root@localhost lib]# make -C /lib/modules/3.10.0-229.el7.x86_64/build M=`pwd` modules

make: Entering directory `/usr/src/kernels/3.10.0-229.el7.x86_64'

CC [M]  /home/qbaq/lib/crc-ccitt.o

CC [M]  /home/qbaq/lib/crc-t10dif.o

CC [M]  /home/qbaq/lib/crc-itu-t.o

CC [M]  /home/qbaq/lib/libcrc32c.o

CC [M]  /home/qbaq/lib/crc8.o

CC [M]  /home/qbaq/lib/ts_kmp.o

CC [M]  /home/qbaq/lib/ts_bm.o

CC [M]  /home/qbaq/lib/ts_fsm.o

CC [M]  /home/qbaq/lib/cordic.o

CC [M]  /home/qbaq/lib/raid6/algos.o

CC [M]  /home/qbaq/lib/raid6/recov.o

HOSTCC /home/qbaq/lib/raid6/mktables

TABLE  /home/qbaq/lib/raid6/tables.c

CC [M]  /home/qbaq/lib/raid6/tables.o

UNROLL /home/qbaq/lib/raid6/int1.c

awk: fatal: can't open source file `/usr/src/kernels/3.10.0-229.el7.x86_64//home/qbaq/lib/raid6/unroll.awk' for reading (No such file or directory)

make[2]: *** [/home/qbaq/lib/raid6/int1.c] Error 1

make[1]: *** [/home/qbaq/lib/raid6] Error 2

make: *** [_module_/home/qbaq/lib] Error 2

3.解决tcm_qla2xxx对btree模块的依赖

究其原因,btree模块在tcm_qla2xxx选上之后,默认必须应该变成build in的,因为它可能依赖其他的内容。我们看这个文件包含的头文件也可以看出来:

所以,还需要重新编译内核。为了尽量保证和发行版的配置文件一致,我们把经过上面操作之后/lib/module/3.10.0-229.el7.x86_64 /build下最新的.confg拷贝过来:

然后make -j 32

make bzImage

make modules_install

make install

这样就能保证生成的内核里已经包含了btree模块,同时由于它会在启动时候加载,后续加载tcm_qla2xxx驱动就不会有问题了。














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


相关文章
|
监控 关系型数据库 MySQL
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
186 1
|
4月前
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
307 80
|
4月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
719 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
4月前
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
205 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
4月前
|
Linux pouch 容器
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
关于如何在CentOS 7.6操作系统上安装和使用阿里巴巴开源的Pouch容器管理工具的实战教程。
145 2
|
4月前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
176 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
5月前
|
缓存 运维 Linux
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
|
5月前
|
关系型数据库 MySQL Linux
【一键解锁神秘力量!】CentOS 7 通过编译源码方式安装 MySQL 数据库 —— 从零到英雄的数据库安装实战秘籍!
【8月更文挑战第9天】随着业务增长,对数据库的需求日益提高。在 CentOS 7 中,通过编译源码安装 MySQL 可提供更高定制性和灵活性。本文详细介绍从准备环境、下载源码、配置编译参数到安装 MySQL 的全过程,并对比 RPM 包安装方法,帮助读者根据需求选择合适方案。实践时需注意备份数据、选择合适版本、确保安全性和调优性能等要点。
236 1
|
5月前
|
存储 监控 Linux
【一键解锁神秘力量!】CentOS 7 磁盘分区与挂载终极指南 —— 从零到英雄的磁盘管理实战秘籍!
【8月更文挑战第9天】随着业务扩展和技术进步,服务器硬盘容量需求增加。本文通过实例介绍如何在CentOS 7中管理大容量硬盘(如1TB)。首先确认未使用的硬盘(如`/dev/sdb`),然后使用`fdisk`创建分区(一个200GB的日志分区和一个剩余空间的用户文件分区)。接着使用`mkfs.ext4`格式化分区,并创建挂载点(如`/mnt/log`和`/mnt/userfiles`)。最后,通过修改`/etc/fstab`实现分区的永久挂载。注意事项包括备份数据、合理规划分区以及定期监控磁盘使用情况等。这些步骤有助于高效管理和利用磁盘空间。
409 1
|
6月前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思