Redhat6.8 使用udev配置裸设备

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redhat6.8 使用udev配置裸设备相关的知识,希望对你有一定的参考价值。

客户需求:给的不明确,就说装数据库,要做裸设备。没给数据库版本,也没说要udev还是asmlib。。。

以下使用Vmware workstation 试验通过。

 

4块盘

/dev/sda 装系统用。

/dev/sdb

/dev/sdc

/dev/sdd

 

以下是走过的坑。

1)  asm

一直以为装asm就是装如下这3个包。

1
2
3
kmod-oracleasm-2.0.6.rh1-3.el6_5.x86_64.rpm
oracleasm-support-2.1.8-1.el6.x86_64.rpm
oracleasmlib-2.0.4-1.el6.x86_64.rpm

其实不是的,ASM(Automatic Storage Management)是Oracle官方推荐的软件存储解决方案。自10g版本正式推出以来,软件架构层面上ASM的地位是在不断的提升。首先是11g将ASM从数据库层面剥离出来,并归入Grid Infrastructure进行管理。其次就是ASM Disk成为ACFS(Automatic Cluster File System)的基础组件

而ASMLIB是一种基于Linux module,专门为Oracle Automatic Storage Management特性设计的内核支持库(kernel support library)。

udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev目录下的设备文件。不像之前的设备管理工具,udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。

而裸设备是裸设备是未mkfs -text3这样操作的设备,比如lvm里逻辑卷建好未格式化直接分配给表空间,这采取的是裸设备。

他们之间的关系就是:

ASM 是oracle 数据库的东西。要去读取裸设备

asmlib 和 udev 都是拿来设置裸设备的。

 

)2: scsi_id

 要配置裸设备,都要获取scsi_id

 试过 scsi –g –u –d /dev/sda 获取不到

 试过/sbin/scsi_id --whitelisted--replace-whitespace --device=/dev/sdb

 查看其他人的教程,发现别人获取出来的教程都是 vbox-xxxx 的

 原来人家用的都是 virtualbox 啊,那我也下一个。

 又得去查 virtualbox 安装redhat 的资料,装到一半去百度 vmware scsi_id获取不到。

*.vmx配置文件缺少disk.EnableUUID="TRUE",添加后即正常。

 

解决问题。浪费了好多时间啊。。。

以下为试验通过的教程。

1.获取需要绑定为ASMDisk的磁盘uuid。

技术分享

2.编写udevrules文件,PROGRAM中写scsi_id命令,RESULT中写上面命令中返回的uuid

写文件这里,网上给出了两种文件,60-raw.rules和99-oracle-asmdevices.rules,如何选择如下:

目前RAC采用裸设备有这样两种方式
/etc/udev/rules.d/60-raw.rules和/etc/udev/rules.d/99-oracle-asmdevices.rules
前者创建的是C字符设备,后者创建的是B块设备,ASMLIB创建出来的也是B块设备

 

技术分享

1
2
3
4
cat/etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted--replace-whitespace --device=/dev/$name",RESULT=="36000c293458d6febb77699276c16f32b",NAME="asm-diskb", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted--replace-whitespace --device=/dev/$name",RESULT=="36000c29d064da93ee51b765dd4eaa0e1",NAME="asm-diskc", OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted--replace-whitespace --device=/dev/$name", RESULT=="36000c2998d17bb1db6b72ba1ce2baa3b",NAME="asm-diskd", OWNER="grid", GROUP="asmadmin",MODE="0660"

3.启动,并查看

技术分享



以上是关于Redhat6.8 使用udev配置裸设备的主要内容,如果未能解决你的问题,请参考以下文章

ApacheTraffic Server 使用ssd 以及裸盘

如何自动创建设备节点

使用UDEV SCSI规则在Oracle Linux上配置ASM

udev规则以及编写

Linux┊详解udev

我的 perl 脚本如何使用 UDev 而不是 HAL 对任意设备做出反应?