运行环境:
本机操作系统:mac 10.9.5
虚拟机环境: vmware fusion
专业版
7.0.1
虚拟机操作系统:oracle linux 6.4
问题说明:
安装rac之前,本打算使用udev来创建asm使用的磁盘,用以前学到的脚本进行创建后失败,查看脚本输出中发现使用scsi_id命令来获取磁盘uuid时报错(见下方日志1),invalid option --’s’ 无效的参数,实际去掉该参数(如下方日志2)后仍然是无法查出uuid。这是由于linux 6版本开始,scsi_id的命令语法发生了变化,scsi_id -g -u -s这样的命令不再有效,udevtest命令已经没有了,整合到了udevadm中。可以参考Redhat的官方文档,但是我没有找到。言归正转,还是来说说解决方法吧。
日志1:
[root@sam1 rules.d]# cat 99-oracle-asmdevices.rules
scsi_id: invalid option -- 's'
KERNEL=="sd*", BUS=="scsi", PROGRAM==
"/sbin/scsi_id -g -u -s %p", RESULT=="", NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
scsi_id: invalid option -- 's'
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="", NAME="asm-diskc", OWNER="grid”,
GROUP="asmadmin", MODE="0660"
略…...
日志2:
[root@sam1 etc]# scsi_id -g -u -s /dev/sdb
scsi_id: invalid option -- 's'
[root@sam1 etc]# scsi_id -g -u /dev/sdb
[root@sam1 etc]#
处理方法:
1. 编辑/etc/scsi_id.config文件,如果该文件不存在,则创建该文件,添加如下行:
options=--whitelisted --replace-whitespace
2. 测试scsi_id 获取uuid号,仍然未出uuid号
[root@sam1 etc]#scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
3. 关闭机器,在你安装虚拟机的目录中找到Oracle Enterprise Linux 64 位.vmx,你的机器名字可能跟我的不一样哟,记得是后缀是vmx的文件,用 文本编辑器打开,在最后加上 disk.EnableUUID = “TRUE” 后,再次启动机器后执行获取uuid正常
[root@sam1 ~]# scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
36000c2978361c60ab77729f74fa6aef2
4.使用脚本生成udev使用的格式的参数文件,b c …i j 根据你的盘符有多少来修改
for i in b c d e f g h i j;
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. 启动udev
[root@sam1 ~]# start_udev
Starting udev: [ OK ]
6. 检查磁盘设备是否绑定成功
[root@sam1 ~]# ls -l /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Feb 16 23:16 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Feb 16 23:16 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Feb 16 23:16 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Feb 16 23:16 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Feb 16 23:16 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Feb 16 23:16 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Feb 16 23:16 /dev/asm-diskh
brw-rw---- 1 grid asmadmin 8, 128 Feb 16 23:16 /dev/asm-diski
brw-rw---- 1 grid asmadmin 8, 144 Feb 16 23:16 /dev/asm-diskj
总结:
注意处理方法的第3点,修改虚拟机*.vmx文件,加 disk.EnableUUID = “TRUE”参数时先要将虚拟机关闭,再有就是如果修改虚拟机任何设备,比如添加磁盘,修改网卡等,此参数会恢复源值,需要再次修改为TRUE。重新启动不影响此参数。
附:
(以下脚本中的盘符请按照实际情况进行修改)
linux 5生成udev脚本
- for i in b c d e f g h i j;
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\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
linux 6生成
udev脚本
- for i in b c d e f g h i j;
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
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26148431/viewspace-1437682/,如需转载,请注明出处,否则将追究法律责任。