oracle 创建asm磁盘方式

创建asm方式

创建asm方式很多主要有以下几种
1、Faking方式
2、裸设备方式
3、udev方式(它下面有两种方式)
 3.1 uuid方式
 3.2 raw方式(裸设备方式)
4、asmlib方式(oracleasm)

Faking 方式

该方法不需要添加额外的磁盘,直接在已有的磁盘上来创建,本人推荐的方法之一。
------------------------ 直接贴脚本,root用户下执行
mkdir  -p  /oracle/asmdisk
dd if=/dev/zero of=/oracle/asmdisk/disk1 bs=1024k count=1000
dd if=/dev/zero of=/oracle/asmdisk/disk2 bs=1024k count=1000
dd if=/dev/zero of=/oracle/asmdisk/disk3 bs=1024k count=1000
dd if=/dev/zero of=/oracle/asmdisk/disk4 bs=1024k count=1000
dd if=/dev/zero of=/oracle/asmdisk/disk5 bs=1024k count=1000

/sbin/losetup /dev/loop1 /oracle/asmdisk/disk1
/sbin/losetup /dev/loop2 /oracle/asmdisk/disk2
/sbin/losetup /dev/loop3 /oracle/asmdisk/disk3
/sbin/losetup /dev/loop4 /oracle/asmdisk/disk4
/sbin/losetup /dev/loop5 /oracle/asmdisk/disk5

raw /dev/raw/raw1 /dev/loop1
raw /dev/raw/raw2 /dev/loop2
raw /dev/raw/raw3 /dev/loop3
raw /dev/raw/raw4 /dev/loop4
raw /dev/raw/raw5 /dev/loop5

chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
chmod 660 /dev/raw/raw3
chmod 660 /dev/raw/raw4
chmod 660 /dev/raw/raw5

chown oracle:dba /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chown oracle:dba /dev/raw/raw5

------ 将以下内容添加到文件/etc/rc.local文件中
/sbin/losetup /dev/loop1 /oracle/asmdisk/disk1
/sbin/losetup /dev/loop2 /oracle/asmdisk/disk2
/sbin/losetup /dev/loop3 /oracle/asmdisk/disk3
/sbin/losetup /dev/loop4 /oracle/asmdisk/disk4
/sbin/losetup /dev/loop5 /oracle/asmdisk/disk5

raw /dev/raw/raw1 /dev/loop1
raw /dev/raw/raw2 /dev/loop2
raw /dev/raw/raw3 /dev/loop3
raw /dev/raw/raw4 /dev/loop4
raw /dev/raw/raw5 /dev/loop5

chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
chmod 660 /dev/raw/raw3
chmod 660 /dev/raw/raw4
chmod 660 /dev/raw/raw5

chown oracle:dba /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chown oracle:dba /dev/raw/raw5

查看结果:
ll /oracle/asmdisk -h

裸设备方式

直接修改/etc/sysconfig/rawdevices配置raw(rhel6之后不支持)
采用下面的方式来增加磁盘,即直接修改/etc/sysconfig/rawdevices  (root帐户)

Redhat平台对raw设备的配置在redhat 5之后有了变化。在redhat 5之前,直接配置/etc/sysconfig/rawdevices件,通过/etc/init.d/rawdevices来管理raw设备的启动和关 闭。在Redhat 5之后,原来的raw设备接口已经取消了,redhat 5中通过udev规则进行配置。 要配置,需要编辑/etc/udev/rules.d/60-raw.rules这个文件。

vi /etc/sysconfig/rawdevices
cat /etc/sysconfig/rawdevices --查看增加的内容为raw6,raw7
/dev/raw/raw2 /dev/sdb6
/dev/raw/raw3 /dev/sdb7

修改磁盘属主
chown oracle:dba /dev/raw/raw[6-7]  --修改属主,否则创建磁盘组时提示权限不够

chown oracle:dba /dev/raw/raw6
chown oracle:dba /dev/raw/raw7
ll /dev/raw/

重启裸设备服务
/sbin/service rawdevices restart

将下面的内容增加到/etc/rc.local文件(root帐户),重新启动主机,使得属主变为oracle

chown oracle:dba /dev/raw/raw6
chown oracle:dba /dev/raw/raw7
chmod 660 /dev/raw/raw6
chmod 660 /dev/raw/raw7

