在11g 之前,可以直接使用裸设备安装rac。
11g之后,必须用asm,所以这里就会涉及到设备持久话的问题,持久化有3种方法:
(1) udev
(2) multipath
(3) Oracle asmlib
任选一种即可,这里推荐第一种和第二种。
另外,不同的linux 版本,udev的脚本也有区别,比如linux 5.x 和 linux 6.x
但multipath 就不用关心这个问题。
一般udev 配置成功了,裸设备就会被持久化到操作系统,在/dev/xxx 的路径下。,可以直接使用这个路径来创建asmdisk。
所以验证裸设备是否成功,只需要验证/dev/asm*(这里假设裸设备名称已asm开头) 设备是否正常映射,权限是否正常即可。
命令如下:
ls -l /dev/asm*
UUID获取方式:
1、 ls -l /dev/disk/by-uuid/
2、blkid /dev/sdb1
二、Linux UUID的作用及意义
原因1:它是真正的唯一标志符
UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的。如果你在系统中添加了新的存储设备如硬盘,很可能会造成一些麻烦,比如说启动的时候因为找不到设备而失败,而使用UUID则不会有这样的问题。
原因2:设备名并非总是不变的
自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序。如果你在插入了USB盘时启动了系统,而下次启动时又把它拔掉了,就有可能导致设备名分配不一致。
使用UUID对于挂载移动设备也非常有好处──例如我有一个24合一的读卡器,它支持各种各样的卡,而使用UUID总可以使同一块卡挂载在同一个地方。
注意*UUID只能在创建问价系统之后才能得到。
现在大部分数据库系统都是把存储和软件分开,我们可以使用iscsi来挂载磁盘得到uuid。
如何配置iscsi请参考我的博客。
udev绑定
(猜想:是不是只有iscsi设备才能使用scsi_id获取uuid)
:使用udev把设备编号跟设备物理ID绑定,从而实现固化效果。
udev配置文件
主要的udev配置文件是/etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:
42. udev_root=“/dev/”
udev_rules=“/etc/udev/rules.d/”
udev_log=“err“
43. 上面的第二行非常重要,因为他表示udev规则存储的目录,这个目录存储的是以.rules结束的文件。每一个文件处理一系列规则来帮助udev分配名字给设备文件以保证能被内核识别。
你的/etc/udev/rules.d下面可能有好几个udev规则文件,这些文件一部分是udev包安装的,另外一部分则是可能是别的硬件或者软件包 生成的。
RHEL5:
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 -g -u -s /dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
运行结果如下:
KERNEL==”sd*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id –whitelisted –replace-whitespace –device=/dev/$name”, RESULT==”36001438009b01c320000300000500000”, NAME=”asm-arch1”, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660”
RHEL6
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
对于磁盘子分区的绑定:
Redhat Enterprise Linux 5 用如下参数
64. KERNEL=="sd?[1-2]", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="1ATA_VBOX_HARDDISK_VBaef9fa71-c32978c8", NAME="asm-ocr%n", OWNER="grid", GROUP="asmdba", MODE="0660"
Redhat Enterprise Linux 6 用如下参数
KERNEL=="sd?[1-2]", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VBaef9fa71-c32978c8", NAME="asm-ocr%n", OWNER="grid", GROUP="asmdba", MODE="0660"
or
KERNEL=="sdb1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent" RESULT=="1ATA_VBOX_HARDDISK_VB8383313d-441fd502", NAME="asm-crs1", OWNER="grid", GROUP="asmadmin", MODE="0660"
more /etc/udev/rules.d/99-oracle-asmdevices.rules 如下:
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="360003ff44dc75adc9f3304ea673307c8", NAME="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="360003ff44dc75adc8055e84e9f6c5362", NAM
E="asm-diskd", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="360003ff44dc75adc8479b2efc6d42b45", NAM
E="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
start_udev会自动加载/etc/udev/rules.d/99-oracle-asmdevices.rules
On SLES10:
/etc/init.d/boot.udev stop
/etc/init.d/boot.udev start
On RHEL5/OEL5/OL5:
/sbin/udevcontrol reload_rules
/sbin/start_udev
On RHEL6/OL6:
/sbin/udevadm control --reload-rules
/sbin/start_udev
ls -al /dev/asm* //验证udev是否正确
brw-rw—-. 1 grid asmadmin 8, 64 Apr 25 09:00 /dev/asm-diskb
brw-rw—-. 1 grid asmadmin 8, 80 Apr 25 09:00 /dev/asm-diskc
brw-rw—-. 1 grid asmadmin 8, 96 Apr 25 09:00 /dev/asm-diskd
自此udev绑定磁盘完毕!!
oracle asmlib
oracle asmlib:
7.1 ASMlib驱动包安装:
7.1.1 :确定系统版本
[root@rac2 2.6.18-238.el5]# cat /etc/redhat-release
CentOS release 6.6 (Final)
7.1.2 :确定内核版本
[root@rac2 2.6.18-238.el5]# uname -r
2.6.32-504.el6.x86_64
7.1.3:安装所需的asmlib包
kmod-oracleasm-2.0.8-4.el6_6.x86_64
oracleasmlib-2.0.12-1.el6.x86_64
oracleasm-support-2.1.8-1.el5.x86_64
7.1.4:磁盘分区 fdisk /dev/sdb
7.1.5 :初始化asmlib
/etc/init.d/oracleasm configure
7.1.6:创建asmdisk磁盘,在其中一个节点执行
/etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
7.1.7:在两个节点执行
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks
如果看到的结果一致,则说明绑定成功。
问题1:在linux下oracleasm configure -i 其实修改的是一个配置文件,这个文件是位于/etc/sysconfig/oracleasm,大家可以通过oracleasm configure -i 来修改,也可以直接修改这个文件,为了安全起见,一般最好是通过oracleasm configure -i 来修改吧
问题2:Device “/dev/sdc1” is already labeled for ASM disk “VOL2”
格式化磁盘头,dd if=/dev/zero of=/dev/sdc1 bs=1024 count=100