我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。
今天我们开始分享AFD系列四:AFD安装异常处理,在阅读此篇文章之间,建议先阅读此系列前三篇文章,请点击下面链接。
ASMFD系列一:ASMFD的介绍与常见问题
ASMFD系列二:AFD在CentOS环境中部署
ASMFD系列三:AFD的安装与建议
ASMFD与内核版本是强关联,每个版本的ASMFD都与特定的内核版本想匹配。在系统内核层,通过oracleafd.ko动态链接库来完成内核模块之间的调用。在用户态中,通过libafd19.so动态链接库来完成模块之间的调用。当文件异常,引起动态链接库文件异常时,将引起ASMFD功能无法正常使用。今天就和大家一起分享怎么确认ASMFD动态链接库文件是否有异常、ASMFD安装异常后怎么重新安装ASMFD
1,确认ASMFD是否正常
Oracle提供多个命令来检查ASMFD是否正常,同时为了简化用户的学习成本,Oracle又将命令进行封装,集成到大家熟悉的asmcmd中,为用户提供统的ASM层的管理工具。
1.1 ASMFD加载状态
查询ASMFD的状态和版本号,如下所示:
[grid@19crac1 ~]$ asmcmd afd_state
ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host '19crac1'
[grid@19crac1 ~]$ afddriverstate version
AFD-9325: Driver OS kernel version = 3.10.0-862.el7.x86_64.
AFD-9326: Driver build number = 220802.
AFD-9231: Driver build version = 19.0.0.0.0 (19.17.0.0.0).
AFD-9547: Driver available build number = 220802.
AFD-9232: Driver available build version = 19.0.0.0.0 (19.17.0.0.0).
如状态异常,可以手动重新加载,加载的方式也比较多,在Linux平台建议使用systemd的方式来重新加载,命令如下:
[root@19crac1 5.4.17-2011.6.2.el7uek.x86_64]# /etc/init.d/afd run
AFD-641: Checking for existing AFD installation.
AFD-643: Validating AFD installation files for operating system.
AFD-9393: Verifying ASM administrator setup.
AFD-637: Loading installed AFD drivers.
AFD-649: Verifying AFD devices.
AFD-9156: Detecting control device '/dev/oracleafd/admin'.
AFD-9294: updating file /etc/sysconfig/oracledrivers.conf
AFD-9322: completed
[root@19crac1 5.4.17-2011.6.2.el7uek.x86_64]# /etc/init.d/afd start
AFD-641: Checking for existing AFD installation.
AFD-643: Validating AFD installation files for operating system.
AFD-9393: Verifying ASM administrator setup.
AFD-637: Loading installed AFD drivers.
AFD-649: Verifying AFD devices.
AFD-9156: Detecting control device '/dev/oracleafd/admin'.
AFD-9294: updating file /etc/sysconfig/oracledrivers.conf
AFD-9322: completed
run和start两种方式都支持,两种方式对应的系统层执行的命令都是一样的,如重新加载过程中有异常或者加载完成后状态仍不正确,请继续向下分析。
1.2 查看ASMFD模块
操作系统上可通过lsmod来查询模块是否加载,再通过modinfo可以查看详细的模块文件和对应的版本等信息。
[grid@19crac1 ~]$ lsmod|grep oracle
oracleacfs 5238775 0
oracleadvm 1176594 0
oracleoks 781410 2 oracleacfs,oracleadvm
oracleafd 222652 1
[grid@19crac1 ~]$ modinfo oracleoks
filename: /lib/modules/3.10.0-1160.el7.x86_64/extra/usm/oracleoks.ko
author: Oracle Corporation
license: Proprietary
retpoline: Y
rhelversion: 7.5
srcversion: 533BB7E5866E52F63B9ACCB
depends:
vermagic: 3.10.0-862.el7.x86_64 SMP mod_unload modversions
sig_id: X509
signer: Oracle Linux RHCK Module Signing Key
sig_key: DD:99:5B:15:5C:19:B3:A7:C3:EF:77:07:B9:69:E2:5F:96:39:66:6E
sig_hashalgo: sha256
signature: 01:00:8C:02:19:B7:90:DA:9C:A8:E7:7A:3C:8C:85:81:9C:D9:9C:D3:
/lib/modules/3.10.0-1160.el7.x86_64/extra/usm/oracleoks.ko为模块文件。
1.3 验证模块文件是否损坏
在上一篇文章安装的分享中,我们展示ASMFD的动态链接库文件是在安装ASMFD时从集群安装目录中直接复制过去的,并且动态链接库文件是一个静态文件,在运行过程中是不会想改此文件,所以我们可以通过md5sum的值和文件修改的时间来判断动态链接库文件是否发生损坏。
- 通过Linux的md5sum
[grid@19crac1 ~]$ md5sum /lib/modules/3.10.0-1160.el7.x86_64/extra/usm/oracleoks.ko
917f8970e89e5f6023b5a93b7eb3fc3e /lib/modules/3.10.0-1160.el7.x86_64/extra/usm/oracleoks.ko
[grid@19crac1 ~]$ cd /oracle/app/19.3.0/grid/usm/install/Oracle/
[grid@19crac1 Oracle]$ find ./ -name "oracleoks.ko"
./EL7UEK/x86_64/4.1.12-112.16.4/4.1.12-112.16.4-x86_64/bin/oracleoks.ko
./EL7UEK/x86_64/5.4.17-2011.0.7/5.4.17-2011.0.7-x86_64/bin/oracleoks.ko
./EL7/x86_64/3.10.0-862/3.10.0-862-x86_64/bin/oracleoks.ko
如果不知道内核版本号,可以通过系统命令查询,如下:
[grid@19crac1 ~]$ uname -r
3.10.0-1160.el7.x86_64
[grid@19crac1 Oracle]$ md5sum ./EL7/x86_64/3.10.0-862/3.10.0-862-x86_64/bin/oracleoks.ko
917f8970e89e5f6023b5a93b7eb3fc3e ./EL7/x86_64/3.10.0-862/3.10.0-862-x86_64/bin/oracleoks.ko
如果md5sum出来的值一样,说明文件未损坏。
- 通过Linux的stat命令判断
[grid@19crac1 Oracle]$ stat /lib/modules/3.10.0-1160.el7.x86_64/extra/usm/oracleoks.ko
File: ‘/lib/modules/3.10.0-1160.el7.x86_64/extra/usm/oracleoks.ko’
Size: 13277202 Blocks: 25936 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 10489581 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-01-02 18:27:50.550788198 +0800
Modify: 2023-01-02 18:27:49.215788152 +0800
Change: 2023-01-02 18:27:49.220788152 +0800
Birth: -
[grid@19crac1 Oracle]$ stat ./EL7/x86_64/3.10.0-862/3.10.0-862-x86_64/bin/oracleoks.ko
File: ‘./EL7/x86_64/3.10.0-862/3.10.0-862-x86_64/bin/oracleoks.ko’
Size: 13277202 Blocks: 25936 IO Block: 4096 regular file
Device: fd09h/64777d Inode: 539971356 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-01-02 18:26:50.432786126 +0800
Modify: 2022-08-02 18:59:18.000000000 +0800
Change: 2023-01-02 18:26:49.138786081 +0800
Birth: -
1.4 so文件的验证
用户态动态链接库文件的路径如下
/opt/oracle/extapi/64/asm/orcl/1/libafd19.so
/oracle/app/19.3.0/grid/lib/libafd19.so
同样采用1.3中提到的mk5sum的方式来确认文件是否有损坏。
如果上述状态异常或者文件不一致时,需要对ASMFD进行重新安装
2,重新安装ASMFD
ASMFD重启安装需要停节点的数据库和集群软件,需要提前做好停机的准备工作,特别是有ACFS文件系统的,也需要做好相应文件系统卸载准备,ASMFD重新安装,对当前ASM中已经配置的磁盘是无任何影响的,即不会修改磁盘头的信息也不回修改磁盘中的数据。详细的操作如下,这里只给出了操作的名字,日志信息无进行展示。
- 停集群
#/oracle/app/19.3.0/grid/bin/crsctl stop crs
- 停ACFS内核
#/oracle/app/19.3.0/grid/bin/acfsload stop
- 安装ASMFD
#/oracle/app/19.3.0/grid/bin/afdroot install -v
- 扫描磁盘
#/oracle/app/19.3.0/grid/bin/asmcmd afd_scan
如果扫描磁盘后,无法发现ASM磁盘,请确认是否配置正确的磁盘扫描路径:afd_diskstring参数,如果在Linux平台,系统自带的多路径下的路径为** /dev/mapper/**,如果使用其它多路径软件,请查询相应多路径官方文档。
#/oracle/app/19.3.0/grid/bin/asmcmd afd_dsset='/dev/mapper/data*'
- 查看磁盘标签
#/oracle/app/19.3.0/grid/bin/asmcmd afd_lsdsk
- 加载ACFS
#/oracle/app/19.3.0/grid/bin/acfsload start
- 启动集群
#/oracle/app/19.3.0/grid/bin/crsctl start crs
——————作者介绍———————–
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)
ASMFD系列四:检查AFD状态和重新安装AFD:等您坐沙发呢!