udev方式---uuid方式

RedHat 5 UDEV SCSI Rules配置
获取需要绑定为ASM Disk的磁盘uuid
/sbin/scsi_id -g -u -s /block/sdb

新建/etc/udev/rules.d/99-oracle-asmdevices.rules,增加以下内容

KERNEL=="sd*1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"

重启服务:
start_udev

RedHat 6 UDEV SCSI Rules
编辑/etc/scsi_id.config文件,如果该文件不存在,则创建该文件,添加如下行:
options=--whitelisted --replace-whitespace
备注:在我的测试中,此步骤可以省略

获取需要绑定为ASM Disk的磁盘uuid,比如我们要使用/dev/sdc作为ASM磁盘,那么:
scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
1ATA_VBOX_HARDDISK_VB36a9e548-1838194a

/sbin/scsi_id -g -u -d /dev/sdb
SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_

新建/etc/udev/rules.d/99-oracle-asmdevices.rules,增加以下内容

KERNEL=="sd*1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"


KERNEL=="dm-*", PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="3600c0ff00015c7b70253c05001000000", OWNER:="grid", GROUP:="oinstall"


KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600c0ff00015c7b70253c05001000000",NAME="asmocrvote01", OWNER="grid", GROUP="asmadmin", MODE="0660"

重启服务:
start_udev

配置 udev 绑定的 scsi_id
注意以下两点:
首先切换到root用户下:

不同的操作系统,scsi_id 命令的位置不同。
cat /etc/issue
Red Hat Enterprise Linux Server release 5.5 (Tikanga)

which scsi_id
/sbin/scsi_id

编辑 /etc/scsi_id.config 文件,如果该文件不存在,则创建该文件并添加如下行:

vi /etc/scsi_id.config
options=--whitelisted --replace-whitespace

如果是使用 VMware 虚拟机,直接输入 scsi_id 命令可能无法获取 id,需修改 VMware 文件参数,这一步如果在添加磁盘的时候做过这一步的话就可以跳过了,直接获取uuid即可
scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
scsi_id --whitelisted --replace-whitespace --device=/dev/sdc

使用文本编辑器编辑该文件,在尾部新增一行参数:
disk.EnableUUID="TRUE"
保存文件,重新启动虚拟机。这里注意修改文件的时候一定要在关机的状态下修改,或者  
scsi_id -g -u /dev/sdc 来获得uuid,-g -u参数在rhel6以后已经不用了

scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
36000c29fbe57659626ee89b4fba07616
scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
36000c29384cde894e087e5f0fcaa80f4

创建并配置 udev rules 文件
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
这里需要注意,一个KERNEL就是一行,不能换行的,我之前就是犯了这个错误的
添加硬盘:

KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29346c1344ffb26f0e5603d519e", NAME="asm-diskb", OWNER="grid",GROUP="asmadmin", MODE="0660"

KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29d08ee059a345571054517cd03", NAME="asm-diskc", OWNER="grid",GROUP="asmadmin", MODE="0660"
asmdba",不然最后可能用dbca创建数据库实例的时候找不见磁盘组。

udevadm进行测试

用udevadm进行测试,注意udevadm命令不接受/dev/sdc这样的挂载设备名,必须是使用/sys/block/sdc这样的原始设备名。

udevadm test /sys/block/sdcudevadm info --query=all --path=/sys/block/sdcudevadm info --query=all --name=asm-disk1

在显示中,有类似如下输出,表示测试正确,/dev/sdc设备在udev启动以后将会绑定为/dev/asm-disk1:

udevadm_test: UDEV_LOG=6udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:0d.0/host4/target4:0:0/4:0:0:0/block/sdcudevadm_test: MAJOR=8udevadm_test: MINOR=32udevadm_test: DEVNAME=/dev/asm-disk1udevadm_test: DEVTYPE=diskudevadm_test: ACTION=addudevadm_test: SUBSYSTEM=block

添加完成后,重启 udev,不同 Linux 发行版本重启方式不一样。

该步骤慢一点,大约可能需要30秒左右吧,等等等等。。。。。。

start_udev

查看绑定的 asm,如果此时还是看不到 asm disk,请重启操作系统后再查看。

