Roteiro de utilização – ASM Filter Driver (ASMFD)

By Mario Barduchi

Olá pessoal.

Vamos falar um pouco de ASM Filter Driver (ASMFD).

Não vamos entrar aqui em questão de definições do que é, para que serve porque se você chegou até aqui você já sabe (ou deveria saber) do que se trata o assunto.

A ideia aqui é um roteiro para inserir novos discos, deletar discos, criar diskgroup, adicionar discos, etc.

Lembrando também que a minha virtual tem um Oracle Single 12.2.0.1.0 com GRID instalado.

Primeiro, sempre bom dar uma olhada no Help. Aqui abaixo está somente a parte que nos interessa que é do ASMFD.

[oracle@single122 ~]$ asmcmd help

commands:
——–
afd_configure, afd_deconfigure, afd_di, afd_dsget, afd_dsset
afd_filter, afd_label, afd_lsdsk, afd_lslbl, afd_refresh
afd_scan, afd_state, afd_unlabel
Legal também dar uma olhada nos comandos para sabermos as possibilidades como abaixo.
[oracle@single122 ~]$ asmcmd help afd_state

Enfim, vamos ao que interessa. Para os nossos testes apresentei um disco (/dev/sdl) para podermos fazer o processo inteiro.

— Vamos primeiro verificar o disco e seu tamanho.
[oracle@single122 ~]$ cd /dev/

[oracle@single122 dev]$ ls -lhrt sdl*
brw-rw—- 1 root disk 8, 176 Oct 24 08:51 sdl

[oracle@single122 dev]$ lsblk sdl
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdl 8:176 0 10G 0 disk

— Criando a partição no disco

oracle@single122 dev]$ su –

[root@single122 ~]# fdisk -l /dev/sdl

Disk /dev/sdl: 10.7 GB, 10737418240 bytes, 20971520 sectors

Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@single122 ~]# fdisk /dev/sdl
— Responda as opções abaixo as perguntas apresentadas.
n
p
1
ENTER
ENTER
w

[root@single122 ~]# fdisk -l /dev/sdl

Disk /dev/sdl: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00094735

Device Boot Start End Blocks Id System
/dev/sdl1 2048 20971519 10484736 83 Linux

— Verificando a artição criada.
[oracle@single122 dev]$ ls -lhrt sdl*
brw-rw—- 1 root disk 8, 176 Oct 24 09:07 sdl
brw-rw—- 1 root disk 8, 177 Oct 24 09:07 sdl1

[oracle@single122 dev]$ lsblk sdl
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdl 8:176 0 10G 0 disk
+-sdl1 8:177 0 10G 0 part

— Nesse momento ainda não temos nada além da partição, nenhum disco candidate.

[oracle@single122 dev]$ asmcmd lsdsk -p –candidate

— Vou listar os meus discos já existentes apresentados ao ASMFD.

[oracle@single122 dev]$ asmcmd afd_lsdsk
————————————————————
Label Filtering Path
============================================================
DATA01 ENABLED /dev/sdb1
DATA02 ENABLED /dev/sdc1
DATA03 ENABLED /dev/sdd1
DATA04 ENABLED /dev/sde1
DATA05 ENABLED /dev/sdf1
DATA06 ENABLED /dev/sdg1
DATA07 ENABLED /dev/sdh1
DATA08 ENABLED /dev/sdi1
DATA09 ENABLED /dev/sdj1
DATA10 ENABLED /dev/sdk1

— Criar um label para o novo disco. Esse comando seria o equivalente (bem a grosso modo) ao CREATEDISK do ASLMLIB.


[oracle@single122 ~]$ su –

[root@single122 ~]# /oracle/12.2.0.1/grid/bin/asmcmd afd_label DATA11 /dev/sdl1


Importante: Se tentar criar um label para um disco que já está mapeado, levamos o erro abaixo:
[root@single122 dev]# /oracle/12.2.0.1/grid/bin/asmcmd afd_label DATA10 /dev/sdj1
disk /dev/sdj1 is already provisioned for ASM
ASMCMD-9513: ASM disk label set operation failed.

— SCAN
[root@single122 dev]# /oracle/12.2.0.1/grid/bin/asmcmd afd_scan


— Listando novamente os discos com o label criado.

[oracle@single122 dev]$ asmcmd afd_lsdsk
————————————————————
Label Filtering Path
============================================================
DATA01 ENABLED /dev/sdb1
DATA02 ENABLED /dev/sdc1
DATA03 ENABLED /dev/sdd1
DATA04 ENABLED /dev/sde1
DATA05 ENABLED /dev/sdf1
DATA06 ENABLED /dev/sdg1
DATA07 ENABLED /dev/sdh1
DATA08 ENABLED /dev/sdi1
DATA09 ENABLED /dev/sdj1
DATA10 ENABLED /dev/sdk1
DATA11 ENABLED /dev/sdl1

