概述
ASMLib和udev都解决了设备名固定的问题。在linux中,设备的检测和枚举的顺序并不是固定的。这和在Solaris中不一样,举个例子,除非一个磁盘在阵列中从物理上移动了,否则设备名(例如c0t0d1p1)不会改变。没做多路径的存储阵列的重新配置在linux中会有很大的问题:一个设备原先在操作系统中显示为/dev/sda可能会在重启后被重新映射为/dev/sdg,仅仅是因为操作系统检测到它比上一次启动时晚了一点。基于设备名的裸设备映射注定是要失败的。
首先看看udev的解决方法。一个SCSI设备的world-wide-ID(WWID)不会发生改变,在udev中利用了这一点制定一个规则,这个规则创建一个映射,它定义设备/dev/raw/raw1总是指向SCSI ID是xxxx的LUN中。udev的主要问题是,它的配置不够直观和易用。由于udev不能复制配置,在集群中的每个节点上管理员都需要去维护udev配置。(我们可以使用udevinfo -q path -n /dev/sda1 来查看/dev/sda1对应的udev设备名,该路径在/sys下)
配置了多路径的存储则不会有这个问题,因为另一个软件层(比如,devicemapper-multipath包)或供货商指定的软件会创建一个逻辑设备。
ASMLib提供了另一种方式。ASMLib工具可以在http://oss.oracle.com中免费下载,它使ASM磁盘的管理变得非常简单。ASMLib由3个RPM包组成:一个内核模块、实际ASMLib和支持工具。在使用一个LUN作为ASM disk前,你可以使用ASMLib工具通过将元数据信息添加到磁盘头部来标记它,然后ASMLib就可以识别出这个新的LUN,将其作为添加到ASM disk group的一个可能的候选。重启的时候,ASMLib将扫描磁盘头部的信息来识别ASM disk,不管物理设备名在启动过程中变成了什么。它保证了设备名的稳定性,而且成本非常低。ASMLib是一个内核模块,在内部分配自己的内存结构,它可以在单路径和多路径下配置。
ASM 配置
ASM 可以使用裸设备 或者ASMLib 方式或者UDEV绑定, 因为裸设别的维护比较复杂,在此只讲解ASMLib 方式和UDEV方式。 ---推荐UDEV方式
ASMLib 方式
对应不同的操作系统, 需要不同的包,下载的时候一定要和操作系统内核一致。
下载并安装ASMLIB
oracle 官居网下载下面两个包
oracleasmlib-2.0.4-1.el6.x86_64.rpm oracleasm-support-2.1.8-1.el6.x86_64.rpm
cd /etc/yum.repos.d/
下载 redhat6.8 内核 oracleasm 包
wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
如果使用的是 Oracle Linux 的 uek 内核,oracleasm 已经被编译到了内核中,如果使用的是和
Red Hat 兼容的内核,那么需要手动安装 kmod-oracleasm 包
yum install kmod-oracleasm(oracle linux 不用装)rpm -ivh oracleasmlib-2.0.4-1.el6.x86_64.rpm oracleasm-support-2.1.8-1.el6.x86_64.rpm
配置 asmlib 驱动
[root@11gocp yum.repos.d]# /etc/init.d/oracleasm configure
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]:
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@11gocp yum.repos.d]#
启动ASM
[root@11gocp yum.repos.d]# /etc/init.d/oracleasm start
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@11gocp yum.repos.d]#
创建ASM磁盘
/etc/init.d/oracleasm createdisk VOL1 /dev/sdb5
/etc/init.d/oracleasm createdisk VOL2 /dev/sdb6
/etc/init.d/oracleasm createdisk VOL3 /dev/sdb7
/etc/init.d/oracleasm createdisk VOL4 /dev/sdb8
/etc/init.d/oracleasm createdisk VOL5 /dev/sdb9
/etc/init.d/oracleasm createdisk VOL6 /dev/sdb10
[root@11gocp asm]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
VOL5
VOL6
[root@ASMTEST ~]# /etc/init.d/oracleasm querydisk -v -p VOL1
Disk "VOL1" is a valid ASM disk
/dev/sdb5: LABEL="VOL1" TYPE="oracleasm"
--创建磁盘组
SQL> create diskgroup dg3 external redundancy disk 'ORCL:VOL9','ORCL:VOL10';
--添加磁盘
SQL> alter diskgroup dg1 add disk 'ORCL:VOL9';
--删除磁盘
SQL> alter diskgroup dg1 drop disk VOL9;
--创建故障组
create diskgroup test high redundancy
failgroup fg1 disk 'ORCL:VOL8' name d2a
failgroup fg2 disk 'ORCL:VOL9' name d2b
failgroup fg3 disk 'ORCL:VOL10' name d2c;
create diskgroup test normal redundancy
failgroup fg1 disk
'ORCL:VOL8' name d2a,
'ORCL:VOL9' name d2b,
failgroup fg2 disk
'ORCL:VOL10' name d2c,
'ORCL:VOL11' name d2d;
使用UDEV服务设置ASM共享盘,步骤如下:
使用一个FOR脚本来实现查询磁盘的信息,我这里有8个盘,并且盘符是sd b-i. 这里盘符可以通过fdisk -l来查询
所以脚本也是b-i. 如果创建的盘没这么多,比如是盘符从sdc-sdf,就根据实际情况修改这个脚本。
脚本如下:echo到done之间是一句话,注意避免自动换行影响语句执行等问题。
for i in b c d e f g h i ;
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""
done
运行结果如下:
[root@bysrac1 ~]# for i in b c d e f g h i ; 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""; done
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBb19dd60c-dc412d96_",NAME="asm-diskb", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBfc1c280c-e7283ea1_",NAME="asm-diskc", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB7c002099-e4ff7950_",NAME="asm-diskd", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB86fa23a3-2e2ed9dc_", NAME="asm-diske",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBa1d0725b-dda35f5d_",NAME="asm-diskf", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB229bebfa-cf3ab9c1_",NAME="asm-diskg", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB4cec8c01-47cce08d_",NAME="asm-diskh", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB44e8df01-253c8b5a_",NAME="asm-diski", OWNER="grid", GROUP="asmadmin",MODE="0660"
把脚本得出的内容复制到新建的文件中
[root@bysrac1 ~]# cd /etc/udev/rules.d/
[root@bysrac1 rules.d]# vi 99-oracle-asmdevices.rules
[root@bysrac1 rules.d]# cat 99-oracle-asmdevices.rules
NEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id-g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VBb19dd60c-dc412d96_",NAME="asm-diskb", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBfc1c280c-e7283ea1_", NAME="asm-diskc",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB7c002099-e4ff7950_",NAME="asm-diskd", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB86fa23a3-2e2ed9dc_",NAME="asm-diske", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VBa1d0725b-dda35f5d_",NAME="asm-diskf", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB229bebfa-cf3ab9c1_",NAME="asm-diskg", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p",RESULT=="SATA_VBOX_HARDDISK_VB4cec8c01-47cce08d_",NAME="asm-diskh", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*", BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VB44e8df01-253c8b5a_",NAME="asm-diski", OWNER="grid", GROUP="asmadmin",MODE="0660"
[root@bysrac1 ~]# start_udev
Starting udev: [ OK ]
[root@bysrac1 rules.d]# ls -l /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Jun19 22:13 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Jun19 22:13 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Jun19 22:13 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Jun19 22:13 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Jun19 22:13 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Jun19 22:13 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Jun 19 22:13 /dev/asm-diskh
brw-rw---- 1 grid asmadmin 8, 128 Jun 19 22:13 /dev/asm-diski
把上面建的文件传到第二个节点上去
[root@bysrac1 rules.d]# scp 99-oracle-asmdevices.rules bysrac2:/etc/udev/rules.d/
Warning: Permanently added 'bysrac2,192.168.1.222' (RSA) to the list ofknown hosts.
root@bysrac2's password:
99-oracle-asmdevices. 100% 1429 1.4KB/s 00:00
到第二个节点上执行start_udev命令
[root@bysrac2 ~]# ls /etc/udev/rules.d/99-oracle-asmdevices.rules
/etc/udev/rules.d/99-oracle-asmdevices.rules
[root@bysrac2 ~]# start_udev
Starting udev: [ OK ]
[root@bysrac2 ~]# ls -l /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Jun19 22:18 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Jun19 22:18 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Jun19 22:18 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Jun19 22:18 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Jun19 22:18 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Jun19 22:18 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Jun 19 22:18 /dev/asm-diskh
brw-rw---- 1 grid asmadmin 8, 128 Jun 19 22:18 /dev/asm-diski
最后
以上就是个性戒指为你收集整理的ASMLib和udev区别的全部内容,希望文章能够帮你解决ASMLib和udev区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复