ll /dev/asm*

udev方式---raw方式

配置裸设备映射,修改/etc/udev/rules.d/60-raw.rules文件
使用root帐户修改/etc/udev/rules.d/60-raw.rules 按如下方式添加磁盘
cat /etc/udev/rules.d/60-raw.rules       --查看添加的内容

ACTION=="add", KERNEL=="/dev/sdb8", RUN+="/bin/raw /dev/raw/raw8 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="24", RUN+="/bin/raw /dev/raw/raw8 %M %m"
ACTION=="add", KERNEL=="/dev/sdb9", RUN+="/bin/raw /dev/raw/raw9 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="25", RUN+="/bin/raw /dev/raw/raw9 %M %m"
ACTION=="add", KERNEL=="raw8", OWNER="grid", GROUP="asmadmin", MODE="0660"
ACTION=="add", KERNEL=="raw9", OWNER="grid", GROUP="asmadmin", MODE="0660"

重启udev服务
start_udev

raw -qa

ll /dev/raw*

裸设备概述
裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。
字符设备:对字符设备的读写不需要通过OS的buffer。它不可被文件系统mount。
块设备:对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中。

这个与linux的版本相关,在旧版本中,最多只可以有256个裸设备,Linux 4下做多可以绑定81Array2个裸设备。但是在linux下,最多只能有255个分区,所以,如果用裸设备绑定分区,最多只能绑定255个裸设备。如果是用lvm,则没有这个限制。

Linux下单个磁盘最多可以有15个分区。3个主分区 + 1个扩展分区 + 11个逻辑分区。
建议的分区方法是:先分3个主分区,第四个分区为扩展分区,然后在扩展分区中再分成11个逻辑分区。
注意,裸设备不要绑定在扩展分区上。
linux下如果需要使用裸设备,则需要手工进行绑定,unix下则不用。
因为Unix中每一个块设备都会有一个对应的字符设备用于非缓存(unbuffered)I/O,这就是他对应的裸设备了。而Linux中rawio的则 实现了一套非绑定(unbound)的裸设备/dev/rawN或者/dev/raw/rawN和一个控制设备/dev/rawct用来把他们绑定到块设 备上。所以当需要使用一个裸设备的时候,就需要把他和一个真实存在的块设备对应起来,这一个步骤实际上就是完成了Unix里的自动对应一个非缓存字符设备。

major和minor device number

在unix/linux系统中,一切都是文件。所有硬盘、软盘、键盘等设备都用文件来代表,对应 着/dev下面的文件。对于应用程序来说,可以像对待普通文件一样打开,关闭、读写这些设备文件。但是这种文件名,比如/dev/sda、/dev /raw/raw1都是用户空间名称,OS Kernel根本不知道这个名称指的是什么。在内核空间是通过major、minor device number 来区分设备的。
major device number可以看作是设备驱动程序,被同一设备驱动程序管理的设备有相同的major device number.这个数字实际是Kernel中device driver table 的索引,这个表保存着不同设备驱动程序。 而minor device number用来代表被访问的具体设备。也就是说Kernel根据major device number 找到设备驱动程序,然后再从minor device number 获得设备位置等属性。所有这些major device number 是已经预先分配好的。详细信息可以从http://www.lanana.org/docs/device-list/devices-2.6+.txt 查看。比如裸设备是162,scsi块设备是8
/etc/udev/rules.d/60-raw.rules

Redhat平台对raw设备的配置在redhat 5之后有了变化。在redhat 5之前,直接配置/etc/sysconfig/rawdevices件,通过/etc/init.d/rawdevices来管理raw设备的启动和关 闭。在Redhat 5之后,原来的raw设备接口已经取消了,redhat 5中通过udev规则进行配置。 要配置,需要编辑/etc/udev/rules.d/60-raw.rules这个文件。

cat /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
#   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
#   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.

其中
ACTION=="add", KERNEL="", RUN+="raw /dev/raw/rawX %N"

配置设备名称,用你需要绑定的设备名称替换 (如:/dev/sda1),X为裸设备号
主/次号码:
ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="raw /dev/raw/rawX %M %m"
"A" 和 "B" 是设备的主/次号码,X是系统使用的raw设备号码。

