CentOS7的udev的绑定规则
说明
因为udev绑定使用磁盘设备名称的时候,如果设备名称改变了,那么绑定可能会出现问题,考虑到这种场景,我们使用scsi_id绑定udev
scsi_id无论你的磁盘设备名称如何改变,它都不会改变,可以唯一确定一个磁盘
centos6及以前的版本语法
实际上直接使用这些盘也是可以的,但是考虑到规范,参考之前客户udev绑定规则规范:
--not available
KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id i --whitelisted --device=/dev/$name",RESULT=="36000c29b263ed2452f80e9848bdf2fa5",NAME="asm-2g-2fa5-grid1",OWNER="grid",GROUP="asmadmin",MODE="0660"
centos7及以后的版本语法
可以看到别名的命名方式是:asm-lunsize-id后四位-磁盘组名+编号。这样以后遇到加盘/删盘这类操作,就能快速帮助DBA确认。
不过因为上面这个udev语法是RHEL 6的,在CentOS 7并不适用,换成7对应的语法就是:
--ok!
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36acb3b510041191b0de7bcdd0000000f",SYMLINK+="asm-400g-000f-data1",OWNER="grid",GROUP="asmadmin",MODE="0660"
RHEL 7 查看scsi_id
lsscsi --scsi_id
[root@localhost etc]# lsscsi --scsi_id
[0:2:0:0] disk AVAGO MR-SAS3316 4.74 /dev/sda 36f80f41fe9c3f0002305604d0f7eea16
[0:2:1:0] disk AVAGO MR-SAS3316 4.74 /dev/sdb 36f80f41fe9c3f000230560520fce45e6
[root@localhost etc]# lsscsi --scsi_id -g
[0:2:0:0] disk AVAGO MR-SAS3316 4.74 /dev/sda 36f80f41fe9c3f0002305604d0f7eea16 /dev/sg0
[0:2:1:0] disk AVAGO MR-SAS3316 4.74 /dev/sdb 36f80f41fe9c3f000230560520fce45e6 /dev/sg1
快速生产脚本
考虑到盘相对多,一个个写既费时又容易出错,想起早些年间装RAC时,经常会参考maclean的一个方法,就是把这个工作写一个脚本:
centos 6
for i in b c d e
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --
device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\",
NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done
centos7
运行脚本
其中b,c,d,e...是磁盘设备名称
for i in b c d;
do
echo "KERNEL==\"sd*\",SUBSYSTEM==\"block\",PROGRAM==\"/lib/udev/scsi_id -g -u -d /dev/\$name\",RESULT==\"`/lib/udev/scsi_id -g -u -d /dev/sd$i`\",SYMLINK+=\"asm-5g-xxxx-grid1\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
done
执行脚本:sh /u01/asmdisk.sh ,结果为:
SYMLINK 就是裸设备的名称
--script-result
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36acb3b510041191b0de7bcdd0000000f",SYMLINK+="asm-5g-xxxx-grid1",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36acb3b510041191b0de7be3900000010",SYMLINK+="asm-5g-xxxx-grid1",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36acb3b510041191b0de7bec100000011",SYMLINK+="asm-5g-xxxx-grid1",OWNER="grid",GROUP="asmadmin",MODE="0660"
配置udev文件
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
--modify
[root@xxdb01 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36acb3b510041191b0de7bcdd0000000f",SYMLINK+="asm-400g-000f-data1",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36acb3b510041191b0de7be3900000010",SYMLINK+="asm-400g-0010-data2",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/lib/udev/scsi_id -g -u -d /dev/$name",RESULT=="36acb3b510041191b0de7bec100000011",SYMLINK+="asm-400g-0011-data3",OWNER="grid",GROUP="asmadmin",MODE="0660"
这里看到这个/lib/udev/scsi_id -g -u -d /dev/sd*查到的结果和存储多路径查到的Lun WWN,除了scsi_id查询的结果首位多一个3,后面是完全一样的。
此时可以使用udevadm进行应用规则:
重新配置udev配置
udevadm control --reload
udevadm trigger
/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm control --reload
systemctl restart systemd-udev-trigger.service
检查绑定结果
然后查看结果:
[root@xxdb01 ~]# ls -l /dev/asm*
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-100g-0039-arch1 -> sdm
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-000f-data1 -> sdb
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-0010-data2 -> sdc
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-0011-data3 -> sdd
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-0012-data4 -> sde
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-0013-data5 -> sdf
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-0014-data6 -> sdg
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-0015-data7 -> sdh
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-400g-0016-data8 -> sdi
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-5g-00da-grid1 -> sdj
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-5g-00db-grid2 -> sdk
lrwxrwxrwx. 1 root root 3 Sep 8 10:19 /dev/asm-5g-00dc-grid3 -> sdl
[root@xxdb01 ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 Sep 8 10:10 /dev/sda
brw-rw----. 1 root disk 8, 1 Sep 8 10:10 /dev/sda1
brw-rw----. 1 root disk 8, 2 Sep 8 10:10 /dev/sda2
brw-rw----. 1 grid asmadmin 8, 16 Sep 8 16:02 /dev/sdb
brw-rw----. 1 grid asmadmin 8, 32 Sep 8 10:19 /dev/sdc
brw-rw----. 1 grid asmadmin 8, 48 Sep 8 10:19 /dev/sdd
brw-rw----. 1 grid asmadmin 8, 64 Sep 8 10:19 /dev/sde
brw-rw----. 1 grid asmadmin 8, 80 Sep 8 10:19 /dev/sdf
brw-rw----. 1 grid asmadmin 8, 96 Sep 8 10:19 /dev/sdg
brw-rw----. 1 grid asmadmin 8, 112 Sep 8 10:19 /dev/sdh
brw-rw----. 1 grid asmadmin 8, 128 Sep 8 10:19 /dev/sdi
brw-rw----. 1 grid asmadmin 8, 144 Sep 8 16:02 /dev/sdj
brw-rw----. 1 grid asmadmin 8, 160 Sep 8 16:02 /dev/sdk
brw-rw----. 1 grid asmadmin 8, 176 Sep 8 16:02 /dev/sdl
brw-rw----. 1 grid asmadmin 8, 192 Sep 8 16:02 /dev/sdm
最终使用asmca创建磁盘组,最终结果为
[grid@xxdb01 ~]$ asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 4194304 102400 102276 0 102276 0 N ARCH/
MOUNTED EXTERN N 512 4096 4194304 3276800 3276620 0 3276620 0 N DATA/
MOUNTED NORMAL N 512 4096 4194304 15360 14320 5120 4600 0 Y GRID/
[grid@xxdb01 ~]$