博客
关于我
RAC ASM磁盘存储配置相关(转载)
阅读量:500 次
发布时间:2019-03-06

本文共 4289 字,大约阅读时间需要 14 分钟。

存储环境设置

存储的配置总结下只有2步:持久化配置 和 权限配置 。一般来说这两步是可以合在一起的,只是使用多路径软件时需要分开来讲(多路径软件多了一个多路径聚合的步骤)。

所谓持久化就是将磁盘通过UUID或者其他唯一标识符绑定为一个human friendly的磁盘名(可以是磁盘的软链接等),而权限配置就是为了可以使oracle可以正确使用这些磁盘,给他们赋予正确的用户和组以及权限(MODE)。

在Linux环境下能够实现设备持久化的系统服务就是udev,除此之外几乎别无他法(就算有也千万别用)。可以通过man udev来查看udev rules的配置规则。

我们分两种情况来描述存储配置的步骤。

  • 情况一:使用多路径软件时:

一般来说生产上的存储使用系统自带的多路径软件multipath即可完成多路径持久化配置(lvm device mapper),这里贴一个示例配置文件的一部分:

# multipath.conf written by anacondamultipaths {    multipath {        wwid "360080e50003279f000001a785a275fe8"        alias REDO_01    }    multipath {        wwid "360080e50003279f000001a775a275fba"        alias RAC_OCR    }    multipath {        wwid "360080e50003279f000001a795a27604e"        alias RAC_ARCHIVE    }    multipath {        wwid "360080e50003217cc00001c6d5a280dd8"        alias REDO_02    }    multipath {        wwid "360080e50003217cc00001c6e5a280e2b"        alias RAC_DATA    }}--不建议在这里加uid gid mode来设置属主和权限,因为不能设置附属group。

根据uuid进行了alias的绑定,之后重启multipathd即可,使用multipath -ll可以看到聚合后的盘。

然后使用multipath自带的udev规则文件12-dm-permissions.rules来完成聚合盘(/dev/dm-*)的udev配置,这样安装时直接查找/dev/mapper/*路径即可找到以alias名字显示的盘。

--设置步骤:cp /usr/share/doc/device-mapper-1.02.117/12-dm-permissions.rules /etc/udev/rules.d/vi /etc/udev/rules.d/12-dm-permissions.rules--添加或注释如下一行:ENV{DM_UUID}=="mpath-?*", OWNER:="grid", GROUP:="asmadmin", MODE:="660"--说白了就是设置下聚合盘的权限start_udev
这里还有一些替代的方法,例如使用60-raw.rules来代替12-dm-permissions.rules的权限设置功能,例子如下:# vi /etc/udev/rules.d/60-raw.rulesACTION=="add", KERNEL=="dm-0", RUN+="/bin/raw /dev/raw/raw1 %N"ACTION=="add", KERNEL=="dm-1", RUN+="/bin/raw /dev/raw/raw2 %N"ACTION=="add", KERNEL=="dm-2", RUN+="/bin/raw /dev/raw/raw3 %N"ACTION=="add", KERNEL=="dm-3", RUN+="/bin/raw /dev/raw/raw4 %N"ACTION=="add", KERNEL=="dm-4", RUN+="/bin/raw /dev/raw/raw5 %N"KERNEL=="raw*", OWNER="grid" GROUP="asmadmin", MODE="0660"--其原理是:/dev/mapper/下的盘符其实是指向/dev/dm-*的,将这些聚合盘映射为裸设备,也可以同时改变权限,缺点在于没有alias容易混淆。# start_udev

至此情况一的权限配置已经完成了。

  • 情况二:如果你未使用multipath(常见于使用虚拟机的测试环境)

那么直接使用99-oracle-asmdevices.rules(udev规则,名字随便定,第一个数字表示解析顺序)或者通过60-raw.rules绑定raw盘来完成持久化配置和权限配置,并绑定易于人眼识别的name。

这种直接使用udev规则的方式与上述多路径绑定的区别只是在于无需通过多路径lvm进行映射,使用udev直接完成了绑定工作+权限配置工作。

参考:https://oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linux

以及参考:官网文档附加的A部分中的Configuring Device Persistence Manually for Oracle ASM小节

基本步骤就是:

首先获取sd盘的uuid或ID_SERIAL(或其他可以唯一标识磁盘且在udev中定义了的标识符),然后将uuid/ID_SERIAL绑定至99-oracle-asmdevices.rules即可。

例如:# /usr/lib/udev/scsi_id -g -u -d /dev/sdb --获取到某个盘的scsi-id。# udevadm info --query=all --name=/dev/sdb | grep ID_SERIAL --获取到某个盘的ID_SERIAL

本文绑定UUID和ID_SERIAL的示例都来一个,以便新手可以清楚的认识udev是个什么东西:

绑定UUID示例(其实还可以大大简化):

[root@node1 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rulesKERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="1ATA_VBOX_HARDDISK_VBc6580c49-d54cc0df", RUN+="/bin/sh -c 'mknod /dev/asmdisk01 b $major $minor; chown grid:asmadmin /dev/asmdisk01; chmod 0660 /dev/asmdisk01'"KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="1ATA_VBOX_HARDDISK_VB41a7cba4-749c4aec", RUN+="/bin/sh -c 'mknod /dev/asmdisk02 b $major $minor; chown grid:asmadmin /dev/asmdisk02; chmod 0660 /dev/asmdisk02'"KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="1ATA_VBOX_HARDDISK_VB6aaaf601-96dab065", RUN+="/bin/sh -c 'mknod /dev/asmdisk03 b $major $minor; chown grid:asmadmin /dev/asmdisk03; chmod 0660 /dev/asmdisk03'"

绑定ID_SERIAL示例:

KERNELS=="sd*",ENV{ID_SERIAL}=="VBOX_HARDDISK_VBc6580c49-d54cc0df",SYMLINK+="asm-ocr", OWNER="grid",GROUP="asmadmin",MODE="0660"KERNELS=="sd*",ENV{ID_SERIAL}=="VBOX_HARDDISK_VB41a7cba4-749c4aec",SYMLINK+="asm-mgmt",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNELS=="sd*",ENV{ID_SERIAL}=="VBOX_HARDDISK_VB6aaaf601-96dab065",SYMLINK+="asm-data",OWNER="grid",GROUP="asmadmin",MODE="0660"

 需要注意的是rules文件中的内容是不允许任何主动换行符的,例如\等。

 然后执行如下命令使udev规则生效即可:

udevadm control --reload-rulesudevadm trigger --type=devices//Linux 7之前应该只需要start_udev即可,7版本去除了start_udev的命令,使用udevadm替代。

至于udev的规则文件中KERNELS,ENV{}都是些什么东西,为何用KERNELS和KERNEL都可以,为何用不同的命名方式都行,直接man udev寻找答案。

在这里我还要提一句,udev在CentOS-7上有个坑,NAME关键字不再能表示devnode名了,只能表示网卡名,这坑实在是太深我也翻车了,仔细看了好几遍man udev才发现。

转载地址:http://pmqdz.baihongyu.com/

你可能感兴趣的文章
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>
Mysql InnoDB存储引擎 —— 数据页
查看>>
Mysql InnoDB存储引擎中的checkpoint技术
查看>>
Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
查看>>
MySQL InnoDB引擎的锁机制详解
查看>>
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>
mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
mysql order by多个字段排序
查看>>
MySQL Order By实现原理分析和Filesort优化
查看>>
mysql problems
查看>>