利用UDEV SCSI Rules配置linux下的ASM
使用oracle的ASM(Automatic Storage Manager),针对磁盘设备来说要有正确的权限和拥有者和拥有组来,oracle官方提供了asmlib包来处理,简洁而方便;
但在针对SCIS盘时,可利用linux的udev规则来做,通过一些资料的查询,简单说明一下udev做的步骤
udev规则的配置文件在/etc/udev/rules.d下面,进行编写格式为xxxx.rules文件名,其规则如下
KERNEL==”sda*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -d /dev/$parent”, RESULT==”SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_”, NAME=”asm-disk5″, OWNER=”grid”, GROUP=”oinstall”, MODE=”0660″
在我的机器环境里指定设备为sda开头一些分区来做我的asm盘,
利用scsi_id -g -u -s /block/sda 来获取uuid放到result()
指定remap成asm盘的盘符及拥有者和组及权限
获得uuid方式:
[root@trsen dev]# /sbin/scsi_id -g -u -s /block/sda
SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_
[root@trsen dev]# /sbin/scsi_id -g -u -s /block/sda/sda5
SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_
[root@trsen dev]# /sbin/scsi_id -g -u -s /block/sda/sda6
SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_
[root@trsen dev]# /sbin/scsi_id -g -u -s /block/sda/sda7
SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_
注意:因我这里是同一块盘,从其sda可以看出所以其uuid是一样的
若上述命令没有结果,可能需要
[root@trsen dev]# /sbin/scsi_id -g -u -d /dev/sda
[root@trsen dev]# /sbin/scsi_id -g -u -d /dev/sda5
如果都没有效果的话请参考http://www.trsenzhangdb.com/?p=204
利用fdisk进行分区(测试环境),生产中当然是挂盘了
加载更新block设备分区表
/sbin/partprobe /dev/sda5
/sbin/partprobe /dev/sda6
/sbin/partprobe /dev/sda7
创建udev规则文件如下
[root@trsen dev]# more /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL==”sda5*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -d /dev/$parent”, RESULT==”SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_”, NAME=”asm-disk5″, OWNE
R=”grid”, GROUP=”oinstall”, MODE=”0660″
KERNEL==”sda6*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -d /dev/$parent”, RESULT==”SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_”, NAME=”asm-disk6″, OWNE
R=”grid”, GROUP=”oinstall”, MODE=”0660″
KERNEL==”sda7*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -d /dev/$parent”, RESULT==”SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_”, NAME=”asm-disk7″, OWNE
R=”grid”, GROUP=”oinstall”, MODE=”0660
利用udevtest命令来模拟产生设备文件的对应信息,看生成的信息是否有问题
[root@trsen dev]# udevtest /block/sda/sda5
main: looking at device ‘/block/sda/sda5’ from subsystem ‘block’
udev_rules_get_name: add symlink ‘disk/by-id/scsi-SATA_VBOX_HARDDISK_VB46cb19cd-a2384742-part5’
udev_rules_get_name: add symlink ‘disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part5’
run_program: ‘/lib/udev/vol_id –export /dev/.tmp-8-5’
run_program: ‘/lib/udev/vol_id’ returned with status 4
run_program: ‘/sbin/scsi_id -g -u -d /dev/sda’
run_program: ‘/sbin/scsi_id’ (stdout) ‘SATA_VBOX_HARDDISK_VB46cb19cd-a2384742_’
run_program: ‘/sbin/scsi_id’ returned with status 0
udev_rules_get_name: rule applied, ‘sda5’ becomes ‘asm-disk5’
udev_device_event: device ‘/block/sda/sda5’ already in database, validate currently present symlinks
udev_node_add: creating device node ‘/dev/asm-disk5’, major = ‘8’, minor = ‘5’, mode = ‘0660’, uid = ‘500’, gid = ‘6000’
udev_node_add: creating symlink ‘/dev/disk/by-id/scsi-SATA_VBOX_HARDDISK_VB46cb19cd-a2384742-part5’ to ‘../../asm-disk5’
udev_node_add: creating symlink ‘/dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part5’ to ‘../../asm-disk5’
udev_node_remove_symlinks: removing symlink ‘/dev/disk/by-uuid/9c3bfe85-862e-4783-866e-6911e7b9fcfb’
main: run: ‘socket:/org/kernel/udev/monitor’
main: run: ‘/lib/udev/udev_run_devd’
main: run: ‘socket:/org/freedesktop/hal/udev_event’
main: run: ‘/sbin/pam_console_apply /dev/asm-disk5 /dev/disk/by-uuid/9c3bfe85-862e-4783-866e-6911e7b9fcfb’
启动udev,让其所写的规则真实生效
/sbin/start_udev
查看权限信息
[root@trsen dev]# ls -lt /dev/sda[5-7]
brw-r—– 1 root disk 8, 5 Feb 11 11:05 /dev/sda5
brw-r—– 1 root disk 8, 6 Feb 11 11:05 /dev/sda6
brw-r—– 1 root disk 8, 7 Feb 11 11:05 /dev/sda7
[root@trsen dev]# ls -lt /dev/asm-disk*
brw-rw—- 1 grid oinstall 8, 7 Feb 11 12:54 /dev/asm-disk7
brw-rw—- 1 grid oinstall 8, 6 Feb 11 12:54 /dev/asm-disk6
brw-rw—- 1 grid oinstall 8, 5 Feb 11 12:54 /dev/asm-disk5
[root@trsen dev]#
至此,基于udev的方式来创建asm磁盘就完毕了,但是注意在后面识别asm磁盘,可能无法识别是创建的asm磁盘,需要利用dd工具针对asm磁盘头快处理一下如下:
dd if=/dev/zero of=/dev/asm-disk5 bs=4096 count=1