个人对redhat管理raw的过程理解为: 在redhat 5中,是通过udev来管理raw设备的,而udev是通过 MAJOR和MINOR来识别 raw设备 。 故需要将设备号和裸设备号进行绑定,而主设备号和次设备号可以自行指定或者由系统自动分配。 根据red hat的官方文档中关于raw.rule的示例中说KERNEL==..或ENV{MAJOR}...只需要任意配置一个就可以,但有些网友经过试验,验证必须二者同时配置才可以。

配置 /etc/udev/rules.d/60-raw.rules文件

查看磁盘分区情况

# fdisk  -l /dev/sdb
Disk /dev/sdb: 4880 MB, 4880072704 bytes
255 heads, 63 sectors/track, 593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          25      200781   83  Linux
/dev/sdb2              26          50      200812+  83  Linux

配置 /etc/udev/rules.d/60-raw.rules文件
# grep -v ^# /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="3", ENV{MINOR}=="2", RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", ENV{MAJOR}=="7", ENV{MINOR}=="2", RUN+="/bin/raw /dev/raw/raw2 %M %m"

启动raw设备
start_udev

查看配置情况
raw -qa
/dev/raw/raw1:  bound to major 8, minor 17
/dev/raw/raw2:  bound to major 8, minor 18

这里笔者不清楚为什么主设备号和复设备号并不和我在 /etc/udev/rules.d/60-raw.rules指定的一样,望了解的读者告知,系统内核信息如下
# uname  -a
Linux rac1 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)

可以通过如下方式指定 主设备号和复设备号
# raw /dev/raw/raw1 1 1
/dev/raw/raw1:  bound to major 1, minor 1

raw /dev/raw/raw[n] /dev/xxx
其中n的范围是0-8191。raw目录不存在的话会被自动创建。执行这个命令,就会在/dev/raw下生成一个对应的raw[n]文件用命令方式绑定裸设备在系统重启后会失效。

删除裸设备
# raw /dev/raw/raw2 0 0
/dev/raw/raw2:  bound to major 0, minor 0

# raw -qa
/dev/raw/raw1:  bound to major 1, minor 1

以上设置必须同时修改 /etc/udev/rules.d/60-raw.rules才能保证重启后生效,否则重启后系统会重新读取 /etc/udev/rules.d/60-raw.rules

如需设置raw设备的用户和权限信息,可在/etc/udev/rules.d/60-raw.rules文件里添加如下信息:
ACTION=="add", KERNEL=="raw1", OWNER="dave", GROUP="tianlesoftware", MODE="660"
如果有多个raw设备,可以写成:
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dave", GROUP="tianlesoftware", MODE="660"
#chown oracle:oinstall /dev/raw/raw[1-4]
#chmod 775 /dev/raw/raw[1-4]
注意:在内核2.6.9-89.5AXS2之前使用/etc/sysconfig/rawdevices和/etc/udev/permissions.d/50-udev.permissions进行raw设备的配置和权限管理。在内核 2.6.18-128.7AXS3以后则使用了本文介绍的 /etc/udev/rules.d/60-raw.rules进行raw设备的管理

确定裸设备的大小
比较笨的办法是,找出看裸设备对应的是那个实际的块设备,然后用fdisk -l /dev/[h,s]dXN看那个块设备的大小就好了。比较简单的办法是用blockdev命令来计算,如:
#blockdev --getsize /dev/raw/raw1
11718750
11718750表示有多少OS BLIOCK。
一般一个OS BLOCK大小是512字节,所以11718750*512/1024/1024= 5722(m) 就是裸设备的大小。

使用裸设备作为oracle的数据文件的注意事项
1、一个裸设备只能放置一个数据文件
2、数据文件的大小不能超过裸设备的大小
如果是日志文件,则裸设备最大可用大小=裸设备对应分区大小 - 1 * 512 (保留一个redo lock)
如果是数据文件,则裸设备最大可用大小=裸设备对应分区大小 - 2 * db_block_size(保留两个block)
为了简单起见,对所有的文件设置称比裸设备小1M即可。
3、数据文件最好不要设置称自动扩展,如果设置称自动扩展,一定要把maxsize设置设置为比裸设备小
4、linux下oracle不能直接把逻辑卷作为裸设备,也要进行绑定。unix下就不需要。

