Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
LAMI DBA

Articles autour des SGBD Oracle, SQL Server & PostgreSQL

ASM - Une histoire de disques....

 


Après deux semaines en Inde (à Pune), me voici de retour en France, et plus particulièrement en Ile de France... Détail non négligeable car cela implique un temps pourri, une grève impactant nos journées... Bref que du bonheur...
C'est pourquoi, j'ai décidé d'agrémenter mes articles d'images qui me donneront toujours le sourire.. Des photos prises par votre serviteur lors de ses deux derniers séjours au Kenya... et en attendant le prochaine qui aura lieu en Février 2019...
Aujourd'hui, petit article sur ASM et comment s'y retrouver (ou du moins comme j'essaye de m'y retrouver)... Mickael aura surement quelque chose à redire sur ce sujet qu'il a beaucoup travaillé.
Sur ma vm jumbo (le même nom que le lion en photo), regardons un peu d'un point de vue Oracle ce que j'ai comme infos..
 
SQL>
SQL>
SQL> col name for a20
SQL> col path for a50
SQL>
SQL>  select name,path from v$asm_disk;

NAME                 PATH
-------------------- --------------------------------------------------
ACFS_01              ORCL:ACFS_01
VOL1                 ORCL:VOL1

SQL>

Voila qui est très pratique, je connais les noms et PATH de mes disques.. sauf que ORCL:VOL1..  Sauf que ce que je souhaiterai c'est faire le lien entre mon disque ASM et les disques physiques..
D'un point de vue système, je ne suis pas beaucoup plus aidé..
 
[root@jumbo bin]#
[root@jumbo bin]# ls -lht /dev/oracleasm/disks/*
brw-rw---- 1 oracle dba 8, 37 Apr  3 09:50 /dev/oracleasm/disks/VOL1
brw-rw---- 1 oracle dba 8, 49 Apr  3 09:50 /dev/oracleasm/disks/ACFS_01
[root@jumbo bin]#

Quoi que... les deux nombres avant la date vont pouvoir nous aider....
toujours coté système.
 
[root@jumbo bin]#
[root@jumbo bin]# ls -lht /dev/sd* |grep 8, |grep 37
brw-rw---- 1 root disk 8, 37 Apr  3 11:38 /dev/sdc5

On sait maintenant que mon disque ASM VOL1 correspond physiquement à la partition /dev/sdc5
On peut le faire dans l'autre sens... Imaginons que nous ayons identifié cette partition /dev/sdc5 comme problématique (performance par exemple..;)... comment faire pour savoir à quel disque ASM cela correspond..
Nous allons utiliser pour cela l'utiliatire kfed qui se trouve dans $GRID_HOME/bin
 
[root@jumbo bin]#
[root@jumbo bin]# cd /u01/app/12.2.0.1/grid/bin/
[root@jumbo bin]#
[root@jumbo bin]#
[root@jumbo bin]# ./kfed read /dev/sdc5
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: blk=0
kfbh.block.obj:              2147483648 ; 0x008: disk=0
kfbh.check:                   694995298 ; 0x00c: 0x296cc962
kfbh.fcn.base:                        0 ; 0x010: 0x00000000
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfdhdb.driver.provstr:     ORCLDISKVOL1 ; 0x000: length=12
kfdhdb.driver.reserved[0]:    827084630 ; 0x008: 0x314c4f56
kfdhdb.driver.reserved[1]:            0 ; 0x00c: 0x00000000
kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000
kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000
kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000
kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000
kfdhdb.compat:                203424000 ; 0x020: 0x0c200100
kfdhdb.dsknum:                        0 ; 0x024: 0x0000
kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname:                    VOL1 ; 0x028: length=4
kfdhdb.grpname:                    DATA ; 0x048: length=4
kfdhdb.fgname:                     VOL1 ; 0x068: length=4
kfdhdb.siteguid[0]:                   0 ; 0x088: 0x00
kfdhdb.sitegui

 

Beaucoup d'infos, mais j'ai mis en gras (bleu) celles qui m'interessent et qui me permettent de faire le lien entre mon disque physique ainsi que le disque ASM & le DISKGROUP associé.
Si à un instance t, vous avez besoin de faire le point sur vos disques, le script ci-dessous vous aidera peut être. Plus fainéant que moi, ca reste compliqué, donc ce script provient de https://www.thegeekdiary.com/oracle-asm-shell-script-to-map-physical-disk-devices-to-asmlib-disks/

 

#!/bin/bash
## ASMLIB_DISK  -- disk name in ASMLIB
## ASM_DISK -- disk name in ASM
## DEVICE -- physical disk name
GRID_HOME=`cat /etc/oratab  | grep ^+ASM | awk -F":" '{print $2}'`
for ASMLIB_DISK in `ls /dev/oracleasm/disks/*`
  do
    ASM_DISK=`$GRID_HOME/bin/kfed read $ASMLIB_DISK | grep dskname | tr -s ' '| cut -f2 -d' '`
    majorminor=`ls -l $ASMLIB_DISK | tr -s ' ' | cut -f5,6 -d' '`
    device=`ls -l /dev/ | tr -s ' ' | grep -w "$majorminor" | cut -f10 -d' '`
    echo "ASMLIB disk name : $ASMLIB_DISK"
    echo "ASM_DISK name : $ASM_DISK"
    echo "Physical disk device : /dev/$device"
done

 

Et en sortie sur ma VM cela donne.

 

ASMLIB disk name : /dev/oracleasm/disks/ACFS_01
ASM_DISK name : ACFS_01
Physical disk device : /dev/sdd1
ASMLIB disk name : /dev/oracleasm/disks/VOL1
ASM_DISK name : VOL1
Physical disk device : /dev/sdc5


Enjoy.
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article