Hoje ao verificar um servidor recentemente instalado com Oracle Linux 7.9 e ASM 19.17 com ASMLib, verificamos que ao realizar qualquer reboot no servidor, o ASM não conseguia montar os discos.
Verão do SO e kernel:
[grid@srv01 ~]$ uname -a
Linux srv01 5.4.17-2136.316.7.el7uek.x86_64 #2 SMP Mon Jan 23 18:37:26 PST 2023 x86_64 x86_64 x86_64 GNU/Linux
[grid@srv01 ~]$ cat /etc/*-release | grep PRETTY
PRETTY_NAME="Oracle Linux Server 7.9"
Versão do ASM:
[grid@srv01 ~]$ asmcmd -V
asmcmd version 19.17.0.0.0
Discos usados no ASM com multipath para o DATA e RECO:
[root@srv01 ~]# multipath -ll
RECO01 (3600a0980384b5545464d42) dm-4 NETAPP ,LUN C-Mode
size=100G features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 33:0:0:0 sdd 8:48 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
`- 34:0:0:0 sdc 8:32 active ready running
DATA01 (3600a0455244b5545464d43) dm-5 NETAPP ,LUN C-Mode
size=100G features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 33:0:0:1 sdf 8:80 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
`- 34:0:0:1 sde 8:64 active ready running
Ao realizar um rescan dos discos, o ASM montava os disks groups DATA e RECO sem erros, ao realizar o reboot do servidor o problema ocorria novamente:
[root@srv01 ~]# /etc/init.d/oracleasm scandisks
[root@srv01 ~]# /usr/sbin/oracleasm listdisks
Ao analisar os logs, verificamos que o serviço do oracleasm.service iniciava primeiro ates do iscsid.service concluir, desta forma os discos ficavam indisponiveis para que o ASM pudesse realizar a operação de MOUNT dos disks groups:
/var/log/messages
Correção aplicada: Modificação do arquivo oracleasm.service, mudando a ordem de inicialização dos serviços para garantir que o CRS ohasd.service seja iniciado após o oracleasm.service ter descoberto com sucesso todos os discos do ASM:
[root@srv01 ~]# cat /lib/systemd/system/oracleasm.service
[Unit]
Description=Load oracleasm Modules
Requires=multipathd.service iscsi.service multi-user.target <========
After=multipathd.service iscsi.service multi-user.target <=========
[...]
[root@srv01 ~]# systemctl daemon-reload
Reboot do servidor para testar a correção de forma efetiva:
[root@srv01 ~]# init 6
Após a correção, os discos são montados no ASM sem erros após o reboot do servidor:
[grid@srv01 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 4194304 102400 102296 0 102296 0 N DATA/
MOUNTED EXTERN N 512 512 4096 4194304 102412 102316 0 102316 0 N RECO/
ASMCMD> exit
Nota técnica de ajuda:
Oracle Linux 7: ASMLib-Managed Disks on Multipathed iSCSI Targets
are not Discovered after Server Reboot (Doc ID 2214152.1)