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