— Ao criarmos o label, agora temos um disco candidate ao ASMFD.

[oracle@single122 dev]$ asmcmd lsdsk -p –candidate

— Podemos verificar via SQL também.

COL GROUP_NUMBER FORMAT 999;
COL MOUNT_STATUS FORMAT A7;
COL HEADER_STATUS FORMAT A12;
COL MODE_STATUS FORMAT A6;
COL PATH FORMAT A11;
COL STATE FORMAT A7;
COL TOTAL_MB FORMAT 999,999,999.99;
COL FREE_MB FORMAT 999,999,999.99;
COL NAME FORMAT A15;
COL LABEL FORMAT A15;
COL LIBRARY FORMAT A10;
COL FAILGROUP FORMAT A15;
COL VOTING_FILE FORMAT A1;

SELECT
GROUP_NUMBER,
MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,PATH,
STATE,TOTAL_MB,FREE_MB,NAME,LABEL,LIBRARY,
FAILGROUP, VOTING_FILE
FROM V$ASM_DISK
ORDER BY HEADER_STATUS, PATH;



Se o header status estiver PROVISIONED OU FORMER (fazia parte de outro DG e foi liberado), podemos adicionar. Caso tenha outro header, ai fazer o dd abaixo.
— Vamos agora criar um novo diskgroup.


[oracle@single122 sql]$ sqlplus / as sysasm

SQL> CREATE DISKGROUP TESTE EXTERNAL REDUNDANCY DISK ‘AFD:DATA11′
ATTRIBUTE
‘SECTOR_SIZE’=’512′,
‘LOGICAL_SECTOR_SIZE’=’512′,
‘compatible.asm’=’12.2.0.1′,
‘compatible.rdbms’=’12.2.0.1′,
‘au_size’=’1M’;
Diskgroup created.


SQL>@showasm

By Mario Barduchi

Olá pessoal.

Vamos falar um pouco de ASM Filter Driver (ASMFD).

Não vamos entrar aqui em questão de definições do que é, para que serve porque se você chegou até aqui você já sabe (ou deveria saber) do que se trata o assunto.

A ideia aqui é um roteiro para inserir novos discos, deletar discos, criar diskgroup, adicionar discos, etc.

Lembrando também que a minha virtual tem um Oracle Single 12.2.0.1.0 com GRID instalado.

Primeiro, sempre bom dar uma olhada no Help. Aqui abaixo está somente a parte que nos interessa que é do ASMFD.

[oracle@single122 ~]$ asmcmd help

commands:
——–
afd_configure, afd_deconfigure, afd_di, afd_dsget, afd_dsset
afd_filter, afd_label, afd_lsdsk, afd_lslbl, afd_refresh
afd_scan, afd_state, afd_unlabel

Legal também dar uma olhada nos comandos para sabermos as possibilidades como abaixo.

[oracle@single122 ~]$ asmcmd help afd_state

Enfim, vamos ao que interessa. Para os nossos testes apresentei um disco (/dev/sdl) para podermos fazer o processo inteiro.

— Vamos primeiro verificar o disco e seu tamanho.
[oracle@single122 ~]$ cd /dev/

[oracle@single122 dev]$ ls -lhrt sdl*
brw-rw—- 1 root disk 8, 176 Oct 24 08:51 sdl

[oracle@single122 dev]$ lsblk sdl
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdl 8:176 0 10G 0 disk

— Criando a partição no disco

oracle@single122 dev]$ su –

[root@single122 ~]# fdisk -l /dev/sdl

Disk /dev/sdl: 10.7 GB, 10737418240 bytes, 20971520 sectors

Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@single122 ~]# fdisk /dev/sdl
— Responda as opções abaixo as perguntas apresentadas.
n
p
1
ENTER
ENTER
w

[root@single122 ~]# fdisk -l /dev/sdl

Disk /dev/sdl: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00094735

Device Boot Start End Blocks Id System
/dev/sdl1 2048 20971519 10484736 83 Linux

— Verificando a artição criada.
[oracle@single122 dev]$ ls -lhrt sdl*
brw-rw—- 1 root disk 8, 176 Oct 24 09:07 sdl
brw-rw—- 1 root disk 8, 177 Oct 24 09:07 sdl1

[oracle@single122 dev]$ lsblk sdl
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdl 8:176 0 10G 0 disk
+-sdl1 8:177 0 10G 0 part

