Em um dos meus laboratórios de Oracle RAC, peguei um cenário em que os volumes eram carregados normalmente via iSCSI mas o ASM lib não carregava o discos automaticamente.

Listando os discos carregados pelo ASM lib, nada retornado:

# oracleasm listdisks
#

Mas os discos estão disponíveis no sistema operacional:

# ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 Sep 30 19:01 CRS01 -> ../../sdd1
lrwxrwxrwx 1 root root 10 Sep 30 19:01 DATA01 -> ../../sde1
lrwxrwxrwx 1 root root 10 Sep 30 19:01 FRA01 -> ../../sdf1
lrwxrwxrwx 1 root root 10 Sep 30 19:01 MGMT01 -> ../../sdg1

ASM lib configurado para iniciar automaticamente no boot:

# oracleasm configure | grep BOOT
ORACLEASM_SCANBOOT=true

O status do ASM lib está normal:

# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes

Causa

Se o ASM lib está configurado para iniciar automaticamente e o serviço iscsi também, então uma causa provavel é que o ASM lib esteja sendo carregado antes do serviço iscsi, não havendo nenhum disco apresentado ao SO.

Podemos usar o comando journalctl -b para consultar as mensagens de log do último startup do Linux e usar o grep para filtrar as linhas relacionadas com ASM lib e iscsi:

Verificando as mensagens relacionadas ao serviço iscsi:

# journalctl -b | grep "iscsid: connected"
Sep 30 17:08:54 rac02 iscsid[6299]: iscsid: connected local port 13410 to 192.168.1.96:3260
Sep 30 17:08:54 rac02 iscsid[6299]: iscsid: connected local port 57114 to 192.168.1.97:3261

O serviço do iscsi conectou no storage às 17:08:54.

Verificando as mensagens relacioandas ao ASM lib:

# journalctl -b | grep "Load oracleasm Modules"
Sep 30 17:08:45 rac02 systemd[1]: Starting Load oracleasm Modules...
Sep 30 17:08:45 rac02 systemd[1]: Started Load oracleasm Modules.

O ASM lib carregou às 17:08:45, 9 segundos antes dos discos estarem disponíveis no sistema operacional.

Solução

Assim como os recursos no Oracle Clusterware, os serviços no Linux possuem um “profile” contendo informações que definem como iniciar, dependências, ordem e etc.

Podemos alterar a configuração do asm lib para iniciar depois do iscsi, para isso, edite o arquivo de configuração do serviço com um edior de texto:

vi /usr/lib/systemd/system/oracleasm.service

Incluimos a seguinte linha abaixo do atributo “Description”:

After=multipath.service iscsi.service

O arquivo deve ficar assim:

[Unit]
Description=Load oracleasm Modules
After=multipath.service iscsi.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/oracleasm.init start_sysctl
ExecStop=/usr/sbin/oracleasm.init stop_sysctl
ExecReload=/usr/sbin/oracleasm.init restart_sysctl

[Install]
WantedBy=multi-user.target

Para validar, execute um reboot no servidor e confirme que os serviços foram carregados na ordem correta, e que os discos foram reconhecidos pelo ASM lib de forma automática.

# reboot

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading