Oracle ASMLIB配置iSCSI设备导致的问题
出于测试目的或者环境不重要等目的,如果使用iSCSI设备并且使用ASMLIB配置管理,可能会遇到如下两个问题。
都是我遇到的问题。
- OracleLinux7上边正常安装配置ASMLIB后,如果进行重启会导致扫描不到之前创建标记的盘,需要手工使用oracleasm scandisks才能识别到
- 无论是OracleLinux6还是7,安装配置ASMLIB过程均正常,日志/var/log/oracleasm也无异常,ll /dev/oracleasm/disks也能够看到已经出来的盘
但是比如安装grid的时候无法发现ORCL:开头的盘,能够确定使用的包都是对的。
踏马的上边第二个问题搞了我几天才解决,还是试出来的。mos上边没有符合我现象的文档。
先说第一个,很快就解决了,根据mos文档:
Oracle Linux: oracleasm Devices are not Being Scanned After Reboot (Doc ID 2266846.1)
Oracle Linux 7: ASMLib-Managed Disks on Multipathed Targets are not Discovered after Server Reboot (Doc ID 2929856.1)
Oracle Linux 7: ASMLib-Managed Disks on Multipathed iSCSI Targets are not Discovered after Server Reboot (Doc ID 2214152.1)
原因是:https://www.cnblogs.com/PiscesCanon/p/17968113
查看系统日志 ( /var/log/message s) 中的系统启动消息,很明显:- oracleasm.service 在iscsid.service完成之前启动 ,使所有 iSCSI 目标完全可用/可操作,并且在multipathd.service 添加之前到 iSCSI 目标的至少一条路径- ohasd.service在oracleasm.service之后启动 ,但未发现 ASM 磁盘
其实就是iscsid.service服务未完全启动之前,就没有对应的iSCSI设备,oracleasm.service就启动完成了,那样肯定就没有盘了。
解决方式也很简单,如下:
vi /usr/lib/systemd/system/oracleasm.service
[Unit]
添加:
Requires=iscsid.service multi-user.target
After=iscsid.service multi-user.target
vi /etc/systemd/system/oracle-ohasd.service
[Unit]
After=原有内容 oracleasm.service
重载配置:
systemctl daemon-reload
至于第二个,没法解决,只能发现是由于使用iSCSI设备导致的。防。
当安装grid,到设置磁盘路径的时候,无法发现ORCL:*的盘,看安装日志类似:
KFOD-00307: asmlib error!! function = [asm_close], error = [0], mesg = [Invalid argument]
KFOD-00307: asmlib error!! function = [asm_open], error = [0], mesg = [Operation not permitted]
当然,可以直接使用磁盘发现路径为:/dev/oracleasm/disks ,那就意义不大了。
后续添加一个本地盘,也是用createdisk test创建,则该盘可以正常识别。
[root@oracle1 ~]# export XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt
[root@oracle1 ~]# export LANG=en_US.UTF-8
[root@oracle1 ~]# export DISPLAY=192.168.2.189:0.0
[root@oracle1 ~]# export ORACLE_BASE=/u01/app/grid
[root@oracle1 ~]# export THREADS_FLAG=native
[root@oracle1 ~]# export PWD=/soft/grid
[root@oracle1 grid]# export ORACLE_SID=+ASM1
[root@oracle1 grid]# export NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat
[root@oracle1 grid]# export USER=grid
[root@oracle1 grid]# export QTINC=/usr/lib64/qt-3.3/include
[root@oracle1 grid]# export CLASSPATH=
[root@oracle1 grid]# export NLS_TIMESTAMP_FORMAT="yyyy-mm-dd hh24:mi:ss"
[root@oracle1 grid]# export G_BROKEN_FILENAMES=1
[root@oracle1 grid]# export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
[root@oracle1 grid]# export HOME=/home/grid
[root@oracle1 grid]# export HOSTNAME=oracle1
[root@oracle1 grid]# export LESSOPEN=||/usr/bin/lesspipe.sh
[root@oracle1 grid]# export LD_LIBRARY_PATH=/tmp/OraInstall2024-01-04_04-21-39PM/ext/bin/../lib
[root@oracle1 grid]# export ORACLE_HOME=/tmp/OraInstall2024-01-04_04-21-39PM/ext/bin
[root@oracle1 grid]# export LOGNAME=grid
[root@oracle1 grid]# export SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
[root@oracle1 grid]# export SHELL=/bin/bash
[root@oracle1 grid]# export CVS_RSH=ssh
[root@oracle1 grid]# export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
[root@oracle1 grid]# export TEMP=/tmp
[root@oracle1 grid]# export SHLVL=2
[root@oracle1 grid]# export HISTCONTROL=ignoredups
[root@oracle1 grid]# export TMPDIR=/tmp
[root@oracle1 grid]# export MAIL=/var/spool/mail/grid
[root@oracle1 grid]# export QTDIR=/usr/lib64/qt-3.3
[root@oracle1 grid]# export JAVA_HOME=
[root@oracle1 grid]# export QTLIB=/usr/lib64/qt-3.3/lib
[root@oracle1 grid]# export PATH=/usr/bin:/usr/ccs/bin:/u01/app/11.2.0/grid/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/grid/bin:/usr/local/bin:/u01/app/11.2.0/grid/OPatch:/soft/grid/install
[root@oracle1 grid]# /tmp/OraInstall2024-01-04_04-21-39PM/ext/bin/kfod nohdr=true, verbose=true, disks=all, status=true, op=disks, asm_diskstring='ORCL:*'
10236 CANDIDATE ORCL:TEST <unknown> <unknown>
KFOD-00307: asmlib error!! function = [asm_close], error = [0], mesg = [Invalid argument]
KFOD-00307: asmlib error!! function = [asm_open], error = [0], mesg = [Operation not permitted]
10236 CANDIDATE ORCL:TEST <unknown> <unknown> <--本地盘正常识别
KFOD-00307: asmlib error!! function = [asm_close], error = [0], mesg = [Invalid argument] <--通过iSCSI的盘创建的就报这个错
KFOD-00307: asmlib error!! function = [asm_open], error = [0], mesg = [Operation not permitted] <--通过iSCSI的盘创建的就报这个错