[原]解决OCFS2挂载报Invalid argument的问题
2021年8月25日 14:50
•
linux专区
某项目中,使用双服务器、单盘柜构建Oracle RAC集群环境。但在配置OCFS2磁盘时,格式化分区正常,挂载分区时报错:
引用
[root@rac1 /]# mount -t ocfs2 -o datavolume /dev/sdb1 /mnt/disk mount.ocfs2: Invalid argument while mounting /dev/sdb1 on /mnt/disk. Check 'dmesg' for more information on this error.
经分析,该问题与kernel中的ocfs2模块驱动有关。
一、前言 该项目,运行在红旗Asianux 3.0 SP1 for x86_64平台上。 硬件环境为:
引用
Dell PowerEdge R900 2台 HBA卡:Qlogic 2560 每台机器两块 Dell EMC CLARiiON AX-4-5 盘柜 一台
操作系统版本:红旗Asianux 3.0 SP1 for x86_64 经测试,操作系统版本不提供Qlogic 2560的驱动,从Qlogic的网站拿到驱动源码编译安装后,发现不能支持双HBA链路,也不能正确识别AX-4-5盘柜映射的多个LUN设备。 通过查询相关的兼容列表,升级到2.6.18-128后的核心,问题解决。
参考在红旗5.0上基于ASM方式安装Oracle 10g RAC [2] 一文,部署和配置OCFS2分区。
二、错误信息 设定OCFS2的环境和配置文件,请见附录说明。 设定完成后,对分区进行格式化:
# mkfs.ocfs /dev/sdb1
挂载时,报错:
# mount -t ocfs2 -o datavolume /dev/sdb1 /mnt/disk
在图形界面下,运行ocfs2console工具,包同样的错误:
引用
Jun 5 05:13:54 rac1 kernel: (0,0):o2hb_bio_end_io:230 ERROR: IO Error 65536 Jun 5 05:13:54 rac1 kernel: (0,0):o2hb_bio_end_io:230 ERROR: IO Error 65024 Jun 5 05:13:54 rac1 kernel: (9022,0):o2hb_populate_slot_data:1212 ERROR: status = 65024 Jun 5 05:13:54 rac1 kernel: (9022,0):o2hb_region_dev_write:1313 ERROR: status = 65024
三、排查问题 因Asianux 3.0 SP1是已确认通过Oracle官方认证的版本,出现该问题,怀疑与升级核心的操作有关。 保持其他配置不变的情况下,回退到SP1的标准核心2.6.18-53.11AXS3,进行mount的操作,挂载正常。
对比升级前后的两核心:2.6.18-53.11AXS3与2.6.18-128.5AXS3,发现核心模块中的ocfs2版本不同:
引用
# pwd /lib/modules/2.6.18-53.11AXS3/kernel/fs/ocfs2 # modinfo ocfs2.ko|grep version version: 1.2.8 # cd /lib/modules/2.6.18-128.5AXS3/kernel/fs/ocfs2/ # modinfo ocfs2.ko|grep version version: 1.4.1 srcversion: 02D91FFF3D6B18352652A6C
然后查询与ocfs2相关的ocfs2-tools包:
引用
# rpm -qa|grep ocfs2 ocfs2-tools-1.2.6-1.1AX ocfs2console-1.2.6-1.1AX
可见,当前使用的ocfs2模块版本,与匹配的ocfs2-tools工具不相符。
四、解决问题 1、升级ocfs2-tools版本 从Oracle官方网站获取对应的1.4.1版本(对应红帽5的x86_64平台): 远程下载 本地下载:
下载文件
点击这里下载文件
升级:
# rpm -Uvh ocfs2-tools-1.4.1-1.el5.x86_64.rpm ocfs2console-1.4.1-1.el5.x86_64.rpm
再次测试,还是报同样的错误。
2、重编译ocfs2模块 我怀疑因单独安装SP2的核心,导致系统编译环境有差别,决定重编ocfs2模块。 关闭o2cb服务:
# service o2cb stop
从Oracle官方网站获取对应的1.4.1版本,源码: 远程下载 本地下载:
下载文件
点击这里下载文件
※ 在2.6.18-128环境中,不能使用1.2.6等低版本。
编译:
# tar xzvf ocfs2-1.4.1.tar.gz # cd ocfs2-1.4.1 # ./configure # make # make clean # make install
新模块被拷贝到/lib/modules/2.6.18-128.5AXS3/extra/目录中:
引用
# cd /lib/modules/2.6.18-128.5AXS3/extra/ocfs2 # modinfo ocfs2.ko |grep version version: 1.4.1 srcversion: 7B694EE1694E983F8BE779F
替换旧模块:
# cd /lib/modules/2.6.18-128.5AXS3 # rm -rf kernel/fs/ocfs2/ # mv extra/ocfs2/ kernel/fs/
重建驱动间依赖关系后,启动o2cb服务,测试挂载:
# depmod -a # service o2cb start # mount -t ocfs2 /dev/sdb1 /mnt/disk
挂载成功。后台日志信息为:
引用
# mount|grep /mnt/disk /dev/sdb1 on /mnt/disk type ocfs2 (rw,_netdev,heartbeat=local) OCFS2 Node Manager 1.4.1 Fri Jun 5 07:26:42 CST 2009 (build 304d9ff0c301f79f846e3cc423c30674) OCFS2 DLM 1.4.1 Fri Jun 5 07:26:42 CST 2009 (build 96988c7961cf38309cc33396bb27b400) OCFS2 DLMFS 1.4.1 Fri Jun 5 07:26:42 CST 2009 (build 96988c7961cf38309cc33396bb27b400) OCFS2 User DLM kernel interface loaded OCFS2 1.4.1 Fri Jun 5 07:26:38 CST 2009 (build a1974724e90d3f07ae88531f6a9547a9) ocfs2_dlm: Nodes in domain ("D463A4E990FE4158AF2A80835C6342F4"): 1 kjournald starting. Commit interval 5 seconds ocfs2: Mounting device (8,17) on (node 1, slot 0) with ordered data mode.
问题解决。
五、附录 在Asianux 3.0上配置OCFS2的相关配置文件:1、/etc/hosts文件
引用
# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.228.11 rac1 rac1.linuxfly.cn 192.168.228.12 rac2 rac2.linuxfly.cn 10.0.0.1 rac1-vip 10.0.0.2 rac2-vip
2、/etc/ocfs2/cluster.conf文件
引用
# cat /etc/ocfs2/cluster.conf
node:
ip_port = 7777
ip_address = 192.168.228.11
number = 0
name = rac1.linuxfly.cn
cluster = ocfs2
node: ip_port = 7777 ip_address = 192.168.228.12 number = 1 name = rac2.linuxfly.cn cluster = ocfs2
cluster: node_count = 2 name = ocfs2
3、红旗提供的ocfs2-tools 1.4.1版本 i386版本:
下载文件
点击这里下载文件
x86_64版本:
下载文件
点击这里下载文件
安装时,请使用nodeps参数。
4、现成的ocfs2模块驱动 适用于2.6.18-128.5AXS3.x86_64核心环境:
下载文件
点击这里下载文件
使用如下命令安装即可:
# tar xzvf ocfs2-2.6.18-128.5AXS3.x86_64.tar.gz -C /
5、Asinuax 3.0 SP2核心 2.6.18-128.5AXS3 x86_64版本:
下载文件
点击这里下载文件
下载文件
点击这里下载文件
六、补充说明 2009-06-08 为彻底找出问题的原因,我进行了后续的测试: 使用2.6.18-128.5AXS3.x86_64核心,利用ocfs2的1.4.1源码重新编译安装后,测试1.2.6和1.4.1两个版本的ocfs2-tools包,都可以成功挂载。 也就是说,问题的根本原因是核心中的ocfs2模块问题,与ocfs2-tools无关,特此说明。
解决OCFS2的o2net_connect_expired问题 解决OCFS2不能自动挂载的问题
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/105118.html