Asmlib 方式(一)

验证安装的包
rpm -qa | grep asm

配置ASM
/etc/init.d/oracleasm configure

Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
如果配置错误,可以重新配置:

系统添加磁盘

在Vmware分配几个空闲的磁盘用于创建ASM磁盘,建议使用不同的磁盘控制器
下面使用个磁盘来组建ASM磁盘组,分别为sdd,sde,sdf,sdg
分别对个磁盘进行分区,列出sdd的分区样例,其余如法炮制
系统添加一块硬盘sdb,然后进行分区 fdisk /dev/sdb ,分区之后:

ll /dev/sdb*

brw-r----- 1 root disk 8, 16 Dec 30 10:54 /dev/sdb
brw-r----- 1 root disk 8, 17 Dec 30 10:59 /dev/sdb1
brw-r----- 1 root disk 8, 18 Dec 30 11:00 /dev/sdb2
brw-r----- 1 root disk 8, 19 Dec 30 11:00 /dev/sdb3
brw-r----- 1 root disk 8, 20 Dec 30 11:00 /dev/sdb4

/etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
/etc/init.d/oracleasm createdisk VOL2 /dev/sdb2
/etc/init.d/oracleasm createdisk VOL3 /dev/sdb3
/etc/init.d/oracleasm createdisk VOL4 /dev/sdb4

