• 转:利用UDEV服务解决RAC ASM存储设备名


    利用UDEV服务解决RAC ASM存储设备名

    好文转载,链接:http://www.askmaclean.com/archives/utilize-udev-resolve-11gr2-rac-asm-device-name.html

    1.确认在所有RAC节点上已经安装了必要的UDEV包
    [root@rh2 ~]# rpm -qa|grep udev
    udev-095-14.21.el5
    2.通过scsi_id获取设备的块设备的唯一标识名,假设系统上已有LUN sdc-sdp
    for i in c d e f g h i j k l m n o p ;
    do
    echo "sd$i" "`scsi_id -g -u -s /block/sd$i` ";
    done

    sdc 1IET_00010001
    sdd 1IET_00010002
    sde 1IET_00010003
    sdf 1IET_00010004
    sdg 1IET_00010005
    sdh 1IET_00010006
    sdi 1IET_00010007
    sdj 1IET_00010008
    sdk 1IET_00010009
    sdl 1IET_0001000a
    sdm 1IET_0001000b
    sdn 1IET_0001000c
    sdo 1IET_0001000d
    sdp 1IET_0001000e
    以上列出于块设备名对应的唯一标识名

    3.创建必要的UDEV配置文件,
    首先切换到配置文件目录
    [root@rh2 ~]# cd /etc/udev/rules.d
    定义必要的规则配置文件
    [root@rh2 rules.d]# touch 99-oracle-asmdevices.rules

    [root@rh2 rules.d]# cat 99-oracle-asmdevices.rules
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010001", NAME="ocr1", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010002", NAME="ocr2", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010003", NAME="asm-disk1", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010004", NAME="asm-disk2", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010005", NAME="asm-disk3", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010006", NAME="asm-disk4", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010007", NAME="asm-disk5", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010008", NAME="asm-disk6", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_00010009", NAME="asm-disk7", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_0001000a", NAME="asm-disk8", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_0001000b", NAME="asm-disk9", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_0001000c", NAME="asm-disk10", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_0001000d", NAME="asm-disk11", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1IET_0001000e", NAME="asm-disk12", OWNER="grid", GROUP="asmadmin", MODE="0660"

    Result 为/sbin/scsi_id -g -u -s %p的输出--Match the returned string of the last PROGRAM call. This key may be
    used in any following rule after a PROGRAM call.
    按顺序填入刚才获取的唯一标识名即可

    OWNER为安装Grid Infrastructure的用户,在11gr2中一般为grid,GROUP为asmadmin
    MODE采用0660即可

    NAME为UDEV映射后的设备名,
    建议为OCR和VOTE DISK创建独立的DISKGROUP,为了容易区分将该DISKGROUP专用的设备命名为ocr1..ocrn的形式
    其余磁盘可以根据其实际用途或磁盘组名来命名

    写了一段直接获得语句的脚本
    for i in b c d e f g h i j k ;
    do
    echo "KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="`scsi_id -g -u -s /block/sd$i`", NAME="asm-disk$i", OWNER="grid", GROUP="asmadmin", MODE="0660""
    done
    以上脚本在Linux 5上是通用的
    但是有同学反映在redhat/Oracle Linux 6以上版本中该脚本失效了。
    这是因为:
    在OEL6或者RHEL6中,这一切都有所变化。
    主要的变化是:
    1. scsi_id的命令语法发生了变化,scsi_id -g -u -s这样的命令不再有效。
    2. udevtest命令已经没有了,整合到了udevadm中。
    How to use udev for Oracle ASM in Oracle Linux 6

    1 #首先确认是 Linux 6.0以上版本
    [root@vrh6 dev]# cat /etc/issue
    Oracle Linux Server release 6.2
    Kernel on an m
    2 #添加记录到/etc/scsi_id.config
    echo "options=--whitelisted --replace-whitespace" >> /etc/scsi_id.config
    3 #确认哪些块设备需要udev绑定
    [root@vrh6 dev]# ls -l sd*
    brw-rw----. 1 root disk 8, 0 Jun 30 09:29 sda
    brw-rw----. 1 root disk 8, 1 Jun 30 09:29 sda1
    brw-rw----. 1 root disk 8, 2 Jun 30 09:29 sda2
    brw-rw----. 1 root disk 8, 16 Jun 30 09:29 sdb
    brw-rw----. 1 root disk 8, 32 Jun 30 09:29 sdc
    brw-rw----. 1 root disk 8, 48 Jun 30 09:29 sdd
    brw-rw----. 1 root disk 8, 64 Jun 30 09:29 sde
    brw-rw----. 1 root disk 8, 80 Jun 30 09:29 sdf
    例如在本实例中 sdb-> sdf的块设备需要绑定
    4. 将 b->f的编号放入for 循环中,例如:
    # AUTO UDEV RULE BY Maclean Liu 2012/06/30
    for i in b c d e f ;
    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

    就会生成sdb->sdf 设备绑定的RULE,在将这些RULE写入到/etc/udev/rules.d/99-oracle-asmdevices.rules中
    也可以直接利用以下脚本 ,写出RULE到99-oracle-asmdevices.rules
    # AUTO UDEV RULE BY Maclean Liu 2012/06/30
    for i in b c d e f ;
    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"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
    done
    5. 之后运行用root运行/sbin/start_udev 即可


    4.将该规则文件拷贝到其他节点上
    [root@rh2 rules.d]# scp 99-oracle-asmdevices.rules Other_node:/etc/udev/rules.d

    5.在所有节点上启动udev服务,或者重启服务器即可

    [root@rh2 rules.d]# /sbin/udevcontrol reload_rules
    [root@rh2 rules.d]# /sbin/start_udev
    Starting udev: [ OK ]

    6.检查设备是否到位

    [root@rh2 rules.d]# cd /dev
    [root@rh2 dev]# ls -l ocr*
    brw-rw---- 1 grid asmadmin 8, 32 Jul 10 17:31 ocr1
    brw-rw---- 1 grid asmadmin 8, 48 Jul 10 17:31 ocr2

    [root@rh2 dev]# ls -l asm-disk*
    brw-rw---- 1 grid asmadmin 8, 64 Jul 10 17:31 asm-disk1
    brw-rw---- 1 grid asmadmin 8, 208 Jul 10 17:31 asm-disk10
    brw-rw---- 1 grid asmadmin 8, 224 Jul 10 17:31 asm-disk11
    brw-rw---- 1 grid asmadmin 8, 240 Jul 10 17:31 asm-disk12
    brw-rw---- 1 grid asmadmin 8, 80 Jul 10 17:31 asm-disk2
    brw-rw---- 1 grid asmadmin 8, 96 Jul 10 17:31 asm-disk3
    brw-rw---- 1 grid asmadmin 8, 112 Jul 10 17:31 asm-disk4
    brw-rw---- 1 grid asmadmin 8, 128 Jul 10 17:31 asm-disk5
    brw-rw---- 1 grid asmadmin 8, 144 Jul 10 17:31 asm-disk6
    brw-rw---- 1 grid asmadmin 8, 160 Jul 10 17:31 asm-disk7
    brw-rw---- 1 grid asmadmin 8, 176 Jul 10 17:31 asm-disk8
    brw-rw---- 1 grid asmadmin 8, 192 Jul 10 17:31 asm-disk9

  • 相关阅读:
    位运算符的含义与使用
    第三次作业
    软件工程作业二
    大学对于专业的规划
    简要概述java内存模型,以及volatile关键字
    Spring详细教程
    java线程中yield(),sleep(),wait()区别详解
    利用kubeadm快速搭建Kubernetes学习环境
    vue 使用el-time-picker,把数组拆分成单个属性
    Vue+docxtemplater导出到word(包含批量转出图片)!!!
  • 原文地址:https://www.cnblogs.com/yhq1314/p/9930593.html
Copyright © 2020-2023  润新知