— Nesse momento ainda não temos nada além da partição, nenhum disco candidate.

[oracle@single122 dev]$ asmcmd lsdsk -p –candidate

— Vou listar os meus discos já existentes apresentados ao ASMFD.

[oracle@single122 dev]$ asmcmd afd_lsdsk
————————————————————
Label Filtering Path
============================================================
DATA01 ENABLED /dev/sdb1
DATA02 ENABLED /dev/sdc1
DATA03 ENABLED /dev/sdd1
DATA04 ENABLED /dev/sde1
DATA05 ENABLED /dev/sdf1
DATA06 ENABLED /dev/sdg1
DATA07 ENABLED /dev/sdh1
DATA08 ENABLED /dev/sdi1
DATA09 ENABLED /dev/sdj1
DATA10 ENABLED /dev/sdk1

— Criar um label para o novo disco. Esse comando seria o equivalente (bem a grosso modo) ao CREATEDISK do ASLMLIB.

[oracle@single122 ~]$ su –

[root@single122 ~]# /oracle/12.2.0.1/grid/bin/asmcmd afd_label DATA11 /dev/sdl1

Importante: Se tentar criar um label para um disco que já está mapeado, levamos o erro abaixo:
[root@single122 dev]# /oracle/12.2.0.1/grid/bin/asmcmd afd_label DATA10 /dev/sdj1
disk /dev/sdj1 is already provisioned for ASM
ASMCMD-9513: ASM disk label set operation failed.

— SCAN
[root@single122 dev]# /oracle/12.2.0.1/grid/bin/asmcmd afd_scan

— Listando novamente os discos com o label criado.

[oracle@single122 dev]$ asmcmd afd_lsdsk
————————————————————
Label Filtering Path
============================================================
DATA01 ENABLED /dev/sdb1
DATA02 ENABLED /dev/sdc1
DATA03 ENABLED /dev/sdd1
DATA04 ENABLED /dev/sde1
DATA05 ENABLED /dev/sdf1
DATA06 ENABLED /dev/sdg1
DATA07 ENABLED /dev/sdh1
DATA08 ENABLED /dev/sdi1
DATA09 ENABLED /dev/sdj1
DATA10 ENABLED /dev/sdk1
DATA11 ENABLED /dev/sdl1

— Ao criarmos o label, agora temos um disco candidate ao ASMFD.

[oracle@single122 dev]$ asmcmd lsdsk -p –candidate

— Podemos verificar via SQL também.

COL GROUP_NUMBER FORMAT 999;
COL MOUNT_STATUS FORMAT A7;
COL HEADER_STATUS FORMAT A12;
COL MODE_STATUS FORMAT A6;
COL PATH FORMAT A11;
COL STATE FORMAT A7;
COL TOTAL_MB FORMAT 999,999,999.99;
COL FREE_MB FORMAT 999,999,999.99;
COL NAME FORMAT A15;
COL LABEL FORMAT A15;
COL LIBRARY FORMAT A10;
COL FAILGROUP FORMAT A15;
COL VOTING_FILE FORMAT A1;

SELECT
GROUP_NUMBER,
MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,PATH,
STATE,TOTAL_MB,FREE_MB,NAME,LABEL,LIBRARY,
FAILGROUP, VOTING_FILE
FROM V$ASM_DISK
ORDER BY HEADER_STATUS, PATH;

Se o header status estiver PROVISIONED OU FORMER (fazia parte de outro DG e foi liberado), podemos adicionar. Caso tenha outro header, ai fazer o dd abaixo.

— Vamos agora criar um novo diskgroup.

[oracle@single122 sql]$ sqlplus / as sysasm

SQL> CREATE DISKGROUP TESTE EXTERNAL REDUNDANCY DISK ‘AFD:DATA11′
ATTRIBUTE
‘SECTOR_SIZE’=’512′,
‘LOGICAL_SECTOR_SIZE’=’512′,
‘compatible.asm’=’12.2.0.1′,
‘compatible.rdbms’=’12.2.0.1′,
‘au_size’=’1M’;
Diskgroup created.

SQL>@showasm

— Vamos agora dropar um disco de um dos diskgroups.

— Remover o disco 09 do diskgroup REDO
SQL> alter diskgroup TESTE drop disk DATA09;
Diskgroup altered.

SQL> @showasm

— Para fazer a remoção completa do disco devemos remover o label também.

[root@single122 ~]# su –

