解决方案
查看系统日志 (/var/log/messages) 中的系统启动消息,很明显:
oracleasm.service 在 iscsid.service 完成使所有 iSCSI 目标完全可用/可操作之前启动,并且在 multipathd.service 添加至少一个到 iSCSI 目标的路径之前。
ohasd.service 在 oracleasm.service 之后启动,但没有发现 ASM 磁盘。
修改文件 /usr/lib/systemd/system/oracleasm.service 并将“Requires”和“After”行添加到 iscsid.service multi-user.target 以确保 oracleasm.service 在完成 iscsid.service 和 multipathd 后启动.service 和达到 multi-user.target 后即:
# cat -n /usr/lib/systemd/system/oracleasm.service 1 [Unit] 2 Description=Load oracleasm Modules 3 Requires=multipathd.service iscsid.service multi-user.target 4 After=multipathd.service iscsid.service multi-user.target ...
修改文件 /etc/systemd/system/oracle-ohasd.service 后添加 oracleasm.service 行以确保 CRS ohasd.service 在 oracleasm.service 成功发现所有 iSCSI 多路径 ASM 磁盘后启动,即:
# cat -n /etc/systemd/system/oracle-ohasd.service ... 5 [Unit] 6 Description=Oracle High Availability Services 7 After=syslog.target network-online.target remote-fs.target oracleasm.service ...
注意:如果 /etc/systemd/system/oracle-ohasd.service 不可用,请参考提供类似功能的 /etc/systemd/system/ohasd.service。
问题
在 CentOS/RHEL 7 中重新启动服务器后,在多路径 iSCSI 目标上,未发现 ASMLib 管理的磁盘。
Oracle Real Application Clusters (RAC) 服务器在 CentOS/RHEL 7 上运行并利用 ASMLib 管理的 iSCSI 多路径磁盘。
服务器重新启动时,不会在启动时自动发现 Oracle ASMLib 磁盘,从而导致 Oracle Cluster Ready Services (CRS) 无法启动。
但是,在服务器重新启动后不久手动运行 oracleasm scandisks 命令时,可以正确发现 ASM 磁盘。
以下是oracleasm的配置
# cat /etc/sysconfig/oracleasm ... ORACLEASM_ENABLED=true ORACLEASM_UID=oracle ORACLEASM_GID=dba ORACLEASM_SCANBOOT=true ORACLEASM_SCANORDER="" ORACLEASM_SCANEXCLUDE="" ORACLEASM_USE_LOGICAL_BLOCK_SIZE=false ...
# cat -n /usr/lib/systemd/system/oracleasm.service 1 [Unit] 2 Description=Load oracleasm Modules 3 Requires=multipathd.service 4 After=multipathd.service ...