ll /dev/oracleasm/disks/*

/etc/init.d/oracleasm listdisks

删除磁盘
/etc/init.d/oracleasm deletedisk VOL4

日志
tail -f /var/log/oracleasm

Asmlib 方式(二)

检查oracleasm
rpm -qa|grep oracleasm
 oracleasmlib-2.0.4-1.el6.x86_64
 kmod-oracleasm-2.0.6.rh1-2.el6.x86_64
 oracleasm-support-2.1.8-1.el6.x86_64
 
2、在一个节点执行以下命令
# /etc/init.d/oracleasm enable
# /etc/init.d/oracleasm configure
# /etc/init.d/oracleasm createdisk diska /dev/sdb5
# /etc/init.d/oracleasm createdisk diskb /dev/sdb6
# /etc/init.d/oracleasm createdisk diskc /dev/sdb7
将在以下路径/dev/oracleasm/disks/下产生ASM磁盘asm-diskaa,asm-diskab,asm-diskac.  在其它节点执行以下命令,扫描ASM磁盘.
3、具体过程
[root@shdb02 src]# /etc/init.d/oracleasm -h
 Usage: /etc/init.d/oracleasm
{start|stop|restart|enable|disable|configure|createdisk|deletedisk|querydisk|listdisks|scandisks|status}

[root@shdb02 src]# /etc/init.d/oracleasm status
Checking if ASM is loaded: no
Checking if /dev/oracleasm is mounted: no

[root@shdb02 src]# oracleasm scandisks
     Reloading disk partitions: done
     Cleaning any stale ASM disks...
     Scanning system for ASM disks...

 [root@shdb02 src]# /etc/init.d/oracleasm configure  //注意 和 oracleasm configure 有区别,前面有/etc/init.d/  否则一个是配置,一个是显示结果 Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
  driver. The following questions will determine whether the driver is  loaded on boot and what permissions it will have.  The current values  will be shown in brackets ('[]').  Hitting <ENTER> without typing an  answer will keep that current value.  Ctrl-C will abort.
  //下面是需要我们配置的,这个过程也比较长
  Default user to own the driver interface []: grid  Default group to own the driver interface []: asmadmin  Start Oracle ASM library driver on boot (y/n) [n]: y  Scan for Oracle ASM disks on boot (y/n) [y]: y  Writing Oracle ASM library driver configuration: done  Initializing the Oracle ASMLib driver:                     [  OK  ]  Scanning the system for Oracle ASMLib disks:               [  OK  ] 
   //这个过程配合日志看下做了什么
  [root@shdb02 dev]# cat /var/log/oracleasm  Creating /dev/oracleasm mount point: /dev/oracleasm  Loading module "oracleasm": oracleasm  Mounting ASMlib driver filesystem: /dev/oracleasm  Reloading disk partitions: done  Cleaning any stale ASM disks...  Scanning system for ASM disks...
 
  [root@shdb02 src]# oracleasm configure  ORACLEASM_ENABLED=true  ORACLEASM_UID=oracle  ORACLEASM_GID=dba  ORACLEASM_SCANBOOT=true  ORACLEASM_SCANORDER=""  ORACLEASM_SCANEXCLUDE=""  ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
  //如果想重新配置可以使用 oracleasm configure -i来重新配置
[root@shdb02 src]# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks:   //回车
[ OK ]  //这个过程时间比较长耐心等待//oracleasm 检查状态[root@shdb02 src]# /etc/init.d/oracleasm statusChecking if ASM is loaded: yesChecking if /dev/oracleasm is mounted: yes
[root@shdb02 src]# /etc/init.d/oracleasm listdisks  //如果配置错误,则会显示不出磁盘,这个要注意。//注意这里,一旦你安装了oracleasm则会有这个目录出现
  [root@shdb02 dev]# ll /dev | grep oracleasm  drwxr-xr-x  4 root root            0 Mar 15 23:41 oracleasm
  oracleasm添加的磁盘通常都会在 /dev/oracleasm/disks

由于系统重新启动后,磁盘的owner会被修改为root,为保证重启后保持磁盘owner不变,可以在/etc/udev/rule下添加一个rules文件
   添加udev的 /etc/udev/rules.d/99-asmdisk-owner.rules文件,添加uuid内容
   当然,asmlib并不只是用于创建asm磁盘,还具有asm存储管理功能,并为应用程序提供接口.另外会碰到的就是
  [root@shdb02 dev]# /etc/init.d/oracleasm createdisk asm-diskjj /dev/sdj  //应该是名称不对  Marking disk "asm-diskjj" as an ASM disk:                  [FAILED]  //这种情况
//分区的磁盘才有uuid
 [root@shdb02 dev]# scsi_id -g -u -d /dev/sdj  //sdj我已分区,不需要格式化 369ce37410023334d07dc2c4b00000008
  //最后解决。
 [root@shdb02 dev]# /usr/sbin/oracleasm querydisk /dev/sdj  Device "/dev/sdj" is not marked as an ASM disk [root@shdb02 dev]#  /usr/sbin/oracleasm createdisk diskj /dev/sdj   //换了名称之后  Device "/dev/sdj" is not a partition [root@shdb02 dev]#  /usr/sbin/oracleasm createdisk diskj /dev/sdj1  Writing disk header: done  Instantiating disk: done
[root@shdb02 dev]# cat /var/log/oracleasm    //查看日志,如果出现问题//这里开始出现
 [root@shdb02 disks]# oracleasm listdisks DISKJ
 [root@shdb02 disks]# lsblk -f | grep sdj  sdj                                                                                        └─sdj1                         oracleasm   DISKJ
  //另外,lsblk 下出现大量的sdm,sdw等磁盘信息,但是一查确实无用的东西,应该是之前谁弄的错的,应该结合fdisk -l 查看更准确一些。
  当然还有另外一种情况,利用的是uuid方式   
 [root@shdb02 disks]# ll /dev/ | grep asm*  drwxrwx---  2 root asmadmin      280 Dec 15 11:17 asm  brw-rw----  1 grid asmadmin  65, 160 Mar 16 01:35 asm-diskaa  brw-rw----  1 grid asmadmin  65, 176 Mar 16 01:35 asm-diskab  brw-rw----  1 grid asmadmin  65, 192 Mar 16 01:37 asm-diskac  brw-rw----  1 grid asmadmin  65, 208 Mar 16 01:35 asm-diskad  brw-rw----  1 grid asmadmin   8,  16 Mar 16 01:37 asm-diskb
然后需要在每个节点上设置磁盘的访问权限,否则后面配置磁盘时无法发现磁盘.
[root@shdb02 src]#chown grid:dba /dev/asm-diskaa
[root@shdb02 src]#chown grid:dba /dev/asm-diskab
[root@shdb02 src]#chown grid:dba /dev/asm-diskac//如果改变/dev/oracleasm的情况下,但是这种是可以共存的。
  //这种是configure需要配置的时候用户是grid,组是dba,加入到udev,请看下面的99-x-asmdisk.rules文件中的配置