— Listando os discos
[root@single122 ~]# /oracle/12.2.0.1/grid/bin/asmcmd afd_lsdsk
————————————————————
Label Filtering Path
============================================================
DATA01 ENABLED /dev/sdb1
DATA02 ENABLED /dev/sdc1
DATA03 ENABLED /dev/sdd1
DATA04 ENABLED /dev/sde1
DATA05 ENABLED /dev/sdf1
DATA06 ENABLED /dev/sdg1
DATA07 ENABLED /dev/sdh1
DATA08 ENABLED /dev/sdi1
DATA09 ENABLED /dev/sdj1
DATA10 ENABLED /dev/sdk1
DATA11 ENABLED /dev/sdl1

— Removendo o label
[root@single122 ~]# /oracle/12.2.0.1/grid/bin/asmcmd afd_unlabel DATA09

— Listando novamente
[root@single122 ~]# /oracle/12.2.0.1/grid/bin/asmcmd afd_lsdsk
————————————————————
Label Filtering Path
============================================================
DATA01 ENABLED /dev/sdb1
DATA02 ENABLED /dev/sdc1
DATA03 ENABLED /dev/sdd1
DATA04 ENABLED /dev/sde1
DATA05 ENABLED /dev/sdf1
DATA06 ENABLED /dev/sdg1
DATA07 ENABLED /dev/sdh1
DATA08 ENABLED /dev/sdi1
DATA10 ENABLED /dev/sdk1
DATA11 ENABLED /dev/sdl1

— Agora, vamos adicionar um disco a um DG existente

[oracle@single122 sql]$ sqlplus / as sysasm

— Adicinando o disco 09
SQL> alter diskgroup TESTE add disk ‘AFD:DATA09′;
Diskgroup altered.

— Dropar um diskgroup completo

SQL> drop diskgroup TESTE including contents;
Diskgroup dropped.

Importante 1: Depois disso, basta excluir os labels dos discos como descrito mais acima.

Importante2 : Caso esteja em um RAC, deixar apenas um dos nós montados

Exemplo: Temos um RAC com 2 nós, então no nó 2 executar como grid:
sqlplus / as sysasm
SQL> alter diskgroup TESTE dismount;

— Se necessário, podemos fazer outros acertos via SQL

— Alterando o compat ASM e DB

— Antes da alteração
Group Name Type Compat. DB Compat. Total (GB) Used (GB) Free (GB) Used (PCT) Free (PCT) State
—– ———— ———- ———— ———— ————- ————- ————- ———- ———- ———-
2 FRA EXTERN 12.2.0.0.0 12.2.0.0.0 30.00 .06 29.94 .20 % 99.80% MOUNTED

SQL> sqlplus / as sysasm
SQL> ALTER DISKGROUP FRA SET ATTRIBUTE ‘compatible.asm’ = ‘12.2.0.1.0′;
Diskgroup altered.

SQL> ALTER DISKGROUP FRA SET ATTRIBUTE ‘compatible.rdbms’ = ‘12.2.0.1.0′;
Diskgroup altered.

Group Name Type Compat. DB Compat. Total (GB) Used (GB) Free (GB) Used (PCT) Free (PCT) State
—– ———— ———- ———— ———— ————- ————- ————- ———- ———- ———-
2 FRA EXTERN 12.2.0.1.0 12.2.0.1.0 30.00 .06 29.94 .20 % 99.80% MOUNTED

— Algumas verificações interessantes:

— Quando adicionar ou dropar um disco do ASM, para verificar se ainda está fazendo REBALANCE
select

o.INST_ID,
g.name AS disk_grp,
o.OPERATION,
o.STATE,
o.POWER,
o.SOFAR,
o.EST_WORK,
o.EST_RATE,
o.EST_MINUTES
from
GV$ASM_OPERATION o
join
v$asm_diskgroup g ON g.group_number = o.group_number
where
o.GROUP_NUMBER=2
ORDER BY o.INST_ID, g.name;

— Se necessário alterar o valor do rebalance online (isso pode gerar lentidão – quanto maior o power, mais impacto)

ALTER DISKGROUP DG_MVTREINA REBALANCE POWER 1;

— Para verificar o compat,
COLUMN name FORMAT A10
COLUMN compatibility FORMAT A20
COLUMN database_compatibility FORMAT A20

SELECT
group_number, name, compatibility,
database_compatibility
FROM v$asm_diskgroup;

— Para verificar os valores default na criação dos DG’s
COLUMN name FORMAT A20
COLUMN value FORMAT A20

SELECT
group_number, name, value
FROM v$asm_attribute
WHERE
UPPER(NAME) NOT LIKE (‘%TEMPLATE%’) AND
GROUP_NUMBER = 1
ORDER BY group_number, name;

Então é isso. Espero que esse roteiro ajude.

Abraço
Mario

Fonte: ORADICAS – Mario Barduchi

Fonte: DBABRASIL

      

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *