asmlib:
asmlib 是linux上面给磁盘/分区头上面打上asm的标记,供asm使用,而且当磁盘的盘符发生改变的时候,不会影响到asm disk,
从效果上说,和udev没有本质区别,在redhat 4和5中oracle提供asmlib程序,在6中,oracle只为oel提供,其他linux不再提供
udev:
udev 是为了防止在机器因为重启的时候,因为盘符发生改变,导致asm disk不能正常被dg应用,从而出现asm 磁盘组不能mount的故障
添加磁盘:
如果是虚拟机,要编辑vmx文件加入disk.EnableUUID =“TRUE” 否则无法查到磁盘的uuid,也就无法在配置文件中绑定。
进行分区:
fdisk /dev/sdb
[root@temple rules.d]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000023cd
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 5222 41430016 8e Linux LVM
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x383bd4c4
Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 83 Linux
以上为磁盘信息。
方法一:
udevadm info -a -p /sys/block/sdb/sdb1查询硬盘信息
[root@temple rules.d]# udevadm info -a -p /sys/block/sdb/sdb1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0/1:0:0:0/block/sdb/sdb1':
KERNEL=="sdb1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{partition}=="1"
ATTR{start}=="63"
ATTR{size}=="16771797"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="0"
ATTR{stat}==" 791 72121 73402 532 0 0 0 0 0 343 494"
ATTR{inflight}==" 0 0"
looking at parent device '/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0/1:0:0:0/block/sdb':
KERNELS=="sdb"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="16"
ATTRS{ext_range}=="256"
ATTRS{removable}=="0"
ATTRS{ro}=="0"
ATTRS{size}=="16777216"
ATTRS{alignment_offset}=="0"
ATTRS{discard_alignment}=="0"
ATTRS{capability}=="52"
ATTRS{stat}==" 1510 72178 79610 684 4 0 8 103 0 589 740"
ATTRS{inflight}==" 0 0"
looking at parent device '/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0/1:0:0:0':
KERNELS=="1:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{device_blocked}=="0"
ATTRS{type}=="0"
ATTRS{scsi_level}=="6"
ATTRS{vendor}=="ATA "
ATTRS{model}=="VBOX HARDDISK "
ATTRS{rev}=="1.0 "
ATTRS{state}=="running"
ATTRS{timeout}=="30"
ATTRS{iocounterbits}=="32"
ATTRS{iorequest_cnt}=="0x634"
ATTRS{iodone_cnt}=="0x633"
ATTRS{ioerr_cnt}=="0x9"
ATTRS{modalias}=="scsi:t-0x00"
ATTRS{evt_media_change}=="0"
ATTRS{dh_state}=="detached"
ATTRS{queue_depth}=="31"
ATTRS{queue_ramp_up_period}=="120000"
ATTRS{queue_type}=="simple"
looking at parent device '/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0':
KERNELS=="target1:0:0"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:0d.0/host1':
KERNELS=="host1"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:0d.0':
KERNELS=="0000:00:0d.0"
SUBSYSTEMS=="pci"
DRIVERS=="ahci"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x2829"
ATTRS{subsystem_vendor}=="0x0000"
ATTRS{subsystem_device}=="0x0000"
ATTRS{class}=="0x010601"
ATTRS{irq}=="21"
ATTRS{local_cpus}=="3"
ATTRS{local_cpulist}=="0-1"
ATTRS{modalias}=="pci:v00008086d00002829sv00000000sd00000000bc01sc06i01"
ATTRS{numa_node}=="-1"
ATTRS{enable}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
我们使用ATTR{start}=="63" ATTR{size}=="16771797"来唯一标识这个设备
绑定规则如下:
[root@temple rules.d]# pwd
/etc/udev/rules.d
[root@temple rules.d]# cat 99-oracle-asmdevices.rules
KERNEL=="sdb1", SUBSYSTEM=="block", ATTR{start}=="63", ATTR{size}=="16771797", NAME="asmdisk1", OWNER="oracle", GROUP="oinstall", MODE="0660"
然后启动udev:
[root@temple rules.d]# cat 99-oracle-asmdevices.rules
KERNEL=="sdb1", SUBSYSTEM=="block", ATTR{start}=="63", ATTR{size}=="16771797", NAME="asmdisk1", OWNER="oracle", GROUP="oinstall", MODE="0660"
[root@temple rules.d]# start_udev
Starting udev: [ OK ]
[root@temple rules.d]# cd /dev
[root@temple dev]# pwd
/dev
[root@temple dev]# ll asmdisk1
brw-rw----. 1 oracle oinstall 8, 17 Aug 4 20:18 asmdisk1
方法二:
[root@localhost /]# cd /etc/udev/rules.d
编辑udev配置文件:
[root@localhost rules.d]# vim 99-oracle-asmdisk.rules
KERNEL==“sdb1”(分好区的磁盘名), BUS==“scsi(磁盘接口类型)”, PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT==“36000c291b2a2f86ca4eceb8f69083831”(磁盘uuid,通过scsi_id -g -u -d /dev/你的磁盘名)来查看), NAME=“asm_disk1”, OWNER=“grid”, GROUP=“asmadmin”, MODE=“0660”
KERNEL==“sdc1”, BUS==“scsi”, PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT==“36000c29d47431e361164bc230529e4a6”, NAME=“asm_disk2”, OWNER=“grid”, GROUP=“asmadmin”, MODE=“0660”
KERNEL==“sdd1”, BUS==“scsi”, PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT==“36000c29045413234891cb68a5e393ed4”, NAME=“asm_disk3”, OWNER=“grid”, GROUP=“asmadmin”, MODE=“0660”
KERNEL==“sde1”, BUS==“scsi”, PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT==“36000c2963321f68b04e90f8b80fe3530”, NAME=“asm_disk4”, OWNER=“grid”, GROUP=“asmadmin”, MODE=“0660”
KERNEL==“sdf1”, BUS==“scsi”, PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT==“36000c29e8704480918568ec80e9270c3”, NAME=“asm_disk5”, OWNER=“grid”, GROUP=“asmadmin”, MODE=“0660”
[root@localhost rules.d]# udevadm control --reload-rules
加载
[root@localhost rules.d]# start_udev
启动
[root@localhost rules.d]# ls -l /dev/asm*
brw-rw----. 1 grid asmadmin 8, 17 Mar 4 08:43 /dev/asm_disk1
brw-rw----. 1 grid asmadmin 8, 33 Mar 4 08:43 /dev/asm_disk2
brw-rw----. 1 grid asmadmin 8, 49 Mar 4 08:43 /dev/asm_disk3
brw-rw----. 1 grid asmadmin 8, 65 Mar 4 08:43 /dev/asm_disk4
brw-rw----. 1 grid asmadmin 8, 81 Mar 4 08:43 /dev/asm_disk5
确认添加成功
博客介绍了在Linux系统中,udev和asmlib的作用,主要用于解决磁盘盘符变化导致ASM磁盘组无法正常挂载的问题。asmlib是Oracle在早期版本中提供的解决方案,而udev是通用的方法。在添加磁盘时,虚拟机需要设置disk.EnableUUID以获取UUID,通过udevadm工具查询硬盘信息,并创建规则文件进行设备绑定。
755

被折叠的 条评论
为什么被折叠?



