Extend ASM disk groups using udev
Environment: linux6.5 Oracle RAC cluster with two nodes, Oracle version 11.2.0.4
1.1.1 View related content:
(1) disk condition:
[root@db1 ~] # fdisk-l
Disk / dev/sda: 85.9 GB, 85899345920 bytes255 heads, 63 sectors/track 10443 cylindersUnits = cylinders of 16065 * 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000d2f26 Device Boot Start End Blocks Id System/dev/sda1 * 1 64 512000 83 LinuxPartition 1 does not end on cylinder boundary./dev/sda2 64 10444 83373056 8e Linux LVM Disk / dev/sdb: 53.7 GB, 5368 7091200 bytes255 heads, 63 sectors/track 6527 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/sdd: 1073 MB, 1073741824 bytes255 heads, 63 sectors/track, 130 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/sdc: 53.7 GB, 53687091200 bytes255 heads, 63 sectors/track 6527 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/sde: 1073 MB, 1073741824 bytes255 heads, 63 sectors/track, 130 cylindersUnits = cylinders of 16065 * 512 = 8225 280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/sdf: 1073 MB, 1073741824 bytes255 heads, 63 sectors/track 130 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/sdg: 21.5GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/sdh: 21.5GB, 21474836480 bytes255 heads, 63 sectors/track 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/mapper/vg_db1-lv_root: 53.7 GB, 53687091200 bytes255 heads, 63 sectors/track, 6527 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/mapper/vg_db1-lv_swap: 8405 MB, 8405385216 bytes255 heads 63 sectors/track, 1021 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Disk / dev/mapper/vg_db1-lv_home: 23.3 GB, 23278387200 bytes255 heads, 63 sectors/track, 2830 cylindersUnits = cylinders of 16065 * 512 = 8225 280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000
(2) ASM disk condition:
SQL > select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,STATE,TOTAL_MB,PATH,NAME from v$asm_disk order by GROUP_NUMBER,DISK_NUMBER
GROUP_NUMBER DISK_NUMBER MOUNT_S STATE TOTAL_MB PATH NAME 10 CACHED NORMAL 51200 / dev/asmdiske DATA_0000 1 1 CACHED NORMAL 51200 / dev/asmdiskf DATA_0001 20 CACHED NORMAL 20480 / dev/asmdiskg ARCH_0000 3 0 CACHED NORMAL 1024 / dev/asmdiskb OCR_0000 3 1 CACHED NORMAL 1024 / dev/asmdiskc OCR_0001 3 2 CACHED NORMAL 1024 / dev/asmdiskd OCR_0002 6 rows selected.
Conclusion: ASM hangs 6 disks. Through the capacity, we may see that a 21.5G disk is not mounted and the new disk is not yet in use. Looking at the 21.5G disk, we find / dev/sdg and / dev/sdh.
(3) ASM disk corresponds to physical disk:
[root@db1 rules.d] # pwd
/ etc/udev/rules.d
[root@db1 rules.d] # more 99-x-asmdisk_new.rules
KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c29c5362298e7a9898225a9f8ed6", SYMLINK+= "asmdiskb", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c2963776a39f75310d2f2bd98287", SYMLINK+= "asmdiskc", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c29dd4c14aa6a5e4f77f40427565", SYMLINK+= "asmdiskd", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "KERNEL==?", KERNEL== {sd} = = "sd", sd "sd" OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c29ec780367d4c1f845c880f7f0e", SYMLINK+= "asmdiskf", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c297777b8958d4d4dd5cd7ddbc47", SYMLINK+= "asmdiskg", OWNER= "grid", GROUP= "asmadmin", MODE= "0660"
[root@db1 rules.d] #
(4) confirm which disk is not in use, check the disk ID, and compare it with the above 99-x-asmdisk_new.rules content to find:
[root@db1 rules.d] # / lib/udev/scsi_id-g-u / dev/sdg-this disk is a new disk and is not used
36000c293ef0d560ff854306446331b79
[root@db1 rules.d] # / lib/udev/scsi_id-g-u / dev/sdh
36000c297777b8958d4d4dd5cd7ddbc47
1.1.2 Mount an unused disk
Target: / dev/sdg to ASM disk group 2, namely ARCH
(1) modify the file 99-x-asmdisk_new.rules first, and then modify the following contents:
[root@db1 rules.d] # more 99-x-asmdisk_new.rules
KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c29c5362298e7a9898225a9f8ed6", SYMLINK+= "asmdiskb", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c2963776a39f75310d2f2bd98287", SYMLINK+= "asmdiskc", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c29dd4c14aa6a5e4f77f40427565", SYMLINK+= "asmdiskd", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "KERNEL==?", KERNEL== {sd} = = "sd", sd "sd" OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c29ec780367d4c1f845c880f7f0e", SYMLINK+= "asmdiskf", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c297777b8958d4d4dd5cd7ddbc47", SYMLINK+= "asmdiskg", OWNER= "grid", GROUP= "asmadmin", MODE= "0660" KERNEL== "sd?", ENV {ID_SERIAL} = = "36000c293ef0d560ff854306446331b79", SYMLINK+= "asmdiskh", asmdiskh "asmdiskh", OWNER= "OWNER=", OWNER= "grid", grid "0660"-- add new lines
(2) reload the contents of the udev file and start
[root@db1 rules.d] # udevadm control-- reload-rules
[root@db1 rules.d] # start_udev
Starting udev: [OK]
After booting, you can see the newly added disk / dev/asmdiskh-> sdg
[root@db1 rules.d] # ls-l / dev/asm
Total 0
[root@db1 rules.d] # ls-l / dev/asm*
Lrwxrwxrwx 1 root root 3 May 19 15:13 / dev/asmdiskb-> sdf
Lrwxrwxrwx 1 root root 3 May 19 15:13 / dev/asmdiskc-> sde
Lrwxrwxrwx 1 root root 3 May 19 15:13 / dev/asmdiskd-> sdd
Lrwxrwxrwx 1 root root 3 May 19 15:13 / dev/asmdiske-> sdb
Lrwxrwxrwx 1 root root 3 May 19 15:13 / dev/asmdiskf-> sdc
Lrwxrwxrwx 1 root root 3 May 19 15:13 / dev/asmdiskg-> sdh
Lrwxrwxrwx 1 root root 3 May 19 15:13 / dev/asmdiskh-> sdg
(3) another node does the same processing.
[root@db2 rules.d] # vi 99-x-asmdisk_new.rules
[root@db2 rules.d] # udevadm control-- reload-rules
[root@db2 rules.d] # start udev
Start: Unknown job: udev
[root@db2 rules.d] # start_udev
Starting udev: [OK]
[root@db2 rules.d] # ls-l / dev/asm*
Lrwxrwxrwx 1 root root 3 May 19 15:17 / dev/asmdiskb-> sdf
Lrwxrwxrwx 1 root root 3 May 19 15:17 / dev/asmdiskc-> sde
Lrwxrwxrwx 1 root root 3 May 19 15:17 / dev/asmdiskd-> sdd
Lrwxrwxrwx 1 root root 3 May 19 15:17 / dev/asmdiske-> sdb
Lrwxrwxrwx 1 root root 3 May 19 15:17 / dev/asmdiskf-> sdc
Lrwxrwxrwx 1 root root 3 May 19 15:17 / dev/asmdiskg-> sdh
Lrwxrwxrwx 1 root root 3 May 19 15:17 / dev/asmdiskh-> sdg
/ dev/asm:
Total 0
1.1.3 add a disk to a disk group in an ASM environment:
(1) use GRID users to enter the ASM instance and query the ASM disk to see the disk:
SQL > select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,STATE,TOTAL_MB,PATH,NAME from v$asm_disk order by GROUP_NUMBER,DISK_NUMBER GROUP_NUMBER DISK_NUMBER MOUNT_S STATE TOTAL_MB PATH NAME 00 CLOSED NORMAL 0 / dev/asmdiskh 1 0 CACHED NORMAL 51200 / dev/asmdiske DATA_0000 1 1 CACHED NORMAL 51200 / dev/asmdiskf DATA_0001 20 CACHED NORMAL 20480 / dev/asmdiskg ARCH_0000 3 0 CACHED NORMAL 1024 / dev/asmdiskb OCR_0000 3 1 CACHED NORMAL 1024 / dev/asmdiskc OCR_0001 3 2 CACHED NORMAL 1024 / dev/asmdiskd OCR_0002 7 rows selected.
(2) use the command to add the disk to the group ARCH.
Log in using sqlplus'/ as sysasm'
SQL > alter diskgroup ARCH ADD DISK'/ dev/asmdiskh'
Check that the disk group capacity has been increased
SQL > select NAME,FREE_MB,TOTAL_MB FROM V$ASM_DISKGROUP NAME FREE_MB TOTAL_MB---DATA 99315 102400ARCH 39294 40960OCR 2787 3072
Confirm the condition of the other node:
SQL > select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,STATE,TOTAL_MB,PATH,NAME from v$asm_disk order by GROUP_NUMBER,DISK_NUMBER GROUP_NUMBER DISK_NUMBER MOUNT_S STATE TOTAL_MB PATH NAME 1 0 CACHED NORMAL 51200 / dev/asmdiske DATA_0000 1 1 CACHED NORMAL 51200 / dev/asmdiskf DATA_0001 20 CACHED NORMAL 20480 / dev/asmdiskg ARCH_0000 2 1 CACHED NORMAL 20480 / dev/asmdiskh ARCH_0001 3 0 CACHED NORMAL 1024 / dev/asmdiskb OCR_0000 3 1 CACHED NORMAL 1024 / dev/asmdiskc OCR_0001 3 2 CACHED NORMAL 1024 / dev/asmdiskd OCR_0002 7 rows selected.
At this point, the disk ASM expansion is complete.