Posts tagged ‘querydisk’

May 3, 2011

ASM disk to Physical Disk Mapping

Use oracleasm querydisk -p <ASM_DISK> command


[root@guang ~]# oracleasm listdisks
ACFS_ORA_HOME_VOL1
CRSVOL1
DATAVOL1
FRAVOL1
[root@guang ~]# oracleasm querydisk -p DATAVOL1
Disk "DATAVOL1" is a valid ASM disk
/dev/sde1: LABEL="DATAVOL1" TYPE="oracleasm"

we can also use this procedure that has been tested on Redhat and CentOS platform. Similar procedure applies to other Unix platforms.

Get disks formatted by oracleasm lib


[oracle@myhost ] oracleasm listdisks

DATAVOL1
DATAVOL2
DATAVOL3
FRAVOL1

Get details about the physical disk mapped to ASM disk


[oracle@myhost ] oracleasm querydisk -d DATAVOL1

Disk "DATAVOL1" is a valid ASM disk on device [8, 33]

where [8,33] is [minor number,major number] of a device

Use “ls -l /dev” to locate the physical disk by its minor and major number


[oracle@myhost ] ls -l /dev |grep "8," |grep 33
brw-r----- 1 root    disk   8,   33 May  1 16:32 sdc1

So the ASM disk “DATAVOL1” was created on top of ‘/dev/sdc1’

Use the following script to map all ASM disks to physical disks

#!/bin/ksh
for i in `/etc/init.d/oracleasm listdisks`
do
v_asmdisk=`/etc/init.d/oracleasm querydisk -d $i | awk  '{print $2}'`
v_minor=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk '{print $1}'`
v_major=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ '{print $2}'| awk -F] '{print $1}' | awk '{print $2}'`
v_device=`ls -la /dev | grep $v_minor | grep $v_major | awk '{print $10}'`
echo "ASM disk $v_asmdisk based on /dev/$v_device  [$v_minor $v_major]"
done

A sample report looks like


ASM disk "DATAVOL1" based on /dev/sdc1  [8, 33]
ASM disk "DATAVOL2" based on /dev/sdf1  [8, 81]
ASM disk "DATAVOL3" based on /dev/sdb1  [8, 17]
ASM disk "FRAVOL1" based on /dev/sdd1  [8, 49]

March 13, 2011

Mapping ASM disks to physical devices

Sometimes you may need to map ASM Disks to its physical devices.
If they are based on ASMLib you will see their ASM name, ie: ORCL:VOL1 when querying v$asm_disk

When running oracleasm querydisk VOL1 you will get in addition the major – minor numbers, that can be used to match the physical device, ie:

— pre-11.2
[root@orcldb2 ~]# /etc/init.d/oracleasm querydisk VOL1
Disk “VOL1” is a valid ASM disk on device [8, 97]
— 11.2 and upper
[root@orcldb2 ~]# /etc/init.d/oracleasm querydisk -d VOL1
Disk “VOL1” is a valid ASM disk on device [8, 97]

[root@orcldb2 ~]# ls -l /dev | grep 8, | grep 97
brw-rw—-   1 root disk     8,      81 Nov  4 13:02 sdg1

This script can do the job for a group of ASM Disks:

———- pre-11.2 script starts  here ————
#!/bin/ksh
for i in `/etc/init.d/oracleasm listdisks`
do
v_asmdisk=`/etc/init.d/oracleasm querydisk $i | awk  ‘{print $2}’`
v_minor=`/etc/init.d/oracleasm querydisk $i | awk -F[ ‘{print $2}’| awk -F] ‘{print $1}’ | awk ‘{print $1}’`
v_major=`/etc/init.d/oracleasm querydisk $i | awk -F[ ‘{print $2}’| awk -F] ‘{print $1}’ | awk ‘{print $2}’`
v_device=`ls -la /dev | grep $v_minor | grep $v_major | awk ‘{print $10}’`
echo “ASM disk $v_asmdisk based on /dev/$v_device  [$v_minor $v_major]”
done
———- finish here ————
———- 11.2 script starts  here ————
#!/bin/ksh
for i in `/etc/init.d/oracleasm listdisks`
do
v_asmdisk=`/etc/init.d/oracleasm querydisk -d $i | awk  ‘{print $2}’`
v_minor=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ ‘{print $2}’| awk -F] ‘{print $1}’ | awk ‘{print $1}’`
v_major=`/etc/init.d/oracleasm querydisk -d $i | awk -F[ ‘{print $2}’| awk -F] ‘{print $1}’ | awk ‘{print $2}’`
v_device=`ls -la /dev | grep $v_minor | grep $v_major | awk ‘{print $10}’`
echo “ASM disk $v_asmdisk based on /dev/$v_device  [$v_minor $v_major]”
done
———- finish here ————

The output looks like this:

ASM disk “VOL1” based on /dev/sdg1  [8, 97]
ASM disk “VOL10” based on /dev/sdp1  [8, 241]
ASM disk “VOL2” based on /dev/sdh1  [8, 113]
ASM disk “VOL3” based on /dev/sdk1  [8, 161]
ASM disk “VOL4” based on /dev/sdi1  [8, 129]
ASM disk “VOL5” based on /dev/sdl1  [8, 177]
ASM disk “VOL6” based on /dev/sdj1  [8, 145]
ASM disk “VOL7” based on /dev/sdn1  [8, 209]
ASM disk “VOL8” based on /dev/sdo1  [8, 225]
ASM disk “VOL9” based on /dev/sdm1  [8, 193]

If you are using multi-path, you will need an additional step to map the physical device to the multi-path device, for instance if using EMC Powerpath if you want to map sdf1

[root@orclp ~]# /etc/init.d/oracleasm querydisk vol1
Disk “VOL1” is a valid ASM disk on device [8, 81][root@orclp ~]# ls -l /dev | grep 8,| grep 81
brw-rw—-   1 root disk     8,      81 Oct 29 20:42 sdf1

[root@orclp ~]# powermt display dev=all


Pseudo name=emcpowerg
Symmetrix ID=000290101698
Logical device ID=0214
state=alive; policy=SymmOpt; priority=0; queued-IOs=0
==============================================================================
—————- Host —————   – Stor –   — I/O Path –  — Stats —
### HW Path                 I/O Paths    Interf.   Mode    State  Q-IOs Errors
==============================================================================
1 qla2xxx                   sdf       FA  7bB   active  alive      0      0
2 qla2xxx                   sdq       FA 10bB   active  alive      0      0

The last step is to check the partition assigned to the emcpower device, ie:

[root@orclp ~]# ls -l /dev/emcpowerg*
brw——-  1 root root 120, 96 Oct 29 20:41 /dev/emcpowerg
brw——-  1 root root 120, 97 Nov 15 13:08 /dev/emcpowerg1