Step 1: To list ASM disks:
# /usr/sbin/oracleasm listdisks

Step 2: To check the major and minor value of a given ASM disk:
# /usr/sbin/oracleasm querydisk -d <ASM DISK>

Step 3: ASM disk mapped to physical disk
# ls -l /dev/* | grep “<Major No>, *<Minor No>” | awk ‘{print $10}’

Step 4: Physical disk to lun info
ls -l /dev/disk/azure/scsi1 |grep <disk> |head -1 |awk ‘{print $9}’

Example
———

[root@testbox /]# /usr/sbin/oracleasm listdisks
ASM1
ASM2
[root@testbox /]#

[root@testbox /]# /usr/sbin/oracleasm querydisk -d ASM1
Disk “ASM1” is a valid ASM disk on device [8,49]
[root@testbox /]#

[root@testbox /]# ls -l /dev/* |grep “8, *49” |awk ‘{print $10}’
/dev/sdd1
[root@testbox /]#

[root@testbox /]# ls -l /dev/disk/azure/scsi1 |grep sdd1 |head -1 |awk ‘{print $9}’
lun1-part1
[root@testbox /]#

Single Server:

Script Name:- asm_azure_mapped_phy_disks.sh

for ASM_disk in `/usr/sbin/oracleasm listdisks`
do
major="$(/usr/sbin/oracleasm querydisk -d $ASM_disk |awk -F[ '{ print $2 }'|awk -F] '{ print $1 }' |awk -F, '{ print $1 }')"
minor="$(/usr/sbin/oracleasm querydisk -d $ASM_disk |awk -F[ '{ print $2 }'|awk -F] '{ print $1 }' |awk -F, '{ print $2 }')"
disk_name=$(ls -l /dev/* |grep ^b |grep "$major, *$minor" |awk 'NR==1' |awk '{ print $10 }')
disk=$(echo "$disk_name" |awk -F'/' '{print $NF}')
asm_lun=$(ls -l /dev/disk/azure/scsi1 |grep "$disk" |head -1 |awk '{print $9}')
pipe=`echo "|"`
echo $ASM_disk $pipe $disk_name $pipe $asm_lun
done

Script Output:

[root@testbox /]# asm_azure_mapped_phy_disks.sh
ASM1 | /dev/sdd1 | lun1-part1
ASM2 | /dev/sde1 | lun2-part1
[root@testbox /]#

Multiple Server:


for srv in `cat s`
do
ssh_conn="ssh -o ConnectTimeout=10 -o BatchMode=yes -o StrictHostKeyChecking=no -o PasswordAuthentication=no -q"

for ASM_disk in `$ssh_conn $srv /usr/sbin/oracleasm listdisks`
do
major="$($ssh_conn $srv /usr/sbin/oracleasm querydisk -d $ASM_disk | awk -F[ '{ print $2 }'| awk -F] '{ print $1 }' | awk -F, '{ print $1 }')"
minor="$($ssh_conn $srv /usr/sbin/oracleasm querydisk -d $ASM_disk | awk -F[ '{ print $2 }'| awk -F] '{ print $1 }' | awk -F, '{ print $2 }')"
disk_name=$($ssh_conn $srv "ls -l /dev/* | grep ^b" | grep "$major, *$minor" | awk '{ print $10 }')
disk=$(echo "$disk_name" |awk -F'/' '{print $NF}')
asm_lun=$($ssh_conn $srv ls -l /dev/disk/azure/scsi1 |grep "$disk" |head -1 |awk '{print $9}')
pipe=`echo "|"`
echo $srv $pipe $ASM_disk $pipe $disk_name $pipe $asm_lun
done
done

Script Output:

testbox1 | ASM1 | /dev/sdd1 | lun1-part1
testbox1 | ASM2 | /dev/sde1 | lun2-part1
testbox2 | ASM1 | /dev/sde1 | lun2-part1
testbox2 | ASM2 | /dev/sdd1 | lun1-part1
testbox3 | ASM1 | /dev/sdd1 | lun1-part1
testbox3 | ASM2 | /dev/sde1 | lun2-part1
testbox4 | ASM1 | /dev/sdd1 | lun1-part1
testbox4 | ASM2 | /dev/sde1 | lun2-part1
testbox5 | ASM1 | /dev/sdd1 | lun1-part1
testbox5 | ASM2 | /dev/sde1 | lun2-part1
testbox6 | ASM1 | /dev/sdd1 | lun1-part1
testbox6 | ASM2 | /dev/sde1 | lun2-part1
testbox7 | ASM1 | /dev/sdh1 | lun6-part1
testbox7 | ASM2 | /dev/sdg1 | lun5-part1
testbox7 | ASM3 | /dev/sdd1 | lun2-part1
testbox7 | ASM4 | /dev/sde1 | lun3-part1
testbox7 | ASM5 | /dev/sdf1 | lun4-part1
testbox8 | ASM1 | /dev/sdc1 | lun2-part1
testbox8 | ASM2 | /dev/sdg1 | lun6-part1
testbox8 | ASM3 | /dev/sdf1 | lun5-part1
testbox8 | ASM4 | /dev/sdd1 | lun3-part1
testbox8 | ASM5 | /dev/sdh1 | lun7-part1